Older blog entries for bradfitz (starting at number 210)

My Daily Tweets

  • 20:47 OH: "Wait, wait, wait... Was this _before_ the Prime Directive?" .. *silence* ... *laughter* #
(posted using LoudTwitter)

Syndicated 2008-07-25 06:32:06 from Brad Fitzpatrick

Perl on App Engine

Fellow Perl hackers,

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.  To be clear:  I'm not a member of the App Engine team and the App Engine team is not promising to add Perl support.  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.

As background, I've been writing Perl code for almost 15 years now and quite fond of the language.  (I'm "bradfitz" on CPAN.)  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.  I'd still like to run my personal web apps on App Engine, though, and I'd like to write them in Perl.  And I'm definitely not alone, looking at how many people have starred the wishlist bug.  Some of you have already started talking about it.  We'd like to join the discussion, and start hacking out in the public.

In the process we can build the start of an open source App Engine server clone that's suitable for many purposes:  initially just for regression testing & 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.

Before I get into my proposed roadmap, let me describe what's publicly known about the App Engine architecture.  In a nutshell, it looks like this:



The App runs in a multi-layer hardened environment, one layer of which will need to be a hardened Perl interpreter.

Basically, we need a hardened Perl runtime which can:
  • open & read files
  • NOT write files
  • NOT open sockets
  • NOT fork
  • NOT do any other system functionality that's not strictly needed for a web app
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.  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.  The request and response are both encoded as Protocol Buffers, which were recently open sourced by Google.

Perl on App Engine then would involve the following steps (in no particular order):
  • Hardened Perl Interpreter:  basically, we'll be statically linking in a hardened, customized libperl to a C++ application, disabling all Perl dynamic loading.  Only vetted, security-audited XS modules will be allowed.  Only safe Perl opcodes will be allowed.  (No sockets, no ioctl, no fork, etc, etc.)  To get a preview for what this'll feel like restriction-wise, check out the newly written Sys::Protect which Artur and I wrote this evening and will be continuing to develop for people's dev environments (not production).
  • Protocol Buffers for Perl:  we need support for Protocol Buffers for Perl.  I've started on this project internally and will open source the code soon, once I have a few free minutes.
  • Server:  we need to write an App Engine server for testing, local development, and potentially production deployment.  (Replace Bigtable with MySQL, Hypertable, Hbase, Couch DB, etc.)
  • Libraries:  Perl client libraries for Datastore, URLFetch, etc services.  Including docs.
Not included is the Google-internal side of things, gluing the hardened Perl interpreter into the GAE world.  That needs to be done by a Googler and not open source. 

If you'd like to discuss this and/or help out, join the perl-appengine mailing list.  We'll be submitting code to the appengine-perl project on Google Code hosting.  For more information about this, see the Perl-on-AppEngine FAQ.

Brad & the other Perl Googlers

Syndicated 2008-07-23 03:49:58 from Brad Fitzpatrick

IPv6

I saw that this was open sourced today:

http://code.google.com/p/stubl/

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 Great Experiment, which isn't quite SWF)

Syndicated 2008-07-15 21:08:39 from Brad Fitzpatrick

My Daily Tweets

  • 09:49 Google Earth with 3D polarized glasses and huge LCD = f'ing awesome #
(posted using LoudTwitter)

Syndicated 2008-07-14 06:35:47 from Brad Fitzpatrick

My Daily Tweets

  • 01:03 Playing with twitterific on new iPhone software. Yay new shiny! #
(posted using LoudTwitter)

Syndicated 2008-07-12 06:36:20 from Brad Fitzpatrick

Я ищу друзей на одноклассниках!

http://www.odnoklassniki.ru/user/219970653299

(Have to try out all the social networking sites, ya know...)

Syndicated 2008-07-11 06:53:11 from Brad Fitzpatrick

10 Jul 2008 (updated 10 Jul 2008 at 20:09 UTC) »

Facebook QR Code "me"-link

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.

I got around that:

http://www.facebook.com/people/Brad_Fitzpatrick/500033387

Check out my QR code in my profile photo. That QR code says "http://bradfitz.com/".

:-)

Update 12:42pm: I made it with Google's new Chart API feature. Make a URL like this:

http://chart.apis.google.com/chart?chs=150x150&cht=qr&chl=http://bradfitz.com/

You can read them with this: http://code.google.com/p/zxing/

Syndicated 2008-07-10 16:43:59 (Updated 2008-07-10 19:43:55) from Brad Fitzpatrick

9 Jul 2008 (updated 18 Jul 2008 at 18:05 UTC) »

Car Crash

The Audi's fucked up...
http://picasaweb.google.com/bradley.j.fitzpatrick/CarCrash

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.

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.

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!

Syndicated 2008-07-09 05:49:34 (Updated 2008-07-18 17:06:19) from Brad Fitzpatrick

7 Jul 2008 (updated 8 Jul 2008 at 23:09 UTC) »

My Daily Tweets

  • 23:53 Love the long days! I seek drinking options now. #
  • 19:26 7:25pm: new meme: all tweets to contain self-written timestamps so your friends know when twitter sucking. #
(posted using LoudTwitter)

Syndicated 2008-06-28 06:39:28 from Brad Fitzpatrick

201 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!