Bill Katz

My Brain

An occasionally updated repository of thoughts, past work, and links.

Simple Full Text Search for App Engine

Updated: 2009-07-01 (Added optional stemming.)

After rewatching Brett Slatkin's Building Scalable, Complex Apps talk at Google I/O, I came across the old SearchableModel module and realized it could be greatly improved by using the "Relation Index" technique described in the talk.  So after a day of hacking, I'm releasing an open source (MIT License) simple solution to full text search for App Engine.

The full ...

Addressing App Engine Lock-in

One of the biggest criticisms of Google App Engine is the lock-in factor.  Although the App Engine SDK is open source (Apache 2.0 license) and you can use Django to make your app more portable, there's no easy way to port your App Engine code to Amazon EC2 without creating your own datastore, etc.

AppScale addresses this concern.  It's a cool looking project out of ...

Remote API "Hello World"

Here are some tips for developers trying to play with the remote_api module release with the 1.1.9 App Engine SDK.

You can look at the bulkloader.py utility.  It uses remote_api and shows how to setup some essential environment variables (os.environ['AUTH_DOMAIN'] and from my tests, you'll also need os.environ['USER_EMAIL']).  On to the hello world...

First, wire the remote_api handler into your ...

Remote API for App Engine

The most recent SDK update (Version 1.1.9 - Feb 2, 2009) includes a nice little feature, a remote API.  Look at the module google.appengine.ext.remote_api and you'll find this description in the stub:


This allows easy remote access to the App Engine datastore, and potentially any of the other App Engine APIs, using the same interface you use when accessing the service locally.

See ...

Git: Commit, Push, Amend, Push Error

I'm a fan of the git version control system, but distributed revision control forces you to think a lot more.  Today, I ran into a gotcha that I'm documenting to help the next poor schlep.

I'm the only developer working on my web projects, so unless I'm merging changes across forked projects, merge conflicts don't rear their ugly head.  I like using dropbox ...