Sunday, November 10, 2013
Errata: Business Week Piece on Twitter
A piece of writing brought to my attention recently (The Hidden Technology that Makes Twitter Huge) led me to wonder, how does one say "noyer le poisson" in American? "Noyer le poisson" is an expression in French commonly used figuratively; literally translated it is "to drown the fish" (or "drowning the fish"). The figurative use means "to avoid a taboo topic or difficult subject, concealing it under a mound of details." "Beat around the bush" is probably a good approximation, but "snow job" might be better.
The Snow Job
The piece in question is hardly unique in attempting to snow readers, but much of the detail used to snow the reader is actually wrong and misleading, while a real technological innovation of Twitter's is not mentioned at all. The reader is provided a supposed "look under the hood" at Twitter, the better to marvel at its genius. The originality is possibly overstated, the execution performance is understated, and look under the hood leaves the reader less well informed!The omitted technology may not matter too much to shareholders as, valuable as it may be, it cannot explain much of Twitter's market value. Twitter uses Scala effectively: "Scala is one of the main application programming languages used at Twitter. Much of our infrastructure is written in Scala and we have several large libraries supporting our use....Our use of Scala is mainly for creating high volume services that form distributed systems...".
The Genius and Genesis of Twitter
There are lots and lots of prior practices and ideas that may have contributed to the Twitter service, including e-mail listserv (for broadcasting messages to subscribers using mail protocol) and pagers (and bippers). SMS/text messages sent from mobile phones may have a role as a model. But the real inspiration was people's status messages on IM! From Twitter on Scala (April 2009):Twitter started as a hack project at a company called ODEO, which was focused on podcasting. As ODEO was having some troubles in its latter days as a company, they started experimenting, to keep engineers involved by letting them play around with ideas they had on the side. One of the engineers, Jack Dorsey, had been really interested in status. He was looking at his AIM buddy list, and seeing that all of these guys were saying, “I’m walking the dog,” “I’m working on this,” “I’m going to that.” He wondered if there was some way to make it easier for people to share that status. So he and a couple other engineers started prototyping what became Twitter on Ruby on Rails, which was the stack that ODEO was built on. And Twitter continues today to be primarily a Rails application, with a bunch of Ruby daemons doing asynchronous processing on the backend.So, using Twitter might be likened to connecting to a buddy list where nobody ever sent messages, just status updates, and the status updates were logged for later perusal. Or an alphapager system wherein anyone can broadcast short messages to everyone listening on their channel. Or simply, as one of the developers put it, a transport-independent micro-blogging system. But who will be willing to pay for that, and how much?
Message and Content Containers
The BusinessWeek piece notes that a Twitter message has lots of meta-data or header information associated. This is true, but equally true of e-mail. The piece itself, saved as html, is over 200k bytes of stuff, very little of which is the text.It is also questionable how reliable some of the information provided by senders is, particularly when their anonymity is of the essence. On a message sent via a VPN rather than a geo-tracking device (like a smartphone) the sender's whereabouts are not known any better than those of a mail sender. Some of the fields are optional, as well, and potentially of little analytical value. Among the "special" fields in Twitter messages, a study made by an intern at PARC in 2011 found that Only 66% Use Twitter Profile Location Field as Intended:
34% of Twitter users do not provide a valid geographic location on their Twitter user profiles. Instead, some of these users co-opt the field to make jokes, express their love for a particular celebrity or to shout back at Twitter that their location is "NON YA BUSINESS!" Others, meanwhile, provide no location information at all.
n00b-speak
The factual errors concern the "snow" used to get the reader enthralled: API use and JSON. The use of technical terms was confusing, dazzling; it was not all wrong, really, but may have outstripped the author's understanding.The first case is the explanation of JSON and its use. JSON is a set of syntax rules for representing labelled data, as is XML, and there are others. It happens that JSON uses a syntax very much like that used in ECMAScript, which (ECMAScript) served as its model. To call it "a simplified version of JavaScript" is not correct; leaving out all the control commands (loops and logic and such) is more than simplification, one does not have a programmable language left.
Similarly, and in the next sentence, "API essentially means “speaks (and reads) JSON.”" is not generally true. API essentially means "accepts requests from application programs and responds as best it can." It is an interface program, which may "speak" XML, html or something else instead of JSON. The flickr.com api, for instance, accepts requests using REST, XML-RPC or SOAP (but not JSON) and replies using REST, XML-RPC, SOAP, JSON, or PHP.
Another instance of confused reference to an API is in "For all the possibilities of APIs, there are also limits." A query result returned by a call to an API has flags set with warning messages, restricting publication; how is that in conflict with "all the possibilities of APIs"? It is not, "API" was worked in gratuitously.
Finally, and this may not bother all readers, stylistically writing of short text messages as if they were animals is inappropriate. "a tweet thrives," "once born, they're alone and must find their own way," is nonsense.
Note on the French figure of speech: Ref. (Figuré) Ne pas aborder un thème tabou ou un sujet difficile, le dissimuler sous un monceau de détails. from Wiktionary entry
Tags: :
Labels: criticism, debugging, ECMAScript, journalism, technology, translation, Twitter
Thursday, November 17, 2011
Upgrading to Thunderbird 3.1.15 and Kubuntu 10.10
I recently upgraded Kubuntu on my computer, from 9.10 to 10.04, then to 10.10. One consequence of those changes was that the version of Thunderbird (with Lightning) evolved from 2.x to 3.1.15.
The first issue was encountered in the "Migration Assistant" of all places. The Migration Assistant is a wizard that highlights a couple of former features that are now delegated to extensions (plugins, add-ons) and provides links to install them. However, the links only start a download of the xpi, they do not --nor does some other feature of the wizard -- allow one to complete the installation immediately. Meanwhile, the little "installing" icon continues to rotate as if something were still being done; onecan should proceed to "Next" once the download has completed. To complete the installation, one simply follows Tools>Add Ons from the menubar, indicates the downloaded xpi, and confirms. This is where the second glitch showed up: the version download following the link in the wizard does not work with this version of Thunderbird! Not entirely surprising, since I've only updated to a version of Thunderbird that is over a year old, but the link was to the current version of the extension, no longer compatible with my older application. But I was not able to find a compatible version of the extension, so presumably I've lost a feature. I restarted Thunderbird and checked my inbox.
I was immediately annoyed by one evolution: the opening of messages in tabs instead of new windows and, with that, no longer being able to close a message by hitting Escape. Evidently, the user interface is evolving to suit tablet and phone users who do everything with just one finger rather than eight fingers roaming over a full keyboard. The way to change that to suit my preferences was:
The first issue was encountered in the "Migration Assistant" of all places. The Migration Assistant is a wizard that highlights a couple of former features that are now delegated to extensions (plugins, add-ons) and provides links to install them. However, the links only start a download of the xpi, they do not --nor does some other feature of the wizard -- allow one to complete the installation immediately. Meanwhile, the little "installing" icon continues to rotate as if something were still being done; one
I was immediately annoyed by one evolution: the opening of messages in tabs instead of new windows and, with that, no longer being able to close a message by hitting Escape. Evidently, the user interface is evolving to suit tablet and phone users who do everything with just one finger rather than eight fingers roaming over a full keyboard. The way to change that to suit my preferences was:
- Navigate to : Edit > Preferences>Advanced> Reading & Display
- Choose the option: "Open messages in: a new message window" and, while I was at it, tick "Close message window on delete." Unlike some mail clients, deleting a message does not automatically open the next unread message but goes back to the list of messages, and I'm grateful for that.
- Change default browser in KDE system settings. Configuration > Configuration of the system >Workspace Appearance and Configuration: Default applications. Change web browser to firefox. Just in case, close everything and reboot. Test: fail, the other browser launched.
- Edit user.js file, as seen a couple of places on the web, adding user_pref("network.protocol-handler.app.http", "/usr/bin/firefox"); equivalent for https and ftp. I'll skip the details on this, because directly editing the files is not the best way to do it. It is especially not the best way on a system with an evolved (updated through version changes) machine like mine. There have been changes to directory names and organization so it is tricky to even find the right user.js to edit. By the way, on one forum I noticed a comment and query about Thunderbird installing two hidden directories, one called "~/.thunderbird" and one called "~/.mozilla-thunderbird". These are the directories where all the personal settings, connection settings, and mail archives are kept. The redundancy is only apparent, not quite true, and is done to ensure compatibility if one switches from a Debian-Ubuntu Thunderbird package to a (newer) Mozilla Messenger installation; one is just a symbolic link to the other (an alias path, if you see what I mean). The user.js (and prefs.js) have been moved from a sub-directory of .thunderbird (called something.default) to a sub-directory of .thunderbird/Profiles (called somethingelse.default), but the older files are not automatically deleted so one can -- following outdated advice -- edit the wrong user.js (as I first did). An example of this : a recommendation from 2007 which doesn't cite versions at all and adds a shell script to the chain.
- Do (2.) the right way (described in French following a link from a French Ubuntu forum). For this, one launches Edit > Preferences>Advanced>General (like for the preference change described above, except the General tab rather than Reading & Display). A click on the "Config editor..." button, and on the warning panel, brings up the list of all the settings ("about:config"). It is here, in this list, that one adds the key-value pairs "network.protocol-handler.app.ftp":"/usr/bin/firefox", "network.protocol-handler.app.http":"/usr/bin/firefox", "network.protocol-handler.app.https":"/usr/bin/firefox". Before doing so, one might check that that is the correct path to Firefox. One can either navigate there with Dolphin or open a terminal (Ctrl-alt-t) and command "which firefox". However, this was not sufficient either, and I found out why by playing around. Incidentally, insertions, resets, and so on are initiated via right-click to open a context menu. Conclusion: fail. Skip this, too.
- As in (3.), navigate to and launch the Config editor. Find the lines with "network.protocol-handler.warn-external.http" and toggle it to "true". (This is following advice [fr] for Windows, not Linux, just in case it should have been repeated but wasn't). What this does is set a trigger for a pop-up when one clicks on a link, the pop-up 'warns' what action is about to be executed and give one a choice of accepting, stopping, or choosing an alternative action. It was here that I discovered that the default action was "sensible-browser" even though I had set "firefox" as my preference. Well, the good news is that I (one) could at this point choose firefox as the alternative action and tick the box "always use this option" (or words to that effect) and that was that. I'll do the same for ftp and https when I come across links of those sorts. It does remember and doesn't pop up the warning again, but I don't know where it writes the 'firefox' preference, I don't find it in the user.js or prefs.js files.
Labels: criticism, debugging, Kubuntu, progress, Thunderbird


