All posts by Sean Dague

What’s with all this Java complaining about AppEngine

I’ve seen all manner of people in the twitter verse complaining that Google’s AppEngine Java support is a subset of Java, and how that “breaks a decade of compatibility”.


I mean, really, seriously?!?

I’ve got to have 3 JVMs installed on my system to use ~ 5 java applications in total.  So I’m not buying the compatibility complaint, as “best practice” in the java world is to ship your own copy of the vm. 

And I definitely sympathize with the Google folks that really don’t want to be running millions of idle 2 GB memory footprint VMs.  It is basically free after all, so what’s up with all the complaining.  And, honestly, if it gets Java folks rethinking if they really need 5000 classes floating around at all times, I think that’s doing the world a favor. 🙂

1 thing you don’t know about me

Much like other facebook meme’s I passed on the whole 25 things cycle around.  But here is 1 thing you probably didn’t know about me: for grades 1 – 5 I attended a one room school house, and had the same teacher for 5 years.

The one room school house can be thought of as a historical throw back.  Prior to the invention of the automobile, you had to walk to school.  That meant that schools needed to be within the daily walking distance of a 6 year old, so the concept of the one room school was born.  A single teacher for a village, and a different school for each village.  With the introduction of the bus in the 1920s, most of these were wiped out in the face of progress.

But there were holdouts, typically in small rural towns.  I happened to grow up in one of these towns.  When I was in first grade there were 18 kids in the school, a single room, a single teach, and 6 grades.  That averaged 3 students per grade, but at this small of a sample size a grade might be 6 or even just 1 student.  Lessons were run in the front of the room, and students would then go back to their desk and work on some assigned tasks.  The older students were each buddied up with 1st and 2nd graders and helped them with reading assignments.  Recess was the same for all, and with that few individuals there was no room for cliques to spawn.  We were all there together.  Grades became a bit more fluid, at that level of individual attention you could be challenged individually based on your aptitude.  By the end of 2nd grade I’d started in on a 4th grade math book, but was with the rest of the 2nd grade class on other subjects.

By the time I got to the end of 5th grade, my teacher, Eula Bannister, who had been teaching in that school, in that way, for decades, also retired.  The school had shrunk to 5 grades at that point (population was going up, so 6th went to a neighbor town), and it was to be the last year of grade 5.  To me, leaving that system, there was some perfect symetry to that.  I owe a lot of who I am to that school, and that experience.  A big part of my personal drive came from a set of values that Eula inspired in me, over the course of 5 years.

Last week, during the annual school meeting, the town decided to close the doors on the Granville one room school house (I could wax eloquently on the fact that it was done by direct in person democracy, another value that comes out of rural vermont, but that’s probably for another post).  It was a hard decision for everyone, and a decision that was many years in the making.  There are so many challenges to keeping a school like that functioning, and correctly serving the students.  No matter how romantic the idea, the important thing is that students are being best served.  One of the huge challenges is finding a teacher with the range to handle that task, the energy to maintain, and the willingness to take the pay a small rural town can afford.  In this day and age, there probably isn’t a place for a school like that.

I feel special to have had this experience, knowing that much like the passenger pidgeon, and the mill wheel, it’s a thing of the past.  Granville’s school has done an incredible service over 158 years of operation.  I’m glad that I had an opportunity to spend 5 of those years with it.

OpenSim Infrastructure Updates: fresh os, git mirror, and automated release building

Yesterday I upgraded the machine (kindly provided by Adam Frisby) to the latest version of Debian.  The upgrade went seemlessly.  Now that we are on Debian 5.0 we’ve got some fresher software on the machine to make it possible to provide a few new things as part of the basic OpenSim infrastructure.

OpenSim via Git

We are now mirroring the experimental upstream code (aka subversion trunk) via git.  At least 5 of us on the OpenSim core team have been using git personally with the git-svn bridge for our own OpenSim work (I started doing this nearly a year ago).  Git provides some advantages in making it easy to try things out in a local tree, and throw away branches if things go wrong.  If you read my blog, you know, I love git. 🙂

While subversion remains our main tree, this git mirror will make it easy for developers (or budding developers) to experiment with this alternative source system.  You can use viewgit to see the git mirror, or clone this via:

git clone

In addition, the viewgit system provides a very handy rss feed for changes, which is another way you can keep up to tabs on what’s changing in trunk.  There is an up to 10 minute lag in changes getting into the git mirror from svn, but hopefully that won’t bother anyone.

Automated Release Building for OpenSim

Something else I threw together last night was an automated release builder for OpenSim.  One of the challenges we had was getting all the parts of the release sorted out once a release tag was made was sometimes onerous, and meant that a release might only be an subversion tag for days or even weeks before source tarballs of that saw their way into the world.

I’ve now got a system in place that looks for all numeric tags in our source tree, checks them out, runs prebuild on them, and bundles them up as both a .zip and a .tar.gz.  This means they should be ready to compile with nant or MSVS.  This is running hourly on the OpenSim machine, and publishing all results to  One of the immediate things you’ll see is that it now gives us a full set of historically populated releases.

I’m hoping you enjoy these extra bits of infrastructure for the project.  Please feel free to drop me a comment here if you have any thoughts or questions on them, feedback is always appreciated.