<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:series="http://unfoldingneurons.com/"
	>

<channel>
	<title>gee bobg &#187; technology</title>
	<atom:link href="http://www.geebobg.com/category/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.geebobg.com</link>
	<description>Americlecticintellectica</description>
	<lastBuildDate>Mon, 15 Mar 2010 00:47:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Elbows deep</title>
		<link>http://www.geebobg.com/2010/02/18/elbows-deep/</link>
		<comments>http://www.geebobg.com/2010/02/18/elbows-deep/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 09:02:12 +0000</pubDate>
		<dc:creator>bobg</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.geebobg.com/?p=934</guid>
		<description><![CDATA[

Last week I replaced my six-year-old home server (which serves this website among many other functions) with a newer, faster, quieter computer.  Transferring all the data and functions was a considerable effort in system administration.  For the record, here are the steps I had to take.

Download Fedora 12 install-CD image.
Burn Fedora 12 install [...]]]></description>
			<content:encoded><![CDATA[<p><div class="alignright"><script type="text/javascript"><!--
google_ad_client = "pub-5530444396835149";
google_ad_width = 120;
google_ad_height = 240;
google_ad_format = "120x240_as";
google_ad_type = "text_image";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_bg = "003366";
google_color_link = "FFFFFF";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Last week I replaced my six-year-old home server (which serves this website among many other functions) with a newer, faster, quieter computer.  Transferring all the data and functions was a considerable effort in system administration.  For the record, here are the steps I had to take.</p>
<ol>
<li>Download <a href="http://fedoraproject.org/">Fedora 12</a> install-CD image.</li>
<li>Burn Fedora 12 install CD.</li>
<li>Shut down <a href="http://www.sendmail.org/">sendmail</a> and <a href="http://httpd.apache.org/">Apache</a>.</li>
<li>Dump <a href="http://www.mysql.com/">MySQL</a> database contents.</li>
<li>Dump <a href="http://www.postgresql.org/">Postgresql</a> database contents.</li>
<li>Bring up new computer with temporary hostname.</li>
<li>Install Fedora 12 on new computer.</li>
<li>Create user accounts.</li>
<li>Copy all data from old computer to new, under /old tree.</li>
<li>Shut down old computer (permanently).</li>
<li>Take over old computer’s hostname and IP address.</li>
<li>Restore <a href="http://en.wikipedia.org/wiki/Firewall_(computer)">firewall</a> config from /old.</li>
<li>Restore <a href="http://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> config from /old, bring up DNS.</li>
<li>Restore <a href="http://www.openssh.com/">sshd</a> config from /old, bring up sshd.</li>
<li>Restore Maildir trees from /old.</li>
<li>Restore <a href="http://en.wikipedia.org/wiki/Internet_Message_Access_Protocol">IMAP</a> server config from /old, bring up IMAP server.</li>
<li>Restore sendmail config from /old, bring up sendmail.</li>
<li>Restore <a href="http://wordpress.org/">Wordpress</a> environment from /old.</li>
<li>Bring up MySQL, restore contents from MySQL dump.</li>
<li>Bring up Postgresql, restore contents from Postgresql dump.</li>
<li>Restore Apache config from /old, bring up Apache.</li>
<li>Restore <a href="http://www.list.org/">Mailman</a> environment from /old, bring up Mailman.</li>
<li>Bring up <a href="http://www.apcupsd.com/">apcupsd</a>.</li>
<li>Add printer.</li>
<li>Set up network printing.</li>
<li>Set up <a href="http://en.wikipedia.org/wiki/Network_File_System_(protocol)">NFS</a>.</li>
<li>Resume <a href="http://www.geebobg.com/tag/ibid/">backups</a>.</li>
</ol>
<p>Naturally not everything went according to plan.  So in addition to the steps above I also had to solve:</p>
<ul>
<li>Why all of my domains but one could be resolved;</li>
<li>Why the firewall was getting reset at startup;</li>
<li>Why inbound mail was not flowing;</li>
<li>Why the Ethernet interface had the wrong parameters at startup;</li>
<li>Why the monitor would not go into power-save mode;</li>
<li>How to get the Flash plugin running under x86_64;</li>
<li>Why the DVD-RW drive wasn’t visible some of the time.</li>
</ul>
<p>Throughout all this, I frequently had to pause to locate and install needed software packages and <a href="http://www.cpan.org/modules/index.html">Perl modules</a> that weren’t part of the default Fedora setup.  For good measure I also had to replace an external hard drive that was about to fail.  (Thanks for the warning, <a href="http://fedoraproject.org/wiki/Features/DeviceKit">Palimpsest</a>!)</p>
<p>Happily all these things are now done, except that the monitor issue is a bona fide bug in the xorg video driver (<a href="https://bugzilla.redhat.com/show_bug.cgi?id=564595">duly filed</a>) that someone else will have to deal with.  Until then I just have to remember to switch the monitor off when I walk away.</p>
<p>This may all sound like deep wizardry, but it doesn’t feel like it to me.  Having spent a lifetime coping and communing with these sometimes-cantankerous machines, it’s just busywork.  Then I think of the number of other people in the world who could do all of this single-handedly and I become impressed with myself.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Share</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.geebobg.com/2010/02/18/elbows-deep/&amp;title=Elbows+deep" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://www.geebobg.com/2010/02/18/elbows-deep/" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Elbows+deep+@+http://www.geebobg.com/2010/02/18/elbows-deep/" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://www.geebobg.com/2010/02/18/elbows-deep/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t dis &#8220;don&#8217;t be evil&#8221;</title>
		<link>http://www.geebobg.com/2010/01/31/dont-dis-dont-be-evil/</link>
		<comments>http://www.geebobg.com/2010/01/31/dont-dis-dont-be-evil/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 23:40:06 +0000</pubDate>
		<dc:creator>bobg</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.geebobg.com/?p=922</guid>
		<description><![CDATA[Dear Steve Jobs,
We have some Apple products in our household.  Also, I’m an employee of Google.
“Don’t be evil” is not bullshit.  I and a lot of my colleagues work there precisely because of that mantra, and many of us are prepared to pack up and leave if we ever discover Google straying meaningfully [...]]]></description>
			<content:encoded><![CDATA[<p>Dear Steve Jobs,</p>
<p>We have some Apple products in our household.  Also, I’m an employee of Google.</p>
<p>“Don’t be evil” is <a href="http://www.wired.com/epicenter/2010/01/googles-dont-be-evil-mantra-is-bullshit-adobe-is-lazy-apples-steve-jobs/">not bullshit</a>.  I and a lot of my colleagues work there precisely because of that mantra, and many of us are prepared to pack up and leave if we ever discover Google straying meaningfully from it.  Gratifyingly, opportunities arise often in which to apply “don’t be evil” to a business or engineering decision, and a culture of vigorous and principled internal debate helps to ensure we choose correctly.  Not all cases are black and white, of course (though some are), and it’s possible to err, but on the whole we do pretty well, non-evil-wise, especially compared to, well, every other publicly traded technology company.</p>
<p>In short, I take your remark as a personal insult, not to mention a telling comment on your own sense of right and wrong and, by extension, that of your company.  I would welcome a sincere retraction, failing which I will have to reconsider continuing to be an Apple patron.</p>
<p>Thanks,<br/>- Bob</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Share</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.geebobg.com/2010/01/31/dont-dis-dont-be-evil/&amp;title=Don%26%238217%3Bt+dis+%26%238220%3Bdon%26%238217%3Bt+be+evil%26%238221%3B" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://www.geebobg.com/2010/01/31/dont-dis-dont-be-evil/" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Don%26%238217%3Bt+dis+%26%238220%3Bdon%26%238217%3Bt+be+evil%26%238221%3B+@+http://www.geebobg.com/2010/01/31/dont-dis-dont-be-evil/" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://www.geebobg.com/2010/01/31/dont-dis-dont-be-evil/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ibid 2009</title>
		<link>http://www.geebobg.com/2009/12/22/ibid-2009/</link>
		<comments>http://www.geebobg.com/2009/12/22/ibid-2009/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 15:40:27 +0000</pubDate>
		<dc:creator>bobg</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[ibid]]></category>

		<guid isPermaLink="false">http://www.geebobg.com/?p=910</guid>
		<description><![CDATA[

The last I wrote about my backup tool, ibid, was three years ago (here; earlier post here), but I’ve continued making refinements to it.  Then it was at version 24; now it’s at version 47 (download it here).  Here are the changes since then, minus the uninteresting ones:

Add –maxfiles.
Don’t use Storable for the [...]]]></description>
			<content:encoded><![CDATA[<p><div class="alignright"><script type="text/javascript"><!--
google_ad_client = "pub-5530444396835149";
google_ad_width = 120;
google_ad_height = 240;
google_ad_format = "120x240_as";
google_ad_type = "text_image";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_bg = "003366";
google_color_link = "FFFFFF";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>The last I wrote about my backup tool, ibid, was three years ago (<a href="http://www.geebobg.com/2006/11/13/ibid-update/" title="Ibid update">here</a>; earlier post <a href="http://www.geebobg.com/2006/10/20/ibid-incremental-backups-to-infinite-disk/" title="Ibid: Incremental backups to infinite disk">here</a>), but I’ve continued making refinements to it.  Then it was at version 24; now it’s at version 47 (download it <a href="http://www.emphatic.com/bobg/ibid">here</a>).  Here are the changes since then, minus the uninteresting ones:</p>
<ol>
<li value="25">Add –maxfiles.</li>
<li value="32">Don’t use Storable for the complete record structure; apparently a stringified form gets constructed in memory before it’s written to the file, which is disastrous for very large records.  Use a custom streaming serialization method instead.  Also, detect and reject unknown record versions.</li>
<li value="35">Another major rewrite.  This one does away with the old runtime data structures based on big, inefficient Perl hashes, replacing them with strings containing compact “pack”ed values.  This change yields enormous runtime memory savings, which matters after a few hundred sessions and many tens of thousands of files have accumulated in your fileset record.  Also fixed a few documentation bugs and eliminated some dead code.</li>
<li value="36">Rename options for greater consistency: –limit (-l) is now –maxbytes (-b); –files (-f) is now –maxfiles (-f).</li>
<li value="37">Report when one or the other limit (bytes or files) is reached.</li>
<li value="38">Add –prune-sessions option.</li>
<li value="41">Add new –single-file-size-limit option; renamed –maxbytes and –maxfiles to –session-size-limit and –session-files-limit, respectively.  Switched from &amp;foo() function-calling syntax to foo().</li>
<li value="42">Add a new history-entry type: zero-length (“empty”) files.  These are recorded in the session record but not copied to the archive, to save overhead.</li>
<li value="43">Include &lt;dev:ino&gt; in –dump output when –verbose is supplied.</li>
<li value="44">Support a device-map file, $HOME/.ibid/.devmap, for tracking a filesystem when its device number changes.</li>
<li value="45">Document the .devmap file; add –trim-report; support “xz” compression of session files; support optional callbacks in foreach_name_history().</li>
<li value="46">Add another level of depth to the “target” path for each new power of 10 in the session number.  So session 7311 is rooted at TARGET/FILESET/7000/300/7311, and session 29582 is rooted at TARGET/FILESET/20000/9000/500/29582.  Path elements that would start with a 0 are omitted; e.g., session 4006 is rooted at TARGET/FILESET/4000/4006, not at TARGET/FILESET/4000/000/4006.</li>
<li value="47">Document –trim-report.</li>
</ol>
<p>There’s still no home page for ibid, but at least now all ibid-related posts on my blog are grouped under the tag <a href="http://www.geebobg.com/tag/ibid/">ibid</a>.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Share</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.geebobg.com/2009/12/22/ibid-2009/&amp;title=Ibid+2009" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://www.geebobg.com/2009/12/22/ibid-2009/" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Ibid+2009+@+http://www.geebobg.com/2009/12/22/ibid-2009/" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://www.geebobg.com/2009/12/22/ibid-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Right move made</title>
		<link>http://www.geebobg.com/2009/10/10/right-move-made/</link>
		<comments>http://www.geebobg.com/2009/10/10/right-move-made/#comments</comments>
		<pubDate>Sun, 11 Oct 2009 05:55:49 +0000</pubDate>
		<dc:creator>bobg</dc:creator>
				<category><![CDATA[history]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.geebobg.com/?p=865</guid>
		<description><![CDATA[Before the iPhone and the Blackberry was the Sidekick, a.k.a. the Hiptop, the first mass-market smartphone and, for a while, the coolest gadget you could hope to get.  Famously, and awesomely, the Hiptop’s spring-loaded screen swiveled open like a switchblade at the flick of a finger to reveal a thumb-typing keyboard underneath, one on [...]]]></description>
			<content:encoded><![CDATA[<p><!--adsense-->Before the iPhone and the Blackberry was the Sidekick, a.k.a. the Hiptop, the first mass-market smartphone and, for a while, the coolest gadget you could hope to get.  Famously, and awesomely, the Hiptop’s spring-loaded screen swiveled open like a switchblade at the flick of a finger to reveal a thumb-typing keyboard underneath, one on which the industry still hasn’t managed to improve.  Your Hiptop data was stored “in the cloud” before that term was even coined.  If your Hiptop ever got lost or stolen or damaged, you’d just go to your friendly cell phone store, buy (or otherwise obtain) a new one, and presto, there’d be all your e-mail, your address book, your photos, your notes, and your list of AIM contacts.</p>
<p>The Hiptop and its cloud-like service were designed by Danger, the company I joined late in 2002 just as the very first Hiptop went on the market.  I worked on the e-mail part of the back-end service, and eventually came to “own” it.  It was a surprisingly complex software system and, like much of the Danger Service, required continual attention simply to keep up with rising demand as Danger’s success grew and more and more Sidekicks came online.</p>
<p>Early in 2005, the Danger Service fell behind in that arms race.  Each phone sought to maintain a constant connection to the back end (the better to receive timely e-mail and IM notices), and one day we dropped a bunch of connections.  I forget the reason why; possibly something banal like a garden-variety mistake during a routine software upgrade.  The affected phones naturally tried reconnecting to the service almost immediately.  But establishing a new connection placed a momentary extra load on the service as e-mail backlogs, etc., were synchronized between the device and the cloud, and unbeknownst to anyone, we had crossed the threshold where the service could tolerate the simultaneous reconnection of many phones at once.  The wave of reconnections overloaded the back end and more connections got dropped, which created a new, bigger reconnection wave and a worse overload, and so on and so on.  The problem snowballed until effectively all Hiptop users were dead in the water.  It was four full days before we were able to complete a painstaking analysis of exactly where the bottlenecks were and use that knowledge to coax the phones back online.  It was <a href="http://news.zdnet.com/2100-1040_22-141648.html">the great Danger outage of 2005</a> and veterans of it got commemorative coffee mugs.</p>
<div style="font-size: smaller; text-align: center"><img class="centered" src="http://www.emphatic.com/bobg/danger-mug.jpg"/><br/>The graphs depict the normally docile fluctuations of the Danger Service becoming chaotic</div>
<p>The outage was a near-death experience for Danger, but the application of heroism and expertise (if I say so myself, having played my own small part) saved it, prolonging Danger’s life long enough to reach the cherished milestone of all startups: a liquidity event, this one in the form of purchase by Microsoft for half a billion in cash, whereupon I promptly quit (for reasons I’ve discussed at <a href="http://www.geebobg.com/tag/microsoft/">by-now-tiresome length</a>).</p>
<p>Was that ever the right move.  More than a week ago, <a href="http://news.cnet.com/8301-13860_3-10368709-56.html">another big Sidekick outage began</a>, and even the separation of twenty-odd miles and 18 months couldn’t stop me feeling pangs of sympathy for the frantic exertions I knew were underway at the remnants of my old company.  As the outage drew out day after day after day I shook my head in sad amazement.  Danger’s new owners had clearly been neglecting the scalability issues we’d known and warned about for years.  Today the stunning news broke that <a href="http://news.cnet.com/8301-17938_105-10372521-1.html">they don’t expect to be able to restore their users’ data, ever</a>.</p>
<p>It is safe to say that Danger is dead.  The cutting-edge startup, once synonymous with must-have technology and <a href="http://www.engadget.com/2005/02/20/paris-hiltons-hacked-sidekick-releases-unedited-tell-all/">B-list celebrities</a>, working for whom I once described as making me feel “like a rock star,” will now forever be known as the hapless perpetrator of a monumental fuck-up.</p>
<p>It’s too bad that this event is likely to mar the reputation of cloud computing in general, since I’m fairly confident the breathtaking thoroughness of this failure is due to idiosyncratic details in Danger’s service design that do not apply at a company like, say, Google — in whose cloud my new phone’s data seems perfectly secure.  Meanwhile, in the next room, my poor wife sits with her old Sidekick, clicking through her address book entries one by one, transcribing by hand the names and numbers on the tiny screen onto page after page of notebook paper.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Share</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.geebobg.com/2009/10/10/right-move-made/&amp;title=Right+move+made" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://www.geebobg.com/2009/10/10/right-move-made/" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Right+move+made+@+http://www.geebobg.com/2009/10/10/right-move-made/" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://www.geebobg.com/2009/10/10/right-move-made/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Score one for the engineers</title>
		<link>http://www.geebobg.com/2009/09/16/score-one-for-the-engineers/</link>
		<comments>http://www.geebobg.com/2009/09/16/score-one-for-the-engineers/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 04:29:14 +0000</pubDate>
		<dc:creator>bobg</dc:creator>
				<category><![CDATA[history]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[microsoft]]></category>

		<guid isPermaLink="false">http://www.geebobg.com/?p=849</guid>
		<description><![CDATA[I’ve been asked about the reason for my low opinion of Microsoft.  It isn’t just me of course — a lot of technologists regard Microsoft that way.  Here’s an anecdote that illustrates why.

The year is 1993.  No one’s ever heard of the World Wide Web.  Few people have even heard of [...]]]></description>
			<content:encoded><![CDATA[<p><!--adsense-->I’ve been asked about the reason for <a href="http://www.geebobg.com/2008/02/11/dangerous-liaison/" title="&amp;#8220;Danger&amp;#8221;ous liaison">my low opinion of Microsoft</a>.  It isn’t just me of course — a lot of technologists regard Microsoft that way.  Here’s an anecdote that illustrates why.</p>
<hr/>
<p>The year is 1993.  No one’s ever heard of the World Wide Web.  Few people have even heard of e-mail.  Too often, when I explain my role at the e-mail software startup Z-Code to friends and relatives, I also have to explain what e-mail is in the first place.</p>
<p>Those who <em>do</em> know about e-mail in 1993, if transported to 2009, would not recognize what we call e-mail now.  To them, e-mail looks like this:</p>
<p><img src="http://www.emphatic.com/bobg/elm.gif" class="centered"/></p>
<p>It’s all plain, unadorned text rendered blockily on monochrome character terminals.  For the most part, variable-width, anti-aliased fonts are years in the future.  Boldface and italic text exist only in the imagination of the reader of a message that uses <i>ad hoc</i> markup like *this* and _this_.  Forget about embedded graphics and advanced layout.</p>
<p>However, in 1993 something has just been invented that will catapult e-mail into the future: <a href="http://www.geebobg.com/2007/06/29/fifteen-years-of-mime/" title="Fifteen years of MIME">the MIME standard</a>, which permits multimedia attachments, rich text markup, and plenty more.  Almost no one has MIME-aware e-mail software yet.  Meanwhile, at Z-Code, we’re busy adding MIME capabilities to our product, Z-Mail.  The capabilities are primitive: for instance, if we detect that a message includes an image attachment, we’ll launch a separate image-viewing program so you can see the image.  (Actually rendering the image inline comes much later for everyone.)</p>
<p>The Z-Mail user is able to choose an auto-display option for certain attachment types.  If you have this option selected and receive a message with an image attachment, your image-viewing program pops up, displaying the attachment, as soon as you open the message.  (Without the auto-display option set, you explicitly choose whether or not to launch the viewer each time you encounter an image attachment.)</p>
<p>There comes the time that the marketing guy at Z-Code asks if we can add automatic launching of Postscript attachments, too.  In 1993, Postscript is the dominant format for exchanging printable documents.  (Today it’s PDF.)  Turns out that a lot of potential Z-Mail users are technically unsavvy business types who exchange Postscript files often, jumping through tedious hoops to attach them, detach them, and print them out.  Automatically popping up a window that renders a Postscript attachment right on the screen would be <em>pure magic</em> to them, changing them from potential Z-Mail users into actual Z-Mail users.</p>
<p>But there is a problem.  Postscript files differ from image, sound, and other document files in one important respect: whereas those latter types of file contain static, inert data, requiring special programs to render them, Postscript files are themselves full-fledged computer programs.  The Postscript renderer is just a language interpreter — like a computer within the computer, running the program described by the Postscript document.</p>
<p>Virtually all Postscript programs — that is, documents — are completely innocuous: place such-and-such text on the page here, draw some lines there, shade this region, and so on.  But it’s perfectly conceivable that a  malicious Postscript document — that is, program — can act as a computer virus, or worm, causing the computer to access or alter files, or use the network or CPU in mischievous ways without the user’s knowledge or approval.</p>
<p>So launching the Postscript interpreter with an unknown document is risky at any time.  Doing so automatically — as the default setting, no less, which is what the marketing guy wanted — is foolhardy.  (The reason it’s generally safe to send Postscript documents to Postscript printers — which include their own Postscript interpreters — is that unlike computers, printers do not have access to resources, like your files, that can be seriously abused.)</p>
<p>We, the Z-Code engineers, explain the situation and the danger.  The marketing guy dismisses the possibility of a Postscript-based attack as wildly unlikely.  He’s right, but we point out that adding the feature he’s asking for would make such an attack <em>more</em> likely, as word spreads among the bad guys that Z-Mail (a relatively widely deployed e-mail system in its time and therefore a tempting hacking target) is auto-launching Postscript attachments.  Marketing Guy argues that the upside of adding the feature is potentially enormous.  We say that one spam campaign containing viral Postscript attachments could cripple the computers of Z-Mail users <em>and only Z-Mail users</em>, a potential PR catastrophe.  Marketing Guy says that our users don’t know or care about that possibility and neither should we.  We say it’s our job to protect our users from their own ignorance.</p>
<p>The issue gets bumped up to Dan, our president, who is clearly leaning toward the marketing guy’s enormous potential upside.  But after we vigorously argue the technical drawbacks of the plan and our responsibility to keep our users safe in spite of themselves, he goes with the suggestions from Engineering: do add a Postscript-launching option but turn it off by default, and educate users about the danger when they go to turn it on.</p>
<hr/>
<p>This is a run-of-the-mill example of the kind of tension that exists between Marketing and Engineering in all software companies.  Issues like this arose from time to time at Z-Code, and sometimes Engineering carried the day, and sometimes Marketing did.  It was a good balance: it took Marketing’s outlandish promises to keep Engineering moving forward, and it took Engineering’s insight and pragmatism to keep the product safe and reliable.</p>
<p>As an industry insider, my impression of Microsoft is that Marketing wins <em>all</em> the arguments, with all that that implies for the safety and reliability of their software.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Share</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.geebobg.com/2009/09/16/score-one-for-the-engineers/&amp;title=Score+one+for+the+engineers" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://www.geebobg.com/2009/09/16/score-one-for-the-engineers/" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Score+one+for+the+engineers+@+http://www.geebobg.com/2009/09/16/score-one-for-the-engineers/" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://www.geebobg.com/2009/09/16/score-one-for-the-engineers/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Kernel of truth</title>
		<link>http://www.geebobg.com/2009/03/16/kernel-of-truth/</link>
		<comments>http://www.geebobg.com/2009/03/16/kernel-of-truth/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 05:35:13 +0000</pubDate>
		<dc:creator>bobg</dc:creator>
				<category><![CDATA[science]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.geebobg.com/?p=720</guid>
		<description><![CDATA[Yesterday I received a link — buried at the end of a long chain of e-mail forwards all saying variants of, “Wow, this is scary!” — to a video that depicted groups of people using stray microwaves from their cell phones to cause popcorn kernels to pop.
Pop Corn téléphone portable micro-ondes
In the video, three or [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I received a link — buried at the end of a long chain of e-mail forwards all saying variants of, “Wow, this is scary!” — to a video that depicted groups of people using stray microwaves from their cell phones to cause popcorn kernels to pop.</p>
<div><object width="480" height="381"><param name="movie" value="http://www.dailymotion.com/swf/k5R9CzBc4qSXKlE0zb&amp;related=1"/><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://www.dailymotion.com/swf/k5R9CzBc4qSXKlE0zb&amp;related=1" type="application/x-shockwave-flash" width="480" height="381" allowFullScreen="true" allowScriptAccess="always"/></object><br/><b><a href="http://www.dailymotion.com/video/x5odhh_pop-corn-telephone-portable-microon_news">Pop Corn t&eacute;l&eacute;phone portable micro-ondes</a></b></div>
<p>In the video, three or four phones are placed on a table in a ring around a few popcorn kernels, and then someone dials each of the phones to cause them to ring.  Within a couple of seconds the kernels start to pop.</p>
<p>The sender who forwarded it to me asked if I knew whether this was for real.</p>
<p>My reply asked the sender to consider the power available to a cell phone versus the power available to a microwave oven.  A microwave oven draws 15 amps of current from the household mains, producing hundreds of watts of focused microwave energy with the specific purpose of heating up food placed in the target area — and <em>even so</em>, it takes at least 30 seconds of exposure for the first kernel to pop.  A cell phone, by contrast, houses a battery rated in milliamp-hours, with a typical one holding 1500 milliamp-hours of energy.  This means it can draw 1 milliamp for 1500 hours, or 1500 milliamps (1.5 amps) for one hour, and so on.  If a cell phone tried to draw 15 amps from such a battery, then (apart from the phone melting) the battery would be depleted in 1/10 of an hour — six minutes.  Clearly cell phones do not draw 15 amps, but even if they did, they wouldn’t convert nearly as much of that energy into microwaves as microwave ovens do; and even if they did <em>that</em>, the microwave energy wouldn’t be focused the way it is in a microwave oven.  Yet the video depicts the first kernel popping within about three seconds.</p>
<p>If that much microwave energy really were reaching the popcorn kernels, we’d also be seeing the other effects of powerful microwaves on objects in the immediate vicinity.  For example, we’d see sparks and electrical arcing from metal objects, including the cell phones themselves.  But we don’t.</p>
<p>Finally, why would a <em>ringing</em> cell phone cause popcorn to pop?  To ring, a cell phone merely has to receive an “incoming-call” signal from a cell tower.  The phone doesn’t begin <em>transmitting</em> any appreciable amount of power until after you answer it and begin speaking!</p>
<p>At this writing, the video in question has a supposed 11,031,929 views.  When I think of all the people across the Internet who are now arranging their cell phones in rings around a handful of popcorn kernels, I despair.</p>
<p><!--adsense#bottom--></p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Share</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.geebobg.com/2009/03/16/kernel-of-truth/&amp;title=Kernel+of+truth" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://www.geebobg.com/2009/03/16/kernel-of-truth/" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Kernel+of+truth+@+http://www.geebobg.com/2009/03/16/kernel-of-truth/" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://www.geebobg.com/2009/03/16/kernel-of-truth/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Matchmaker, part 2</title>
		<link>http://www.geebobg.com/2008/08/05/matchmaker-part-2/</link>
		<comments>http://www.geebobg.com/2008/08/05/matchmaker-part-2/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 05:06:43 +0000</pubDate>
		<dc:creator>bobg</dc:creator>
				<category><![CDATA[history]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.geebobg.com/2008/08/05/matchmaker-part-2/</guid>
		<description><![CDATA[This entry is part 2 of 2 in the series MatchmakerShortly after arriving at college and resisting the lure of fraternity life, I found myself wanting to participate in some organized student activity and so joined the school’s entrepreneurship club.  I had the idea that if my computer dating “booth” had been a success [...]]]></description>
			<content:encoded><![CDATA[<div class="seriesmeta">This entry is part 2 of 2 in the series <a href="http://www.geebobg.com/series/matchmaker/" title="series-58">Matchmaker</a></div><p><!--adsense-->Shortly after arriving at college and <a href="http://www.geebobg.com/2006/09/21/mohammed-meets-mountain/" title="Mohammed meets mountain">resisting the lure of fraternity life</a>, I found myself wanting to participate in <em>some</em> organized student activity and so joined the school’s entrepreneurship club.  I had the idea that if my computer dating “booth” had been a success in high school despite the small student population, their sexual immaturity, my crappy questionnaire and slow software, and the technical problems I’d had, it should be easy at college to improve on all those problems and repeat that success — and this time, I could make money from it.</p>
<p>(I spent more time thinking about business schemes [and girls] when I got to college than I did about my schoolwork.  One idea was for a service that would deliver food from local restaurants to starving students sick of the slop they served us at the Kiltie ["kill-me"] Cafe.  My plan never got off the drawing board, but the time must have been right for that idea because within a couple of years, several cities had exactly that.  <a href="http://www.geebobg.com/2008/07/05/dammit/" title="Dammit!">It wasn’t the first time</a> I had an idea that I didn’t capitalize on, and that others later did.  Pittsburgh’s restaurant-delivery service was called <a href="http://www.wheeldeliver.net/">Wheel Deliver</a>.  One of the agents who worked the phones there was named Andrea.  “And today that woman is my wife.”)</p>
<p>I got to work writing a new version of the matchmaking software, this time in Turbo Pascal on an IBM PC, hundreds of times faster than the version that Chuck and I had written in BASIC on the Sol-20.  My new friends David and Julie (yes, <a href="http://www.geebobg.com/2006/11/09/die-weise-holle-vom-panther-hollow/" title="Die Weiße Hölle vom Panther Hollow">the same David and Julie</a>) helped me to design the questionnaire.  It was still two years before the birth of desktop publishing so everything was typewritten or hand-lettered.  The master copy of the questionnaire was literally cut-and-pasted together from dozens of bits of paper.</p>
<p>I took some of my $300 budget and headed to Kinko’s, where I ran off reams of copies of the questionnaire and some teaser posters I had conceived as the ad campaign:</p>
<p><img class="centered" src="http://www.emphatic.com/bobg/yenta2.png"/></p>
<p>The name, Yenta, was taken from the matchmaker’s name in <i>Fiddler on the Roof</i>.  I stapled those posters all over campus and managed to create some “buzz.”</p>
<p>Meanwhile I needed to find someone with a computer and a printer I could use when I set up the station for running off customers’ result lists.  In 1984 those were still pretty hard to come by.  I allocated another $50 as incentive and placed an ad on the campus bulletin board.  The taker was a fellow freshman named Bruce, who took my $50, loaned me his equipment, and became a lifelong friend.  (A few years later, I visited him often in the house he shared with my other friend, Steve.  The house was divided into two apartments.  One day on my way to visit Bruce and Steve, I met Andrea, the downstairs tenant. “And today that woman is my wife.”)</p>
<p>Once we had the needed equipment we ran off another batch of posters telling people what Yenta was and to check their campus mailboxes for questionnaires, to fill them out and turn them in by such-and-such a date, and to show up at the student center during certain hours on certain days to collect their match results, just five dollars for a printed list.</p>
<p>The response was good enough to require multiple miserable late nights of tedious data entry, which was all too familiar to me but new to David and Julie, who had become my equal partners and shared much of the burden.  At the appointed times we set up Bruce’s computer in “Grey Matter” and served our customers.  It all went very smoothly.</p>
<p>In the end, Yenta made a profit of around $900, which David and Julie and I split.  It was the most successful venture in the entrepreneurship club that semester, and I parlayed my success into a date with the club’s president, a sophomore named Robin who was a Tri-Delt, a sorority about which I had heard some exciting rumors. The date was disastrous, however, which I guess you can take as a comment on the fallibility of computer matchmaking, sort of.</p>
<p><i>(To be continued…)</i></p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Share</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.geebobg.com/2008/08/05/matchmaker-part-2/&amp;title=Matchmaker%2C+part+2" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://www.geebobg.com/2008/08/05/matchmaker-part-2/" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Matchmaker%2C+part+2+@+http://www.geebobg.com/2008/08/05/matchmaker-part-2/" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://www.geebobg.com/2008/08/05/matchmaker-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[Matchmaker]]></series:name>
	</item>
		<item>
		<title>Dammit!</title>
		<link>http://www.geebobg.com/2008/07/05/dammit/</link>
		<comments>http://www.geebobg.com/2008/07/05/dammit/#comments</comments>
		<pubDate>Sat, 05 Jul 2008 23:27:54 +0000</pubDate>
		<dc:creator>bobg</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.geebobg.com/2008/07/05/dammit/</guid>
		<description><![CDATA[Here’s an excerpt from a message I sent to my wife on March 13th of this year:
 As you know, e-mail is a long-established standard, but there’s one piece missing from it, and that’s a standard way to be notified when new mail arrives.  E-mail clients are required to “poll” e-mail servers for new [...]]]></description>
			<content:encoded><![CDATA[<p><!--adsense-->Here’s an excerpt from a message I sent to my wife on March 13th of this year:</p>
<blockquote><p> As you know, e-mail is a long-established standard, but there’s one piece missing from it, and that’s a standard way to be notified when new mail arrives.  E-mail clients are required to “poll” e-mail servers for new mail periodically.  Most polls reveal no new mail to download, and so are a waste of bandwidth and computing time.  It’s a negligible waste to a single user, but if you’re an ISP with millions of polls happening every minute, it really adds up. [...]</p>
<p>Something similar is true for RSS feeds, which are getting more and more popular.  You subscribe to someone’s blog posts, or to a news-clipping service, or whatever, and your feed reader shows you the new articles as they become available.  But there again, the feed reader is required to poll all the sites to which you subscribe; there is no standard way for those sites to notify you of when there are new messages available. [...]</p>
<p>The arrival of new mail or the appearance of new blog posts are called “asynchronous events,” meaning that they happen without regard to whatever you may be doing at the moment.  Most of the time, our computing infrastructure is obliged to use <em>synchronous</em> methods (like polling) to check for whether any asynchronous events have occurred lately.  But that doesn’t have to be true.  You could arrange for an asynchronous “listener” to be notified of asynchronous events and then take appropriate action. [...] </p></blockquote>
<p>I went on to describe an idea for an Internet-based service that delivers asynchronous events.  I started working on a prototype.  But that was around the same time that <a href="http://www.geebobg.com/2008/04/16/sole-survivor-throws-caution-to-the-wind/" title="Sole survivor throws &amp;#8220;Caution&amp;#8221; to the wind">I left my job at Danger</a> and was busy looking for a new one.  There was also <a href="http://www.geebobg.com/2008/03/20/monkey-in-the-jungle/" title="Monkey in the jungle">a birthday party to plan</a>, and <a href="http://www.geebobg.com/2008/04/09/the-best-policy/" title="The best policy">a family trip to New York</a>, and <a href="http://www.geebobg.com/2008/04/28/a-full-crowd-scene-at-the-food-lines/" title="A full crowd scene at the food lines">another birthday party</a>, plus a consulting gig and the beginning of a new job at Google.  My asynchronous-event-delivery service went <a href="http://www.geebobg.com/2008/05/01/attack-of-the-revenge-of-in-may/" title="Attack of the revenge of &amp;#8220;in May&amp;#8221;">near the bottom of my priority list</a>.</p>
<p>Then just a few days ago I learned about <a href="http://www.gnipcentral.com/">Gnip</a>, a brand-new venture-funded startup that is <em>the exact same idea</em>, right down to hosting it on <a href="http://aws.amazon.com/">Amazon’s cloud-computing infrastructure</a> for scalability.  To add insult to injury, their clever name — “ping” spelled backwards (to “ping” a computer on the network is akin to polling it) — could not have been more perfectly chosen if their aim was <a href="http://www.geebobg.com/2007/04/27/just-got-it/" title="Just got it">to highlight my slowness off the mark</a>.</p>
<p>This is <a href="http://www.netgram.com/">not the first time</a> I’ve been <a href="http://www.dyndns.com/">beaten to the punch</a> with <a href="http://www.bookswim.com/">a clever online business idea</a>.  It’s maddening.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Share</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.geebobg.com/2008/07/05/dammit/&amp;title=Dammit%21" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://www.geebobg.com/2008/07/05/dammit/" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Dammit%21+@+http://www.geebobg.com/2008/07/05/dammit/" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://www.geebobg.com/2008/07/05/dammit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;Danger&#8221;ous liaison</title>
		<link>http://www.geebobg.com/2008/02/11/dangerous-liaison/</link>
		<comments>http://www.geebobg.com/2008/02/11/dangerous-liaison/#comments</comments>
		<pubDate>Tue, 12 Feb 2008 03:57:20 +0000</pubDate>
		<dc:creator>bobg</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[microsoft]]></category>

		<guid isPermaLink="false">http://www.geebobg.com/2008/02/11/dangerous-liaison/</guid>
		<description><![CDATA[Hooray, Yahoo! Way to resist assimilation by the Borg:

Yahoo Formally Rejects Microsoft Offer
SUNNYVALE, Calif. (AP) — Yahoo Inc. has formally rejected Microsoft Corp.’s $44.6 billion takeover bid as inadequate.

Oops:

Microsoft to Buy Mobile Startup Danger
SEATTLE (AP) — Microsoft Corp. agreed Monday to buy cell phone software maker Danger Inc.

So it looks like I’m about to become [...]]]></description>
			<content:encoded><![CDATA[<p><!--adsense-->Hooray, <a href="http://www.yahoo.com/">Yahoo!</a> Way to <a href="http://ap.google.com/article/ALeqM5g9cE_gI-aemyNxZQb7YOBC3rsNlQD8UO5G782">resist assimilation</a> by the Borg:</p>
<blockquote>
<p><b>Yahoo Formally Rejects Microsoft Offer</b></p>
<p>SUNNYVALE, Calif. (AP) — Yahoo Inc. has formally rejected Microsoft Corp.’s $44.6 billion takeover bid as inadequate.</p>
</blockquote>
<p><a href="http://ap.google.com/article/ALeqM5jw3zU5mP0LWpA0uu_7yjqnlhWDhgD8UOBRSG0">Oops</a>:</p>
<blockquote>
<p><b>Microsoft to Buy Mobile Startup Danger</b></p>
<p>SEATTLE (AP) — Microsoft Corp. agreed Monday to buy cell phone software maker Danger Inc.</p>
</blockquote>
<p>So it looks like I’m about to become part of Microsoft, the <a href="http://everything2.com/index.pl?node_id=1113310">evil empire</a>. For Danger it’s an outstanding deal.  For me personally?  Well, my opinions on Microsoft’s collective technical wherewithal are well-documented among over <a href="http://www.geebobg.com/2007/11/18/my-five-year-mission/" title="My five-year mission">five years</a> of bug-tracking and source-control comments that I’ve written, as Microsoft’s irksome coding practices impacted my work at Danger in one way or another (usually in the form of their producing e-mail messages that failed to obey accepted Internet standards, but that my code had to deal with correctly anyway).  Excerpts of my comments follow; here’s where I get to channel famed Internet curmudgeon <a href="http://www.jwz.org/gruntle/rbarip.html">jwz</a>.</p>
<hr/>
<blockquote><p> Some mail agents, particularly those fine ones emanating from Redmond, break up long URLs in plain text message parts using line breaks. </p></blockquote>
<hr/>
<blockquote><p> In MSP-land, a message contains “a body” and then maybe some “attachments,” which doesn’t really map onto the Internet standards for mail, but you can insert your own snide comment about Microsoft’s attitude towards important and widely accepted standards. </p></blockquote>
<hr/>
<blockquote><p> There are 100’s of different computing platforms and 1000’s of possible e-mail clients.  I happen to be using Evolution on Linux.  But the IETF standards govern most of those variants.  Outlook is a notable exception.  Microsoft is notorious for ignoring rules that everyone else plays by. </p></blockquote>
<hr/>
<blockquote><p> When we told Microsoft that [a component of the Danger mail system] routinely downloads both the plain-text and the HTML versions of the body (for those messages that have both) in order to construct multipart/alternative MIME structures, they acted as if we’d told them we married our cousins.</p>
<p>They may come back and request that we only download one or the other to protect their servers, which are apparently of 1960’s vintage. </p></blockquote>
<hr/>
<blockquote><p> MSP returns lists of addresses (such as the “To” and “Cc” recipients of a message) as a semicolon-separated string.  This does not comply with Internet standards and breaks the Javamail address parser, which [a component of the Danger mail system] uses when converting from MSP data to IMAP-appendable data.  I am sure Microsoft had their own very good reasons for this; I do not begrudge them the choice to be idiots. </p></blockquote>
<hr/>
<blockquote><p> [A component of the Danger mail system] records the set of messages already fetched from an IMAP account using the messages’ IMAP UID’s.  If the folder’s UIDVALIDITY value changes, we are supposed to discard all saved UID’s as invalid (per the IMAP standard).  In theory this only happens when the folder has been destroyed and recreated with new contents, but in practice it’s more common that the IMAP server simply loses track of the old UIDVALIDITY (I’m looking at you, Bill Gates) and assigns a new one. </p></blockquote>
<hr/>
<blockquote><p> Add application/vnd.rmf as a synonym for audio/rmf.  Good thing you got money, Mr. Gates, ’cause you ain’t got charm. </p></blockquote>
<p>(Why couldn’t they just have used the standard designator “audio/rmf” like everyone else?)</p>
<hr/>
<blockquote><p> As I suspected, it’s Microsoft’s fault.  (*audience gasps*)</p>
<p>Outlook is using Unicode to encode the funky characters but not declaring it in the enclosing MIME syntax, which it’s supposed to. </p></blockquote>
<hr/>
<p>The following refers to Microsoft’s practice of sometimes wrapping perfectly good message-attachment data in a strange construct called a TNEF object that only Microsoft programs can reliably decode.</p>
<blockquote><p> Leave it to Microsoft to take data that is encapsulated in a format that was meticulously, ingeniously designed to be <a href="http://www.geebobg.com/2007/06/29/fifteen-years-of-mime/" title="Fifteen years of MIME">neutral with respect to transport</a>, and enclose it in an opaque wrapper they call “transport-neutral encapsulation format.” </p></blockquote>
<hr/>
<p>To understand this one, you have to know that:</p>
<ol>
<li>In HTML, a “comment” (which is ignored for display purposes) begins with the string “&lt;!–” and ends with “–&gt;”;</li>
<li>The characters &lt; and &gt; are referred to by programmers as “angle brackets” and sometimes as “<a href="http://www.faqs.org/docs/jargon/B/broket.html">brokets</a>“; and</li>
<li>There was a buggy version of Microsoft Outlook (or possibly Word) that produced HTML that began with a comment such as “&lt;!– Created by Microsoft &gt;” which, as you can see, did not properly terminate the comment, so it looked to other mail software like the entire HTML message body was a comment, and none of it got displayed.</li>
</ol>
<blockquote><p> Microsoft<br/> Gets things wrong oft.<br/> Ending an HTML comment with a bare broket?<br/> That broke it.<br/>
- Ogden Bob </p></blockquote>
<hr/>
<p>Now I face a decision: submit to <a href="http://memory-alpha.org/en/wiki/The_Body_of_Landru">the will of Landru</a>, or make my escape before I become <a href="http://www.youtube.com/watch?v=bBXyB7niEc0">one of us one of us</a>?</p>
<p>If I go by Kevin Spacey movie quotes — as good a guide to living as any, I suppose — I should stay:</p>
<blockquote><p> If you’re not a rebel by the age of 20, you got no heart, but if you haven’t turned establishment by 30, you’ve got no brains. </p></blockquote>
<p>(I’m <a href="http://www.geebobg.com/2006/10/22/the-big-4-0/" title="The big 4-0">well past 30</a>, and Microsoft is nothing if not establishment.  Maybe I can aim to reform it from within?)</p>
<p>On the other hand, if I go by the choice of song that, I swear, randomly came up first (odds against: 99.96%) as I got on the highway this morning to attend the Danger-Microsoft “Come to Jesus” meeting, my course is clear.  It was, “Gotta Get Out” by The Bicycles.</p>
<p><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/aa0VrrYUBuM&amp;rel=1"/><param name="wmode" value="transparent"/><embed src="http://www.youtube.com/v/aa0VrrYUBuM&amp;rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"/></object></p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Share</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.geebobg.com/2008/02/11/dangerous-liaison/&amp;title=%26%238220%3BDanger%26%238221%3Bous+liaison" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://www.geebobg.com/2008/02/11/dangerous-liaison/" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+%26%238220%3BDanger%26%238221%3Bous+liaison+@+http://www.geebobg.com/2008/02/11/dangerous-liaison/" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://www.geebobg.com/2008/02/11/dangerous-liaison/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>300</title>
		<link>http://www.geebobg.com/2008/01/23/300/</link>
		<comments>http://www.geebobg.com/2008/01/23/300/#comments</comments>
		<pubDate>Thu, 24 Jan 2008 07:26:53 +0000</pubDate>
		<dc:creator>bobg</dc:creator>
				<category><![CDATA[humor]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://www.geebobg.com/2008/01/23/300/</guid>
		<description><![CDATA[Tonight we blog in hell!(The tumbling figures are thevictims of my withering rhetoric.)
This post marks two big gee bobg milestones: the 300th post and the first day with more than 200 pageviews — and that’s after subtracting all the hits from bots, spiders, and my own obsessive checking and rechecking of my content.
In honor of [...]]]></description>
			<content:encoded><![CDATA[<div class="alignright" style="text-align: center; font-size: smaller"><img src="http://www.emphatic.com/bobg/300.jpg"/><br/>Tonight we blog in hell!<br/>(The tumbling figures are the<br/>victims of my withering rhetoric.)</div>
<p>This post marks two big <b><a href="http://www.geebobg.com/">gee bobg</a></b> milestones: the 300th post and the first day with more than 200 pageviews — and that’s <em>after</em> subtracting all the hits from bots, spiders, and my own obsessive checking and rechecking of my content.</p>
<p>In honor of this momentous occasion I thought I’d turn over the writing duties to my first guest blogger: the Bob-o-matic.  The Bob-o-matic is a <a href="http://www.perl.org/">Perl</a> script that examines all the posts on my blog and then constructs a new post at random using the same vocabulary and the same phrase patterns (technically, via a <a href="http://en.wikipedia.org/wiki/Markov_chain">Markov chain</a>).  If you’d like to understand exactly what the Bob-o-matic does, here is <a href="http://www.emphatic.com/bobg/bob-o-matic.pl">its source code</a>, with no helpful comments or documentation (for extra pedagogical rigor).</p>
<p>Without further ado, the first <b>gee bobg</b> post by the Bob-o-matic!</p>
<hr/>
<p>Today is iconoclasm, which was my cue that it’s harvesting laughs instead of writing letters to Senator Dianne Feinstein expressing disappointment in one shot as quickly as possible.  I bought some rope and, for better or worse, he shouted, pee!  By the AP and appeared far and wide in the shadow of Primadonna’s wonderful hearty food and jovial, though I understood a little media savvy can recognize TV’s propaganda and soothing pap for what it goes on to a willing patron and would not stop the car overheated and we still don’t know exactly why this might be.  Tell me.  There’s my street, Tom said out of my head into his hotel.  That’s when they saw us run from the Star Wars a couple of hours on the Millennium Falcon is sidetracked into an intelligent, multilayered byplay that gets its point across indirectly.  Take this scene are Atia’s that is far preferable to hearing nine months of 1986 were a hit the crowd getting into the story better than most?  In short, if elected, to the seas to be sexually active when you can imagine we are deeply disappointed with the peroxide and a wide variety of capes, masks, and those who did the exact same thing goes for sushi…  If the President deems them hostile to U.S. Senator in a boxing ring notably body and the structure of the weather yesterday, as there was David, Julie, and he throws a tantrum?  None of us found Greg crashed out on a wide selection of vintage candy from yesteryear, and exhibit a journalistic integrity that they included him in happier times? July 1999.  Mr. Spock Uhura Uhura uniform 60 Star Trek Technical Manual. Bless her, never over the years I have not been true at all those southern dialects myself, what could George Bailey, who doesn’t like tits?  That means there is not a place full of them.  I forget what it looks like a beggar he couldn’t bag ‘er for want of a web page I created with this system it was time to time.  Dozens of feet it’s a smell, smell world after all it’s a way to explain the observable world without invoking God.</p>
<p><!--adsense#bottom--></p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Share</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.geebobg.com/2008/01/23/300/&amp;title=300" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://www.geebobg.com/2008/01/23/300/" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+300+@+http://www.geebobg.com/2008/01/23/300/" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://www.geebobg.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://www.geebobg.com/2008/01/23/300/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
