<?xml version="1.0"?>
<rss version="2.0">

<channel>
	<title>Planet ChrisDolan</title>
	<link>http://www.chrisdolan.net/planet/</link>
	<language>en</language>
	<description>Planet ChrisDolan - http://www.chrisdolan.net/planet/</description>

<item>
	<title>use Perl Journals: RFC: lethal - lexical exceptions for Perl (2008.03.09  8:50)</title>
	<guid isPermaLink="true">http://use.perl.org/~pjf/journal/35869?from=rss</guid>
	<link>http://use.perl.org/~pjf/journal/35869?from=rss</link>
	<description>&lt;p&gt; &lt;b&gt;RFC: lethal - lexical exceptions for Perl&lt;/b&gt; &lt;br /&gt;
I've been scratching a long-time itch of mine, which is that while Perl allows me to use &lt;tt&gt; &lt;a href=&quot;http://search.cpan.org/perldoc?Fatal&quot;&gt;Fatal&lt;/a&gt; &lt;/tt&gt; to get subroutines and built-ins to throw exceptions on failure, such a change was always done on a package-wide, rather than lexical (block) basis.
&lt;/p&gt; &lt;p&gt;
However with Perl 5.10 we have the ability to fix that, and I've put together a proof-of-concept module that enables exception-throwing subroutines on a lexical basis.
&lt;/p&gt; &lt;p&gt;
I'm looking for input into its naming, interface, and concept in general.  Rather than filling up a blog post with it, you can &lt;a href=&quot;http://perlmonks.org/?node_id=673060&quot;&gt;read the node on PerlMonks&lt;/a&gt;.
&lt;/p&gt;</description>
	<pubDate>Sun, 09 Mar 2008 20:59:55 +0000</pubDate>
</item>
<item>
	<title>use Perl Journals: Upgrading Trac #2 (2008.03.08 18:16)</title>
	<guid isPermaLink="true">http://use.perl.org/~Beatnik/journal/35868?from=rss</guid>
	<link>http://use.perl.org/~Beatnik/journal/35868?from=rss</link>
	<description>After the migration, Trac started throwing &lt;a href=&quot;http://lists.edgewall.com/archive/trac/2006-February/006655.html&quot;&gt;No changeset X in repository&lt;/a&gt;. It took me a few minutes to figure out. The solution: resync Trac with the SVN db:&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt; &lt;div&gt;&lt;tt&gt;trac-admin /path/to/tracdb&lt;br /&gt;resync&lt;/tt&gt;&lt;/div&gt; &lt;/blockquote&gt;</description>
	<pubDate>Sun, 09 Mar 2008 20:59:55 +0000</pubDate>
</item>
<item>
	<title>Planet Mozilla: Michael Ventnor: Fullscreen Is Now...</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-4925399027471706894.post-6795920305269840367</guid>
	<link>http://ventnorsblog.blogspot.com/2008/03/fullscreen-is-now.html</link>
	<description>&lt;a href=&quot;http://bp2.blogger.com/_UKaUkB4Y3mE/R9MzqppfPpI/AAAAAAAAADw/qdB1pzLRKwE/s1600-h/fullscr-incrediblyawesome.jpg&quot;&gt;&lt;img src=&quot;http://bp2.blogger.com/_UKaUkB4Y3mE/R9MzqppfPpI/AAAAAAAAADw/qdB1pzLRKwE/s400/fullscr-incrediblyawesome.jpg&quot; alt=&quot;&quot; style=&quot;cursor: pointer; cursor: hand;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5175537204606221970&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Once upon a time there was a humble front-end contributor who worked on many small XUL and Javascript features for Firefox 3 like the smooth-scrolling tab bar and prefilling the find bar with the current selection. He later took on the mountainous responsibility of GTK Widget maintainer after travelling to New Zealand for his Uni holidays, but thats another story.&lt;br /&gt;&lt;br /&gt;Anyway, in April 2007, I^H he contributed a patch to make the toolbars auto-hide themselves when in full-screen mode. It was a long and laborious process towards code review but it is now finally in the latest Firefox 3 hourly builds, and possibly in the latest nightly build.&lt;br /&gt;&lt;br /&gt;So why is this fullscreen so incredibly awesome? For Firefox 3 we added a new read-only boolean property called &lt;a href=&quot;http://developer.mozilla.org/en/docs/DOM:window.fullScreen&quot;&gt;window.fullScreen&lt;/a&gt; that can allow web applications to know whether or not you are in fullscreen mode (technically its not &quot;new&quot; per se, it existed in Firefox 2 but it never gave back the correct value, I just fixed that up). This can provide really great opportunities for web apps to take advantage of the new built-in fuller fullscreen. Maybe Google Presentations could start the slide show automatically when you enter fullscreen. Or maybe video sites could adjust the video size to take up the entire screen when you enter fullscreen.&lt;br /&gt;&lt;br /&gt;Of course, I haven't forgotten my now main duty of GTK Widget maintainer. For Thunderbird users, I managed to fix the bug where dragging an image from your file manager would paste the file:// URL as text rather than embed the image. Oh, and XUL popups now properly set hints, so if you maintain a window manager, especially one with compositing, you no longer need Firefox-specific hacks; we now correctly report whether the popup is supposed to be a menu, a tooltip, or just a utility popup like Larry.&lt;br /&gt;&lt;br /&gt;But anyway, Beta 4 is coming out soon. Like many times before, all the cool things I make just miss the beta freeze and get checked in before said beta even comes out, which makes the betas slightly less exciting than the nightlies or hourlies. Also, I hope Ted manages to turn on Profile-Guided Optimization for Linux very soon (if he hasn't done so already).</description>
	<pubDate>Sun, 09 Mar 2008 20:59:50 +0000</pubDate>
</item>
<item>
	<title>Planet Mozilla: Robert Sayre: Blocker Report for March 08, 2008</title>
	<guid isPermaLink="true">http://blog.mozilla.com/rob-sayre/2008/03/08/blocker-report-for-march-08-2008/</guid>
	<link>http://blog.mozilla.com/rob-sayre/2008/03/08/blocker-report-for-march-08-2008/</link>
	<description>&lt;h3&gt;Overall Status&lt;/h3&gt;
&lt;p&gt;Blocking Firefox 3: 206 bugs found.&lt;br /&gt;
Blocking Gecko 1.9: 175 bugs found.&lt;/p&gt;
&lt;h3&gt;Blockers fixed between 12:00am and 10:45pm&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=421412&quot;&gt;Bug 421412&lt;/a&gt; Get rid of _adjustWidth hack. Patch by Edward Lee.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=396548&quot;&gt;Bug 396548&lt;/a&gt;. Star icon in url bar autocomplete is partly or completely buried under scrollbar (covered, hidden). Patch by Edward Lee.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=406373&quot;&gt;Bug 406373&lt;/a&gt;. Url bar results can be scrolled horizontally after scrolling vertically. Patch by Edward Lee.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=421490&quot;&gt;Bug 421490&lt;/a&gt;. wpad may be dangerous, and it is on by default. Patch by Michael Ventnor.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=415329&quot;&gt;Bug 415329&lt;/a&gt;. large toolbar buttons are vertically misaligned. Patch by Dão Gottwald.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=417421&quot;&gt;Bug 417421&lt;/a&gt;. Loss of back forward buttons when switching between 1.8 and 1.9. Patch by Dão Gottwald.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=405010&quot;&gt;Bug 405010&lt;/a&gt;. make column changes in places/library (session) persistent. Patch by Marco Bonardo.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=416225&quot;&gt;Bug 416225&lt;/a&gt;. Change “Unfiled bookmarks” to “Unsorted Bookmarks”. Patch by Kurt (supernova_00).&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=409215&quot;&gt;Bug 409215&lt;/a&gt;. Closing tabs quickly in succession causes the close button to “get stuck” (Minefield 3.0pre3, browser.tabs.closeButtons = 1). Patch by Gavin Sharp.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=412360&quot;&gt;Bug 412360&lt;/a&gt;. Download Manager remains empty, downloads don’t start, with this 3.0b2 downloads.sqlite. Patch by Edward Lee.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=418961&quot;&gt;Bug 418961&lt;/a&gt;. “Save Page As” “Text Files” saves file but Downloads window doesn’t show completion. Patch by Edward Lee.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=421058&quot;&gt;Bug 421058&lt;/a&gt;.  Firefox won’t prompt to change stored passwords. Patch by Justin Dolske.&lt;/p&gt;</description>
	<pubDate>Sun, 09 Mar 2008 20:59:50 +0000</pubDate>
</item>
<item>
	<title>Planet Mozilla: Benjamin Smedberg: Has GCC Dehydra Replaced Elsa?</title>
	<guid isPermaLink="true">http://benjamin.smedbergs.us/blog/2008-03-09/has-gcc-dehydra-replaced-elsa/</guid>
	<link>http://benjamin.smedbergs.us/blog/2008-03-09/has-gcc-dehydra-replaced-elsa/</link>
	<description>&lt;p&gt;No.&lt;/p&gt;
&lt;p&gt;GCC Dehydra allows us to do analysis passes on our existing code. In the far future it may also allow us to do optimization passes. But it does not have the ability to do code rewriting, and probably won’t gain that ability any time soon. In order to be able to do C++-&amp;gt;C++ transformations, you have to have correct end positions for all statements/tokens, not just beginning positions. GCC does not track this information, and making it do so would be a massive undertaking.&lt;/p&gt;
&lt;p&gt;Mozilla2 still lives in a dual world where automatic code refactoring is done using the elsa/oink toolchain, while static analysis is taking place using the GCC toolchain.&lt;/p&gt;</description>
	<pubDate>Sun, 09 Mar 2008 20:59:50 +0000</pubDate>
	<author>benjamin@smedbergs.us (Benjamin Smedberg)</author>
</item>
<item>
	<title>use Perl Journals: Nancy: from Lua to Perl (2008.03.09 15:13)</title>
	<guid isPermaLink="true">http://use.perl.org/~ferreira/journal/35871?from=rss</guid>
	<link>http://use.perl.org/~ferreira/journal/35871?from=rss</link>
	<description>&lt;p&gt;
Some days before, Reuben Thomas (a known contributor to &lt;a href=&quot;http://www.lua.org/&quot;&gt;Lua&lt;/a&gt; community) &lt;a href=&quot;http://article.gmane.org/gmane.comp.lang.lua.general/46135&quot;&gt;announced&lt;/a&gt; the release of &lt;a href=&quot;http://rrt.sc3d.org/Software/Nancy/&quot;&gt;Nancy&lt;/a&gt;, &quot;a simple web site builder&quot; at the &lt;a href=&quot;http://www.lua.org/lua-l.html&quot;&gt;Lua mailing list&lt;/a&gt;.


&lt;/p&gt;&lt;p&gt;
For the dismay of Lua afficcionados, this release was not written in Lua.
&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;blockquote&gt; &lt;div&gt;&lt;p&gt; &lt;em&gt;
Oh, and it's written in Perl. I thought it might be interesting to say why.
The problem was not libraries (I used my pure-Lua stdlib and LuaFileSystem),
but deployment on Windows (I use Linux). I had previously built an
all-in-one binary for Windows using a cross-compiler. That worked fine but
made it hard to debug on Windows as I couldn't just edit-run, and also broke
nastily when the cross-compiler was upgraded. So, I switched to LuaBinaries.
That enabled me in the end to deploy only pre-built binaries, but at the
cost of having to install 2 binary packages, and then do manual fiddling to
get .lua files run as commands by the Windows shell.
&lt;/em&gt; &lt;/p&gt;

&lt;p&gt; &lt;em&gt;
ActivePerl does all this for me, and I was already using some Perl scripts
in the same system, so by rewriting Nancy in Perl I got down to &quot;run the
Perl installer&quot; as being the prerequisites for running Nancy.
&lt;/em&gt; &lt;/p&gt;&lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;
Nancy begun its life as Lua code (and that's the reason Reuben announced this at Lua mailing list for the last time — unless it be written in Lua again in the future).
&lt;/p&gt;

&lt;p&gt;
Perl still has an edge ahead before some of the popular dynamical languages out there, which (I hope) is not going away anytime soon in the future.
&lt;/p&gt;</description>
	<pubDate>Sun, 09 Mar 2008 20:58:31 +0000</pubDate>
</item>
<item>
	<title>Unofficial Apple Weblog: Talkcast reminder, 10 pm ET tonight</title>
	<guid isPermaLink="false">http://www.tuaw.com/2008/03/09/talkcast-reminder-10-pm-et-tonight/</guid>
	<link>http://feeds.tuaw.com/~r/weblogsinc/tuaw/~3/248486264/</link>
	<description>&lt;p&gt;Filed under: &lt;a href=&quot;http://www.tuaw.com/category/tuaw-business/&quot; rel=&quot;tag&quot;&gt;TUAW Business&lt;/a&gt;, &lt;a href=&quot;http://www.tuaw.com/category/podcasts/&quot; rel=&quot;tag&quot;&gt;Podcasts&lt;/a&gt;&lt;/p&gt;&lt;a href=&quot;http://www.talkshoe.com/talkshoe/web/talkCast.jsp?masterId=45077&quot;&gt;&lt;img src=&quot;http://www.blogsmithmedia.com/www.tuaw.com/media/2008/03/modernphone.jpg&quot; hspace=&quot;8&quot; align=&quot;right&quot; height=&quot;168&quot; width=&quot;225&quot; vspace=&quot;8&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;If you haven't checked out last week's show yet, by all means grab a copy.  &lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;/span&gt;&lt;a href=&quot;http://iconfactory.com/home/permalink/1961&quot;&gt;We were joined&lt;/a&gt; by Craig Hockenberry and Gedeon Maheux from &lt;a href=&quot;http://iconfactory.com/&quot;&gt;Iconfactory&lt;/a&gt;, who gave us the lowdown on the &lt;a href=&quot;http://files.iconfactory.net/downloads/animations/Redesign/&quot;&gt;history of the company,&lt;/a&gt; the origins of &lt;a href=&quot;http://iconfactory.com/twitterrific&quot;&gt;Twitterrific&lt;/a&gt;, the coevolution of &lt;a href=&quot;http://twitter.com/tuaw&quot;&gt;Twitter&lt;/a&gt; with the now-dominant Mac client, and the promise of the upcoming &lt;a href=&quot;http://www.tuaw.com/tag/iPhone/&quot;&gt;iPhone&lt;/a&gt; development explosion.  &lt;a href=&quot;http://recordings.talkshoe.com/TC-45077/TS-95271.mp3&quot;&gt;Download direct&lt;/a&gt;, &lt;a href=&quot;http://www.talkshoe.com/talkshoe/web/talkCast.jsp?masterId=45077&quot;&gt;listen in your browser&lt;/a&gt; or &lt;a href=&quot;itpc://recordings.talkshoe.com/rss45077.xml&quot;&gt;subscribe to the TalkShoe feed&lt;/a&gt; in iTunes.&lt;br /&gt; &lt;br /&gt;Speaking of iPhone... &lt;a href=&quot;http://www.talkshoe.com/talkshoe/web/talkCast.jsp?masterId=45077&quot;&gt;We are live tonight (Sunday 3/9)&lt;/a&gt; for this week's talkcast, 10 pm ET, talking about iPhone for enterprise and the SDK -- featuring a taped segment with &lt;a href=&quot;http://ericasadun.com&quot;&gt;Erica Sadun&lt;/a&gt; and &lt;a href=&quot;http://www.apolloapp.com/&quot;&gt;Apollo IM developer Alex Schaefer,&lt;/a&gt; who couldn't make the regular Sunday night show but felt they had to say something after 72+ hours deep in the SDK.&lt;br /&gt;&lt;br /&gt;Join me, Scott, Dave and Mike Schramm tonight for the social. Bring your own ice cream!&lt;p&gt;&lt;a href=&quot;http://www.tuaw.com/2008/03/09/talkcast-reminder-10-pm-et-tonight/&quot; rel=&quot;bookmark&quot;&gt;Continue reading &lt;em&gt;Talkcast reminder, 10 pm ET tonight&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;&lt;h6 style=&quot;clear: both; padding: 8px 0 0 0; height: 2px; font-size: 1px; border: 0; margin: 0; padding: 0;&quot;&gt;&lt;/h6&gt;&lt;a href=&quot;http://www.talkshoe.com/talkshoe/web/talkCast.jsp?masterId=45077&amp;amp;cmd=tc&quot;&gt;Read&lt;/a&gt; | &lt;a href=&quot;http://www.tuaw.com/2008/03/09/talkcast-reminder-10-pm-et-tonight/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent link to this entry&quot;&gt;Permalink&lt;/a&gt; | &lt;a href=&quot;http://www.tuaw.com/forward/1135528/&quot; title=&quot;Send this entry to a friend via email&quot;&gt;Email this&lt;/a&gt; | &lt;a href=&quot;http://www.tuaw.com/2008/03/09/talkcast-reminder-10-pm-et-tonight/#comments&quot; title=&quot;View reader comments on this entry&quot;&gt;Comments&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;map name=&quot;google_ad_map_16-1135528&quot;&gt;&lt;area shape=&quot;rect&quot; href=&quot;http://imageads.googleadservices.com/pagead/imgclick/16-1135528?pos=0&quot; coords=&quot;1,2,367,28&quot; /&gt;&lt;area shape=&quot;rect&quot; href=&quot;http://services.google.com/feedback/abg&quot; coords=&quot;384,10,453,23&quot; /&gt;&lt;/map&gt;&lt;img src=&quot;http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;amp;client=ca-pub-3546992251556849&amp;amp;channel=21&amp;amp;output=png&amp;amp;cuid=16-1135528&amp;amp;url=http://www.tuaw.com/2008/03/09/talkcast-reminder-10-pm-et-tonight/&quot; border=&quot;0&quot; usemap=&quot;http://feeds.tuaw.com/weblogsinc/tuaw#google_ad_map_16-1135528&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://feeds.tuaw.com/~a/weblogsinc/tuaw?a=nlvCv3&quot;&gt;&lt;img src=&quot;http://feeds.tuaw.com/~a/weblogsinc/tuaw?i=nlvCv3&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.tuaw.com/~f/weblogsinc/tuaw?a=UMtsjzf&quot;&gt;&lt;img src=&quot;http://feeds.tuaw.com/~f/weblogsinc/tuaw?i=UMtsjzf&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.tuaw.com/~f/weblogsinc/tuaw?a=x0d4UDf&quot;&gt;&lt;img src=&quot;http://feeds.tuaw.com/~f/weblogsinc/tuaw?i=x0d4UDf&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img width=&quot;1&quot; src=&quot;http://feeds.tuaw.com/~r/weblogsinc/tuaw/~4/248486264&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Sun, 09 Mar 2008 20:57:26 +0000</pubDate>
</item>
<item>
	<title>Unofficial Apple Weblog: More Jim Henson classics on iTunes</title>
	<guid isPermaLink="false">http://www.tuaw.com/2008/03/09/more-jim-henson-classics-on-itunes/</guid>
	<link>http://feeds.tuaw.com/~r/weblogsinc/tuaw/~3/248493190/</link>
	<description>&lt;p&gt;Filed under: &lt;a href=&quot;http://www.tuaw.com/category/itunes-store/&quot; rel=&quot;tag&quot;&gt;iTS&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://www.blogsmithmedia.com/www.tuaw.com/media/2008/03/labyrinth.jpg&quot; hspace=&quot;8&quot; align=&quot;right&quot; vspace=&quot;8&quot; alt=&quot;&quot; border=&quot;1&quot; /&gt;
&lt;p&gt;iTunes users who also happen to be fans of a goblin David Bowie, Gelflings, Skeksis, Mystics and/or &lt;a href=&quot;http://en.wikipedia.org/wiki/Jim_Henson&quot;&gt;Jim Henson&lt;/a&gt; have reason to celebrate: two of Henson's cult classic films are now available on iTunes. &lt;a href=&quot;http://www.imdb.com/title/tt0083791/&quot;&gt;The Dark Crystal&lt;/a&gt; and &lt;a href=&quot;http://www.imdb.com/title/tt0091369/&quot;&gt;Labyrinth&lt;/a&gt; are now available for purchase at the iTunes Store. This comes on the heels of the &lt;a href=&quot;http://www.tuaw.com/2008/01/28/fraggles-and-farscape-come-to-itunes/&quot;&gt;Farscape and Fraggle Rock iTunes releases&lt;/a&gt; in January.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;If you've never been able to get the cry of the &lt;a href=&quot;http://en.wikipedia.org/wiki/Skeksis&quot;&gt;Skeksis&lt;/a&gt; or the image of a frighteningly glam Goblin King (with fantastic hair) out of your head, pop up iTunes and make some Jim Henson magic. While you're there, you can even grab the slightly watered-down musical numbers in the Labyrinth Soundtrack to go with it, as well as a copy of The Muppet Christmas Carol, just in case the kids need some lighter fare after The Dark Crystal. Can't beat that, right?&lt;/p&gt;&lt;h6 style=&quot;clear: both; padding: 8px 0 0 0; height: 2px; font-size: 1px; border: 0; margin: 0; padding: 0;&quot;&gt;&lt;/h6&gt;&lt;a href=&quot;http://www.prxbuilder.com/link.aspx?id=104940b6-36ed-46c0-a5cd-fb4556c4aff9&amp;amp;name=DarkCrystallabyrinth.xml&amp;amp;xform=xslt%2flink.xslt&amp;amp;perm=true&quot;&gt;Read&lt;/a&gt; | &lt;a href=&quot;http://www.tuaw.com/2008/03/09/more-jim-henson-classics-on-itunes/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent link to this entry&quot;&gt;Permalink&lt;/a&gt; | &lt;a href=&quot;http://www.tuaw.com/forward/1133195/&quot; title=&quot;Send this entry to a friend via email&quot;&gt;Email this&lt;/a&gt; | &lt;a href=&quot;http://www.tuaw.com/2008/03/09/more-jim-henson-classics-on-itunes/#comments&quot; title=&quot;View reader comments on this entry&quot;&gt;Comments&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;map name=&quot;google_ad_map_16-1133195&quot;&gt;&lt;area shape=&quot;rect&quot; href=&quot;http://imageads.googleadservices.com/pagead/imgclick/16-1133195?pos=0&quot; coords=&quot;1,2,367,28&quot; /&gt;&lt;area shape=&quot;rect&quot; href=&quot;http://services.google.com/feedback/abg&quot; coords=&quot;384,10,453,23&quot; /&gt;&lt;/map&gt;&lt;img src=&quot;http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;amp;client=ca-pub-3546992251556849&amp;amp;channel=21&amp;amp;output=png&amp;amp;cuid=16-1133195&amp;amp;url=http://www.tuaw.com/2008/03/09/more-jim-henson-classics-on-itunes/&quot; border=&quot;0&quot; usemap=&quot;http://feeds.tuaw.com/weblogsinc/tuaw#google_ad_map_16-1133195&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://feeds.tuaw.com/~a/weblogsinc/tuaw?a=dwUxhQ&quot;&gt;&lt;img src=&quot;http://feeds.tuaw.com/~a/weblogsinc/tuaw?i=dwUxhQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.tuaw.com/~f/weblogsinc/tuaw?a=zsLIuYf&quot;&gt;&lt;img src=&quot;http://feeds.tuaw.com/~f/weblogsinc/tuaw?i=zsLIuYf&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.tuaw.com/~f/weblogsinc/tuaw?a=YqtdHlf&quot;&gt;&lt;img src=&quot;http://feeds.tuaw.com/~f/weblogsinc/tuaw?i=YqtdHlf&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img width=&quot;1&quot; src=&quot;http://feeds.tuaw.com/~r/weblogsinc/tuaw/~4/248493190&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Sun, 09 Mar 2008 20:57:26 +0000</pubDate>
</item>
<item>
	<title>Unofficial Apple Weblog: Macworld posts &quot;Mac snobbery?&quot; video</title>
	<guid isPermaLink="false">http://www.tuaw.com/2008/03/09/macworld-posts-mac-snobbery-video/</guid>
	<link>http://feeds.tuaw.com/~r/weblogsinc/tuaw/~3/248457653/</link>
	<description>&lt;p&gt;Filed under: &lt;a href=&quot;http://www.tuaw.com/category/cult-of-mac/&quot; rel=&quot;tag&quot;&gt;Cult of Mac&lt;/a&gt;&lt;/p&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://www.macworld.com/article/132433/2008/03/mwvodcast41.html&quot;&gt;&lt;img src=&quot;http://www.blogsmithmedia.com/www.tuaw.com/media/2008/03/brian-chen-macworld-mac-users-snobs-video-_-cory-_-7128397392008sbm.jpg&quot; vspace=&quot;4&quot; border=&quot;1&quot; hspace=&quot;4&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div align=&quot;left&quot;&gt;You may recall us posting about a &lt;a href=&quot;http://www.tuaw.com/2008/02/17/the-street-mac-owners-are-snobs/&quot;&gt;recent study that found Mac users to be &quot;Snobs.&quot;&lt;/a&gt; Well, Macworld has &lt;a href=&quot;http://www.macworld.com/article/132433/2008/03/mwvodcast41.html&quot;&gt;taken this study a bit further&lt;/a&gt;. Brian Chen, the Associate Editor, went around asking some of the staff at Macworld (including Jason Snell) what they thought about the study. They also went to the Apple store asking wandering customers outside the store what they thought about the study. &lt;/div&gt;
&lt;/div&gt;&lt;h6 style=&quot;clear: both; padding: 8px 0 0 0; height: 2px; font-size: 1px; border: 0; margin: 0; padding: 0;&quot;&gt;&lt;/h6&gt;&lt;a href=&quot;http://www.macworld.com/article/132433/2008/03/mwvodcast41.html&quot;&gt;Read&lt;/a&gt; | &lt;a href=&quot;http://www.tuaw.com/2008/03/09/macworld-posts-mac-snobbery-video/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent link to this entry&quot;&gt;Permalink&lt;/a&gt; | &lt;a href=&quot;http://www.tuaw.com/forward/1135152/&quot; title=&quot;Send this entry to a friend via email&quot;&gt;Email this&lt;/a&gt; | &lt;a href=&quot;http://www.tuaw.com/2008/03/09/macworld-posts-mac-snobbery-video/#comments&quot; title=&quot;View reader comments on this entry&quot;&gt;Comments&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;map name=&quot;google_ad_map_16-1135152&quot;&gt;&lt;area shape=&quot;rect&quot; href=&quot;http://imageads.googleadservices.com/pagead/imgclick/16-1135152?pos=0&quot; coords=&quot;1,2,367,28&quot; /&gt;&lt;area shape=&quot;rect&quot; href=&quot;http://services.google.com/feedback/abg&quot; coords=&quot;384,10,453,23&quot; /&gt;&lt;/map&gt;&lt;img src=&quot;http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;amp;client=ca-pub-3546992251556849&amp;amp;channel=21&amp;amp;output=png&amp;amp;cuid=16-1135152&amp;amp;url=http://www.tuaw.com/2008/03/09/macworld-posts-mac-snobbery-video/&quot; border=&quot;0&quot; usemap=&quot;http://feeds.tuaw.com/weblogsinc/tuaw#google_ad_map_16-1135152&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://feeds.tuaw.com/~a/weblogsinc/tuaw?a=UDiPgj&quot;&gt;&lt;img src=&quot;http://feeds.tuaw.com/~a/weblogsinc/tuaw?i=UDiPgj&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.tuaw.com/~f/weblogsinc/tuaw?a=s1Mcp5f&quot;&gt;&lt;img src=&quot;http://feeds.tuaw.com/~f/weblogsinc/tuaw?i=s1Mcp5f&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.tuaw.com/~f/weblogsinc/tuaw?a=HMRsi3f&quot;&gt;&lt;img src=&quot;http://feeds.tuaw.com/~f/weblogsinc/tuaw?i=HMRsi3f&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img width=&quot;1&quot; src=&quot;http://feeds.tuaw.com/~r/weblogsinc/tuaw/~4/248457653&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Sun, 09 Mar 2008 20:57:25 +0000</pubDate>
</item>
<item>
	<title>Jakob Nielsen: microcontent-brand-names.html</title>
	<guid isPermaLink="true">http://www.useit.com/alertbox/microcontent-brand-names.html</guid>
	<link>http://www.useit.com/alertbox/microcontent-brand-names.html</link>
	<description>Company Name First in Microcontent?</description>
	<pubDate>Sun, 09 Mar 2008 20:56:38 +0000</pubDate>
</item>
<item>
	<title>Perl Buzz Mechanix: Use seq or jot to do repetitive numbering</title>
	<guid isPermaLink="true">http://perlbuzz.com/mechanix/2008/03/use-seq-or-jot-to-do-repetitiv.html</guid>
	<link>http://perlbuzz.com/mechanix/2008/03/use-seq-or-jot-to-do-repetitiv.html</link>
	<description>&lt;p&gt;
I just now had to clean up some tables in a PostgreSQL database.  The prior DBA thought that it would be good to split up tables into lx1, lx2, lx3 up to lx20.  After I combined all the tables together, I needed to drop the originals.  I could have written a Perl program to generate a series of &lt;tt&gt;drop table lx1;&lt;/tt&gt; commands to feed into the &lt;tt&gt;psql&lt;/tt&gt; command-line client, but instead I used the &lt;tt&gt;seq&lt;/tt&gt; tool:
&lt;/p&gt;
&lt;pre&gt;$ seq -f'drop table lx%g;' 1 20
drop table lx1;
drop table lx2;
...
drop table lx20;
&lt;/pre&gt;
&lt;p&gt;
If you don't have &lt;tt&gt;seq&lt;/tt&gt; on your system, as on Mac OS X, you probably have &lt;tt&gt;jot&lt;/tt&gt;, as in:
&lt;/p&gt;

&lt;pre&gt;jot -w'drop table lx%g;' 20 1
&lt;/pre&gt;

&lt;p&gt;
Then again, if you just &lt;i&gt;have&lt;/i&gt; to do it in Perl:
&lt;/p&gt;
&lt;pre&gt;perl -le'print qq{drop table lx$_;} for 1..20'
&lt;/pre&gt;
&lt;p&gt;
but I like to use other tools than the Swiss Army Chainsaw sometimes.
&lt;/p&gt;</description>
	<pubDate>Sun, 09 Mar 2008 20:56:31 +0000</pubDate>
</item>
<item>
	<title>Slashdot: German Police Raid 51 CeBIT Stands Over Patent Claims</title>
	<guid isPermaLink="false">http://yro.slashdot.org/article.pl?sid=08/03/09/1815205&amp;from=rss</guid>
	<link>http://rss.slashdot.org/~r/Slashdot/slashdot/~3/248496852/article.pl</link>
	<description>LeCaddie writes &quot;Last week German investigators raided 51 exhibitor stands at CeBIT, the German information technology fair in Hanover, looking for goods suspected of infringing patents. Some 183 police, customs officers, and prosecutors raided the fair on Wednesday and carried off 68 boxes of electronic goods and documents including cellphones, navigation devices, digital picture frames, and flat-screen monitors. Of the 51 companies raided, 24 were Chinese. Most of the patents concerned were related to devices with MP3, MP4, and DVB standard functions for digital audio and video, blank CDs, and DVD copiers, police said.&quot; In the US there are no criminal penalties associated with patents, and such a raid could not be conducted, especially in the absence of a court ruling of infringement.&lt;p&gt;&lt;a href=&quot;http://yro.slashdot.org/article.pl?sid=08/03/09/1815205&amp;amp;from=rss&quot;&gt;Read more of this story&lt;/a&gt; at Slashdot.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://rss.slashdot.org/~a/Slashdot/slashdot?a=TxVsPW&quot;&gt;&lt;img src=&quot;http://rss.slashdot.org/~a/Slashdot/slashdot?i=TxVsPW&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img width=&quot;1&quot; src=&quot;http://rss.slashdot.org/~r/Slashdot/slashdot/~4/248496852&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Sun, 09 Mar 2008 20:40:24 +0000</pubDate>
</item>
<item>
	<title>Slashdot: Wikileaks Calls For Global Boycott Against eNom</title>
	<guid isPermaLink="false">http://yro.slashdot.org/article.pl?sid=08/03/09/025222&amp;from=rss</guid>
	<link>http://rss.slashdot.org/~r/Slashdot/slashdot/~3/248322146/article.pl</link>
	<description>souls writes &quot;The folks at Wikileaks are calling for a boycott against eNom, Inc., one of the top internet domain registrars, which WikiLeaks claims is involved in systematic domain censoring. On Feb 28th eNom shut down wikileaks.info, one of the many Wikileaks mirrors held by a volunteer as a side-effect of the court proceedings around wikileaks.org. In addition, eNom was the registrar that shut off access to a Spanish travel agent who showed up on a US Treasury watch list. Wikileaks calls for a 'global boycott of eNom and its parent Demand Media, its owners, executives and their affiliated companies, interests and holdings, to make clear such behavior can and will not be tolerated within the boundaries of the Internet and its global community.'&quot;&lt;p&gt;&lt;a href=&quot;http://yro.slashdot.org/article.pl?sid=08/03/09/025222&amp;amp;from=rss&quot;&gt;Read more of this story&lt;/a&gt; at Slashdot.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://rss.slashdot.org/~a/Slashdot/slashdot?a=jhkmBs&quot;&gt;&lt;img src=&quot;http://rss.slashdot.org/~a/Slashdot/slashdot?i=jhkmBs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img width=&quot;1&quot; src=&quot;http://rss.slashdot.org/~r/Slashdot/slashdot/~4/248322146&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Sun, 09 Mar 2008 20:40:24 +0000</pubDate>
</item>
<item>
	<title>Slashdot: Olympic Web Site Features Pirated Content</title>
	<guid isPermaLink="false">http://yro.slashdot.org/article.pl?sid=08/03/09/0146224&amp;from=rss</guid>
	<link>http://rss.slashdot.org/~r/Slashdot/slashdot/~3/248263584/article.pl</link>
	<description>An anonymous reader writes &quot;Despite all the emphasis on protecting Olympic copyrights in China this year, the official web site of the Beijing Olympics features a Flash game that is a blatant copy of one of the games developed at The Pencil Farm. Compare the game on the Olympic site with 'Snow Day' at The Pencil Farm.&quot;&lt;p&gt;&lt;a href=&quot;http://yro.slashdot.org/article.pl?sid=08/03/09/0146224&amp;amp;from=rss&quot;&gt;Read more of this story&lt;/a&gt; at Slashdot.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://rss.slashdot.org/~a/Slashdot/slashdot?a=Pd8bn7&quot;&gt;&lt;img src=&quot;http://rss.slashdot.org/~a/Slashdot/slashdot?i=Pd8bn7&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img width=&quot;1&quot; src=&quot;http://rss.slashdot.org/~r/Slashdot/slashdot/~4/248263584&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Sun, 09 Mar 2008 20:40:24 +0000</pubDate>
</item>
<item>
	<title>Daring Fireball: G-Archiver</title>
	<guid isPermaLink="false">tag:daringfireball.net,2008:/linked//6.11147</guid>
	<link>http://www.codinghorror.com/blog/archives/001072.html</link>
	<description>&lt;p&gt;So G-Archiver is a Windows app that lets you download your archived Gmail messages. It ends up that the app emails your Gmail username and password to the author. Crazy.&lt;/p&gt;

&lt;div&gt;
&lt;a href=&quot;http://daringfireball.net/linked/2008/march#sun-09-garchiver&quot; title=&quot;Permanent link to ‘G-Archiver’&quot;&gt; ★ &lt;/a&gt;
&lt;/div&gt;</description>
	<pubDate>Sun, 09 Mar 2008 20:36:28 +0000</pubDate>
</item>
<item>
	<title>Planet Mozillazine: Asa Dotzler: webslices and activites</title>
	<guid isPermaLink="true">http://weblogs.mozillazine.org/asa/archives/2008/03/webslices_and_a.html</guid>
	<link>http://weblogs.mozillazine.org/asa/archives/2008/03/webslices_and_a.html</link>
	<description>&lt;p&gt;Just in case the power of the Firefox platform wasn't obvious already, check out the &lt;a href=&quot;http://www.glazman.org/weblog/dotclear/index.php?post/2008/03/07/WebSlices-in-Firefox-2&quot;&gt;Web Slices work from Daniel Glazman&lt;/a&gt; and the &lt;a href=&quot;http://www.kaply.com/weblog/2008/03/07/microsoft-activities-for-firefox-new-version/&quot;&gt;Activities work Mike Kaply's doing&lt;/a&gt;. &lt;/p&gt;</description>
	<pubDate>Sat, 08 Mar 2008 22:00:02 +0000</pubDate>
</item>
<item>
	<title>Mac Rumors: Sun Bringing Java to iPhone</title>
	<guid isPermaLink="true">http://www.macrumors.com/2008/03/08/sun-bringing-java-to-iphone/</guid>
	<link>http://www.macrumors.com/2008/03/08/sun-bringing-java-to-iphone/</link>
	<description>Sun announced that they are developing a Java Virtual Machine for Apple's iPhone with the newly released Software Development Kit (SDK).&lt;p class=&quot;quote&quot;&gt;&quot;We're going to make sure that the JVM offers the Java applications as much access to the native ...&lt;/p&gt;</description>
	<pubDate>Sat, 08 Mar 2008 21:57:28 +0000</pubDate>
</item>
<item>
	<title>Mac Rumors: iPhone SDK Limitations: Multitasking, Java, Emulators</title>
	<guid isPermaLink="true">http://www.macrumors.com/2008/03/08/iphone-sdk-limitations-multitasking-java-emulators/</guid>
	<link>http://www.macrumors.com/2008/03/08/iphone-sdk-limitations-multitasking-java-emulators/</link>
	<description>As people delve into the details of Apple's iPhone SDK, a few interesting issues are emerging.  One developer guideline that is generating some concern is from Apple's Human Interface Guidelines for iPhone:&lt;p class=&quot;quote&quot;&gt;Only one iPhone application...&lt;/p&gt;</description>
	<pubDate>Sat, 08 Mar 2008 21:57:25 +0000</pubDate>
</item>
<item>
	<title>Planet Perl: Vanilla Perl Build 15 - Loads of new toys</title>
	<guid isPermaLink="false">http://use.perl.org/article.pl?sid=08/03/08/1937220&amp;from=rss</guid>
	<link>http://feeds.feedburner.com/~r/PlanetPerl/~3/248029736/article.pl</link>
	<description>http://ali.as/download/vanilla-perl-5.10.0-build-15.exe (14.4 MB) I'm happy to (FINALLY) release the new Vanilla Perl build 15. Vanilla Perl is the experimental Win32 Perl distribution with the mandate to do the absolute minimum amount of changes to the Perl core to get various features working. This latest experimental release contains most of the new tricks that will be in the upcoming April Strawberry Perl, and probably the biggest number of new features yet in a Vanilla release. XML::Parser This release comes with Expat and XML::Parser built in (since I still can't make XML::Parser install from CPAN itself and you can't upgrade it). So it should be possible to build a range of other stuff on top of it now (like PPM support, which is out of the scope of Vanilla). Win32::API Although it probably won't stay in Vanilla beyond this release, I've bundled in Win32::API out of the box. With Win32::API also comes (be necessity) with libwin32 bundled in as well (which is by far the biggest install from cpan.strawberryperl.com). With those two installed, most of the rest of the Win32:: family should install relatively easily. Relocation This release contains experimental patches for all three configuration files that contain hard-coded paths to make them capable or handling the Perl installation being shoved around. This should also be the first release usable for people interested in creating Portable Perl type distributions for flash drives, etc. Of course, this is still an .exe installer (which Portable Perl people don't want, cause it dumps crap into the registry). This particular feature WON'T be in Strawberry Perl, but it involved adding some extra capabilities in regards to tweaking installs. libwwwperl aka LWP Because I refuse to use FTP CPAN mirrors any more (HTTP being infinitely superior in every way) Vanilla now comes with LWP out of the box. This also means that the built in CPAN mirrors can be used now, intead of it falling back on the horrible FTP defaults. Righto then... So, with Vanilla 15 working, time to move on to getting a Strawberry Beta.&lt;p&gt;&lt;a href=&quot;http://use.perl.org/article.pl?sid=08/03/08/1937220&amp;amp;from=rss&quot;&gt;Read more of this story&lt;/a&gt; at use Perl.&lt;/p&gt;&lt;img width=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/PlanetPerl/~4/248029736&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Sat, 08 Mar 2008 21:41:58 +0000</pubDate>
</item>
<item>
	<title>Planet Perl: pmtools-1.10 Release</title>
	<guid isPermaLink="false">http://use.perl.org/article.pl?sid=08/03/08/1936257&amp;from=rss</guid>
	<link>http://feeds.feedburner.com/~r/PlanetPerl/~3/248029731/article.pl</link>
	<description>Now at a CPAN mirror site near you — pmtools-1.10. Tom &quot;spot&quot; Callaway of Fedora Core let me know that the Fedora folks were concerned about the fact that pmtools was only licensed under the Perl 5 Artistic License (they were concerned about how well the Artistic License 1.0 would stand up in court). So, pmtools (starting with v1.10) is now dual-licensed like Perl (Artistic and GPL). (My other public Perl stuff is also dual-licensed.) I also added my copyright to pmtools, as I had not added my name to the copyright when I took it over. Off-hand, I don't recall why Tom Christiansen used only the Artistic License for pmtools. Anyone with a clue, please drop me a line. (That of course includes you, Tom.)&lt;p&gt;&lt;a href=&quot;http://use.perl.org/article.pl?sid=08/03/08/1936257&amp;amp;from=rss&quot;&gt;Read more of this story&lt;/a&gt; at use Perl.&lt;/p&gt;&lt;img width=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/PlanetPerl/~4/248029731&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Sat, 08 Mar 2008 21:41:58 +0000</pubDate>
</item>
<item>
	<title>Slashdot Developers: Donkey Kong and Me</title>
	<guid isPermaLink="false">http://games.slashdot.org/article.pl?sid=08/03/08/194249&amp;from=rss</guid>
	<link>http://rss.slashdot.org/~r/Slashdot/slashdotDevelopers/~3/248020903/article.pl</link>
	<description>MBCook sends us to the blog of one Landon Dyer, who posted an entry the other day entitled Donkey Kong and Me. It describes how he was offered at job at Atari after writing a Centipede clone and ended up programming Donkey Kong for the Atari 800. It's full of detail that will be fascinating to anyone who ever programmed assembly language that had to fit into 16K, as well as portents of what was to come at Atari. &quot;My first officemate didn't know how to set up his computer. He didn't know anything, it appeared. He'd been hired to work on Dig Dug, and he was completely at sea. I had to teach him a lot, including how to program in assembly, how the Atari hardware worked, how to download stuff, how to debug. It was pretty bad.&quot;&lt;p&gt;&lt;a href=&quot;http://games.slashdot.org/article.pl?sid=08/03/08/194249&amp;amp;from=rss&quot;&gt;Read more of this story&lt;/a&gt; at Slashdot.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://rss.slashdot.org/~a/Slashdot/slashdotDevelopers?a=zdlQGY&quot;&gt;&lt;img src=&quot;http://rss.slashdot.org/~a/Slashdot/slashdotDevelopers?i=zdlQGY&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img width=&quot;1&quot; src=&quot;http://rss.slashdot.org/~r/Slashdot/slashdotDevelopers/~4/248020903&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Sat, 08 Mar 2008 21:40:22 +0000</pubDate>
</item>
<item>
	<title>Slashdot Developers: Sun Is Porting Java To the iPhone</title>
	<guid isPermaLink="false">http://developers.slashdot.org/article.pl?sid=08/03/08/180252&amp;from=rss</guid>
	<link>http://rss.slashdot.org/~r/Slashdot/slashdotDevelopers/~3/248002734/article.pl</link>
	<description>krquet notes an InfoWorld article on Sun's plans for the iPhone. After studying Apple's newly released SDK docs for 24 hours, Sun decided it was feasible to develop a JVM, based on Java Micro Edition, for both the iPhone and the iTouch. An analyst is quoted: &quot;I think going forward, with the SDK, it takes out of Apple's control which applications are 'right' for the iPhone.&quot; The article doesn't speculate on how Apple might to react to such a loss of control. &quot;Apple had not shown interest in enabling Java to run on the iPhone, but Sun plans to step in and do the job itself... The free JVM would be made available via Apple's App Store marketplace for third-party applications.&quot;&lt;p&gt;&lt;a href=&quot;http://developers.slashdot.org/article.pl?sid=08/03/08/180252&amp;amp;from=rss&quot;&gt;Read more of this story&lt;/a&gt; at Slashdot.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://rss.slashdot.org/~a/Slashdot/slashdotDevelopers?a=WjUVt0&quot;&gt;&lt;img src=&quot;http://rss.slashdot.org/~a/Slashdot/slashdotDevelopers?i=WjUVt0&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img width=&quot;1&quot; src=&quot;http://rss.slashdot.org/~r/Slashdot/slashdotDevelopers/~4/248002734&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Sat, 08 Mar 2008 21:40:22 +0000</pubDate>
</item>
<item>
	<title>Daring Fireball: The Beauty of 99¢ iPhone Apps</title>
	<guid isPermaLink="false">tag:daringfireball.net,2008:/linked//6.11145</guid>
	<link>http://mooseyard.com/Jens/2008/03/the-beauty-of-99%c2%a2-iphone-apps/</link>
	<description>&lt;p&gt;$.99 or $1.99 is indeed low, but I think Jens Alfke may have a point. It’s not that bigger, serious apps will sell for prices that low, but smaller, simpler apps that might otherwise have been released for free might generate real money with “cup of coffee”-level prices. It’s the App Store that makes this possible.&lt;/p&gt;

&lt;div&gt;
&lt;a href=&quot;http://daringfireball.net/linked/2008/march#fri-07-99_cent&quot; title=&quot;Permanent link to ‘The Beauty of 99¢ iPhone Apps’&quot;&gt; ★ &lt;/a&gt;
&lt;/div&gt;</description>
	<pubDate>Sat, 08 Mar 2008 03:35:11 +0000</pubDate>
</item>
<item>
	<title>Daring Fireball: Can’t Help Falling in Love</title>
	<guid isPermaLink="false">tag:daringfireball.net,2008:/linked//6.11143</guid>
	<link>http://arstechnica.com/staff/fatbits.ars/2008/03/07/cant-help-falling-in-love</link>
	<description>&lt;p&gt;John Siracusa:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Skilled Mac developers are uniquely positioned to be the first to market with the iPhone applications they’ve been designing in their heads since last year. They know the tools, they know the technology, they even know a lot of the APIs already, and those they don’t know look a lot like the ones they do.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div&gt;
&lt;a href=&quot;http://daringfireball.net/linked/2008/march#fri-07-siracusa&quot; title=&quot;Permanent link to ‘Can’t Help Falling in Love’&quot;&gt; ★ &lt;/a&gt;
&lt;/div&gt;</description>
	<pubDate>Sat, 08 Mar 2008 03:35:11 +0000</pubDate>
</item>
<item>
	<title>Linux Weekly News: GCC 4.3.0 exposes a kernel bug</title>
	<guid isPermaLink="true">http://lwn.net/Articles/272048/</guid>
	<link>http://lwn.net/Articles/272048/</link>
	<description>&lt;a href=&quot;http://lwn.net/Articles/272048/&quot;&gt;http://lwn.net/Articles/272048/&lt;/a&gt;</description>
	<pubDate>Fri, 07 Mar 2008 22:00:06 +0000</pubDate>
</item>
<item>
	<title>Bob Cringely: Antisocial</title>
	<guid isPermaLink="true">http://www.pbs.org/cringely/pulpit/2008/pulpit_20080307_004467.html</guid>
	<link>http://www.pbs.org/cringely/pulpit/2008/pulpit_20080307_004467.html</link>
	<description>&lt;p&gt;Do you remember Citizens' Band radio?  Though established by the Federal Communications Commission in the 1950s, CB radio didn't become an overnight sensation until the 1970s when Moore's Law brought down the cost of radios to where it was economically viable to buy them solely for the purpose of breaking speed-limit laws.  President Nixon, who liked to wear a blue suit and keep a cozy fire burning in his White House hearth year round no matter what the outside temperature or impact on his (our) air conditioning bill, had decided we all should drive 55 miles per hour or less to save fuel following the energy crisis of 1973.  So, being true Americans, which is to say cranky and prone to complain, we en masse set out to break this new law using as our primary tool CB radio technology to warn us where Smokey was or had recently been or whether there was an eye in the sky.  Criminals bound by a criminal code, we flaunted CB license restrictions (you were supposed to use your Federally assigned call sign from that license you were also supposed to have but never got) and operated under handles like &quot;Thunderchicken&quot; and &quot;Boot-licker.&quot; I was &quot;asciiboy.&quot;  CB radio sales went from zero to tens of millions of units in under two years -- the highest rate of technology adoption ever seen in the U.S. before or since.  Soon there was CB lore and a CB culture.  CB was everywhere.  When not breaking the law with it we were using CB as a huge social network to find the cheapest gas, the best hamburger or even a date for the prom.  And then, quick as it started, CB was gone, worn to the bone from overuse and abuse and left to the truckers as it should have been all along.  What killed CB radio was that moment when its annoyance factor exceeded its utility -- a utility already driven down by low traffic conviction rates and the eventual understanding that if everyone were a speeder then most cops wouldn't stop anyone.&lt;/p&gt;

&lt;p&gt;I am beginning to think that Internet social networking is another CB radio, destined to crash and burn.&lt;/p&gt;

&lt;p&gt;Social networking has a lot of problems as both a business and a cultural phenomenon.  To start with there is generally no true business model.  This can vary a bit from application to application but most are vying simply for eyeballs and hoping for Google ads to pay the bills until Time Warner or News Corp make them an acquisition offer they can't refuse.  That might be okay for Facebook or MySpace and maybe Linked-In, but there are more than 350 general-purpose social networks out there and I will guarantee you that no more than 5 percent of those will be still operating two years from today.&lt;/p&gt;

&lt;p&gt;If you are a social networking entrepreneur and your operation isn't among the top 10, I'd be either looking frantically for an acquirer or turning your site into a social networking aggregator, linking to many others in exactly the way the chat networks appear to be merging while still retaining their individual identities.&lt;/p&gt;

&lt;p&gt;Then there is the annoyance factor, which for me is rapidly accelerating as the major social networks try to establish themselves as hosts for third-party applications.  This would appear to be a no-brainer tactic for the two or three social networks that are likely to survive.  In fact I could argue that what is more likely to survive than most social networks are the truly compelling applications that run upon them, eventually subsuming their hosts.  But in the meantime there is all this annoying crap.  How many groups do you have to join, how many causes do you have to support, how many silly applications do you have to run until you come to realize that you are being included TO DEATH?&lt;/p&gt;

&lt;p&gt;My idea for the perfect Facebook app, for example, is one I call &quot;I've Fallen and I Can't Get Up!&quot;  It's a variation on Twitter that is activated ONLY when one participant needs other participants to call 9-1-1 on his or her behalf.  Maybe it could be linked to a panic button or to your cardiac pacemaker.  The perfect Facebook application, then, is one you hope you'll never have to use.  This is far better than the typical Facebook app, which is overused to the point where people withdraw or simply stop noticing.&lt;/p&gt;

&lt;p&gt;It's not that I don't see value to social networks, it's that I generally don't see ENOUGH value.  Yes, keeping my address book synchronized with reality is nice, but isn't that likely to be shortly absorbed into the operating system or perhaps into networked applications like Gmail and Yahoo Mail?&lt;/p&gt;

&lt;p&gt;This trend has happened over and over as hundreds of portals came and went, leaving a few survivors.  Same for hundreds of search engines, hundreds of free e-mail services, etc., etc.&lt;/p&gt;

&lt;p&gt;Marshall McLuhan argued that obsolete communication technologies survive as art forms.  This is true, I'd say, for Morse code and movable type printing and perhaps even for your venerable Rolodex or typewriter.  But it isn't yet true for CB radio, nor for most Internet technologies.  Maybe they aren't old enough yet to be appreciated.  In the case of CB I think range of reception limits the possible population of players to something less than an artistic critical mass.&lt;/p&gt;

&lt;p&gt;What will likely happen to social networking is that some applications will survive on a more modest basis than now (used by the trucker equivalents), others will morph into some new Next Big Thing as their more compelling sub-applications take over, and true hard-core social networkers will jump to more advanced technologies that eliminate the riff-raff.  In the meantime, 70 percent or so of most social networking functionality -- the really useful functionality -- will be sucked into the dominant portal/search/e-mail/chat/social networks like MSN and Yahoo.&lt;/p&gt;

&lt;p&gt;This next transition will happen faster than most people realize.  Part of this is because Internet product cycles have been shortening for the past several years, so each generation is shorter than the one before.  This hasn't mattered much because the audience has continued to expand.  And even now as Internet growth in terms of new users is slowing, that's more than made up for by the shift of advertising budgets from print and broadcast to the net.  So while the growth in users is decreasing, the growth in total revenue PER user is increasing.  But so is the competition, hence the shorter product cycles.&lt;/p&gt;

&lt;p&gt;The tip-off that we're nearing the end of a cycle is the flight to quality we're seeing from some of the bigger players.  At Facebook, for example, you can no longer register using an e-mail address from an anonymous mail site like Mailinator, Operamail, or Countermail.  Facebook demands that you take an extra three minutes and get a Yahoo Mail or AOL mail address for example.  This is clearly the company pruning its subscribers in anticipation of an acquisition in the next couple quarters.  There is no other reason to do it.  MySpace isn't doing it despite a very real sex offender scandal, but then MySpace has already been sold and Facebook hasn't yet.&lt;/p&gt;

&lt;p&gt;Once Facebook has been taken and one or two others, the golden era of social networking acquisitions will be over and the entrepreneurs will be headed for that Next Big Thing.&lt;/p&gt; 

&lt;p&gt;&quot;Breaker Port 80!  Do you have your ears on?&quot;&lt;/p&gt;</description>
	<pubDate>Fri, 07 Mar 2008 21:58:55 +0000</pubDate>
</item>
<item>
	<title>Mac Rumors: iPhone SDK Reactions and Ongoing Questions</title>
	<guid isPermaLink="true">http://www.macrumors.com/2008/03/07/iphone-sdk-reactions-and-ongoing-questions/</guid>
	<link>http://www.macrumors.com/2008/03/07/iphone-sdk-reactions-and-ongoing-questions/</link>
	<description>The release of the iPhone SDK provided a lot of answers, but has also raised a number of questions, many of which will not be answerable until the iTunes App Store launches in June 2008.&lt;br /&gt;
&lt;br /&gt;
The general sentiment, however, has been quite p...</description>
	<pubDate>Fri, 07 Mar 2008 21:56:30 +0000</pubDate>
</item>
<item>
	<title>Mac Rumors, Page 2: DVD or CD Sharing Setup Update for Mac/PC</title>
	<guid isPermaLink="true">http://www.macrumors.com/2008/03/06/dvd-or-cd-sharing-setup-update-for-mac-pc/</guid>
	<link>http://www.macrumors.com/2008/03/06/dvd-or-cd-sharing-setup-update-for-mac-pc/</link>
	<description>Apple has released DVD or CD Sharing Setup Update for Mac and PC.&lt;p class=&quot;quote&quot;&gt;This update installs software that enables remote disc sharing, system software restoration, and wireless migration with MacBook Air.&lt;/p&gt;&lt;br /&gt;
The Mac version require...&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.macrumors.com/~f/MacRumors-Page2?a=O043KnF&quot;&gt;&lt;img src=&quot;http://feeds.macrumors.com/~f/MacRumors-Page2?i=O043KnF&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.macrumors.com/~f/MacRumors-Page2?a=fPaZCBf&quot;&gt;&lt;img src=&quot;http://feeds.macrumors.com/~f/MacRumors-Page2?i=fPaZCBf&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.macrumors.com/~f/MacRumors-Page2?a=LJ0Rlyf&quot;&gt;&lt;img src=&quot;http://feeds.macrumors.com/~f/MacRumors-Page2?i=LJ0Rlyf&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.macrumors.com/~f/MacRumors-Page2?a=E6SiubF&quot;&gt;&lt;img src=&quot;http://feeds.macrumors.com/~f/MacRumors-Page2?i=E6SiubF&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img width=&quot;1&quot; src=&quot;http://feeds.macrumors.com/~r/MacRumors-Page2/~4/247043055&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Fri, 07 Mar 2008 21:56:05 +0000</pubDate>
</item>
<item>
	<title>Slashdot Developers: Little Demand Yet For Silverlight Developers</title>
	<guid isPermaLink="false">http://developers.slashdot.org/article.pl?sid=08/03/07/1443208&amp;from=rss</guid>
	<link>http://rss.slashdot.org/~r/Slashdot/slashdotDevelopers/~3/247437060/article.pl</link>
	<description>ericatcw writes &quot;At its Mix08 Web development conference, Microsoft said that its Silverlight rich Internet application platform is downloaded and installed an average of 1.5 million times every day; Microsoft has a goal of 200 million installs by midyear. But Silverlight is at the beginning of a long slog towards gaining traction. Computerworld did a quick analysis of job listings at nine popular career sites and found that an average of 41 times more ads mentioned Adobe's Flash than mentioned Silverlight. As expected only 6 months after Silverlight's introduction, the number of programming books carried on Amazon.com was also heavily skewed in favor of Flash.&quot;&lt;p&gt;&lt;a href=&quot;http://developers.slashdot.org/article.pl?sid=08/03/07/1443208&amp;amp;from=rss&quot;&gt;Read more of this story&lt;/a&gt; at Slashdot.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://rss.slashdot.org/~a/Slashdot/slashdotDevelopers?a=difRvl&quot;&gt;&lt;img src=&quot;http://rss.slashdot.org/~a/Slashdot/slashdotDevelopers?i=difRvl&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img width=&quot;1&quot; src=&quot;http://rss.slashdot.org/~r/Slashdot/slashdotDevelopers/~4/247437060&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Fri, 07 Mar 2008 21:50:23 +0000</pubDate>
</item>
<item>
	<title>Planet Perl: Catalyst:  More Lessons in How Not To Write An Application</title>
	<guid isPermaLink="false">http://use.perl.org/~Ovid/journal/35856?from=rss</guid>
	<link>http://feeds.feedburner.com/~r/PlanetPerl/~3/247305442/35856</link>
	<description>&lt;p&gt;Trying to figure out the source of a method in one of our Catalyst controllers. Our controller inherited from one of our controller base classes.  That, in turn, inherited from the deprecated &lt;tt&gt;Catalyst::Base&lt;/tt&gt; which, in turn, does nothing but inherit from &lt;tt&gt;Catalyst::Controller&lt;/tt&gt;, which inherits from &lt;em&gt;three&lt;/em&gt; different classes.  Two of those inherit from two classes each, which in turn ...&lt;/p&gt;

&lt;p&gt;Let's see if I can figure this out our inheritance heirarchy so I can tell where that method is coming from:&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;blockquote&gt; &lt;div&gt;&lt;tt&gt;Our::Controller&lt;br /&gt;    Our::ControllerBase&lt;br /&gt;        Catalyst::Base (deprecated passthrough)&lt;br /&gt;            Catalyst::Controller&lt;br /&gt;                Catalyst::Component&lt;br /&gt;                    Class::Accessor::Fast&lt;br /&gt;                        Class::Accessor&lt;br /&gt;                    Class::Data::Inheritable&lt;br /&gt;                Catalyst::AttrContainer&lt;br /&gt;                    Class::Accessor::Fast&lt;br /&gt;                        Class::Accessor&lt;br /&gt;                    Class::Data::Inheritable&lt;br /&gt;                  Class::Accessor::Fast&lt;br /&gt;                      Class::Accessor&lt;br /&gt;    Catalyst::Controller::REST&lt;br /&gt;        Catalyst::Controller&lt;br /&gt;            Catalyst::Component&lt;br /&gt;                Class::Accessor::Fast&lt;br /&gt;                    Class::Accessor&lt;br /&gt;                Class::Data::Inheritable&lt;br /&gt;            Catalyst::AttrContainer&lt;br /&gt;                Class::Accessor::Fast&lt;br /&gt;                    Class::Accessor&lt;br /&gt;                Class::Data::Inheritable&lt;br /&gt;              Class::Accessor::Fast&lt;br /&gt;                  Class::Accessor&lt;/tt&gt;&lt;/div&gt; &lt;/blockquote&gt;  &lt;p&gt;Got that?&lt;/p&gt;

&lt;p&gt;On the off chance that you're a Multiple Inheritance fanboy, I don't think I'm going to say anything right now.  I'm on the verge of profanity.  MI is a tool of &lt;em&gt;last&lt;/em&gt; resort (no, I'm not saying it's always the wrong answer).  Today there are so many excellent alternatives that you really have no excuse for using MI other than &quot;I don't like change&quot;.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img width=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/PlanetPerl/~4/247305442&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Fri, 07 Mar 2008 21:41:53 +0000</pubDate>
</item>
<item>
	<title>Planet Perl: YAPC::NA 2008 CFP Deadline Quickly Approaching</title>
	<guid isPermaLink="false">http://use.perl.org/article.pl?sid=08/03/07/1725220&amp;from=rss</guid>
	<link>http://feeds.feedburner.com/~r/PlanetPerl/~3/247518977/article.pl</link>
	<description>The CFP for YAPC::NA 2008 officially ends on March 15th, so get your submissions in soon. Though we actually have had an amazing number of pre-deadline submissions (typically the last few days are when the floodgates open), we could still use some more. There are spots open for talks ranging from 20 minute overviews to longer 90 minute sessions. This year, we are also doing hands-on workshops in the conference center computer lab. Any projects that want to try to recruit some new hackers should sign up for hosting one of these informal learning sessions.&lt;p&gt;&lt;a href=&quot;http://use.perl.org/article.pl?sid=08/03/07/1725220&amp;amp;from=rss&quot;&gt;Read more of this story&lt;/a&gt; at use Perl.&lt;/p&gt;&lt;img width=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/PlanetPerl/~4/247518977&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Fri, 07 Mar 2008 21:41:53 +0000</pubDate>
</item>
<item>
	<title>Linux Weekly News: LWN.net Weekly Edition for March 6, 2008</title>
	<guid isPermaLink="true">http://lwn.net/Articles/271240/</guid>
	<link>http://lwn.net/Articles/271240/</link>
	<description>&lt;a href=&quot;http://lwn.net/Articles/271240/&quot;&gt;http://lwn.net/Articles/271240/&lt;/a&gt;</description>
	<pubDate>Thu, 06 Mar 2008 22:00:04 +0000</pubDate>
</item>
<item>
	<title>Focus Shift: Progress</title>
	<guid isPermaLink="true">http://osnews.com/story/19435/Progress</guid>
	<link>http://osnews.com/story/19435/Progress</link>
	<description>&lt;center&gt;&lt;img src=&quot;http://www.osnews.com/images/comics/progress.jpg&quot; title=&quot;Progress.&quot; height=&quot;502&quot; width=&quot;500&quot; alt=&quot;Progress.&quot; border=&quot;1&quot; /&gt;&lt;/center&gt;</description>
	<pubDate>Thu, 06 Mar 2008 21:59:48 +0000</pubDate>
	<author>donotreply@osnews.com (Thom Holwerda)</author>
</item>
<item>
	<title>Annotated CPAN: Net::HTTPServer</title>
	<guid isPermaLink="true">http://annocpan.org/~REATMON/Net-HTTPServer-1.1.1/lib/Net/HTTPServer.pm#note_1832</guid>
	<link>http://annocpan.org/~REATMON/Net-HTTPServer-1.1.1/lib/Net/HTTPServer.pm#note_1832</link>
	<description>&lt;p&gt;Net::HTTPServer does not handle large responses. To enable this support by breaking up large responses, change the _send function within:
if (ref($data) eq &quot;&quot;) { ...&lt;/p&gt;
&lt;p&gt;to:
if (ref($data) eq &quot;&quot;) 
{
        if (length($data) &amp;gt; 1024) {
                my @data_chunks = unpack &quot;a1024&quot; x ((length($data)/1024)-1) . &quot;a*&quot;, $data;
                foreach my $chunk (@data_chunks) {
                        $self-&amp;gt;_debug(&quot;SEND&quot;,&quot;_send: $chunk&quot;);
                        return unless defined($self-&amp;gt;_send_data($sock,$chunk));
                }
        }
        else {
                $self-&amp;gt;_debug(&quot;SEND&quot;,&quot;_send: $data&quot;);
                return unless defined($self-&amp;gt;_send_data($sock,$data));
        }
}
&lt;/p&gt;</description>
	<pubDate>Thu, 06 Mar 2008 21:59:02 +0000</pubDate>
</item>
<item>
	<title>Annotated CPAN: Regexp::Common</title>
	<guid isPermaLink="true">http://annocpan.org/~ABIGAIL/Regexp-Common-2.120/lib/Regexp/Common.pm#note_1831</guid>
	<link>http://annocpan.org/~ABIGAIL/Regexp-Common-2.120/lib/Regexp/Common.pm#note_1831</link>
	<description>&lt;p&gt;See also: &lt;a href=&quot;http://annocpan.org/perldoc?Regexp::Common::Email::Address&quot;&gt;Regexp::Common::Email::Address&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Thu, 06 Mar 2008 21:59:02 +0000</pubDate>
</item>
<item>
	<title>Josh McAdams: Perl @ Flourish</title>
	<guid isPermaLink="true">http://use.perl.org/~jmcada/journal/35847?from=rss</guid>
	<link>http://use.perl.org/~jmcada/journal/35847?from=rss</link>
	<description>The organizers of &lt;a href=&quot;http://www.flourishconf.com/&quot;&gt;Flourish&lt;/a&gt; are of course looking for attendees for their conference, but they are also looking for something else... top-notch Perl web developers.  They are having a web programming showdown using a variety of languages and frameworks.  Perl is on the list, but is currently under-represented.  They are looking to invite the best-of-the-best in each language, preferably people who are noted contributors to the particular language or platform that they'll be developing in.  Because of this demanding criteria, they are willing to talk about helping out with travel, etc.  Please contact me, Josh McAdams (joshua dot mcadams at gmail dot com) if you are interested.</description>
	<pubDate>Thu, 06 Mar 2008 21:58:56 +0000</pubDate>
</item>
<item>
	<title>Planet Mozillazine: Asa Dotzler: &quot;activities&quot; for firefox</title>
	<guid isPermaLink="true">http://weblogs.mozillazine.org/asa/archives/2008/03/activities_for.html</guid>
	<link>http://weblogs.mozillazine.org/asa/archives/2008/03/activities_for.html</link>
	<description>&lt;p&gt;If you didn't think think IE 8's &quot;activities&quot; were a derivative of Mozilla's microformats work then check out &lt;a href=&quot;http://www.kaply.com/weblog/2008/03/05/microsoft-activities-for-firefox/&quot;&gt;Mike Kapley's add-on&lt;/a&gt;. &lt;/p&gt;</description>
	<pubDate>Thu, 06 Mar 2008 21:58:18 +0000</pubDate>
</item>
<item>
	<title>Planet Mozillazine: Gervase Markham: Breathtaking UI Award: Linksys</title>
	<guid isPermaLink="true">http://weblogs.mozillazine.org/gerv/archives/2008/03/breathtaking_ui_award_linksys.html</guid>
	<link>http://weblogs.mozillazine.org/gerv/archives/2008/03/breathtaking_ui_award_linksys.html</link>
	<description>&lt;p&gt;Six months ago I had to set up a Linksys Access Point (WAP54G) as a wireless repeater in my house, to get the wireless signal from my Wireless-G Broadband Router (WRT54G) to reach the attic. It was a painful process, and the main reason it was painful was trying to get the correct value on the repeater for the setting labelled &quot;Remote Access Point's LAN MAC Address&quot;. This is how it knows where to send all the relayed traffic to.&lt;/p&gt;

&lt;p&gt;How hard can this be? You go to your WRT54G router, click &quot;Status&quot;, and there it is: a field labelled &quot;MAC Address&quot;. Just copy that in, right? However, that's the MAC address for the wired side. So, despite the fact that the field is labelled &quot;LAN MAC address&quot;, if you enter the MAC address the router uses on the LAN, nothing works! It's not the &quot;LAN MAC Address&quot; at all - it's precisely the other one, the MAC address from the Status/Wireless subtab. Doh! A &quot;Breathtaking UI&quot; award to Linksys, I think.&lt;/p&gt;

&lt;p&gt;(This is a bit geeky, but I also want to document it to try and avoid anyone else having to suffer through this.)&lt;/p&gt;</description>
	<pubDate>Thu, 06 Mar 2008 21:58:14 +0000</pubDate>
</item>
<item>
	<title>Perl Buzz Mechanix: Devel::NYTProf is the hot new profiler in town</title>
	<guid isPermaLink="true">http://perlbuzz.com/mechanix/2008/03/develnytprof-is-the-hot-new-pr.html</guid>
	<link>http://perlbuzz.com/mechanix/2008/03/develnytprof-is-the-hot-new-pr.html</link>
	<description>&lt;p&gt;
Adam Kaplan has released a cool new profiling tool, &lt;a href=&quot;http://search.cpan.org/dist/Devel-NYTProf/&quot;&gt;Devel::NYTProf&lt;/a&gt;.  It's apparently taken the formatting beauty of &lt;a href=&quot;http://search.cpan.org/dist/Devel-Coverf/&quot;&gt;Devel::Cover&lt;/a&gt;, the code test coverage tool, and used it to identify hotspots in your code.  The results are beautiful: &lt;a href=&quot;http://graphics8.nytimes.com/images/blogs/open/05screenshotindex.png&quot;&gt;Overview&lt;/a&gt; and &lt;a href=&quot;http://graphics8.nytimes.com/images/blogs/open/05screenshotprofile.png&quot;&gt;module-level detail&lt;/a&gt;.  There's also a report writer that provides CSV output and lets you create your own output in your own format.
&lt;/p&gt;
&lt;p&gt;
I ran into a divide-by-zero error that I patched in my local copy, but other than that the results seem good.  I look forward to whatever other improvements come.  I'm also glad it's been &lt;a href=&quot;http://perlbuzz.com/2008/03/more-companies-openly-supporting-perl-projects.html&quot;&gt;released with the support of the New York Times&lt;/a&gt;.
&lt;/p&gt;</description>
	<pubDate>Thu, 06 Mar 2008 21:56:25 +0000</pubDate>
</item>
<item>
	<title>Other Chris Dolans: First You Need Enlightenment and Then You Need Atonement</title>
	<guid isPermaLink="true">http://cosmos-liturgy-sex.com/2008/03/06/first-you-need-enlightenment-and-then-you-need-atonement/</guid>
	<link>http://cosmos-liturgy-sex.com/2008/03/06/first-you-need-enlightenment-and-then-you-need-atonement/</link>
	<description>In January, Shelray did a post about a San Francisco man suing a Catholic Hospital in Daly City for refusing to give him a sex change operation. Well apparently the hospital caved under the pressure of a court order according to an EWTN feed from CWN. This is most unfortunate but I suppose that it is encouraging that they resisted to start with. However, what is problematic is that the hospital is said to have released the following statement: “We regret any confusion that may have come from th</description>
	<pubDate>Thu, 06 Mar 2008 21:56:10 +0000</pubDate>
</item>
<item>
	<title>Mac Rumors, Page 2: Apple Preparing 10.4.12 Update For Tiger?</title>
	<guid isPermaLink="true">http://www.macrumors.com/2008/03/05/apple-preparing-10-4-12-update-for-tiger/</guid>
	<link>http://www.macrumors.com/2008/03/05/apple-preparing-10-4-12-update-for-tiger/</link>
	<description>Macenstein percolates a rumor that Apple is preparing a final update to Mac OS 10.4 &quot;Tiger&quot;, bringing the system version to 10.4.12.&lt;p class=&quot;quote&quot;&gt;We have it on good authority (meaning this is a rumor, and “good authority” could mean anything) that...&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.macrumors.com/~f/MacRumors-Page2?a=FMygDBF&quot;&gt;&lt;img src=&quot;http://feeds.macrumors.com/~f/MacRumors-Page2?i=FMygDBF&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.macrumors.com/~f/MacRumors-Page2?a=UqBPejf&quot;&gt;&lt;img src=&quot;http://feeds.macrumors.com/~f/MacRumors-Page2?i=UqBPejf&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.macrumors.com/~f/MacRumors-Page2?a=aoH1Egf&quot;&gt;&lt;img src=&quot;http://feeds.macrumors.com/~f/MacRumors-Page2?i=aoH1Egf&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.macrumors.com/~f/MacRumors-Page2?a=gThQ00F&quot;&gt;&lt;img src=&quot;http://feeds.macrumors.com/~f/MacRumors-Page2?i=gThQ00F&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img width=&quot;1&quot; src=&quot;http://feeds.macrumors.com/~r/MacRumors-Page2/~4/246451798&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Thu, 06 Mar 2008 21:56:04 +0000</pubDate>
</item>
<item>
	<title>Planet Perl: Announcing IrishPulse</title>
	<guid isPermaLink="false">http://taint.org/2008/03/06/124737a.html</guid>
	<link>http://feeds.feedburner.com/~r/PlanetPerl/~3/246709681/124737a.html</link>
	<description>&lt;p&gt;As &lt;a href=&quot;http://taint.org/2008/02/26/121227a.html&quot;&gt;I previously threatened&lt;/a&gt;, I’ve
gone ahead and created a “Microplanet” for Irish twitterers, similar to
Portland’s &lt;a href=&quot;http://pulseofpdx.com/&quot;&gt;Pulse of PDX&lt;/a&gt; — an aggregator of the
“stream of consciousness” that comes out of our local Twitter community: &lt;strong&gt;&lt;a href=&quot;http://irishpulse.taint.org/&quot;&gt;IrishPulse&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Here’s what you can do:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add yourself&lt;/strong&gt;: if you’re an Irish Twitter user, &lt;a href=&quot;http://twitter.com/irishpulse&quot;&gt;follow the user ‘irishpulse’&lt;/a&gt;.  This will add you to the sources list.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Publicise it&lt;/strong&gt;: feel free to pass on the URL to other Irish Twitter users, and blog about it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read it&lt;/strong&gt;: bookmark and take a look now and again!&lt;/p&gt;

&lt;p&gt;In terms of implementation, it’s just a (slightly patched) copy of
&lt;a href=&quot;http://intertwingly.net/code/venus/&quot;&gt;Venus&lt;/a&gt; and a perl script using
&lt;a href=&quot;http://search.cpan.org/dist/Net-Twitter/&quot;&gt;Net::Twitter&lt;/a&gt; to generate an OPML file
of the Twitter followers.  &lt;a href=&quot;http://taint.org/wk/PulseSource&quot;&gt;Here’s the source&lt;/a&gt;.  I’d love to see more “Pulse” sites using this…&lt;/p&gt;&lt;img width=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/PlanetPerl/~4/246709681&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Thu, 06 Mar 2008 21:43:49 +0000</pubDate>
</item>
<item>
	<title>Planet Perl: More companies openly supporting Perl projects</title>
	<guid isPermaLink="false">tag:perlbuzz.com,2008://1.362</guid>
	<link>http://feeds.feedburner.com/~r/PlanetPerl/~3/246561362/more-companies-openly-supporting-perl-projects.html</link>
	<description>&lt;p&gt;
More companies are showing their support for open source projects, and I couldn't be happier about it.
&lt;/p&gt;
&lt;p&gt;
Those of you following &lt;a href=&quot;http://use.perl.org/~Ovid/journal/&quot;&gt;Ovid's blog on use.perl.org&lt;/a&gt;, or reading his code improvements in the &lt;a href=&quot;http://lists.cpan.org/showlist.cgi?name=perl-qa&quot;&gt;perl-qa mailing list&lt;/a&gt;, should give thanks to the &lt;a href=&quot;http://bbc.co.uk/&quot;&gt;BBC&lt;/a&gt; for supporting his Perl work.  It's not all philanthropic, of course, since the BBC wants good tools for themselves, but I love that they're letting Ovid hitch his stories to the BBC wagon.  That helps give Perl some credence in the eyes of open source skeptics.
&lt;/p&gt;
&lt;p&gt;
Now, as you readers of &lt;a href=&quot;http://perlbuzz.com/mechanix/&quot;&gt;Mechanix&lt;/a&gt; know, &lt;a href=&quot;http://perlbuzz.com/mechanix/2008/03/develnytprof-is-the-hot-new-pr.html&quot;&gt;Devel::NYTProf is the hot new profiler in town&lt;/a&gt;.  Not only is the New York Times allowing code to be released, it turns out there's a blog, &lt;a href=&quot;http://open.blogs.nytimes.com/&quot;&gt;open.blogs.nytimes.com&lt;/a&gt;, where &lt;a href=&quot;http://open.blogs.nytimes.com/2008/03/05/the-new-york-times-perl-profiler/&quot;&gt;Adam Kaplan announced the module&lt;/a&gt;.  I love that a company that's not (exactly) in the software business is blogging about their open source software work.  Let's hope it's a light in the darkness that others will lend their illumination to as well.
&lt;/p&gt;

        
    &lt;img width=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/PerlBuzz/~4/246554808&quot; height=&quot;1&quot; /&gt;&lt;img width=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/PlanetPerl/~4/246561362&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Thu, 06 Mar 2008 21:43:49 +0000</pubDate>
</item>
<item>
	<title>Planet Perl: Throttling qmail</title>
	<guid isPermaLink="false">http://blog.plover.com/2008/03/06#qmail-throttle</guid>
	<link>http://feeds.feedburner.com/~r/PlanetPerl/~3/246872631/06</link>
	<description>This may well turn out to be another oops.  Sometimes when I screw
around with the mail system, it's a big win, and &lt;a href=&quot;http://blog.plover.com/oops/multiple-connections.html&quot;&gt;sometimes it's a big
lose&lt;/a&gt;.  I don't know yet how this will turn out.&lt;p&gt;

Since I moved house, I have all sorts of internet-related problems
that I didn't have before.  I used to do business with a small ISP,
and I ran my own web server, my own mail service, and so on.  When
something was wrong, or I needed them to do something, I called or
emailed and they did it.  Everything was fine.&lt;/p&gt;&lt;p&gt;

Since moving, my ISP is Verizon.  I have great respect for Verizon as a
provider of telephone services.  They have been doing it for over a
hundred years, and they are good at it.  Maybe in a hundred years they
will be good at providing computer network services too.  Maybe it
will take less than a hundred years.  But I'm not as young as I once
was, and whenever that glorious day comes, I don't suppose I'll be around
to see it.&lt;/p&gt;&lt;p&gt;

One of the unexpected problems that arose when I switched ISPs was
that Verizon helpfully blocks incoming access to port 80.  I had moved
my blog to outside hosting anyway, because the blog was consuming too
much bandwidth, so I moved the other plover.com web services to the
same place.  There are still some things that don't work, but I'm
dealing with them as I have time.&lt;/p&gt;&lt;p&gt;

Another problem was that a lot of sites now rejected my SMTP
connections.  My address was in a different netblock.  A Verizon DSL
netblock.  Remote SMTP servers assume that anybody who is dumb enough
to sign up with Verizon is also too dumb to run their own MTA.  So any
mail coming from a DSL connection in Verizonland &lt;i&gt;must&lt;/i&gt; be spam,
probably generated by some Trojan software on some infected Windows
box.&lt;/p&gt;&lt;p&gt;

The solution here (short of getting rid of Verizon) is to relay the
mail through Verizon's SMTP relay service.  &lt;tt&gt;mail.plover.com&lt;/tt&gt;
sends to &lt;tt&gt;outgoing.verizon.net&lt;/tt&gt;, and
let &lt;tt&gt;outgoing.verizon.net&lt;/tt&gt; forward the mail to its final
destination.  Fine.&lt;/p&gt;&lt;p&gt;

But but but. &lt;/p&gt;&lt;p&gt;

If my machine sends more than &lt;i&gt;X&lt;/i&gt; messages per
&lt;i&gt;Y&lt;/i&gt; time, &lt;tt&gt;outgoing.verizon.net&lt;/tt&gt; will assume that
&lt;tt&gt;mail.plover.com&lt;/tt&gt; has been taken over by a Trojan spam
generator, and cut off access.  All outgoing mail will be rejected with a
permanent failure.&lt;/p&gt;&lt;p&gt;

So what happens if someone sends a message to one of the
500-subscriber email lists that I host here?  &lt;tt&gt;mail.plover.com&lt;/tt&gt;
generates 500 outgoing messages, sends the first hundred or so through
Verizon.  Then Verizon cuts off my mail service.  The mailing list
detects 400 bounce messages, and unsubscribes 400 subscribers.  If any
mail comes in for another mailing list before Verizon lifts my ban,
&lt;i&gt;every&lt;/i&gt; outgoing message will bounce and &lt;i&gt;every&lt;/i&gt; subscriber
will be unsubscribed.&lt;/p&gt;&lt;p&gt;

One solution is to get a better mail provider.  Lorrie has an
Earthlink account that comes with outbound mail relay service.  But
they do the same thing for the same reason.  My Dreamhost subscription
comes with an outbound mail relay service.  But they do the same thing
for the same reason.  My &lt;tt&gt;Pobox.com&lt;/tt&gt; account comes with an
&lt;i&gt;unlimited&lt;/i&gt; outbound mail relay service.  But they require SASL
authentication.  If there's SASL patch for &lt;tt&gt;qmail&lt;/tt&gt;, I haven't been able
to find it.  I could implement it myself, I suppose, but I don't
wanna.&lt;/p&gt;&lt;p&gt;

So far there are at least five solutions that are on the &quot;eh, maybe,
if I have to&quot; list:&lt;/p&gt;&lt;p&gt;

&lt;/p&gt;&lt;ul&gt;
  &lt;li&gt;Get a non-suck ISP
  &lt;/li&gt;&lt;li&gt;Find a better mail relay service
  &lt;/li&gt;&lt;li&gt;Hack SASL into &lt;tt&gt;qmail&lt;/tt&gt; and send mail through &lt;tt&gt;Pobox.com&lt;/tt&gt;
  &lt;/li&gt;&lt;li&gt;Do some skanky thing with &lt;tt&gt;serialmail&lt;/tt&gt;
  &lt;/li&gt;&lt;li&gt;Get rid of &lt;tt&gt;qmail&lt;/tt&gt; in favor of postfix, which presumably supports SASL
&lt;/li&gt;&lt;/ul&gt;

(Yeah, I know the Postfix weenies in the audience are shaking their
heads sadly and wondering when the scales will fall from my eyes.
They show up at my door every Sunday morning in their starched white
shirts and their pictures of DJB with horns and a pointy tail...)&lt;p&gt;



It also occurred to me in the shower this morning that the old ISP might be
willing to sell me mail relaying and nothing else, for a small fee.
That might be worth pursuing.  It's gotta be easier than turning &lt;tt&gt;qmail-remote&lt;/tt&gt;
into a
SASL mail client.&lt;/p&gt;&lt;p&gt;




The &lt;tt&gt;serialmail&lt;/tt&gt; thing is worth a couple of sentences, because there's an
autoresponder on the &lt;tt&gt;qmail-users&lt;/tt&gt; mailing-list that replies with &quot;Use &lt;tt&gt;serialmail&lt;/tt&gt;.  This is discussed
in the archives.&quot; whenever someone says the word &quot;throttle&quot;.  The &lt;tt&gt;serialmail&lt;/tt&gt;
suite, also written by Daniel J. Bernstein, takes a
maildir-format directory and posts every message in it to some remote
server, one message at a time.  Say you want to run &lt;tt&gt;qmail&lt;/tt&gt; on your laptop.
Then you arrange to have &lt;tt&gt;qmail&lt;/tt&gt; deliver all its mail into a maildir, and
then when your laptop is connected to the network, you run &lt;tt&gt;serialmail&lt;/tt&gt;, and it
delivers the mail from the maildir to your mail relay host.  &lt;tt&gt;serialmail&lt;/tt&gt; is
good for some throttling problems.  You can run &lt;tt&gt;serialmail&lt;/tt&gt; under control of a
daemon that will cut off its network connection after it has written a
certain amount of data, for example.  But there seems to be no easy
way to do what I want with &lt;tt&gt;serialmail&lt;/tt&gt;, because it always wants to deliver
&lt;i&gt;all&lt;/i&gt; the messages from the maildir, and I want it to deliver
&lt;i&gt;one&lt;/i&gt; message.&lt;/p&gt;&lt;p&gt;

There have been some people on the &lt;tt&gt;qmail-users&lt;/tt&gt; mailing-list asking for something close to
what I want, and sometimes the answer was &quot;&lt;tt&gt;qmail&lt;/tt&gt; was designed to deliver
mail as quickly and efficiently as possible, so it won't do what you
want.&quot;  This is a variation of &quot;Our software doesn't do what you want,
so I'll tell you that you shouldn't want to do it.&quot;  That's another
rant for another day.  Anyway, I shouldn't badmouth &lt;tt&gt;qmail-users&lt;/tt&gt; mailing-list, because the
archives did get me what I wanted.  It's only a stopgap solution, and
it might turn out to be a big mistake, but so far it seems okay, and
so at last I am coming to the point of this article.&lt;/p&gt;&lt;p&gt;

I hacked &lt;tt&gt;qmail&lt;/tt&gt; to support outbound message rate throttling.  Following &lt;a href=&quot;http://www.gossamer-threads.com/lists/qmail/users/121426#121426&quot;&gt;a
suggestion of Richard Lyons&lt;/a&gt; from the &lt;tt&gt;qmail-users&lt;/tt&gt; mailing-list, it was much easier to do than I had
initially thought.&lt;/p&gt;&lt;p&gt;

Here's how it works.  Whenever &lt;tt&gt;qmail&lt;/tt&gt; wants to try to deliver a message to
a remote address, it runs a program called &lt;tt&gt;qmail-remote&lt;/tt&gt;.  &lt;tt&gt;qmail-remote&lt;/tt&gt; is responsible for
looking up the MX records for the host, contacting the right server,
conducting the SMTP conversation, and returning a status code back to
the main component.  Rather than hacking directly on &lt;tt&gt;qmail-remote&lt;/tt&gt;, I've
replaced it with a wrapper.  The real &lt;tt&gt;qmail-remote&lt;/tt&gt; is now in
&lt;tt&gt;qmail-remote-real&lt;/tt&gt;.  The &lt;tt&gt;qmail-remote&lt;/tt&gt; program is now written in Perl.
It maintains a log file recording the times at which the last few
messages were sent.  When it runs, it reads the log file, and a policy
file that says how quickly it is allowed to send messages.  If it is
okay to send another message, the Perl program appends the current
time to the log file and invokes the real &lt;tt&gt;qmail-remote&lt;/tt&gt;.  Otherwise, it sleeps
for a while and checks again.&lt;/p&gt;&lt;p&gt;

The program is not strictly correct.  It has some race conditions.
Suppose the policy limits &lt;tt&gt;qmail&lt;/tt&gt; to sending 8 messages per minute.  Suppose
7 messages have been sent in the last minute.  Then six instances of
&lt;tt&gt;qmail-remote&lt;/tt&gt; might all run at once, decide that it is OK to send a message, and send
one.  Then 13 messages have been sent in the last minute, which
exceeds the policy limit.  So far this has not been much of a
problem.  It's happened twice in the last few hours that the system
sent 9 messages in a minute instead of 8.  If it worries me too much,
I can tell &lt;tt&gt;qmail&lt;/tt&gt; to run only one &lt;tt&gt;qmail-remote&lt;/tt&gt; at a time, instead of 10.  On a normal
&lt;tt&gt;qmail&lt;/tt&gt; system, &lt;tt&gt;qmail&lt;/tt&gt; speeds up outbound delivery by running multiple &lt;tt&gt;qmail-remote&lt;/tt&gt;
processes concurrently.  On my crippled system, speeding up outbound
delivery is just what I'm trying to avoid.  Running at most one &lt;tt&gt;qmail-remote&lt;/tt&gt; at
a time will cure all race conditions.  If I were doing the project
over, I think I'd take out all the file locking and such, and just run
one &lt;tt&gt;qmail-remote&lt;/tt&gt;.   But I didn't think of it in time, and for now I think I'll
live with the race conditions and see what happens.&lt;/p&gt;&lt;p&gt;

So let's see?  What else is interesting about this program?  I made
at least one error, and almost made at least one more.&lt;/p&gt;&lt;p&gt;



The almost-error was this:  The original design for the program was
something like:&lt;/p&gt;&lt;p&gt;

&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;        do
  &lt;ul&gt;
  &lt;li&gt;        lock the history file, read it, and unlock it
  &lt;/li&gt;&lt;/ul&gt;
        until it's time to send a message

&lt;/li&gt;&lt;li&gt;        lock the history file, update it, and unlock it

&lt;/li&gt;&lt;li&gt;        send the message
&lt;/li&gt;&lt;/ol&gt;

This is a classic mistake in writing programs that run concurrently
and update a file.  The problem is that process &lt;i&gt;A&lt;/i&gt;
update the file after  process &lt;i&gt;B&lt;/i&gt; reads but before &lt;i&gt;B&lt;/i&gt;
updates it.  Then &lt;i&gt;B&lt;/i&gt;'s update will destroy &lt;i&gt;A&lt;/i&gt;'s.&lt;p&gt;

One way to fix this is to have the processes append to the history
file, but never remove anything from it.  That is clearly not a
sustainable strategy.    Someone must remove expired entries from the
history file.&lt;/p&gt;&lt;p&gt;

Another fix is to have the read and the update in the same critical
section:&lt;/p&gt;&lt;p&gt;

&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;        lock the history file
&lt;/li&gt;&lt;li&gt;        do
&lt;ul&gt;&lt;li&gt;          read the history file
&lt;/li&gt;&lt;/ul&gt;        until it's time to send a message

&lt;/li&gt;&lt;li&gt;        update the history file and unlock it
&lt;/li&gt;&lt;li&gt;        send the message
&lt;/li&gt;&lt;/ol&gt;

But that loop could take a long time, during which no other &lt;tt&gt;qmail-remote&lt;/tt&gt; process
can make progress.  I had decided that I wanted to try to retain the
concurrency, and so I wasn't willing to accept this.&lt;p&gt;

Cleaning the history file could be done by a separate process that
periodically locks the file and rewrites it.  But instead, I have the &lt;tt&gt;qmail-remote&lt;/tt&gt;
processes to it on the fly:&lt;/p&gt;&lt;p&gt;

&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;        do
&lt;ul&gt;&lt;li&gt;          lock the history file, read it, and unlock it
&lt;/li&gt;&lt;/ul&gt;        until it's time to send a message

&lt;/li&gt;&lt;li&gt;        lock the history file, read it, update it, and unlock it

&lt;/li&gt;&lt;li&gt;        send the message
&lt;/li&gt;&lt;/ol&gt;

I'm happy that I didn't actually make this mistake.  I only thought
about it.&lt;p&gt;

Here's a mistake that I &lt;i&gt;did&lt;/i&gt; make.    This is the block of code
that sleeps until it's time to send the message:&lt;/p&gt;&lt;p&gt;

&lt;/p&gt;&lt;pre&gt;          while (@last &amp;gt;= $msgs) {
            my $oldest = $last[0];
            my $age = time() - $oldest;
            my $zzz = $time - $age + int(rand(3));
            $zzz = 1 if $zzz  1;
       #    Log(&quot;Sleeping for $zzz secs&quot;);
            sleep $zzz;
            shift @last while $last[0] &amp;lt; time() - $time;
            load_policy();
          }
&lt;/pre&gt;

The throttling
policy is expressed by two numbers, &lt;tt&gt;$msgs&lt;/tt&gt; and &lt;tt&gt;$time&lt;/tt&gt;,
and the program tries to send no more than &lt;tt&gt;$msgs&lt;/tt&gt; messages per
&lt;tt&gt;$time&lt;/tt&gt; seconds.  The &lt;tt&gt;@last&lt;/tt&gt; array contains a list of
Unix epoch timestamps of the times at which the messages of the last
&lt;tt&gt;$time&lt;/tt&gt; seconds were sent.
So the loop condition checks to see if fewer than &lt;tt&gt;$msgs&lt;/tt&gt;
messages were sent in the last &lt;tt&gt;$time&lt;/tt&gt; seconds.  If not, the
program continues immediately, possibly posting its message.  (It
rereads the history file first, in case some other messages have been
posted while it was asleep.)
&lt;p&gt;

Otherwise the program will sleep for a while.  The first three lines
in the loop calculate how long to sleep for.  It sleeps until the time
the oldest message in the history will fall off the queue, possibly
plus a second or two.  Then the crucial line:&lt;/p&gt;&lt;p&gt;

&lt;/p&gt;&lt;pre&gt;            shift @last while $last[0] &amp;lt; time() - $time;
&lt;/pre&gt;

which discards the expired items from the history.  Finally, the call
to &lt;tt&gt;load_policy()&lt;/tt&gt; checks to see if the policy has changed, and
the loop repeats if necessary.&lt;p&gt;

The bug is in this crucial line.  if &lt;tt&gt;@last&lt;/tt&gt; becomes  empty,
this line turns into an infinite busy-loop.  It should have been:&lt;/p&gt;&lt;p&gt;

&lt;/p&gt;&lt;pre&gt;            shift @last while @last &amp;amp;&amp;amp; $last[0] &amp;lt; time() - $time;
&lt;/pre&gt;

Whoops.  I noticed this this morning when my system's load was around
12, and eight or nine &lt;tt&gt;qmail-remote&lt;/tt&gt; processes were collectively eating 100% of
the CPU.  I would have noticed sooner, but outbound deliveries hadn't
come to a complete halt yet.&lt;p&gt;

Incidentally, there's another potential problem here arising from the
concurrency.  A process will complete the sleep loop in at most
&lt;tt&gt;$time&lt;/tt&gt;+3 seconds. But then it will go back and reread the history
file, and it may have to repeat the loop.  This could go on
indefinitely if the system is busy.  I can't think of a good way to
fix this without getting rid of the concurrent &lt;tt&gt;qmail-remote&lt;/tt&gt; processes.&lt;/p&gt;&lt;p&gt;

&lt;a href=&quot;http://pic.blog.plover.com/Unix/qmail-throttle/qmail-remote-throttle&quot;&gt;Here's the code&lt;/a&gt;.  I
hereby place it in the public domain.  It was written between 1 AM and
3 AM last night, so don't expect too much.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img width=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/PlanetPerl/~4/246872631&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Thu, 06 Mar 2008 21:43:49 +0000</pubDate>
</item>
<item>
	<title>Surfin Safari: The Acid 3 Test</title>
	<guid isPermaLink="true">http://webkit.org/blog/158/the-acid-3-test/</guid>
	<link>http://webkit.org/blog/158/the-acid-3-test/</link>
	<description>&lt;p&gt;The &lt;a href=&quot;http://acid3.acidtests.org/&quot;&gt;Acid 3 Test&lt;/a&gt; has been &lt;a href=&quot;http://www.webstandards.org/press/releases/20080303/&quot;&gt;officially released&lt;/a&gt;.  The test has been in development for some time, with much of that development happening in the open.&lt;/p&gt;
&lt;p&gt;The Acid 3 test is far more complex than the Acid 2 test.  It covers a wider range of standards and consists of many more individual tests.  Browsers have to render a sequence of boxes that display dynamically in a stairstep pattern.  For every cluster of tests passed successfully, the boxes will fill in with a color, which signifies that all of the tests covered by that block have passed.&lt;/p&gt;
&lt;p&gt;If you run Acid 3 on the shipping versions of current browsers (Firefox 2, Safari 3, Opera 9, IE7), you’ll see that they all score quite low.  For example Safari 3 scores a 39/100.  This percentage score is a bit misleading however.  The situation with all four browser engines really isn’t that bad.&lt;/p&gt;
&lt;p&gt;You can think of the Acid 3 test as consisting of 100 individual test suites.  In order for a browser engine to claim one of these precious 100 points, it has to pass a whole battery of tests around a specific standard.  In other words it’s like the browser is being asked to take 100 separate exams and score an A+ on each test in order to get any credit at all.  &lt;/p&gt;
&lt;p&gt;The reality is that all of the browsers are doing much better than their scores would have you believe, since the engines are often passing a majority of the subtests and experiencing minor failures that cost them the point for that section.&lt;/p&gt;
&lt;p&gt;Shipping Safari scores a 39/100 with some significant rendering errors.  We’ve been working hard since the test surfaced and are pleased to report that we’ve entered the “A” range on the test with a score of 90/100.  &lt;/p&gt;
&lt;p&gt;So what did we fix to gain so many points?&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://bugs.webkit.org/showdependencytree.cgi?id=17064&quot;&gt;Bug 17064&lt;/a&gt; has all the details, but here are the highlights.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Support for CSS3 Selectors&lt;/b&gt;&lt;br /&gt;
We added support for all of the remaining CSS3 selectors.  These include selectors like nth-child, nth-of-type, last-child, last-of-type, etc.  These selectors were already implemented in KHTML, and the KHTML developers had even kindly provided patches for us in the relevant WebKit bugs.  Therefore it was a simple matter of taking those patches, updating them to the WebKit codebase, and then merging them in.  A big thanks to the KHTML developers for their hard work in this area.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Parsing Bugs&lt;/b&gt;&lt;br /&gt;
WebKit had a number of minor parsing bugs that Acid 3 targeted.  The boxes did not render properly because of an obscure parsing bug that the test exploited (thanks, Hixie).  In addition a number of other parsing bugs kept us from completely passing individual tests.  We have updated our parser to be much closer to the HTML5-specified parsing rules.&lt;/p&gt;
&lt;p&gt;WebKit has also never parsed DOCTYPEs before.  I re-wrote WebKit’s DOCTYPE parsing to match the HTML5 specification, and so now if you put a DOCTYPE into your page it will be present in the DOM.  In addition many bugs centered around proper mode resolution (quirks vs. strict) have now been fixed.  You can document.write a DOCTYPE for example in a new document and have the correct mode be selected.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;SVG&lt;/b&gt;&lt;br /&gt;
Acid3 has many SVG tests.  We’ve been hard at work making these tests pass.  In particular SVG font support and other aspects of the SVG DOM have been tested.  Many of the remaining 10 points are SVG failures.  We’ll be working on SVG animation in order to pass the last few SVG tests.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;DOM&lt;/b&gt;&lt;br /&gt;
Acid3 tests a lot of DOM level 2 features, like traversal and ranges.  It particularly focuses on the “liveness” of objects, e.g., making sure everything updates properly when you dynamically change a document by adding/removing nodes.  Most of our failures in this area had to do with not behaving properly in the presence of these dynamic changes (even though we tended to pass the more static tests).&lt;/p&gt;
&lt;p&gt;Now that we’re closing in on 100%, we’ll be blogging about each fix as it happens, so that you can follow our progress from the blog.&lt;/p&gt;</description>
	<pubDate>Thu, 06 Mar 2008 20:29:55 +0000</pubDate>
</item>
<item>
	<title>Aristotle Pagaltzis: No credit where no credit is due</title>
	<guid isPermaLink="false">urn:uuid:1a8dee3a-eb06-11dc-a302-b36c00dd6d4c</guid>
	<link>http://plasmasturm.org/log/496/</link>
	<description>&lt;p&gt;&lt;cite&gt;&lt;a href=&quot;http://daringfireball.net/linked/2008/march#wed-05-z&quot; title=&quot;Zeldman on Microsoft’s IE8 Version Targeting Reversal&quot;&gt;John Gruber&lt;/a&gt;&lt;/cite&gt;:&lt;/p&gt;
    &lt;blockquote cite=&quot;http://daringfireball.net/linked/2008/march#wed-05-z&quot;&gt;&lt;p&gt;I do think the &lt;abbr title=&quot;Internet Explorer&quot;&gt;IE&lt;/abbr&gt; team deserves credit for having floating the idea for opt-in version targeting rather than just going ahead and implementing it.&lt;/p&gt;&lt;/blockquote&gt;
    &lt;p&gt;Err, “floated the idea?” I thought what I read was an announcement of fait accompli. At no time did it strike me as though Microsoft left the issue open-ended. That they subsequently revoked their proclaimed decision came out of left field; would this have been the case if what they first did was in fact merely “floating the idea?”&lt;/p&gt;
    &lt;p&gt;I’m glad that someone inside Microsoft apparently somehow managed to overrule someone else (whoever the people involved are), but I can find no way to interpret Microsoft’s initial course of action as commendable.&lt;/p&gt;
    &lt;p&gt;Furthermore, &lt;a href=&quot;http://meyerweb.com/eric/thoughts/2008/03/04/principles-and-legality/&quot; title=&quot;Eric Meyer: Principles and Legality&quot;&gt;the question Eric Meyer asked&lt;/a&gt; is still open: even though Microsoft reneged on the most objectionable part of the announcement, the fact that &lt;abbr title=&quot;Internet Explorer&quot;&gt;IE&lt;/abbr&gt; 8 will have three rendering modes, including a frozen-in-time one with all its implications for competitors, still stands.&lt;/p&gt;</description>
	<pubDate>Wed, 05 Mar 2008 22:47:16 +0000</pubDate>
</item>
<item>
	<title>Linux Weekly News: NDISwrapper dodges another bullet</title>
	<guid isPermaLink="true">http://lwn.net/Articles/271762/</guid>
	<link>http://lwn.net/Articles/271762/</link>
	<description>&lt;a href=&quot;http://lwn.net/Articles/271762/&quot;&gt;http://lwn.net/Articles/271762/&lt;/a&gt;</description>
	<pubDate>Wed, 05 Mar 2008 22:00:25 +0000</pubDate>
</item>
<item>
	<title>Adriano Ferreira: Abusing &quot;Memoize&quot;</title>
	<guid isPermaLink="true">http://use.perl.org/~ferreira/journal/35842?from=rss</guid>
	<link>http://use.perl.org/~ferreira/journal/35842?from=rss</link>
	<description>&lt;p&gt;
A few days ago, I was writing a code (namely the &lt;a href=&quot;http://search.cpan.org/dist/Path-Classy&quot;&gt;Path-Classy&lt;/a&gt; dist) and stared at the code that produced the file size in raw bytes or &quot;humanized&quot; (28300 or 28K).
&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;blockquote&gt; &lt;div&gt;&lt;tt&gt;sub _format_size {&lt;br /&gt;  my ($sz, $opt) = @_;&lt;br /&gt; &lt;br /&gt;  my $format = $opt-&amp;gt;{format};&lt;br /&gt;  if ( $format eq 'h' ) {&lt;br /&gt;    require Numbers::Bytes::Human;&lt;br /&gt;    return Number::Bytes::Human-&amp;gt;new-&amp;gt;format( $sz );&lt;br /&gt;  }&lt;br /&gt;  else { # raw bytes&lt;br /&gt;    return $sz;&lt;br /&gt;  }&lt;br /&gt;}&lt;/tt&gt;&lt;/div&gt; &lt;/blockquote&gt;  &lt;p&gt;
Of course, loading &lt;code&gt;Number::Bytes::Human&lt;/code&gt; and creating a instance every time &lt;code&gt;$f-&amp;gt;size({ format =&amp;gt; 'h' })&lt;/code&gt; was invoked seemed overkill. But saving the &lt;code&gt;N::B::H&lt;/code&gt; into a class/instance variable seemed overkill too: it has nothing to do with &lt;code&gt;Path::Classy&lt;/code&gt; (which are &lt;code&gt; &lt;a href=&quot;http://search.cpan.org/perldoc?Path::Class&quot;&gt;Path::Class&lt;/a&gt; &lt;/code&gt;) objects but for that instant relationship to format a file property, size.
&lt;/p&gt;
&lt;p&gt;
Hey, that's a chance to use &lt;a href=&quot;http://search.cpan.org/perldoc?Memoize&quot;&gt;memoization&lt;/a&gt;, splitting the formatter creation into a function and then memoizing it (so that we don't need to create a [reusable] object with the same capabilities over and over), we come to this code.
&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;blockquote&gt; &lt;div&gt;&lt;tt&gt;use Memoize;&lt;br /&gt; &lt;br /&gt;sub _size_formatter {&lt;br /&gt;  require Number::Bytes::Human;&lt;br /&gt;  return Number::Bytes::Human-&amp;gt;new;&lt;br /&gt;}&lt;br /&gt;memoize('_size_formatter');&lt;br /&gt; &lt;br /&gt;sub _format_size {&lt;br /&gt;  my ($sz, $opt) = @_;&lt;br /&gt; &lt;br /&gt;  my $format = $opt-&amp;gt;{format};&lt;br /&gt;  if ( $format eq 'h' ) {&lt;br /&gt;    return _size_formatter-&amp;gt;format( $sz );&lt;br /&gt;  ...&lt;/tt&gt;&lt;/div&gt; &lt;/blockquote&gt;  &lt;p&gt;
That looked elegant to me. To make it even more tight (and to require yet another CPAN module ;-) ), using &lt;code&gt; &lt;a href=&quot;http://search.cpan.org/perldoc?Attribute::Memoize&quot;&gt;Attribute::Memoize&lt;/a&gt; &lt;/code&gt; seemed right. It avoids the need to repeat the function name in the &lt;code&gt;memoize&lt;/code&gt; call and it anticipated the wrapping up of the sub to BEGIN time (a free bonus of &lt;code&gt; &lt;a href=&quot;http://search.cpan.org/perldoc?Attribute::Handlers&quot;&gt;Attribute::Handlers&lt;/a&gt; &lt;/code&gt; in the backstage).
&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;blockquote&gt; &lt;div&gt;&lt;tt&gt;use Attribute::Memoize;&lt;br /&gt; &lt;br /&gt;sub _size_formatter :Memoize {&lt;br /&gt;  require Number::Bytes::Human;&lt;br /&gt;  return Number::Bytes::Human-&amp;gt;new;&lt;br /&gt;}&lt;/tt&gt;&lt;/div&gt; &lt;/blockquote&gt;  &lt;p&gt;
That's it! Efficient code, localized behavior, no need for extra variables. Will people understand that for maintenance? I hope so.
&lt;/p&gt;</description>
	<pubDate>Wed, 05 Mar 2008 21:58:16 +0000</pubDate>
</item>
<item>
	<title>Adam Kennedy: Win32::File::Object - Rounding out the Win32 &quot;experience&quot;</title>
	<guid isPermaLink="true">http://use.perl.org/~Alias/journal/35841?from=rss</guid>
	<link>http://use.perl.org/~Alias/journal/35841?from=rss</link>
	<description>I've had pretty much all the basic modules I need for a while now, which has put a damper on my release rate. No bad thing, since when you are looking after 100+ you tend to end up doing a lot more maintenance and feature additions than new coding.&lt;br /&gt;&lt;br /&gt;I'm by and large completely happy coding Perl on Unix now.&lt;br /&gt;&lt;br /&gt;Unfortunately, as I start to do more coding on Windows (in this case, funky Perl::Dist internals magic) I find myself back in the past a bit.&lt;br /&gt;&lt;br /&gt;Win32::File, for example, is a horrible piece of API ugliness. It's all CamelCase and return-by-param and bit fields. Ugh...&lt;br /&gt;&lt;br /&gt;So here I am again writing simple usability wrappers about code that does the right thing but makes you feel dirty while doing it.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://search.cpan.org/perldoc?Win32::File::Object&quot;&gt;Win32::File::Object&lt;/a&gt; is a wrapper around &lt;a href=&quot;http://search.cpan.org/perldoc?Win32::File&quot;&gt;Win32::File&lt;/a&gt;, which is basically only a thin Perl/XS wrapper around the raw C API.&lt;br /&gt;&lt;br /&gt;So now if you have some code that needs to remove a readonly flag, you can just go...&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Win32::File::Object-&amp;gt;new('file.txt', 'autowrite')-&amp;gt;readonly(0);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The only downside of this module is that my release code can't deal with Windows code, so I'm stuck with an absolutely tortuous release process.&lt;br /&gt;&lt;br /&gt;And given the state of Win32:: I've got a feeling this won't be the first Win32:: module I'm going to be forced to write to feel like a human being when I'm coding on Win32.</description>
	<pubDate>Wed, 05 Mar 2008 21:57:08 +0000</pubDate>
</item>
<item>
	<title>Perl Buzz Mechanix: The worst way to shorten names</title>
	<guid isPermaLink="true">http://perlbuzz.com/mechanix/2008/03/the-worst-way-to-shorten-names.html</guid>
	<link>http://perlbuzz.com/mechanix/2008/03/the-worst-way-to-shorten-names.html</link>
	<description>&lt;p&gt;
Dropping vowels to shorten names is a terrible practice.  Quick, someone give me an idea what &lt;tt&gt;$hdnchgdsp&lt;/tt&gt; means, an Actual Variable from some Bad Code I'm working on today.
&lt;/p&gt;
&lt;p&gt;
It's not just variables names, either.  Filenames often need to be shortened, but dropping vowels is not the way to do it.  You're left with unpronounceable names that are annoying to type.
&lt;/p&gt;
&lt;p&gt;
The key to effective abbreviation is not removal of letters from the middle of the words, but from the end.  Sometimes, it doesn't make sense to shorten a word at all, like &quot;post&quot;. If you have a file that is supposed to &quot;post audit transactions&quot;, call it &quot;post-aud-trans&quot; or &quot;post-aud-trx&quot;, not &quot;pst_adt_trns&quot;.
&lt;/p&gt;</description>
	<pubDate>Wed, 05 Mar 2008 21:56:24 +0000</pubDate>
</item>
<item>
	<title>Planet Perl: hiveminder integration with jott</title>
	<guid isPermaLink="false">http://use.perl.org/~rjbs/journal/35844?from=rss</guid>
	<link>http://feeds.feedburner.com/~r/PlanetPerl/~3/246361480/35844</link>
	<description>&lt;p&gt; &lt;a href=&quot;http://jott.com/&quot;&gt;Jott&lt;/a&gt; is a really neat service that lets you Do Stuff via
your cell phone.  The default Stuff you can do is &quot;send email and SMS&quot; and
&quot;setup a reminder.&quot;  There's also a very &lt;a href=&quot;http://jott.com/jotters/index.php/developers&quot;&gt;simple
API&lt;/a&gt; for writing your own
applications (called Jott Links).  It works something like this:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;you call the toll-free Jott number&lt;/li&gt; &lt;li&gt;you speak the name of the Jott Link you've set up&lt;/li&gt; &lt;li&gt;you speak a message&lt;/li&gt; &lt;li&gt;Jott issues a web request with data including your id and the message&lt;/li&gt; &lt;li&gt;the service does something and replies to Jott&lt;/li&gt; &lt;li&gt;Jott sends you a reply&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;There are Jott Links for Twitter and other things that I don't care about.
There isn't one for Hiveminder.  Zak Greant made a &lt;a href=&quot;http://jott.com/jotters/index.php/developers&quot;&gt;video demonstrating
Hiveminder and Jott together&lt;/a&gt;,
which has Jott send mail to the task-by-email interface of Hiveminder.  This
isn't bad at all, but it puts all kinds of crap into your task, because Jott
sends pretty chatty email.&lt;/p&gt; &lt;p&gt;I wrote a Jott Link service in about ten minutes (much of which was test time,
waiting for Jott to transcribe my messages).  It uses CGI.pm and
Net::Hiveminder to create a very concise task.  I need to add more features to
it, but I'm in no rush.  I am secretly hoping that the guys at Best Practical
will write a much better version, complete with a user setup link, so that
everyone can use their link, rather than running his own, each on a different
server.&lt;/p&gt; &lt;p&gt;Here's my code:&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;blockquote&gt; &lt;div&gt;&lt;tt&gt;#!/usr/bin/perl&lt;br /&gt;use strict;&lt;br /&gt;use warnings;&lt;br /&gt;BEGIN { $ENV{HOME} = '/home/rjbs' }&lt;br /&gt;use CGI qw(:standard);&lt;br /&gt;use Net::Hiveminder;&lt;br /&gt; &lt;br /&gt;my ($pw, $key) = `cat /home/rjbs/.hiveminder`;&lt;br /&gt;chomp($pw, $key);&lt;br /&gt; &lt;br /&gt;my $hm = Net::Hiveminder-&amp;gt;new(&lt;br /&gt;  email    =&amp;gt; 'user@example.com',&lt;br /&gt;  password =&amp;gt; $pw,&lt;br /&gt;);&lt;br /&gt; &lt;br /&gt;my $user_key = url_param('userKey');&lt;br /&gt;my $message  = url_param('message');&lt;br /&gt; &lt;br /&gt;die unless lc $user_key eq lc $key;&lt;br /&gt;$hm-&amp;gt;create_task(&quot;$message\n via Jott.com&quot;);&lt;br /&gt; &lt;br /&gt;print &quot;Content-type: text/plain\n\nCreated.&quot;;&lt;/tt&gt;&lt;/div&gt; &lt;/blockquote&gt;  &lt;p&gt;Obviously, this is a horrible hack.  Still, it means I can open my phone, hold
down 5, and dictate todo items right into Hiveminder.&lt;/p&gt; &lt;p&gt;There are a lot of little problems with Jott, some of which strike me as
significant usability issues, but they're all very fixable, and I look forward
to seeing them fixed.  I'll write more about them later.  Here's the one that
irked me the most last night:  Jott says that to write a Jott Link, you should
expect an HTTP POST.  You do, in fact, get a POST, but all of the data is in
the URL query string, not in the content of the request.  Huh?&lt;/p&gt; &lt;p&gt;Well, whatever.  All their problems are fixable, and the service looks like it
will be great.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img width=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/PlanetPerl/~4/246361480&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 05 Mar 2008 21:42:02 +0000</pubDate>
</item>
<item>
	<title>Planet Perl: Test::Aggregate 0.07</title>
	<guid isPermaLink="false">http://use.perl.org/~Ovid/journal/35840?from=rss</guid>
	<link>http://feeds.feedburner.com/~r/PlanetPerl/~3/246096379/35840</link>
	<description>&lt;p&gt;I've just uploaded the new &lt;a href=&quot;http://search.cpan.org/dist/Test-Aggregate/&quot;&gt;Test::Aggregate&lt;/a&gt;.  The only change is that it sets the &lt;tt&gt;$ENV{TEST_AGGREGATE}&lt;/tt&gt; variable to true (for VMS users:  and explicitly deletes it in an END block).  This allows you to do this:&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;blockquote&gt; &lt;div&gt;&lt;tt&gt;die &quot;Cannot use $0 in aggregated tests&quot;&lt;br /&gt;  if $ENV{TEST_AGGREGATE};&lt;/tt&gt;&lt;/div&gt; &lt;/blockquote&gt;  &lt;p&gt;Blew a chunk of time yesterday trying to debug why the aggregated tests were failing.  Now I can add that to some code to ensure that I'll know immediately next time.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img width=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/PlanetPerl/~4/246096379&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 05 Mar 2008 21:42:02 +0000</pubDate>
</item>
<item>
	<title>Planet Perl: Fun with IMAP</title>
	<guid isPermaLink="false">http://use.perl.org/~Matts/journal/35839?from=rss</guid>
	<link>http://feeds.feedburner.com/~r/PlanetPerl/~3/245891014/35839</link>
	<description>So I've been playing with IMAP lately, processing a folder of emails to process. It has been kind of interesting (to say the least).&lt;br /&gt;&lt;br /&gt;Those of you who follow my CPAN uploads know I created Net::IMAP::Simple::NB, which is a subclass of Net::IMAP::Simple but using non-blocking I/O. The idea for that originally was to create a webmail system for AxKit2, but it was also fun learning how IMAP works.&lt;br /&gt;&lt;br /&gt;There are some really interesting corner issues in IMAP that surprise me. For example an IMAP server is expected to be able to parse MIME messages, and be able to provide different components of the body as requested. This seems odd to me as frankly this should be a client task - surely this slows IMAP servers down? Also when you ask for the body structure it maps it in a very odd manner - though perhaps its useful for clients - there seems to be a lot of structure data there that isn't useful. There are some other odd choices too, like dates are provided as &quot;DD-MON-YYYY&quot; rather than the more ISO compliant &quot;YYYY-MM-DD&quot; format, and email addresses are provided pre-parsed, which means if your IMAP server gets it wrong you're screwed (though I guess that isn't too common).&lt;br /&gt;&lt;br /&gt;On the other hand there are some nice things too, like IMAP provides most of its data in an S-expressions-like format, which is quite easy to parse in perl. The RFC is also not as horrible as I had once thought, so decoding various things is reasonably easy. On the other hand, it seems Net::IMAP::Simple is a bit too simplistic, in that it doesn't parse the output formats properly, and honestly doesn't have enough methods in it (I've added 8 methods just for my one simple app).&lt;br /&gt;&lt;br /&gt;I'll have to consider contacting the author about patches. Though I'm unsure right now if I want to have too much to do with it in the long term.&lt;img width=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/PlanetPerl/~4/245891014&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 05 Mar 2008 21:42:02 +0000</pubDate>
</item>
<item>
	<title>Planet Perl: Google’s CAPTCHA - not entirely broken after all?</title>
	<guid isPermaLink="false">http://taint.org/2008/03/05/122732a.html</guid>
	<link>http://feeds.feedburner.com/~r/PlanetPerl/~3/246089744/122732a.html</link>
	<description>&lt;p&gt;A couple of weeks ago, &lt;a href=&quot;http://www.websense.com/securitylabs/blog/blog.php?BlogID=174&quot;&gt;WebSense posted this article&lt;/a&gt; with details of a spammer’s attack on Google’s &lt;a href=&quot;http://en.wikipedia.org/wiki/CAPTCHA&quot;&gt;CAPTCHA&lt;/a&gt; puzzle, using web services running on two centralized servers:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;[…] It is observed that two separate hosts active on same domain are contacted during the entire process. These two hosts work collaboratively during the CAPTCHA break process. […]&lt;/p&gt;
  
  &lt;p&gt;Why [use 2 hosts]? Because of variations included in the Google CAPTCHA image, chances are that host 1 may fail breaking the code. Hence, the spammers have a backup or second CAPTCHA-learning host 2 that tries to learn and break the CAPTCHA code. However, it is possible that spammers also use these two hosts to check the efficiency and accuracy of both hosts involved in breaking one CAPTCHA code at a time, with the ultimate goal of having a successful CAPTCHA breaking process.&lt;/p&gt;
  
  &lt;p&gt;To be specific, host 1 has a similar concept that was used to attack Live mail CAPTCHA. This involved extracting an image from a victim’s machine in the form of a bitmap file, bearing BM.. file headers and breaking the code. Host 2 uses an entirely different concept wherein the CAPTCHA image is broken into segments and then sent as a portable image / graphic file  bearing  PV..X file headers as requests. […]&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;While it doesn’t say as such, &lt;a href=&quot;http://www.codinghorror.com/blog/archives/001067.html?r=9602&quot;&gt;some have read the post to mean that Google’s CAPTCHA has been solved algorithmically&lt;/a&gt;.  I’m pretty sure this isn’t the case.  Here’s why.&lt;/p&gt;

&lt;p&gt;Firstly, the FAQ text that appears on “host 1″ (thanks Alex for the improved translation!):&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://taint.org/x/2008/a_012.jpg&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;b&gt;FAQ&lt;/b&gt;&lt;/p&gt;
  
  &lt;p&gt;If you cannot recognize the image or if it doesn’t load (a black or empty image gets displayed), just press Enter.&lt;/p&gt;
  
  &lt;p&gt;Whatever happens, do not enter random characters!!!&lt;/p&gt;
  
  &lt;p&gt;If there is a delay in loading images, exit from your account, refresh the page, and log in again.&lt;/p&gt;
  
  &lt;p&gt;The system was tested in the following browsers: Internet Explorer Mozilla Firefox&lt;/p&gt;
  
  &lt;p&gt;Before each payment, recognized images are checked by the admin. We pay only for correctly recognized images!!!&lt;/p&gt;
  
  &lt;p&gt;Payment is made once per 24 hours. The minimum payment amount is $3. To request payment, send your request to the admin by ICQ. If the admin is free, your request will be processed within 10-15 minutes, and if he is busy, it will be processed as soon as possible.&lt;/p&gt;
  
  &lt;p&gt;If you have any problems (questions), ICQ the admin.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That reads to me a lot like instructions to human &lt;a href=&quot;http://ha.ckers.org/blog/20070427/solving-captchas-for-cash/&quot;&gt;“CAPTCHA farmers”&lt;/a&gt;, working as a distributed team via a web interface.&lt;/p&gt;

&lt;p&gt;Secondly, take a look at the timestamps in this packet trace:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://taint.org/x/2008/a_002.jpg&quot; alt=&quot;img2&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The interesting point is that there’s a 40-second gap between the invocation on “Captcha breaking host 1″ and the invocation on “Captcha breaking host 2″.  There is then a short gap of 5 seconds before the invocations occur on the Gmail websites.&lt;/p&gt;

&lt;p&gt;Here’s my theory: “host 1″ is a web service gateway, proxying for a farm of human CAPTCHA solvers. “host 2″, however, is an algorithm-driven server, with no humans involved.  A human may take 40 seconds to solve a CAPTCHA, but pure code should be a lot speedier.&lt;/p&gt;

&lt;p&gt;Interesting to note that they’re running both systems in parallel, on the same data.  By doing this, the attackers can&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;collect training data for a machine-learning algorithm (this is implied by the ‘do not enter random characters!’ warning from the FAQ — they don’t want useless training data)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;collect test cases for test-driven development of improvements to the algorithm&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;measure success/failure rates of their algorithms, “live”, as the attack progresses&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Worth noting this, too:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Observation*: On average, only 1 in every 5 CAPTCHA breaking requests are successfully including both algorithms used by the bot, approximating a success rate of 20%. The second algorithm (segmentation) has very poor performance that sometimes totally fails and returns garbage or incorrect answers.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So their algorithm is unreliable, and hasn’t yet caught up with the human farmers.  Good news for Google — and for &lt;a href=&quot;http://ha.ckers.org/blog/20070427/solving-captchas-for-cash/&quot;&gt;the CAPTCHA farmers of Romania&lt;/a&gt; ;)&lt;/p&gt;&lt;img width=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/PlanetPerl/~4/246089744&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 05 Mar 2008 21:42:02 +0000</pubDate>
</item>
<item>
	<title>Planet Perl: Perl Foundation needs new members</title>
	<guid isPermaLink="false">tag:perlbuzz.com,2008://1.359</guid>
	<link>http://feeds.feedburner.com/~r/PlanetPerl/~3/246188003/perl-foundation-needs-new-members.html</link>
	<description>&lt;p&gt;
The Perl Foundation needs new blood.  &lt;a href=&quot;http://news.perlfoundation.org/2008/03/tpf_needs_you_nominations_open.html&quot;&gt;Jim Brandt writes&lt;/a&gt;:
&lt;/p&gt;&lt;blockquote&gt;

           &lt;p&gt;Have you ever wanted to get involved in The Perl Foundation, but didn't know how? Well, now's your chance. I'm pleased to announce open self-nominations for the following &lt;span class=&quot;caps&quot;&gt;TPF &lt;/span&gt;roles:&lt;/p&gt;


&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.perlfoundation.org/steering_committee_chair&quot;&gt;Steering Committee Chair&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.perlfoundation.org/conferences_committee_roles&quot;&gt;Conferences Committee Chair&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.perlfoundation.org/public_relations&quot;&gt;Public Relations&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;You can follow the links above to read descriptions of each of the positions. If you think you're a good fit for one or more of them, send me an email at cbrandt at perlfoundation dot org. I'll then invite you to a dedicated wiki we have set up just for the election.&lt;/p&gt;

&lt;p&gt;Once you join the wiki, you'll set up a page to post all of your experience and answer the questions provided in each section above. The wiki is private, but you'll be able to see the other candidate pages, and they'll see yours.&lt;/p&gt;

&lt;p&gt;The deadline to get all of your information in is midnight next Tuesday, March 11. Our committees elect their members, so the Conferences Committee will be voting on the CC chair and the Steering Committee will vote on the chair and PR positions. After we have a chance to look over everyone's information, we vote and select our newest members.&lt;/p&gt;

&lt;p&gt;You only have a week, so don't wait too long. I look forward to hearing from you.&lt;/p&gt;

&lt;/blockquote&gt;
&lt;p&gt;
&lt;a href=&quot;http://martian.org/karen/2008/03/05/problems-with-managing-volunteers/&quot;&gt;Karen Pauley is stepping up to run for Steering Committee chair&lt;/a&gt;, so how about you?  Maybe that's a spot you'd like to work on, or maybe public relations is more up your alley.  This is your chance to help lead TPF lead Perl and Perl development.
&lt;/p&gt;
&lt;p&gt;
Astute followers of TPF will note that the PR spot is open, a spot that I once held.  Yes, I am no longer doing PR for TPF.  I've done that job for a while, and now I'm moving on to do other things, not least of which is this little news called &lt;a href=&quot;http://perlbuzz.com/&quot;&gt;perlbuzz.com&lt;/a&gt;.
&lt;/p&gt;
        
    &lt;img width=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/PerlBuzz/~4/246185303&quot; height=&quot;1&quot; /&gt;&lt;p&gt;&lt;/p&gt;&lt;img width=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/PlanetPerl/~4/246188003&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 05 Mar 2008 21:42:02 +0000</pubDate>
</item>
<item>
	<title>Annotated CPAN: Net::HTTPServer</title>
	<guid isPermaLink="true">http://annocpan.org/~REATMON/Net-HTTPServer-1.1.1/lib/Net/HTTPServer.pm#note_1830</guid>
	<link>http://annocpan.org/~REATMON/Net-HTTPServer-1.1.1/lib/Net/HTTPServer.pm#note_1830</link>
	<description>&lt;p&gt;Net::HTTPServer also enables client side certificate checking by default without any built in interface to change this.&lt;/p&gt;
&lt;p&gt;I've added an option to new() to set this on the fly, but as a workaround see line 825 of HTTPServer.pm and change SSL_verify_mode to desired setting:&lt;/p&gt;
&lt;p&gt;0x00 - no verification
0x01 - verify peer certificate
0x02 - fail verification if no peer certificate exists; ignored for clients
0x04 - verify client once&lt;/p&gt;
&lt;p&gt;for more details on these options see: http://search.cpan.org/~sullr/IO-Socket-SSL-1.13/SSL.pm&lt;/p&gt;</description>
	<pubDate>Tue, 04 Mar 2008 21:58:51 +0000</pubDate>
</item>
<item>
	<title>Other Chris Dolans: So, about that freedom of religion mentioned in the Constitution...</title>
	<guid isPermaLink="true">http://agangershome.blogspot.com/2008/03/so-about-that-freedom-of-religion.html</guid>
	<link>http://agangershome.blogspot.com/2008/03/so-about-that-freedom-of-religion.html</link>
	<description>Guess it's another case of all animals being equal, some are more equal than others. Phooey!  Daly City, CA, Mar 4, 2008 / 04:19 am (CNA).- A Catholic hospital that refused to allow its facilities to be used for breast implant surgery on a man that had undergone a sex-change operation will now allow the procedure, the California Catholic Daily reports.  In 2006 a doctor told Charlene Hastings, 57, that Seton Medical Center in Daly City would not allow him to perform breast-enhancement surgery on</description>
	<pubDate>Tue, 04 Mar 2008 21:56:19 +0000</pubDate>
</item>
<item>
	<title>Slashdot Apple: Paypal Advises Users To Stop Using Safari</title>
	<guid isPermaLink="false">http://it.slashdot.org/article.pl?sid=08/03/03/2049205&amp;from=rss</guid>
	<link>http://rss.slashdot.org/~r/Slashdot/slashdotApple/~3/245157677/article.pl</link>
	<description>eldavojohn writes &quot;Over concerns for lack of an anti-phishing mechanism for Safari, Paypal is telling its Mac users to use another browser. An author from Ars Technica reveals that he has been using Camino and has fallen victim to a Paypal related phishing scam via e-mail so this story must hit home for him. 'Currently the Apple browser does not alert users to sites that could be phishing for your info, and it lacks support for Extended Validation. PayPal is, of course, a popular site among phishers in their neverending search for personal information, user IDs, and passwords. While it's not entirely fair singling out Safari (other Mac browsers like Camino also lack this support), it is perhaps at least a helpful reminder of the threat.'&quot;&lt;p&gt;&lt;a href=&quot;http://it.slashdot.org/article.pl?sid=08/03/03/2049205&amp;amp;from=rss&quot;&gt;Read more of this story&lt;/a&gt; at Slashdot.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://rss.slashdot.org/~a/Slashdot/slashdotApple?a=2JkNIo&quot;&gt;&lt;img src=&quot;http://rss.slashdot.org/~a/Slashdot/slashdotApple?i=2JkNIo&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img width=&quot;1&quot; src=&quot;http://rss.slashdot.org/~r/Slashdot/slashdotApple/~4/245157677&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Tue, 04 Mar 2008 21:50:29 +0000</pubDate>
</item>
<item>
	<title>Planet Perl: hiveminder and imap, now sharing a bed</title>
	<guid isPermaLink="false">http://use.perl.org/~rjbs/journal/35829?from=rss</guid>
	<link>http://feeds.feedburner.com/~r/PlanetPerl/~3/245164335/35829</link>
	<description>&lt;p&gt;Today, Best Practical announced &lt;a href=&quot;http://bestpractical.typepad.com/worst_impractical/2008/03/post.html&quot;&gt;IMAP access to
Hiveminder&lt;/a&gt;.
It's way cool, and I'm sure I'll end up making a lot of improvement to my mutt
configuration tools to make the most of it.  You can check out their blog post
or documentation for more information, but basically you point your IMAP client
at Hiveminder and you can see your todo list.  You can drop new tasks (in the
form of email from elsewhere) into inbound folders and you can move existing
tasks into other folders to cause them to become hidden or complete.  There's a
bit more to it, but that's the gist.&lt;/p&gt; &lt;p&gt;My IMAP client of choice is
&lt;a href=&quot;http://software.complete.org/offlineimap&quot;&gt;OfflineIMAP&lt;/a&gt;, as I've said many
times before.  It's the easiest way for me to use mutt with IMAP, whether
online or off.  Unfortunately, it has a really stupid bug.  Every message in an
IMAP account has a unique id (the UID), which is useful for doing
synchronization.  It lets you figure out that you've moved a message from one
place to another in your offline store.  OfflineIMAP doesn't seem to keep the
same UID on messages that have moved from one folder to another, which made it
impossible to use the IMAP interface to mark a message done or hidden.&lt;/p&gt; &lt;p&gt;As usual, the guys at Hiveminder were quick to sort this out, making their
correct software cope with my twitchy software.&lt;/p&gt; &lt;p&gt;Now, the folders in which Hiveminder presents your tasks are (I am told) great
for users of GUI MUAs, where they form a nice hierarchy of folders that you can
drill down through.  Here's a summary of the folder layout:&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;blockquote&gt; &lt;div&gt;&lt;tt&gt;Actions&lt;br /&gt;  Completed&lt;br /&gt;  Hide for&lt;br /&gt;    Days..&lt;br /&gt;      01 day&lt;br /&gt;      (..more..)&lt;br /&gt;    Months..&lt;br /&gt;      01 month&lt;br /&gt;      (..more..)&lt;br /&gt;  Take&lt;br /&gt;Braindump mailboxes&lt;br /&gt;  []&lt;br /&gt;Groups&lt;br /&gt;  pep&lt;br /&gt;    All tasks&lt;br /&gt;    Everyone else's tasks&lt;br /&gt;    Up for grabs&lt;br /&gt;Help&lt;br /&gt;News&lt;/tt&gt;&lt;/div&gt; &lt;/blockquote&gt;  &lt;p&gt;Here's what they look like as directories:&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;blockquote&gt; &lt;div&gt;&lt;tt&gt;Actions/Completed&lt;br /&gt;Actions/Hide for/Days../01 day&lt;br /&gt;Actions/Hide for/Months../01 month&lt;br /&gt;Actions/Take&lt;br /&gt;Braindump mailboxes/[]&lt;br /&gt;Groups/pep&lt;br /&gt;Groups/pep/All tasks&lt;br /&gt;Groups/pep/Everyone else's tasks&lt;br /&gt;Groups/pep/Up for grabs&lt;br /&gt;Help&lt;br /&gt;News&lt;/tt&gt;&lt;/div&gt; &lt;/blockquote&gt;  &lt;p&gt;The amount of typing needed to move things around between these folders is a
drag.  Fortunately, OfflineIMAP makes it really simple to map Hiveminder's IMAP
folders into a nice, shallow, easy to type hierarchy.  With my OfflineIMAP
configuration, it looks like this:&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;div&gt; &lt;tt&gt;./braindump&lt;br /&gt;./braindump.[]&lt;br /&gt;./done&lt;br /&gt;./groups&lt;br /&gt;./groups.pep&lt;br /&gt;./groups.pep.all&lt;br /&gt;.  /groups.pep.avail&lt;br /&gt;./groups.pep.others&lt;br /&gt;./help&lt;br /&gt;./hide.1d&lt;br /&gt;./hide.1m&lt;br /&gt;./inbox&lt;br /&gt;.  /take&lt;/tt&gt;&lt;/div&gt; &lt;/blockquote&gt;  &lt;p&gt;I need to do a bit of work to make
&lt;a href=&quot;http://rjbs.manxome.org/rubric/entry/1592&quot;&gt;WhichConfig&lt;/a&gt; check &lt;code&gt;$0&lt;/code&gt; (or
something) to notice that I want to use Hiveminder, rather than the &quot;normal&quot;
mail available to it.  Even without having done that, the IMAP interface is
pretty fantastic.  I see a lot of weird Maildir tricks in my future.  Until I
have some to publish, here's my OfflineIMAP configuration for use with
Hiveminder:&lt;/p&gt; &lt;p&gt; &lt;em&gt; &lt;code&gt;.offlineimap&lt;/code&gt; &lt;/em&gt;:&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;blockquote&gt; &lt;div&gt;&lt;tt&gt;[general]&lt;br /&gt;pythonfile = ~/.offlineimap/helper.py&lt;br /&gt; &lt;br /&gt;[Account hiveminder]&lt;br /&gt;localrepository = hiveminder_maildir&lt;br /&gt;remoterepository = hiveminder_imap&lt;br /&gt; &lt;br /&gt;[Repository hiveminder_imap]&lt;br /&gt;type = IMAP&lt;br /&gt;remotehost = hiveminder.com&lt;br /&gt;ssl = yes&lt;br /&gt;remoteuser = user@example.com&lt;br /&gt;remotepass = PASSWORD&lt;br /&gt; &lt;br /&gt;nametrans    = lambda foldername: hm_nametrans(foldername)&lt;br /&gt;folderfilter = lambda foldername: hm_folderfilter(foldername)&lt;br /&gt; &lt;br /&gt;[Repository hiveminder_maildir]&lt;br /&gt;type = Maildir&lt;br /&gt;localfolders = ~/Mailhive&lt;/tt&gt;&lt;/div&gt; &lt;/blockquote&gt;  &lt;p&gt;This relies on a few Python functions stored in another file:&lt;/p&gt; &lt;p&gt; &lt;em&gt; &lt;code&gt;helper.py&lt;/code&gt; &lt;/em&gt;:&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;blockquote&gt; &lt;div&gt;&lt;tt&gt;import re&lt;br /&gt; &lt;br /&gt;hide_re = re.compile('^Actions/Hide')&lt;br /&gt;spec_re = re.compile('(?P&amp;lt;n&amp;gt;\d\d) (?P&amp;lt;units&amp;gt;days?|months?)$')&lt;br /&gt; &lt;br /&gt;def hm_folderfilter(folder):&lt;br /&gt;  if folder in ('Actions', 'Groups'): return False&lt;br /&gt; &lt;br /&gt;  if hide_re.search(folder) and not spec_re.search(folder): return False&lt;br /&gt; &lt;br /&gt;  return True&lt;br /&gt; &lt;br /&gt;def hm_nametrans(folder):&lt;br /&gt;  if folder == 'Actions/Completed': return 'done'&lt;br /&gt;  if folder == 'Actions/Take': return 'take'&lt;br /&gt;  if folder == 'Actions/Take': return 'take'&lt;br /&gt; &lt;br /&gt;  folder = re.compile('Braindump mailboxes').sub('braindump', folder)&lt;br /&gt; &lt;br /&gt;  if hide_re.search(folder):&lt;br /&gt;    spec  = spec_re.search(folder)&lt;br /&gt;    n     = int(spec.group('n'))&lt;br /&gt;    units = spec.group('units')&lt;br /&gt; &lt;br /&gt;    return