Navigating the New Digital Divide | Deloitte Digital

Kasey Lobaugh, Jeff Simpson; Navigating the New Digital Divide; a whitepaper; Deloitte Digital (Deloitte & Touche); 2015-05; 22 pages (landscape); landing.
Teaser: Capitalizing on digital influence in retail.

tl;dr => up-and-to-the-right; lots of listicles & best practices; it’s all contingent on category; it’s all good.

Table of Contents

  • Introduction
  • What we learned
  • Drilling down
  • Simply measuring channel sales misses the larger trend
  • Consumers use digital very differently by category
  • In-store shopping has digital at its core
  • How can retailers evolve?
  • Measure for measure
  • Analysis methodology
  • Related materials
  • Contact us


  • Retail in 2014 was $4T.
    • 6.5% online
    • 93.5% offline
  • Thesis claims
    • online (digital) is not a separable “channel”
    • omnichannel (messaging & measurement) is not the answer.
    • the answer is…
      • holistic consumer lifesycle management
      • SEO
      • Social
  • Definitions
    • Digital Influence Factor => percentage of in-store sales “influenced” by any online device or activity
    • Mobile Influence Factor => percentage of in-store sales “influenced” by a mobile device (i.e. a handset-phone.)
  • Definitions
    • Low-Frequency Shopper => fewer than three trips within a quarter (three months).
    • [Normative] Shopper => 4, 5 or 6 trips within a quarter.
    • High-Frequency Shopper => more than seven trips within a quarter.
  • Advice is given
    How Can Retailers Evolve?
  • Methodology
    • Survey, self-attestation
    • N=3,016
    • adults, US
    • responses reweighted by census demographics
    • 2014-11-21 -> 2014-11-26
    • 2015-01-13 -> 2015-01-20
    • p=0.9



  1. Simply measuring channel sales misses the larger trend
  2. Consumers use digital very differently by category
  3. In-store shopping has digital as its core


of the consumer in the product purchase & use  lifesycle.

  1. Find inspiration
  2. Browse and Research
  3. Select and Validate
  4. Purchase and Pay
  5. Return and Service


  • [Consumers] Following their own paths
  • Getting Personal [with messaging to consumers]
  • Buying Online, Picking Up In-Store (BOPUS)



Via: backfill

Whither the mysterious rpmbuild warning ‘Could not canonicalize hostname’?

tl;dr → The host in question is an IPv6-only host; rpm uses IPv4-only APIs.


You are using rpmbuild.


Whither the mysterious Could not canonicalize hostname:


warning: Could not canonicalize hostname:


The code in question is at least a score years old. It uses the IPv4-only API. It does not take into account IPv6. If you are on an IPv6-only host, then you will get this message.


$ rpmbuild -ba example-package-1.1.0.spec
install -D --mode 444 LICENSE /local/fedora/build/workspace/BUILDROOT/example-package-1.2.0-1.fc19.x86_64/usr/local/share/doc/example-package-1.2.0/LICENSE
make[1]: Leaving directory `/local/fedora/build/workspace/BUILD/example-package-1.2.0'
+ /usr/lib/rpm/ --strict-build-id -m --run-dwz --dwz-low-mem-die-limit 10000000 --dwz-max-die-limit 110000000 /local/fedora/build/workspace/BUILD/example-package-1.2.0
/usr/lib/rpm/sepdebugcrcfix: Updated 0 CRC32s, 0 CRC32s did match.
+ /usr/lib/rpm/check-buildroot
+ /usr/lib/rpm/redhat/brp-compress
+ /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip
+ /usr/lib/rpm/brp-python-bytecompile /usr/bin/python 1
+ /usr/lib/rpm/redhat/brp-python-hardlink
+ /usr/lib/rpm/redhat/brp-java-repack-jars
Processing files: example-package-1.2.0-1.fc19.noarch
Provides: config(example-package) = 1.2.0-1.fc19 example-package = 1.2.0-1.fc19
Requires(interp): /bin/sh /bin/sh /bin/sh /bin/sh
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires(pre): /bin/sh
Requires(post): /bin/sh
Requires(preun): /bin/sh
Requires(postun): /bin/sh
Requires: /bin/bash /bin/sh
Checking for unpackaged file(s): /usr/lib/rpm/check-files /local/fedora/build/workspace/BUILDROOT/example-package-1.2.0-1.fc19.x86_64
warning: Could not canonicalize hostname:
Wrote: /local/fedora/build/workspace/SRPMS/example-package-1.2.0-1.fc19.src.rpm
Wrote: /local/fedora/build/workspace/RPMS/noarch/example-package-1.2.0-1.fc19.noarch.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.Vzsxv5
+ umask 022
+ cd /local/fedora/build/workspace/BUILD
+ cd example-package-1.2.0
+ exit 0


Via: An Email Thread
Date: 2002-04-26
Jeff Johnson ARS N3NPQ (
Chapel Hill, NC

<quote>Here’s the code that returns the build host (build/names.c):</quote>

const char *const buildHost(void)
  static char hostname[1024];
  static int gotit = 0;
  struct hostent *hbn;

  if (! gotit) {
      (void) gethostname(hostname, sizeof(hostname));
      hbn = gethostbyname(hostname);
      if (hbn)
	  strcpy(hostname, hbn->h_name);
		      _("Could not canonicalize hostname: %s\n"), hostname);
      gotit = 1;


The opposite of trenchant, misdirecting, even wrong: Setting up RPM Building for SME Server (undated).
<quote><snip/>If you get “warning: Could not canonicalize hostname:” it can be ignored. This is a DNS resolution error and the easy solution is to add your hostname to /etc/hosts</quote>


Nowadays we so things: use C++11, type safe, exception safe, thread safe. We can get three of the four easily. Thread safety has to wait for another day.

  auto get_canonical_build_hostname(void) -> std::string {
    static std::string hostname;
    static bool cached(false);
    if (cached) {
      return hostname;
    auto gethostname = sys::gethostname();
    if ( ! std::get<0>(gethostname)) {
      throw std::get<2>(gethostname);
    std::string const &best_hostname_estimate = std::get<3>(gethostname);
    std::array<sys::AF,2> const families{sys::AF::INET6, sys::AF::INET4};
    for (auto family : families) {
      auto gethostbyname2 = sys::gethostbyname2(best_hostname_estimate, family);
      if (std::get<0>(gethostbyname2)) {
	return hostname;
    throw std::get<2>(gethostbyname);


g++ -o canonical -ggdb -std=c++11 main.cpp
#include <algorithm>
#include <array>
#include <cstdio>
#include <cstdarg>
#include <cstdint>
#include <cstring>
#include <exception>
#include <functional>
#include <iostream>
#include <string>
#include <system_error>
#include <tuple>
#include <typeinfo>
#include <vector>

#include <unistd.h>
#include <netdb.h>
#include <sys/param.h>
#include <sys/socket.h>

// no language translations
#define _(message) message

namespace rpm {

  std::size_t message_count;

  enum class Message { INFO, WARNING, ERROR };
  constexpr Message const MESS_WARNING = Message::WARNING;

  auto log(Message severity, char const *format, ...) -> void __attribute__ ((format (printf, 2, 3))) {
    FILE *stream = severity == Message::INFO ? stdout : stderr;
    fputs("warning: ", stream);
    va_list ap;
    va_start(ap, format);
    vfprintf(stream, format, ap);


extern "C" {
  static const char *const buildHost(void) {
    static char hostname[1024];
    static int gotit = 0;
    if (! gotit) {
      // (sic) was in the original code
      (void) ::gethostname(hostname, sizeof(hostname));
      ::hostent *hbn = ::gethostbyname(hostname);
      if (hbn) {
	strcpy(hostname, hbn->h_name);
      } else {
	rpm::log(rpm::MESS_WARNING, _("Could not canonicalize hostname: %s\n"), hostname);
      gotit = 1;
    return hostname;

namespace sys {
  enum class AF { INET4 = AF_INET, INET6 = AF_INET6 };
  struct hostent;
  enum class herrc {
    host_not_found = HOST_NOT_FOUND,
      try_again = TRY_AGAIN,
      no_recovery = NO_RECOVERY,
      no_address = NO_ADDRESS, // same as no_data
      no_data = NO_DATA
  namespace detail {
    std::size_t const PRUDENT_MAXIMUM_HOSTNAME_LENGTH = (2*MAXHOSTNAMELEN); // haters wanna
    union addr;
    class netdb_category;
    using getcall = std::function<::hostent *(char const *)>;

namespace std {
  template<> struct is_error_condition_enum<sys::herrc>;

namespace sys {
  template<typename CHAR, typename TRAITS> inline auto operator<<(std::basic_ostream<CHAR, TRAITS> &, AF) -> std::basic_ostream<CHAR, TRAITS> &;
  auto netdb_category() noexcept -> std::error_category const &;
  inline auto gethostname() -> std::tuple<bool, int, std::system_error, std::string>;
  inline auto gethostbyname(std::string const &) -> std::tuple<bool, ::hostent *, std::system_error, hostent>; 
  inline auto gethostbyname2(std::string const &, AF) -> std::tuple<bool, ::hostent *, std::system_error, hostent>; 
  namespace detail {
    // count the length of a nullptr-terminated argv
    inline auto count(char const *const *argv) -> std::size_t;
    // gethostname(...) and gethostname2(...) are basically the same thing
    template<typename FUNCTION> auto gethostbyname(FUNCTION const &, std::string const &query_name) -> std::tuple<bool, ::hostent *, std::system_error, hostent>;

template<> struct std::is_error_condition_enum<sys::herrc> : public std::true_type { };

// per the memory shenanigains of ::hostent::h_addr_list
union sys::detail::addr {
  using addr4_type = ::in_addr;
  addr4_type addr4;
  using addr6_type = ::in6_addr;
  addr6_type addr6;

struct sys::hostent {
  // like ::hostent, but has appropriate deep copy semantics
  std::string name;                         // was h_name (Official name of host)
  std::vector<std::string> aliases;         // was h_aliases (Alias list)
  AF type;                                  // was h_addrtype (Host address type)
  std::size_t size;                         // was h_length (The address size, in bytes)
  std::vector<detail::addr> addresses;      // was h_addr_list (List of addresses from name server)

struct sys::detail::netdb_category : public std::error_category {
  using ancestor = std::error_category;
  // returns "netdb"
  auto name() const noexcept -> char const * override final;
  // returns hstrerror(code)
  auto message(int code) const -> std::string override final;
  // converts h_errno into 
  auto default_error_condition(int code) const noexcept -> std::error_condition override final;

auto sys::detail::count(char const *const *argv) -> std::size_t {
  std::size_t count = 0;
  if (nullptr != argv) {
    while (nullptr != *argv++) {
  return count;

template<typename CHAR, typename TRAITS> auto sys::operator<<(std::basic_ostream<CHAR, TRAITS> &o, AF family) -> std::basic_ostream<CHAR, TRAITS> & {
  char const *begin, *end;
  switch (family) {
  case AF::INET4:
      static char const WORD[]{"inet4"};
      begin = &WORD[0];
      end = &WORD[sizeof (WORD)-1];
  case AF::INET6:
      static char const WORD[]{"inet6"};
      begin = &WORD[0];
      end = &WORD[sizeof (WORD)-1];
    throw std::system_error(std::make_error_code(std::errc::address_family_not_supported), "sys::AF=" + std::to_string(int(family)));
  std::for_each(begin, end, [&o](char c) {
      o << o.widen(c);
  return o;

auto sys::detail::netdb_category::name() const noexcept -> char const * {
  return "netdb";

// returns hstrerror(code)
auto sys::detail::netdb_category::message(int code) const -> std::string {
  return hstrerror(code);

auto sys::detail::netdb_category::default_error_condition(int code) const noexcept -> std::error_condition {
  return std::error_condition(code, *this);

auto sys::netdb_category() noexcept -> std::error_category const & {
  static detail::netdb_category const singleton;
  return singleton;

auto sys::gethostname() -> std::tuple<bool, int, std::system_error, std::string> {
  using result_type = std::tuple<bool, int, std::system_error, std::string>;
  std::vector<char> buf; // because you can't use a std::string as a fill-buffer
  int r = ::gethostname(, buf.size());
  bool b = 0 == r;
  auto n2 = std::tuple_element<2, result_type>::type();
  auto n3 = std::tuple_element<3, result_type>::type();
  result_type result(b, r, n2, n3);
  if ( ! b ) {
    std::get<2>(result) = std::system_error(h_errno, sys::netdb_category(), "gethostname");
  } else {
  return result;

auto sys::gethostbyname(std::string const &query_name) -> std::tuple<bool, ::hostent *, std::system_error, hostent> {
  detail::getcall syscall = ::gethostbyname;
  return detail::gethostbyname(syscall, query_name);

auto sys::gethostbyname2(std::string const &query_name, AF family) -> std::tuple<bool, ::hostent *, std::system_error, hostent> {
  using namespace std::placeholders;
  detail::getcall syscall = std::bind(::gethostbyname2, _1, int(family));
  return detail::gethostbyname(syscall, query_name);

template<typename FUNCTION> auto sys::detail::gethostbyname(FUNCTION const &funcall, std::string const &query_name) -> std::tuple<bool, ::hostent *, std::system_error, hostent> {
  using result_type = std::tuple<bool, ::hostent *, std::system_error, hostent>;
  std::vector<char> buf; // because you can't use a std::string as a fill-buffer
  // not threadsafe, returns a pointer to static data
  ::hostent *r = funcall(query_name.c_str());
  bool b = nullptr != r;
  auto n2 = std::tuple_element<2, result_type>::type();
  auto n3 = std::tuple_element<3, result_type>::type();
  result_type result(b, r, n2, n3);
  if ( ! b ) {
    std::get<2>(result) = std::system_error(h_errno, sys::netdb_category(), "gethostbyname " + query_name);
  } else {
    hostent &href = std::get<3>(result); = r->h_name;
    href.aliases.assign(&r->h_aliases[0], &r->h_aliases[detail::count(r->h_aliases)]);
    href.type = AF(r->h_addrtype);
    href.size = r->h_length;
    auto push_back = [&href, query_name](char const *rhs) {
      detail::addr lhs;
      switch (href.type) {
      case AF::INET4:
	lhs.addr4 = *(detail::addr::addr4_type *)(rhs);
      case AF::INET6:
	lhs.addr6 = *(detail::addr::addr6_type *)(rhs);
	// unclear this is a good idea.  If the address family isn't known, then the whole hostname
	// is poisoned to us until this gets cleared up.  Maybe we should ignore it and move along?
	throw std::system_error(std::make_error_code(std::errc::address_family_not_supported), "gethostbyname " + query_name);
    std::for_each(&r->h_addr_list[0], &r->h_addr_list[detail::count(r->h_addr_list)], push_back);
  return result;

namespace {

  auto get_canonical_build_hostname(void) -> std::string {
    static std::string hostname;
    static bool cached(false);
    if (cached) {
      return hostname;
    static_assert(std::is_same<std::tuple<bool, int, std::system_error, std::string>, decltype(sys::gethostname())>::value,
		  "sys::gethostname() return type is surprising");
    auto gethostname = sys::gethostname();
    if ( ! std::get<0>(gethostname)) {
      throw std::get<2>(gethostname);
    std::string const &best_hostname_estimate = std::get<3>(gethostname);
    static_assert(std::is_same<std::tuple<bool, ::hostent *, std::system_error, sys::hostent>, decltype(sys::gethostbyname(std::string()))>::value,
		  "sys::gethostbyname(...) return type is surprising");
    auto gethostbyname = sys::gethostbyname(best_hostname_estimate);
    if (std::get<0>(gethostbyname)) {
      return hostname;
    // recall: that gethostbyname(...) only checks IPv4 ... and we could have an IPv6-only host on our hands [this is the modern age buddy!]
    std::array<sys::AF,2> const families{sys::AF::INET6, sys::AF::INET4};
    static_assert(std::is_same<std::tuple<bool, ::hostent *, std::system_error, sys::hostent>, decltype(sys::gethostbyname2(std::string(), sys::AF()))>::value,
		  "sys::gethostbyname2(...) return type is surprising");
    for (auto family : families) {
      auto gethostbyname2 = sys::gethostbyname2(best_hostname_estimate, family);
      if (std::get<0>(gethostbyname2)) {
	return hostname;
    // Characterizing that first failure
    throw std::get<2>(gethostbyname);


auto main() -> int {
  try {
      std::cout << "Trial #1. (Straight C, like you learned in the '80s)\n";
      std::string hostname = ::buildHost();
      std::cout << "canonical hostname: " << hostname;
      char const *const was = 1 == rpm::message_count ? "was" : "where";
      char const *const problem = 1 == rpm::message_count ? "problem": "problems";
      std::cout << ", there " << was << ' ' << rpm::message_count << ' ' << problem << " observed\n";
    } {
      std::cout << "Trial #2. (SCOLD C++ Techniques)\n";
      std::string hostname, problem; 
      try {
	hostname = get_canonical_build_hostname();
      } catch (std::exception const &e) {
	problem = e.what();
      std::cout << "canonical hostname: " << hostname;
      if (hostname.empty()) {
	std::cout << "(empty)";
      if (!problem.empty()) {
	std::cout << ", problems found as " << problem;
      } else {
	std::cout << ", no problems observed, the answer is unambiguous";
      std::cout << '\n';
    return 0;
  } catch (std::exception const &e) {
    std::clog << "FAIL: unexpected exception " << e.what() << '\n';
    return 1;



Scalable C++ Original Location Disaggregation (SCOLD)

Tracking Protection in Firefox for Privacy and Performance | Kontaxis, Chew

Georgios Kontaxis (Columbia), Monica Chew (Mozilla); Tracking Protection in Firefox for Privacy and Performance; In Proceedings of the Web 2.0 Security and Privacy (W2SP); 2015-05-23; 4 pages; copy, slides (18 slides).


We present Tracking Protection in the Mozilla Firefox web browser. Tracking Protection is a new privacy technology to mitigate invasive tracking of users’ online activity by blocking requests to tracking domains. We evaluate our approach and demonstrate a 67.5% reduction in the number of HTTP cookies set during a crawl of the Alexa top 200 news sites. Since Firefox does not download and render content from tracking domains, Tracking Protection also enjoys performance benefits of a 44% median reduction in page load time and 39% reduction in data usage in the Alexa top 200 news sites.


  • Mozilla Firefox
  • Configuration
    • about:config
    • privacy.trackingprotection.enabled=true
  • Release
    • Firefox Nightly
    • Firefox 35
    • Not committed for any production release?
  • Development
    • 1029886tracking bug for tracking protection
  • Architecture
    • curated blocklist
    • Disconnect’s list (not EasyList)
    • (Google) SafeBrowsing API
  • Features
    • Cookie Blocking
    • Beacon Blocking
  • Justification
    • Performance (page latency reduction).
    • Sotto voce, surveillance blocking.
    • Sotto voce, ad blocking.
  • Threat Model
    • <quote cite=”ref” page=”2″>Our adversary is a powerful billion-dollar online advertising and social networking industry</quote>
  • trackingprotectionfirefoxat some github.
  • Performance claims
    • some telemetry
    • some simulation


Somehow solving similar problems.



Archaeological order…




Wandering, moot, through the naïvete of the chain of reasoning here, flow with it.


Authors = <quote cite=”ref” page=”4″>

Finally, browser makers bear tremendous responsibility in mediating conflicts between privacy interests of users and the advertising and publishing industries. Tracking Protection for Firefox is off by default and hidden in advanced settings. We call upon Mozilla, Microsoft, and other browser makers to make tracking protection universally available and easy to use. Only then will the balance of power shift towards interests of the people instead of industry.



Greybeard = <moot>

Browser makers can’t have it both ways here.  They can’t be “common carriers” who make net-neutral and nework-neutral consumer premises equipment (CPE) as pure-play suppliers the media trade and also be the arbiters of the rights, rules and procedures of that industry without also entering that industry as a primary; i.e. as a publisher which owns a venue and manages an audience, which, as busking, is a fine and honorable vocation with a long and storied tradition dating back to the earliest ages.  Indeed Firefox Sponsored Tiles.

Hiding such intervention capability in the “advanced settings” doesn’t ameliorate the conceptual error here. The terms of the trade have always and ever been between the publisher and the advertiser. The consumer (which is you, dear reader), as a catalyst of the relationship, is party to this activity only insofar is the terms of the publisher-advertiser business arrangement specify that the publisher is able to deliver any quantifiable action, generally, quantifiable attention, of the consumer (which, to remind, is you, dear reader) to the advertiser under the terms of their bilateral deal (common commercial terms being: CPM, CPC, CPA, etc.).  The consumer’s consent being entailed by virtue of having received media from the publisher in the first instance.

As for your part of this, you are a consumer, and only that.  As the appelation implies, you don’t own the creative product that you’re enjoying, you never did, you never will. Your rights are limited to personal experience under the stated terms.  Otherwise, by convention, broader allowances would had to have been granted to you in an expression, an explicit writ. Your activities with regard to blocking publishers trading with advertisers in order to petition them to change their business practices as you experience them is a project that is, at best, fraught with contradictions and complications. To want to change the legal framework of creative product ownership & delivery is a tall order and would necessarily have implications in other areas of the media business.  The law is pretty clear on the countervailing point.  Namely, that the publisher owns the media, as they created it. They are purveying it under terms set forth. The media is licensed to you, and performed for you, even when on equipment that you own, for the sole purpose of your private enjoyment as an individual.  During your experience of the work, you do not receive any other rights, such as the right of derivation, summarization, retransmission, republication, public performance, etc.  These conditions adhere to you by your presence in the experience as a consumer unit. You are necessarily subject ot the Terms & Conditions set forth at the time the media was administered to you.  Indeed the whole foundation of the Creative Commons and Open Source licensing is centered upon this point.



Activist = <moot2>

Yet “we” build, “we” own & “we” operate the CPE. These HTML5-JS-CSS3 browser media-players are “ours.”  We are the web!  Unlike print, OTA TV or radio media where the players are locked down. We build CPE; we block as we like. This cannot be stopped.



Publisher = We parry and invoke EME, CDM, DRM & block you with DMCA. Like we do with video. QED.

Via: backfill.

Ad blocking goes mainstream | PageFair, Adobe (2014)

Ad blocking goes mainstream; PageFair, Adobe; 2014; 17 pages.

tl;dr => it’s popular; it’s really bad; Google Chrome is the cause.


  • This is the piece that every other trade press article cites.
    There is no other “study” information out there.
    Based on download counting, naïve math & self-attestation in focus groups.
  • Lots of factoids
    lots of slider & pie chartism in pastel colors, as is the fashion nowadays
  • Monthly Active Users (MAU)
  • Ad formats considered
    • test display ads
    • still image ads
    • animated display ads
    • interstitials
    • display ads with audio
    • popover
    • skippable pre-roll
    • skippable mid-roll
    • non-skippable pre-roll
    • non-skippable mid-roll
  • Demographics
    • Millennials (18-24) most likely to perform ad blocking
    • 30-44 => somewhat willing to pay
    • 46-60 => willing to pay


  • Amalgamation of historical records
    • EasyList download counts
    • Mozilla store download counts
    • Chrome store download counts
  • A survey, self-attestation
    • a panel, Upfront Analytics.
      N=”small”, contains U18 as 13-17, N=unspecified
    • a panel, SurveyMonkey
      N=”larger” but for U18, N=1


as headlined

  • 144 MAU 2014-!2
    scaled as 4.9% of all internet users
    increased 69% between 2013-Q2 – 2014-Q2
  • Google Chrome is the cause
    increase by 96% to 86 MAU between 2013-Q2 – 2014-Q2.
  • By installation method
    • “pre-installed” browsers (Internet Explorer) => 1x
    • “end-user installed” browsers (Firefox & Chrome) => 4.7x
  • Worldwide
    • Cluster #1, wholly in EMEA
      Absolute usage: 24% of online populations performing adblocking 2014-Q2
      Growth rate: not stated

      • Poland
      • Sweden
      • Denmark
      • Greece
    • Cluster #2, in EMEA & APAC
      Absolute usage: not stated
      Growth rate: “as much as” 134% between 2013-Q2 – 2014-Q2.

      • Japan
      • Spain
      • China
      • Italy
  • Demographics, by survey
    • 54% of young men, (male, age 18-29) perform ad blocking.
    • Generalizing from the survey respondents to the population at large
      Men are 48% “more likely” than women to perform ad blocking.
    • 80% unwilling to pay for free content
      yet 61% of the 80% are unwiling to pay for ad-free content
      <aside>but you know how it would work, first you’d pay for the content to be ad free and then you would pay for it and you would have ads; just like how Cable TV worked. Anywhere there is attention to be captured & sold, there will be advertising.  All Ads, All The Time & on Every Available Surface.</aside>
    • Claim that “the majority” are willing to view non-intrusive ad formats.
  • Low on “mobile” (closed OS, storebought software, telecom handsets).


Slides 16 & 17.


Not Quite the Average: An Empirical Study of Web Use | Weinreich, Obendorf, Herder, Mayer

Harald Weinreich, Hartmut Obendorf, Eelco Herder, Matthias Mayer; Not Quite the Average: An Empirical Study of Web Use; In Transactions on the Web, Volume 2, Number 1, Article 4. 2008-02. 31 pages. paywall.



How to Market to the iGeneration | Joan Schneider, Schneider Associates

How to Market to the iGeneration; Joan Schneider; In Harvard Busniess Review (HBR); 2015-05-06.

Joan Schneider, CEO, Schneider Associates, Boston MA; an advice shop.
Julie Hall, Joan Schneider; The New Launch Plan: 152 Tips, Tactics and Trends from the Most Memorable New Products; BNP Media II, LLC; 2010-04-01; 288 pages; kindle: $10, paper: $35+SHT.


In the form of a listicle…

  1. Personalize everything.
  2. Connect with them through social media.
  3. Be strategic with advertisements.
  4. Excite iGens with content.
  5. Use mobile to reach iGens.
  6. the iGeneration is here now.


  • Terminology
    • iGeneration
    • iGens (the plural of the species)
    • Gee Whiz!  Naturals with technology!  Facebook!  Is that an iphone?
    • A decade-subgeneration of Millennials; same thing.
    • Attributed to Stefan Pollack
      • iGeneration is Generation Z according to Pollack’s typology.
      • born: 1994-2004 (age 21 down to 11).
      • Stefan Pollack; Disrupted; Pacific Coast Creative; 2013-05-15; kindle: $10, paper: $10+SHT.
  • Generation Z
    • Defined here as: “born after 1994″ (age 21 or younger).
    • The iGeneration
  • Millennials
  • Conflates generational theory (20-year frames) with a decade-level framing.



  • Making Way for Generation Z; Alexandra Levit; In The New York Times (NYT); 2015-03-28; previously noted.
    tl;dr => It’s a book promo for her book
    Alexandra Levit; They Don’t Teach Corporate in College: A Twenty-Something’s Guide to the Business World; Career Press; 3rd edition, 10th Anniversary Edition; 2014-02-25; 240 pages; kindle: $11, paper: $950+SHT.
  • Millennials Design Technologies; Jake Wobbrock (AnswerDash); In Wired; 2014-09.
    Jake Wobbrock, Ph.D., co-founder, CEO, AnswerDash.

    • Generation NOW
    • Studies. That. Show.
      • Accenture
      • BusinessWire (press releases)
      • Forbes
      • Forrester
  • Mentoring Millennials; Jeanne C. Meister, Karie Willyerd; In Harvard Business Review; 2010-05.
    <quote>[Reverse Mentoring] shifts the responsibility for organizing mentoring to line employees, who learn from senior executives by mentoring them. A Millennial is matched to an executive and assigned to teach him or her how to, say, use social media to connect with customers. It’s an effective way to give junior employees a window into the higher levels of the organization, so that when the mentees [the old ones] retire, the younger generation has a better understanding of the business.</quote>

Via: backfill.

Native advertising for the Cadillac ELR 2016, directly in the EXIF tag


The ELR electrified luxury coupe will offer improved performance, more dynamic driving and higher levels of personal technology for the 2016 model year. Major product upgrades include a more than 25% boost in power and torque, faster acceleration that improves 0-60 mph by 1.4 seconds, higher top speed, retuned chassis and steering for better handling, more responsive brakes and a new Performance equipment package.

$ type identify
identify is hashed (/usr/bin/identify)
$ rpm -q -f /usr/bin/identify
$ identify -format "%[EXIF:ImageDescription]" 2016-Cadillac-ELR-005
The ELR electrified luxury coupe will offer improved performance, more dynamic driving and higher levels of personal technology for the 2016 model year. Major product upgrades include a more than 25% boost in power and torque, faster acceleration that improves 0-60 mph by 1.4 seconds, higher top speed, retuned chassis and steering for better handling, more responsive brakes and a new Performance equipment package.


Via: Viewing Gallery of the 2016 Cadillac ELR at General Motors’ Cadillac Pressroom
2016 ELR Advacnes with More Power, Technology, press release, 2015-04-15.


Wormhole: Reliable Pub-Sub to Support Geo-replicated Internet Services | Sharma et al. (+21 others) @ Facebook, Cornell

Sharma et al. (+21 others); Wormhole: Reliable Pub-Sub to Support Geo-replicated Internet Services; In Proceedings of the 12th USENIX Symposium on Networked Systems Design and Implementation (NSDI); 2015-05-04; 17 pages; landing, slides


Yogeshwer Sharma, Philippe Ajoux, Petchean Ang, David Callies, Abhishek Choudhary, Laurent Demailly, Thomas Fersch, Liat Atsmon Guz, Andrzej Kotulski, Sachin Kulkarni, Sanjeev Kumar, Harry Li, Jun Li, Evgeniy Makeev, Kowshik Prakasam (Facebook); Robbert van Renesse (Cornell University); Sabyasachi Roy, Pratyush Seth, Yee Jiun Song, Benjamin Wester, Kaushik Veeraraghavan, Peter Xie (Facebook)


Wormhole is a publish-subscribe (pub-sub) system developed for use within Facebook’s geographically replicated datacenters. It is used to reliably replicate changes among several Facebook services including TAO, Graph Search and Memcache. This paper describes the design and implementation of Wormhole as well as the operational challenges of scaling the system to support the multiple data storage systems deployed at Facebook. Our production deployment of Wormhole transfers over 35 GBytes/sec in steady state (50 millions messages/sec or 5 trillion messages/day) across all deployments with bursts up to 200 GBytes/sec during failure recovery. We demonstrate that Wormhole publishes updates with low latency to subscribers that can fail or consume updates at varying rates, without compromising efficiency.


tl;dr → like Apache Kafka, but different.


  • A. Adya, G. Cooper, D. Myers, M. Piatek. Thialfi: A client notification service for internet-scale applications. In Proceedings 23rd ACM Symposium on Operating Systems Principles. 2011. pages 129–142.
  • P. Hunt, M. Konar, F. P. Junqueira, B. Reed. ZooKeeper: Wait-free coordination for internet-scale systems. In Proceedings 2010 USENIX Annual Technical Conference. 2010.
  • Amazon Web Services, Inc. Amazon simple queue service. 2014.
  • Apache Software Foundation. HedWig. 2014.
  • Apache Software Foundation. Thrift. 2014.
  • R. Baldoni, C. Marchetti, A. Virgillito, R. Vitenberg. Content-based publish-subscribe over structured overlay networks. In Proceedings of the 25th IEEE International Conference on Distributed Computing Systems (ICDCS). 2005. pages 437–446.
  • R. Baldoni, A. Virgillito. Distributed Event Routing In Publish/Subscribe Communication Systems: A Survey (revised version). Technical report, Dipartimento di Informatica e Sistemistica, Universit`a di Roma la Sapienza, 2006.
  • N. Bronson, Z. Amsden, G. Cabrera, P. Chakka, P. Dimov, H. Ding, J. Ferris, A. Giardullo, S. Kulkarni, H. Li, M. Marchukov, D. Petrov, L. Puzar, Y. J. Song, V. Venkataramani. TAO: Facebook’s distributed data store for the social graph. In Proceedings 2013 USENIX Annual Technical Conference. 2013. pages 49–60.
  • A. Carzaniga, D. S. Rosenblum, A. L. Wolf. Achieving scalability and expressiveness in an internet-scale event notification service. In Proceedings 19th ACM Symposium on Principles of Distributed Computing (PODC). 2000. pages 219–227.
  • M. Castro, P. Druschel, A.-M. Kermarrec, A. I. Rowstron. Scribe: A large-scale and decentralized application-level multicast infrastructure. In Journal on Selected Areas in Communications, 20(8):1489–1499. 2002. IEEE.
  • A. Demers, J. Gehrke, M. Hong, M. Riedewald, W. White. Towards expressive publish/subscribe systems. In Advances in Database Technology-EDBT. 2006. pages 627–644.
  • P. T. Eugster, P. A. Felber, R. Guerraoui, A.-M. Kermarrec. The many faces of publish/subscribe. In Computing Surveys, 35(2):114–131. 2003. ACM.
  • Facebook, Inc. Graph search. 2014.
  •, Inc. IronMQ. 2014.
  • J. Kreps, N. Narkhede, J. Rao. Kafka: A distributed messaging system for log processing. In Proceedings of the 6th ACM Workshop on Networking Meets Databases. 2011.
  • Y. Liu, B. Plale. Survey of Publish Subscribe Event Systems. Technical Report TR-574, Computer Science Dept., Indiana University, 2003.
  • S. P. Mahambre, S.D. Madhu Kumar, U. Bellur. A taxonomy of QoS-aware, adaptive event-dissemination middleware. In Internet Computing, 11(4):35–44. IEEE. 2007. paywall.
  • MySQL AB. MySQL.
  • R. Nishtala, H. Fugal, S. Grimm, M. Kwiatkowski, H. Lee, H. C. Li, R. McElroy, M. Paleczny, D. Peek, P. Saab, D. Stafford, T. Tung, V. Venkataramani. Scaling Memcache at Facebook. In Proceedings 10th USENIX Symposium on Networked Systems Design and Implementation (NSDI). 2013. pages 385–398.
  • G. Pape. runit. 2014.
  • M. Petrovic, I. Burcea, H.-A. Jacobsen. S-ToPSS: Semantic toronto publish/subscribe system. In Proceedings 29th Conference on Very Large Data Bases (VLDB). 2003. pages 1101–1104.
  • Philotic, Inc. Beanstalk. 2014.
  • Pivotal Software, Inc. RabbitMQ, 2014.
  • M. Platania. Ordering, Timeliness and Reliability for Publish/Subscribe Systems over WAN. PhD thesis, Sapienza University of Rome, 2011.
  • V. Ramasubramanian, R. Peterson, E. G. Sirer. Corona: A high performance publish-subscribe system for the world wide web. In Proceedings 3th USENIX Symposium on Networked Systems Design and Implementation (NSDI). 2006. pages 15–28.
  • W. Rao, L. Chen, A.-C. Fu, H. Chen, F. Zou. On efficient content matching in distributed pub/sub systems. In Proceedings of IEEE INFOCOM. 2009. pages 756–764.

Via: backfill

Imperfect Forward Secrecy: How Diffie-Hellman Fails in Practice | Adrian et al. (+13 others)

David Adrian, Karthikeyan Bhargavan, Zakir Durumeric, Pierrick Gaudry, Matthew Green, J. Alex Halderman, Nadia Heninger, Drew Springall, Emmanuel Thomé, Luke Valenta, Benjamin VanderSloot, Eric Wustrow, Santiago Zanella-Béguelin, Paul Zimmermann; Imperfect Forward Secrecy: How Diffie-Hellman Fails in Practice; Available at; 2015-05-20; 13 pages.


We investigate the security of Diffie-Hellman key exchange as used in popular Internet protocols and find it to be less secure than widely believed. First, we present a novel flaw in TLS that allows a man-in-the-middle to downgrade connections to “export-grade” Diffie-Hellman. To carry out this attack, we implement the number field sieve discrete log algorithm. After a week-long precomputation for a specified 512-bit group, we can compute arbitrary discrete logs in this group in minutes. We find that 82% of vulnerable servers use a single 512-bit group, allowing us to compromise connections to 7% of Alexa Top Million HTTPS sites. In response, major browsers are being changed to reject short groups.

We go on to consider Diffie-Hellman with 768- and 1024-bit groups. A small number of fixed or standardized groups are in use by millions of TLS, SSH, and VPN servers. Performing precomputations on a few of these groups would allow a passive eavesdropper to decrypt a large fraction of Internet traffic. In the 1024-bit case, we estimate that such computations are plausible given nation-state resources, and a close reading of published NSA leaks shows that the agency’s attacks on VPNs are consistent with having achieved such a break. We conclude that moving to stronger key exchange methods should be a priority for the Internet community.


  • System Administration Guide
    Remediations (and see below)

    • Diffie-Hellman Key Exchange (DHKE) > 1024 bits
    • Elliptic Curve Diffie-Hellman (ECDH)
  • Elliptic Curve Diffie-Hellman (ECDH)
  • Logjam
    a pun on Discrete Logarithm


Summarization of the Guide to Deploying Diffie-Hellman for TLS from



Yes, there were references


Thread Group



  • Something about security
    • AES
    • always
    • required
  • Yet another standards body
    • Governance unclear
    • IP policy unclear
    • Closed (members only)
    • Sphere: Google-axis (contra Apple-axis HomeKit, etc.)
  • Tech Stack
    • Covers
      • UDP
      • IP Routing
      • 6LoWPAN (IPv6)
    • Below
      • IEEE 802.15.4 MAC
      • IEEE 802.15.4 PHY
  • Recent
    • Ubiant
    • Thread and ZigBee have made nice with each other.
      ZigBee Cluster Library over Thread, members only.


The wonderful thing about standards is …

  • AllSeen Alliance
  • ARM
    mbed operating system mbedmicro/mbed, the mbed Enabled logo program
  • Bluetooth SIG
  • HomeKit of Apple
    MFi licensees only
  • Open Interconnect Consortium
  • ZigBee Alliance
    ZigBee licensees only


Role Who Day Job
President Chris Boross Nest Labs
Vice President of Marketing Sujata Neidig Freescale
Vice President of Technology Skip Ashton Silicon Labs
Secretary Bill Curtis ARM
Treasurer Kevin Kraus Yale Security
Director Landon Borders Big Ass Fans
Director Benny Getz Samsung Electronics


  • Initial
    • ARM
    • Big Ass Fans
    • Freescale Semiconductor
    • Nest of Google
    • Samsung
    • Silicon Labs
    • Yale Security
  • More
    • Thread Group Membership Grows To More Than 50 Companies; press release; Thread Group; 2014-12-16.

      • UL to Run Independent Certification Lab for Products Using Thread Networking Protocol
      • Granite River Labs will perform the testing.
    • ATMEL, California Eastern Laboratories, Inc., CamPoint, Energizer Holdings, Inc., GainSpan Corporation, Granite River Labs, Grid Connect, Imagination Technologies, Insteon, Intellihot Green Technologies Inc., iOT Tech, Jasco, Keen Home, Kwikset, leakSMART, Linx Technologies, LUX Technology Group, Marvell Technology Group Ltd., Midea Group, Nanoleaf, NET2GRID, Pacific Gas & Electric Company, Proximetry, Inc., SALTO SYSTEMS, Sansa Security, Shenzhen Rakwireless Technology Co., Ltd, Skyley Networks, Inc., Stack Lighting, Telegesis, TÜV Rheinland Group, Tyco, UL, Whirlpool Corporation, WigWag Inc, ZONEFIRST


  • Only available to members
    • Specifications => no (not yet)
    • Reference Designs => no
  • <quote cite=”ref“>The ZigBee-over-Thread spec will be available as a free download. Thread releases its specs royalty-free to members; the ZigBee Alliance allows members to charge reasonable royalties although in practice royalties are not generally asserted.</quote>

Introduction; Thread Group; 2014-07-15; 9 slides.

Downloads => videos


Via: backfill

2016 Cadillac ELR

2016 ELR Advances with More Power, Technology; press release; General Motors; 2015-04-15.





What Is Generation Z, And What Does It Want? | Altitude

Through the Eyes of Gen Z; Susan Shelkrot; Altitude; 2015-05; 18 pages; regwall (pay with PII).
Teaser: 6 Keys to Understanding Your Next Customer

Susan Shelkrot is VP Program Development, Altitude.


  • A study, a survey.
  • N=”over a dozen”
  • Age 16-18 (born 1999-1997)
  • Jeremy Finch, staff, Altitude
  • Personas are developed.

The influences (listicle) draws on generational theory as an environmental framing effect that shapes the cohort’s revealed mindset & practiced behaviors:

<quote>The majority of Gen Z parents are part of Gen X. Gen X lived through the ambiguity of the Vietnam War and the recessions of the early 80’s and early 90’s, and now they’ve passed on the lessons they learned from their own experiences to their children. As a result, many of Gen Z’s behaviors are driven by a similar desire to seek safety, security, and self reliance.</quote>


  1. Growing up digital.
  2. Living in uncertainty.
  3. Gen X parents.
Keys to Understanding
  1. 8 Second Filter
    Everything is link bait nowadays.
  2. Digital Catch-22
    Social Media (Facebook); follows from #1.
  3. Echo Chamber
    Self explanatory; follows from #1
  4. Contingency Plans
    Finance, carreer- and life- path choices.
  5. Drive
    They have a work ethic, they understand olds’ perceptions of their work ethic.
  6. Financial Literacy
    They have it, get it, study it..


  • Generation Z is not lazy
  • Generation Z needs anonymity and ephemerality from social media
    Therefore, Facebook & Twitter need to develop ephemeral features like Yik Yak and SnapChat.
  • Generation Z cannot tolerate differences of opinion.
  • Generation Z cannot adapt to radically new ideas readily or eagerly.
  • Generation Z needs to retain control, to have options.
  • Generation Z will not tolerate long-term contracts.
  • Generation Z will not tolerate long-length education schemes (ahem, degree programs).
  • Generation Z values training in transferrable, generalist skills.
  • Generation Z needs gamification: leader boards, progress bars, todo lists.
  • Generaion Z may not be skilled enough or patient enough to work their first job [huh?]
  • Generation Z something vague about sports interests.
    whereas Generation X invented Extreme Sports, therefore Generation Z …???
  • Generation Z wants financial planning aligned with their life-stage and perceived life goals.  No math.
  • Generation Z will want creative financial engineering to avoid uncreative financial engineering (debt).
    This seems to be a veiled reference to the sharing economy; if you can share it, why buy it; if you can lease it, why buy it [And there is an answer to that mind puzzle as Generation Z will find out soon enough when they get evicted from their rent-controlled apartment or can't get an Uber in time.  Depending upon the kindness of others has strong limits when the constraints set in.  It goes by the fancy name control premium].


What Is Generation Z, And What Does It Want?; Jeremy Finch (Altitude); In Fast Company; 2015-05-04.
Teaser: And you thought you had just figured out millennials. It’s time to start wringing your hands about the new generation that’s about to enter the workforce. What do they even want?

The listicle:

  1. It’s not an attention problem, It’s an 8-second filter
  2. They’re not screen addicts, They’re full-time brand managers.
  3. They’re not all entrepreneurs—They’re practical pragmatists.



On the linkbait…

<quote>Gen Z have a carefully tuned radar for being sold to and a limited amount of time and energy to spend assessing whether something’s worth their time. Getting past these filters, and winning Gen Z’s attention, will mean providing them with engaging and immediately beneficial experiences. One-way messaging alone will likely get drowned out in the noise.</quote>

On social media…

<quote>Gen Z feel torn: They need social media to build their personal brands but resist being defined by it. They seek social validation and inclusion but are looking to differentiate themselves professionally. Companies that understand this tension will provide Gen Z the tools they need to reconcile and better manage their personal and professional brands.</quote>

On life course choices…

<quote>To ease [their] anxiety, the participants in our study all claimed to be aiming for jobs in growing, less-automatable fields like education, medicine, and sales. And they’re obsessed with developing contingency plans to help them navigate the dynamic job market. While the media has singled out a number of high-profile entrepreneurial teen success stories, the majority of Gen Z in our study are biased in favor of career and financial stability. Entrepreneurship is seen as a way to not have to rely on anyone (or anything) else, and their version of it will likely be focused on sustainable “singles and doubles” ventures rather than Silicon Valley “home runs.”</quote>

Via: backfill.

Mobile Device Tracking | FTC (2014)

Mobile Device Tracking, a workshop; Federal Trade Commission (FTC); 2014-02-19.


  • Speakers
    • Mallory Duncan, National Retail Federation
    • James Riesenbach, CEO, iInside
    • Seth Schoen, staff, technologist, Electronic Frontier Foundation (EFF)
    • Ashkan Soltani, activist
    • Glenn Tinley, Mexia; a consultancy.
    • Ilana Westerman, CEO, Create with Context, Inc.; a consultancy.
  • Slides, 121 slides (gobs of gratuitous reveals at the end).
  • Transcripts
  • Video


  • Euclid
  • Path Intelligence
  • RetailNext


Via: backfill, backfill, backfill. | This Connection is Untrusted

Nothing says “The Web is Misconfigured” quite like a low-level security protocol failure notice from a university academic paper dump: East Central Minnesota: Social and Economic Trends and Implications, Forestry Analysis; James Skurla, Richard Lichty, William Fleischman with Jean Jacobson, Malita Barkataki, Joshua Williams; Labovitz School of Business & Economics, Bureau of Business and Economic Research; 2004-03; 58 pages.

$ openssl s_client -connect
depth=0 C = US, postalCode = 55455, ST = MN, L = Minneapolis, street = 100 Union Street SE, O = University of Minnesota, OU = Information Technology Systems and Services, CN =
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 C = US, postalCode = 55455, ST = MN, L = Minneapolis, street = 100 Union Street SE, O = University of Minnesota, OU = Information Technology Systems and Services, CN =
verify error:num=27:certificate not trusted
verify return:1
depth=0 C = US, postalCode = 55455, ST = MN, L = Minneapolis, street = 100 Union Street SE, O = University of Minnesota, OU = Information Technology Systems and Services, CN =
verify error:num=21:unable to verify the first certificate
verify return:1
Certificate chain
 0 s:/C=US/postalCode=55455/ST=MN/L=Minneapolis/street=100 Union Street SE/O=University of Minnesota/OU=Information Technology Systems and Services/
   i:/C=US/O=Internet2/OU=InCommon/CN=InCommon Server CA
 1 s:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO High-Assurance Secure Server CA
   i:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root
Server certificate
subject=/C=US/postalCode=55455/ST=MN/L=Minneapolis/street=100 Union Street SE/O=University of Minnesota/OU=Information Technology Systems and Services/
issuer=/C=US/O=Internet2/OU=InCommon/CN=InCommon Server CA
No client certificate CA names sent
Server Temp Key: DH, 1024 bits
SSL handshake has read 3543 bytes and written 447 bytes
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
    Protocol  : TLSv1
    Cipher    : DHE-RSA-AES256-SHA
    Session-ID: 75FB051CAEF962ADE2E15544DE1FB5E2CE542314DF5A4DF78A135D6072ABEDD5
    Master-Key: 80A072911AFF35925DA98ED12E2D1D6A94B897DCB9221113FFB0913C4827C89746AF228CFDE1E532E01B238328FD37F8
    Key-Arg   : None
    Krb5 Principal: None
    PSK identity: None
    PSK identity hint: None
    TLS session ticket:
    0000 - d2 5a 65 ca c9 b9 73 8e-2a 0c 3b 61 71 33 7e d6   .Ze...s.*.;aq3~.
    0010 - da 56 18 53 a2 ed cd fd-a1 91 17 69 d8 0c cc 44   .V.S.......i...D
    0020 - 8b c0 b8 71 e2 bf 22 5f-d0 d2 de 34 e8 04 a4 ac   ...q.."_...4....
    0030 - e3 3c d7 60 b7 5f 20 c6-2e 77 6e a6 59 33 0d d7   .

European Mobile Ad Blocking with Shine

Based on information & belief, but mostly belief. All around an “exclusive” (i.e. single-sourced & unverified) outburst behind the paywall of The Financial Times.

In archaeological order



  • Shine
  • Who
    • Ron Porat, CEO
    • Roi Carthy
      • chief marketing officer, Shine
      • managing partner, Initial:Capital
  • Founded 2011
  • Business plans
    • mobile antivirus (?)
    • pivot to ad block, undated
  • Staff
    • 25
  • Location
    • Israel (where?)
  • Funding
    • $3.3M
  • Investors
    • Horizon Ventures
    • Initial:Capital
      • Roi Carthy, managing partner.
    • <quote cite=”ref“>Horizons Ventures — which is owned by Li Ka-shing, the billionaire chairman of Hutchinson Whampoa, the huge conglomerate that owns the “3″-branded mobile carrier, which operates across Europe, and also the company that has a stake in carriers in Asia including Hutchinson Asia Telecommunications. It also invested in a number of technology companies Facebook, Spotify, and Siri. Shine is also funded by Initial:Capital, which is an early stage investment firm, where Carthy is managing partner.</quote>
  • Product
    • AdSight, a trade name
    • white label
    • licenses to mobile carriers
  • Press
  • Customers
    • unclear, maybe none.
    • <quote cite=”ref“>At least one [US carrier] is participating. Verizon, AT&T, Sprint and T-Mobile didn’t respond to requests for comment.</quote>
      • Lowell McAdam, CEO, Verizon, disconfirmed, maybe.



Recipe for subversion-to-git for rsa (of


Google Code is now Dead Code Walking, it’s time to acquire copies of the necessary sources mastered there.


rsaThe rsa project an implementation of the RSA cryptography algorithm in C++.


$ cd /vault/git/svn/
$ mkdir rsa
$ svnadmin create rsa
$ cat > rsa/hooks/pre-revprop-change <<EOF
exit 0;
$ chmod +x rsa/hooks/pre-revprop-change

$ svnsync init file:///vault/git/svn/
Copied properties for revision 0.
# (just the one line of output)

$ svnsync sync file:///vault/git/svn/ 
# ... lots and lots of output (very slow)
# (very slow)
$ cd /vault/git/clones
$ git svn clone file:///vault/git/svn/ -T trunk -b branches -t tags
Initialized empty Git repository in /vault/git/clones/rsa/.git/
Using higher level of URL: file:///vault/git/svn/ => file:///vault/git/svn/
# (lots of output, very slow)
r70 = ec1f09d6cf45cb09d411cac386b76ade1b5da15d (refs/remotes/trunk)
Checked out HEAD:
  file:///vault/git/svn/ r70

# convert to the bare repository format
$ mv rsa/.git rsa.git
$ rm -rf rsa
$ cd rsa.git
$ git config --bool core.bare true

Also, -s or --stdlayout is the same as -T trunk -b branches -t tags

WATCHOUT – if you use --stdlayouton an inappropriate dubversion URL, then you’ll get an empty cloned git repository.  The case above has the “standard layout” occurring, not at the top level, but rather one level down; e.g. within rsa of file:///vault/git/svn/, for a complete URL of file:///vault/git/svn/


emacs rsa.git/description
touch rsa.git/git-daemon-export-ok


Experimenting Monitoring and Proximity techniques using Android potential and iBeacon devices | Matteo Gazzurelli

Matteo Gazzurelli; Experimenting Monitoring and Proximity Techniques Using Android Potential and iBeacon Devices; At DroidCon; 2015-04-10; 26 slides; landing.



Via: backfill

ATIS Open Web Alliance

Open Web Alliance of ATIS


  • These are the telecoms and network infrastructure vendors.
  • They have jurisdictional obligations to monitor the traffic on their networks; c.f. Communications Assistance for Law Enforcement (CALEA) and other in-country operating laws, regulations, rules.
  • They base their future business aspirations off of Deep Packet InspectionInsertion (DPI) which they call Value Added Services.
  • In particular they are looking to track-and-target persons on their network for at least advertising purposes.
  • In particular, they are looking to insert ad creative into the entertainment-type network traffic.
  • They hope to avoid being low-value dumb pipes supporting a high-value smart edge‘.
  • A web with universal E2E crypto breaks this.
  • They are against end-to-end encryption
  • They are against ubiquitous SSL/TLS
  • They are against SPDY
  • They are against HTTP/2.0 (which will require e2e crypto)
  • They are an substantially an anti-Google axis (yet Google is a member)
  • Their counterproposal is Open Transparent Proxy
    • They crack the SSL at their edge.
    • From their proxy head end, they will transport the communcations to their upline obligations: government, advertisers, vendors, monitors, and also to the consumer’s desired end point.
    • Value Added Services (VAS)


(conveners, staff)

  • Sanjay Mishra
    Distinguished Member of the Technical StaffNetwork Infrastructure Planning
    Corporate Technology
  • Kevin ShatzkamerDistinguished Architect
    Mobility, Web and Media
  • Jim McEachern
    Senior Technology Consultant


  • Alcatel-Lucent
  • AT&T
  • Cisco
  • Ericsson
  • Google
  • GSMA
  • Hitachi
  • Hughes
  • iconectiv
  • Intrado
  • Leidos
  • NTT
  • Openwave Mobility
  • Orange
  • Rogers
  • TDS
  • Time Warner Cable
  • T-Mobile
  • Verizon