<?xml version="1.0"?>
<rss version="2.0.">
  <channel>
    <title>Advogato blog for bradfitz</title>
    <link>http://www.advogato.org/person/bradfitz/</link>
    <description>Advogato blog for bradfitz</description>
    <language>en-us</language>
    <generator>mod_virgule</generator>
    <pubDate>Thu, 24 Jul 2008 09:03:07 GMT</pubDate>
    <item>
      <pubDate>Wed, 23 Jul 2008 04:09:47 GMT</pubDate>
      <title>Perl on App Engine</title>
      <link>http://www.advogato.org/person/bradfitz/diary.html?start=209</link>
      <guid>http://brad.livejournal.com/2388824.html</guid>
      <description>Fellow Perl hackers,&lt;br /&gt; &lt;br /&gt; I'm happy to announce that the Google App Engine team has given me permission to talk about a 20% project inside Google to to add Perl support to App Engine.&amp;nbsp; To be clear:&amp;nbsp; I'm not a member of the App Engine team and the App Engine team is not promising to add Perl support.&amp;nbsp; They're just saying that I (along with other Perl hackers here at Google) are now allowed to work on this 20% project of ours out in the open where other Perl hackers can help us out, should you be so inclined.&lt;br /&gt; &lt;br /&gt; As background, I've been writing Perl code for almost 15 years now and quite fond of the language.&amp;nbsp; (I'm "&lt;a href="http://search.cpan.org/%7Ebradfitz/" title="bradfitz" &gt;bradfitz&lt;/a&gt;" on CPAN.)&amp;nbsp; Here at Google, though, it's not one of our big languages so I don't get to write as much Perl as I used to.&amp;nbsp; I'd still like to run my personal web apps on App Engine, though, and I'd like to write them in Perl.&amp;nbsp; And I'm definitely not alone, looking at how many people have &lt;a href="http://code.google.com/p/googleappengine/issues/detail?id=34" title="starred the wishlist" &gt;starred the wishlist&lt;/a&gt; bug.&amp;nbsp; Some of you have &lt;a href="http://code.google.com/p/perl-appengine/" title="already started talking about it" &gt;already started talking about it&lt;/a&gt;.&amp;nbsp; We'd like to join the discussion, and start hacking out in the public.&lt;br /&gt; &lt;br /&gt; In the process we can build the start of an open source App Engine server clone that's suitable for many purposes:&amp;nbsp; initially just for regression testing &amp;amp; local development (like the "dev_appserver" that comes with the App Engine Python SDK), but perhaps in the future (once Hypertable/Hbase/etc are ready) a full stack to give to ISPs to let them run App Engine apps on their own.&lt;br /&gt; &lt;br /&gt; Before I get into my proposed roadmap, let me describe what's publicly known about the App Engine architecture.&amp;nbsp; In a nutshell, it looks like this:&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;img width="580" height="288" alt="" src="http://perl-appengine.googlecode.com/svn/trunk/docs/arch.png" /&gt;&lt;br /&gt;&lt;/div&gt; &lt;br /&gt;  The App runs in a multi-layer hardened environment, one layer of which will need to be a hardened Perl interpreter.&lt;br /&gt; &lt;br /&gt; Basically, we need a hardened Perl runtime which can:&lt;br /&gt; &lt;ul&gt;&lt;li&gt;     open &amp;amp; read files   &lt;/li&gt;&lt;li&gt;     NOT write files   &lt;/li&gt;&lt;li&gt;     NOT open sockets   &lt;/li&gt;&lt;li&gt;     NOT fork   &lt;/li&gt;&lt;li&gt;     NOT do any other system functionality that's not strictly needed for a web     app   &lt;/li&gt;&lt;/ul&gt; Basically we need a Perl interpreter that's very tame and isn't allowed to do anything other than read web requests and write out responses.&amp;nbsp; Any privileged operations (like Datastore access, fetching URLs, etc) need to be done via a trusted XS Perl module (the "apiproxy") that takes a service request parameter and returns a service response.&amp;nbsp; The request and response are both encoded as &lt;a href="http://code.google.com/p/protobuf/" title="Protocol Buffers" &gt;Protocol Buffers&lt;/a&gt;, which were recently &lt;a href="http://google-opensource.blogspot.com/2008/07/protocol-buffers-googles-data.html" title="open sourced by Google" &gt;open sourced by Google&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt; Perl on App Engine then would involve the following steps (in no particular order):&lt;br /&gt; &lt;ul&gt;&lt;li&gt;     &lt;b&gt;Hardened Perl Interpreter&lt;/b&gt;&lt;b&gt;:&lt;/b&gt;&amp;nbsp; basically,     we'll be statically linking in a hardened, customized libperl to a C++     application, disabling all Perl dynamic loading.&amp;nbsp; Only vetted,     security-audited XS modules will be allowed.&amp;nbsp; Only safe Perl opcodes     will be allowed.&amp;nbsp; (No sockets, no ioctl, no fork, etc, etc.)&amp;nbsp; To get a preview for what this'll feel like restriction-wise, check out the newly written &lt;a href="http://code.google.com/p/sys-protect/" &gt;Sys::Protect &lt;/a&gt;which Artur and I wrote this evening and will be continuing to develop for people's dev environments (not production).   &lt;/li&gt;&lt;li&gt;     &lt;b&gt;Protocol Buffers for Perl:&amp;nbsp; &lt;/b&gt;we need support for     &lt;a href="http://groups.google.com/group/protobuf-perl" title="Protocol Buffers for Perl" &gt;Protocol     Buffers for Perl&lt;/a&gt;.&amp;nbsp; I've started on this project internally and will     open source the code soon, once I have a few free minutes.   &lt;/li&gt;&lt;li&gt;     &lt;b&gt;Server:&lt;/b&gt;&amp;nbsp; we need to write an App Engine server for     testing, local development, and potentially production deployment.&amp;nbsp;     (Replace Bigtable with MySQL, Hypertable, Hbase, Couch DB, etc.)   &lt;/li&gt;&lt;li&gt;     &lt;b&gt;Libraries:&lt;/b&gt;&amp;nbsp; Perl client libraries for Datastore,     URLFetch, etc services.&amp;nbsp; Including docs.   &lt;/li&gt;&lt;/ul&gt; Not included is the Google-internal side of things, gluing the hardened Perl interpreter into the GAE world.&amp;nbsp; That needs to be done by a Googler and not open source.&amp;nbsp;&lt;br /&gt; &lt;br /&gt; If you'd like to discuss this and/or help out, join the &lt;a href="http://groups.google.com/group/perl-appengine/" &gt;perl-appengine mailing list&lt;/a&gt;.&amp;nbsp; We'll be submitting code to the &lt;a href="http://code.google.com/p/perl-appengine/" title="appengine-perl project" &gt;appengine-perl project&lt;/a&gt; on Google Code hosting.&amp;nbsp; For more information about this, see the &lt;a href="http://code.google.com/p/perl-appengine/wiki/AnnouncementFAQ" &gt;Perl-on-AppEngine FAQ.&lt;br /&gt;&lt;/a&gt; &lt;br /&gt; &lt;i&gt;Brad &amp;amp; the other Perl Googlers&lt;/i&gt;</description>
    </item>
    <item>
      <pubDate>Tue, 15 Jul 2008 21:11:52 GMT</pubDate>
      <title>IPv6</title>
      <link>http://www.advogato.org/person/bradfitz/diary.html?start=208</link>
      <guid>http://brad.livejournal.com/2388524.html</guid>
      <description>I saw that this was open sourced today:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/stubl/" &gt;http://code.google.com/p/stubl/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I followed our internal instructions for using it and now I have IPv6 on my desktop at work.  Any good IPv6 sites to hit?  (besides the &lt;a href="http://www.ipv6experiment.com/" &gt;Great Experiment&lt;/a&gt;, which isn't quite SWF)</description>
    </item>
    <item>
      <pubDate>Mon, 14 Jul 2008 07:05:24 GMT</pubDate>
      <title>My Daily Tweets</title>
      <link>http://www.advogato.org/person/bradfitz/diary.html?start=207</link>
      <guid>http://brad.livejournal.com/2388264.html</guid>
      <description>&lt;ul class="loudtwitter"&gt;&lt;li&gt;&lt;em&gt;09:49&lt;/em&gt; Google Earth with 3D polarized glasses and huge LCD = f'ing awesome &lt;a href="http://twitter.com/bradfitz/statuses/857325480" &gt;#&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;(posted using &lt;a href="http://www.loudtwitter.com" &gt;LoudTwitter&lt;/a&gt;)</description>
    </item>
    <item>
      <pubDate>Sat, 12 Jul 2008 07:07:12 GMT</pubDate>
      <title>My Daily Tweets</title>
      <link>http://www.advogato.org/person/bradfitz/diary.html?start=206</link>
      <guid>http://brad.livejournal.com/2388174.html</guid>
      <description>&lt;ul class="loudtwitter"&gt;&lt;li&gt;&lt;em&gt;01:03&lt;/em&gt; Playing with twitterific on new iPhone software. Yay new shiny! &lt;a href="http://twitter.com/bradfitz/statuses/855426882" &gt;#&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;(posted using &lt;a href="http://www.loudtwitter.com" &gt;LoudTwitter&lt;/a&gt;)</description>
    </item>
    <item>
      <pubDate>Fri, 11 Jul 2008 07:07:32 GMT</pubDate>
      <title>&#x42F; &#x438;&#x449;&#x443; &#x434;&#x440;&#x443;&#x437;&#x435;&#x439; &#x43D;&#x430; &#x43E;&#x434;&#x43D;&#x43E;&#x43A;&#x43B;&#x430;&#x441;&#x441;&#x43D;&#x438;&#x43A;&#x430;&#x445;!</title>
      <link>http://www.advogato.org/person/bradfitz/diary.html?start=205</link>
      <guid>http://brad.livejournal.com/2387832.html</guid>
      <description>&lt;a href="http://www.odnoklassniki.ru/user/219970653299" &gt;http://www.odnoklassniki.ru/user/219970653299&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(Have to try out all the social networking sites, ya know...)</description>
    </item>
    <item>
      <pubDate>Thu, 10 Jul 2008 17:06:34 GMT</pubDate>
      <title>Facebook QR Code "me"-link</title>
      <link>http://www.advogato.org/person/bradfitz/diary.html?start=204</link>
      <guid>http://brad.livejournal.com/2387582.html</guid>
      <description>Facebook's public profile pages don't let you include any links (notably: no XFN "me" links), so you can't setup a bi-direction proof that you own your Facebook account from another page.&lt;br /&gt;&lt;br /&gt;I got around that:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/people/Brad_Fitzpatrick/500033387" &gt;http://www.facebook.com/people/Brad_Fitzpatrick/500033387&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Check out my QR code in my profile photo.  That QR code says "&lt;a href="http://bradfitz.com/" &gt;http://bradfitz.com/&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;:-)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update 12:42pm:&lt;/b&gt;  I made it with Google's &lt;a href="http://google-code-updates.blogspot.com/2008/07/qr-codes-now-available-on-google-chart.html" &gt;new Chart API feature&lt;/a&gt;.  Make a URL like this:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://chart.apis.google.com/chart?chs=150x150&amp;cht=qr&amp;chl=http://bradfitz.com/" &gt;http://chart.apis.google.com/chart?chs=150x150&amp;cht=qr&amp;chl=http://bradfitz.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can read them with this:  &lt;a href="http://code.google.com/p/zxing/" &gt;http://code.google.com/p/zxing/&lt;/a&gt;</description>
    </item>
    <item>
      <pubDate>Wed, 9 Jul 2008 06:06:24 GMT</pubDate>
      <title>Car Crash</title>
      <link>http://www.advogato.org/person/bradfitz/diary.html?start=203</link>
      <guid>http://brad.livejournal.com/2387333.html</guid>
      <description>The Audi's fucked up...&lt;br /&gt;&lt;a href="http://picasaweb.google.com/bradley.j.fitzpatrick/CarCrash" &gt;http://picasaweb.google.com/bradley.j.fitzpatrick/CarCrash&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Good thing everybody's okay and the two propane tanks in the back seat (seat-belted in) which I was heading out to refill didn't blow up.&lt;br /&gt;&lt;br /&gt;Couldn't find non-emergency number quickly, called 911, they said just exchange contact info and insurance.  Did that.  Police did show up and took down info and mostly just stood around and watched as me and the other dude had it almost wrapped up by then.  Other guy needed to be towed (to his friend's body-shop) but wasn't sure how he was going to pay (no credit card?) so I paid the $200 to the tow-truck driver just to get things moving.  Hope that isn't an implicit admission of guilt.  Tried to call State Farm to report it but no answer.  I drove home, despite the left side doors not opening.  Car seems fine.&lt;br /&gt;&lt;br /&gt;But I got new propane tanks afterwards on the way home ... who wants to come celebrate a delayed 4th of July tomorrow night at my place?  Burgers and hot dogs!</description>
    </item>
    <item>
      <pubDate>Mon, 7 Jul 2008 23:10:33 GMT</pubDate>
      <title>yay protocol buffers!</title>
      <link>http://www.advogato.org/person/bradfitz/diary.html?start=202</link>
      <guid>http://brad.livejournal.com/2387105.html</guid>
      <description>Yay!&lt;br /&gt;&lt;a href="http://google-opensource.blogspot.com/2008/07/protocol-buffers-googles-data.html" &gt;http://google-opensource.blogspot.com/2008/07/protocol-buffers-googles-data.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(and don't worry, I'm working on Perl support... :-))&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; Join the Perl group if you're interested:&lt;br /&gt;&lt;a href="http://groups.google.com/group/protobuf-perl" &gt;http://groups.google.com/group/protobuf-perl&lt;/a&gt;</description>
    </item>
    <item>
      <pubDate>Sat, 28 Jun 2008 07:07:00 GMT</pubDate>
      <title>My Daily Tweets</title>
      <link>http://www.advogato.org/person/bradfitz/diary.html?start=201</link>
      <guid>http://brad.livejournal.com/2386763.html</guid>
      <description>&lt;ul class="loudtwitter"&gt;&lt;li&gt;&lt;em&gt;23:53&lt;/em&gt; Love the long days! I seek drinking options now. &lt;a href="http://twitter.com/bradfitz/statuses/844759467" &gt;#&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;19:26&lt;/em&gt; 7:25pm: new meme: all tweets to contain self-written timestamps so your friends know when twitter sucking. &lt;a href="http://twitter.com/bradfitz/statuses/845372578" &gt;#&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;(posted using &lt;a href="http://www.loudtwitter.com" &gt;LoudTwitter&lt;/a&gt;)</description>
    </item>
    <item>
      <pubDate>Sun, 22 Jun 2008 07:07:52 GMT</pubDate>
      <title>My Daily Tweets</title>
      <link>http://www.advogato.org/person/bradfitz/diary.html?start=200</link>
      <guid>http://brad.livejournal.com/2386592.html</guid>
      <description>&lt;ul class="loudtwitter"&gt;&lt;li&gt;&lt;em&gt;23:37&lt;/em&gt; Travelodge is so cheap they double up on the el. I'd never noticed! (... or stayed at one) &lt;a href="http://twitter.com/bradfitz/statuses/840105857" &gt;#&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;07:20&lt;/em&gt; It's rafting time. &lt;a href="http://twitter.com/bradfitz/statuses/840293794" &gt;#&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;(posted using &lt;a href="http://www.loudtwitter.com" &gt;LoudTwitter&lt;/a&gt;)</description>
    </item>
  </channel>
</rss>
