Sunday, December 31, 2006

The Baroque Cycle

So, if you haven't gotten around to it yet, you should really go read The Baroque Cycle, by Neal Stephenson. I attempted to say something to that effect when I finished it a while back, but simply didn't have the time and energy to put forth the required effort. Fortunately, I don't have to, as MJD already did it. I don't agree with everything he says (for example, I enjoyed Stephenson's earlier stuff, despite its flaws), but he does a fantastic job of explaining the core stuff you should understand about the books before you dive in to them, primarily the fact that they are really just one really long book, so you shouldn't form an opinion after the first half of Quicksilver, as you really need to get to the end of System of the World in order for it all to fit together properly.

Saturday, December 16, 2006

Annotea investigations

So, back when I was working on the first edition of my book I spent a lot of time looking at PDF documents generated by the publisher, annotating them in various ways, and then sending them back. Usually what I'd do is use Adobe Acrobat to add little notes to the places in the document that needed to be fixed. If you've never used this feature of acrobat, notes show up as little squares in the document, and you can click on them to open them up, at which point they expand and show you their content, almost like little minimizing sticky notes.

Now, there were a lot of things to hate (and I mean really hate) about this workflow, but the ability to annotate documents like this was pretty slick, and if it was implemented correctly I could see it being really useful in other contexts (say, the web). So, every so often this idea gets stuck in my head, so I poke around trying to find out if someone has already implemented a magical sticky-note annotation system for Firefox.

The most promising stuff appears to be built around the w3c Annotea system, which oddly enough we appear to be using at work for some stuff. Annotea is a RDF vocabulary and HTTP protocol designed for annotating web pages and storing the results as RDF. Annotations can refer to each other in various ways, store bits of arbitrary metadata, and generally do all the things the Semantic Web people seem to be nuts about, and despite that association (which generally in my experience means "will never do anything useful") it actually seems to do a reasonable job of filling the requirements.

There are at least a few implementations of the server side of Annotea, which is nice, and there are at some Firefox plugins that make use of it, but none of them really seem to do what I want. I'm looking for something that just lets you create a note at some arbitrary point in a html page, expand that note to show its content, allow editing of that content, and then later on when you browse back to the page it should attempt to insert any existing notes into the appropriate places. The Firefox extension that comes closest to doing this kind of thing is Annozilla, but it seems to have a UI that's way more complex than it needs to be (why the hell is there a sidebar damn it, that's totally unnecessary, this should be a single context menu item, and maybe some dialogue for searching existing annotations, that's it!), and on top of that I can't seem to get it to actually work (the annotations show up in my local server, but Annozilla keeps saying there's an error).

So, am I missing something here? Has someone actually implemented my magical web-based sticky note system, either with or without Annotea? Would other people find this sort of thing useful? Do I really care enough to dive into attempting to learn enough about Firefox extensions to make it happen?

Wednesday, December 13, 2006

Speedyfeed Moves To The Labs

So, a while back I spent some time playing with mod_speedyfeed, an Apache module that let you filter your atom feeds as they were being served, removing entries that the client had already seen. It never really got finished (although it did work), and now it's rather out of date, doesn't support current versions of atom, etc. Additionally, it never really grew a user or developer base other than myself, so it's pretty much just a mostly abandoned experiment.

Anyway, since we recently kicked off the Apache Labs, a place at the ASF for Apache committers to play around with experimental projects that may or may not actually grow into something that develops a community, I figured that speedyfeed would be a perfect candidate. The rest of the labs people agreed, so I moved it over. You can now find it in svn at

In addition to the somewhat out of date mod_speedyfeed (which I will be updating real soon now, I promise!) there's also a prototype of a java servlet version, which is built on top of Apache Abdera. I've been messing around with that off and on over the past week or two, hopefully it'll turn into something useful eventually.

Anyway, just figured I should blog about it, since if people search for mod_speedyfeed it would be nice if there was a pointer out there to its current home.

Monday, December 11, 2006

An Interesting Package

So, I was heading out the door to run some errands this morning, and I practically tripped over a package sitting on the steps. It turned out to be the author's copies for the second edition of Practical Subversion.

Now, this is both cool and weird at the same time.

It's cool because Practical Subversion has been rather out of date for some time (I have this vivid memory of committing a change a month or two before the book was scheduled to go out that made something in the book that couldn't be changed obsolete, so I personally contributed to my own book being out of date before it even hit shelves), and this second edition brings it up to date with the great stuff that the Subversion developers have been doing over the past few years.

It's weird because it's just a little bit odd to get an author's copy of a book that I didn't really do any significant work on. All the heavy lifting on this edition was done by Dan Berlin, with technical review by Malcolm Rowe. All I had to do was say "Sure, lets have Danny do a second edition", and everything between then and publication was totally out of my hands.

Anyway, if you liked the first edition, but wish it was more up to date, or if you haven't read it yet and are looking for a book on Subversion that doesn't assume you don't know the first thing about version control, I suggest you check it out. From what I've seen so far, the new edition has been well worth the wait.

Monday, December 4, 2006


It appears to be snowing. My roommates are way too excited about this. At least I don't have to drive anywhere today.

Oh, and I'm back from .nl. It was fun. There will likely be pictures later when I get around to getting them off my camera.

Sunday, November 26, 2006

Off to .nl for the week

In a couple hours I'll be heading off to the airport for a flight to the Netherlands, as I'll be visiting our office in Leiden for the next week. It's a lovely place, or at least I think it is based on the short stay I had when I was out there for my interview, and I'm looking forward to actually getting a chance to sit down with my coworkers in person and talk about all the stuff we're doing. Hopefully this time I'll actually get a chance to recover from the jet lag before I fly home.

So, if you're trying to get a hold of me this week, and can't figure out why I'm never home and don't answer my cell phone, that's why ;-)

Sunday, November 19, 2006

Using Apache Abdera with JRuby

A while back I attempted to play with one of the initial versions of Abdera in JRuby, just to see how difficult it would be to get some scripts that manipulate Atom data with Abdera doing the low level heavy lifting. It seemed like a match made in heaven, but unfortunately the theory was somewhat better than the practice, mainly due to difficulties with the JRuby/Java integration and the way that early versions of Abdera expected you to access the default versions of various interfaces.

Fortunately, the way Abdera has evolved between then and now happens to make it considerably easier to use from JRuby. Rather than static variables defined on the org.apache.abdera.parser.Parser classes you now use a top level org.apache.abdera.Abdera object to access the default implementations of org.apache.abdera.parser.Parser, org.apache.abdera.factory.Factory, and other major interfaces. This works a LOT better with JRuby.

So without further ado, here's a simple little example, which uses the not-quite-out-yet Abdera 0.2.0 release to parse the Atom feed that lists Abdera's releases from within a JRuby 0.9.1 script:

require 'java'

include_class 'org.apache.abdera.Abdera'
include_class ''

abdera =

parser = abdera.parser

url ='file:///Users/garrett/Code/abdera-site-trunk/releases.xml')

doc = parser.parse(url.open_stream(), url.to_string())

feed = doc.root

print "#{feed.title}\n"

for entry in feed.entries do
if and
author =
elsif and
author =
author = "Someone"

print " #{author} posted '#{entry.title}' on #{entry.updated}\n"

Then run it like this:

$ ./bin/jruby parse.rb
Apache Abdera - Releases
Abdera PPMC posted 'Abdera 0.2.0-incubating' on Thu Nov 09 19:00:00 EST 2006
Abdera PPMC posted 'Abdera 0.1.0-incubating' on Thu Nov 09 19:00:00 EST 2006

Note that in order for this to work the jar files for Abdera and it's dependencies will have to be in your CLASSPATH. Naturally, once the release is final that Atom feed will be located on our actual web site, and those updated dates will need to be tweaked, but you get the idea. I'm absolutely going to be looking at using Abdera via JRuby the next time I want to mess around with some Atom data.

Friday, November 10, 2006

Moving On

So I am now officially unemployed. At least until Monday, when I start my new job ;-)

No, I can't tell you what I'm going to be doing, other than working on neat stuff with cool people.

Saturday, November 4, 2006

REST Web Services: The Book

So it looks like Leonard Richardson (who I just barely managed to avoid working with at CollabNet, as he left just before I started) and Sam Ruby are working on a book about REST Web Services (and FWIW, I think that's a great title, calling it "REST Web Services with Ruby" just limits the audience, and if it's written correctly the concepts should be applicable anywhere).

It's great to see this subject getting some attention from publishers, since so much of the "Web Services" books out there are devoted to the WS-* pile of crap, and totally ignore what you can do with just the building blocks HTTP gives you. Perhaps even more importantly, it's great to see people as capable as Sam and Leonard taking it on. This will clearly be a book to keep an eye out for in the future...

Wednesday, October 25, 2006

New Tab UI

I'm not sure how I feel about the changes to the tab UI in Firefox 2. On one hand, the fact that you no longer have to go all the way to the far side of the window to close a tab is nice. Or, it would be nice if I hadn't trained myself to go to the far side of the window to close a tab. On the other hand, I'm really not sure how I feel about having tabs off screen and having to use the drop down menu or arrow button to move over to where you can see them. In concept, I can see how not having the tabs get really really small when you have a lot would be a good thing, but I'm still having trouble getting used to it.

Monday, October 23, 2006


So, my two weeks of travel have come to an end, and after a weekend spent doing as little as possible I'm now pretty much back to normal. What do I have to show for it? Well, a bunch of pictures up on my Flickr account at the very least ;-)

Feel free to check out sets from ApacheCon US 2006, the Subversion Summit, and because I'm always amused by tech conference t-shirts, a set of all the t-shirts I got on this trip.

Sunday, October 15, 2006

ApacheCon US 2006 Wrappup

So, ApacheCon US 2006 is over. It was a hell of a good time, learned some stuff, met some people, got some work done, and just barely managed to avoid visiting Buffalo Billiards every single night we were in Austin ;-)

Here's the current status of the TODO list I had going in to the week:

- APR bugs and patches
- Got some of this done, although not as much work as I'd have liked.
- Abdera Extension API
- Basically proved that this isn't simple as long as we're using Axiom for our XML parsing, I think my next step will be to look at writing a parser back end that just depends on STaX, to see if it's possible to make something that works with arbitrary Element implementations for extension elements.
- Import the Wicket repository into SVN
- Done.
- Crazy lua project
- See for our current progress.
- Kill off the lucene4c project
- Called a vote on the list, everyone agrees, just need to pull the switch.
- Subversion 1.4.x backports
- Didn't get any of this done.
- Upgrade to Subversion 1.4.x
- Didn't get this done.

Other than those, here are a few of the high points of the week:

- Wrote a pre-commit hook that verifies that changes to the asf-authorization file are valid, so you can't accidentally break via a typo.
- Gave rphillips the abdera c++ code, so he could play with it. Not much progress there though.

I also went to a bunch of fantastic talks, gave a few that were reasonably well received, ate a lot of fantastic food, and generally had a great time. Now, onward to the Subversion Summit!

Saturday, October 7, 2006

ActionPack style Java Web Apps

Amusingly enough, it appears that I'm not the only one who's been playing around with ActionPack style controllers in Java. Berin Loritsch appears to have many of the same ideas, and I'm willing to bet his implementation is nicer than mine. I wonder if he's going to be at ApacheCon next week...

Friday, October 6, 2006

Things To Do At The ApacheCon US Hackathon Next Week

So, I figure if I write this stuff down here, I'm more likely to actually get some of it done. So far, here's what's on my TODO list for the hackathon next week:

1) Catch up on APR bugs and patches
2) Rewrite the Abdera extension API so that extensions don't need to know about the underlying parser implementation
3) Finish the import of the Wicket Subversion repository into the ASF's repos
4) Help Paul and Brian with their crazy lua in httpd project
5) Kill off the lucene4c project for good, it's been dormant practically forever and I'm tired of writing board reports every 3 months that say "No Activity"
6) Get a whole lot of stuff backported to the Subversion 1.4.x release branch so we can cut 1.4.1.
7) Maybe upgrade to Subversion 1.4.x.

Oh, and at some point in there I'll have to spend three hours giving a Subversion tutorial ;-)

Thursday, October 5, 2006

I always knew it was just Karl...

I think my favorite thing about the new Google Code Search is that now I know that the only instance of the phrase "I miss Lisp" in all the freely available source code in the world is in subversion/libsvn_wc/merge.c.

Clearly, this indicates that nobody in the open source world other than Karl is all that upset that the world has moved on from Lisp ;-)

Tuesday, September 26, 2006

Comics, Then and Now

I've been getting back into comic books lately.

I mean I used to read them back when I was a kid, but I lost interest for a long time. Then a few years ago I went through a Sandman phase, but never really got into anything else. That was, of course, helped along by the fact that Sandman is finished, so once you're caught up you're pretty much done until they release something new, which is on the order of every few years instead of every month. Since then I've picked up the occasional trade paperback reprint of something that looked good (Dark Knight Returns, Watchmen, Sin City, etc), but nothing on a regular basis.

Then, I made a mistake, I started reading the trade paperbacks of Fables, by Bill Willingham. In addition to being a fantastic story with great art Fables has the additional feature that it's actually still coming out monthly, and is showing no signs of stopping. And since I burned through the trade paperbacks in like a week I was pretty much stuck. Either wait for the next one to come out in a few months, or start picking up the monthly issues. I hate waiting, so option B was really the only choice.

So, I filled in the gap between the last trade paperback and the current issue, and that's the point where a rational person would have stopped... But hey, if I've started collecting the new issues and they're only up to issue fifty-something I might as well try to fill in the back issues...

After a few weeks of stopping by random comic book stores I happen to be near and trolling ebay for the stuff I can't find I'm now approaching completeness. Assuming everything I ordered on ebay comes through I'll now have completed the series, so I can stop looking for back issues and just content myself with picking up my subscription from the local comic shop every few weeks.

Some things struck me though about the difference between reading comics as a kid and reading them now. First off, actually having disposable income makes a big difference. I never had the ability to buy back issues like this when I was doing this back in the day. Second, ebay makes a huge difference. Having access to basically whatever you want is really seductive, it makes it way easier to fill in the gaps in a collection, since you're not depending on what your local comic shop happens to have in stock. Third, the authors of these things actually interact with the fans these days, thanks to the internet it's actually possible to ask questions and get answers, at least for some books. Finally, the quality of the books coming out today is far greater than it used to be. I mean the super hero stuff is still generally crap, but the more mature stuff actually has great writing, it's the kind of thing you can follow for the story and actually enjoy as literature if you're looking for that sort of thing.

So if you need me I'll be hanging out from time to time over in the fabletown forums, and I'll be stopping by The Outer Limits every few weeks to pick up my (inevitably growing) subscriptions.

Saturday, September 16, 2006

New Roomates

So one thing that comes along with living with new roomates (even ones that you've lived with before) is that you learn new things about each other. For example, I've now learned that Rob and Jess are religious followers of "Politically Incorrect" on HBO. No argument there, it's turns out to be a pretty decent show, but I didn't know that before.

On the other side of things, Jessica is now in the process of organizing my DVD collection (apparently it's some deep rooted biological need, she just can't live with them shelved in the order I pulled them out of the box) and is becoming more and more shocked at my horrible taste. Yes, my "Bad Baseball Movies" section includes both "Summer Catch" and "Fever Pitch", and I'm not ashamed to admit it!

It also came out that apparently I'm not the only person who thought "Kicking and Screaming" (not the truly tragic soccer movie of the same title damn it!) was among the greatest movies ever. It seems that Bill Simmons, the ESPN sports writer that Rob and Jess are apparently obsessed with is also a big fan. You learn something new every day.

Sunday, September 10, 2006

A Good Ending

So, it seems that in The Baroque Cycle Stephenson has finally managed to write a good ending.

Of course, in order to do it he had to write a book that, in aggregate, is about 3000 pages long, and has such an incredible density that it took me multiple years after the last third of it was published to actually get around to finishing it.

All that considered though, I did enjoy the endiing very much, and I would highly recommend that anyone who gave up after the first volume should fight their way through, as the second really does pick up the pace quite a bit, and the third does manage to tie the whole thing together quite well.

Wednesday, September 6, 2006

Chicago 8, Coco Crisp 1

Man, did that game SUCK! Aside from Coco Crisp's hitting the Red Sox just didn't even bother to show up tonight. What a disappointment, especially after the last two games against Chicago went so well.

Anyway, it was still a good time, Rob and I took advantage of everyone leaving early and watched the last inning and a half from some great seats right on the first base line, and we all got to enjoy the new shorter T ride in to the game now that we're living in Newton Centre.

Some people are less than thrilled with the traffic consequences of the move, but I still think it's a net win, especially since I'm not one of the people trying to get here during rush hour in order to make it to the game on time ;-)

Tuesday, September 5, 2006

Moving Sucks

So, the process of moving into the new place continues.

The end of last week was basically totally consumed by helping Rob and Jess get all their crap out of their old apartment and into the new one. This was complicated somewhat by the fact that we couldn't actually move things into the third floor of the new place, because it was still in the process of being repainted. We finally finished getting the last of their stuff moved at like 11:00 on friday night, and there was much rejoicing...

Except that at that point we had simply managed to completely fill the first floor of the new place with stuff, to the point where you couldn't even sit down because all couches and chairs were completely surrounded by boxes.

On the bright side, the appointment with the cable guy went perfectly, he showed up on time, ran a cable into the room that needed one, and by 10:00 Friday morning we had cable, internet, and a phone line. I remain shocked.

Anyway, on Saturday morning we finally said the hell with it, and headed down to the Jersey shore to spend the weekend at Tracey's parents' place. Much fun was had by all, and I managed to kick the ass of the claw machines at the boardwalk arcade, coming home with a stuffed Sonic the Hedgehog, Stewie from The Family Guy, and three out of the five colors of stuffed M&Ms. I'm still bitter that I didn't get the last two of them...

Unfortunately, while I did take home a pile of stuffed animals, at some point during the weekend I appear to have lost my car keys. Hopefully they'll surface someplace Tracey can find them. At least I had a spare lying around.

Now we're back up in MA again, and the apartment is finally starting to take shape. It's still unclear if the third floor is open for business, but we've managed to start making a dent in the first floor pile of crap, to the point where you can now reach the TV and at least some of the chairs. Rob even managed to get his desk assembled, so I now have a place to work from during the day, at least until I manage to make a trip to IKEA and pick up my own...

Sunday, August 27, 2006


I walked into Newbury Comics today, and was shocked to see a DVD of Kicking and Screaming sitting in the new releases section. I've been waiting for this movie to come out on DVD for years, ever since I abandoned my VHS copy of it back at my fraternity house (along with my VCR for that matter) when I graduated from college.

For the curious, this isn't the totally worthless Will Ferrell movie from 2005 that stole the same title, it's the brilliant Noah Baumbach movie from 1995 about a group of friends that just graduated from college and has no idea what to do next. It's a fantastic movie, and if you haven't seen it you should definately pick up a copy now that it's finally available on DVD.

Personally, I'm just glad that I'll be able to subject Rob to it again, since it was so much fun making him watch it back in college ;-)

Friday, August 25, 2006

A Place to Work

In my morning bloglines reading I ran across a mention of Workspace, an interesting option for those of us who for one reason or another don't have a regular office. Sounds like a pretty good deal, I'd totally consider working afternoons from a place like that. Too bad I don't live in Vancouver...

Anyone know of a similar type place in the Boston area?

Wednesday, August 9, 2006

Mobile Typepad

Typepad has a mobile client for Series 60 phones like my nokia. I can't see myself typing any serious entries on a t9 keypad though, it's already driving me nuts on this one...

Tuesday, August 8, 2006

Thoughts on Java Development

I've been doing some Java development lately, mostly just for fun, but from time to time for work, and I've come to a few conclusions.

First, IDEA rocks. I really tried to give Eclipse a shot, and I really want to like it, but in the end it's just too slow for me. Heck, IDEA's faster and it's still verging on too slow, to the point that I occasionally revert to vi and ant. Outside of the speed question though, IDEA definately kicks some serious ass, I just love the way it points out problems I didn't even know were there. I've definately seen some weirdness with the way it complains about some perfectly valid Java 1.5 constructs, but all in all, I think it's worth the occasional backflip to work around that in exchange for the real problems it does point out.

Second, if you have to do any sort of multithreaded programming, in any language, but especially in Java, run to your nearest technical bookstore and pick up Java Concurrency in Practice. It's a fantastic book about the ins and outs of multithreaded programming in Java, and really comes in head and shoulders above any other book on multithreading that I've ever seen. Highly recommended.

Third, someone needs to explain to me what the appeal of Maven is. I just don't get it. Ant I can figure out, it works just fine, and aside from the XML bullshit I can certainly get along with it. Maven just seems to require me to bend my project into its image of what a project should look like (thanks for those LOVELY deep/directory/trees/that/go/on/forever even above and beyond the ones you get from Java in the first place!), and in return it will attempt to download all my dependencies and then fail half way through with some sort of network error. Thanks.

Finally, and this isn't because I'm interacting with it, but I just keep seeing it when browsing through the Java section of bookstores, how do these people take themselves seriously when their community actually makes use of a term like POJO. I mean come on people, you went and invented a special name for an OBJECT! It's a freaking object oriented language, it's composed almost entirely of objects, what does it say about the culture when you had to come up with a new name to market the practice of just using the fundamental abstraction provided by your language!

Anyway, it turns out I'm actually enjoying the Java work I've been doing lately. It's a pretty decent environment to work in, all things considered. I wouldn't want to live there all the time, but it's certainly a nice enough place to visit once in a while, if you stick to the less insane bits of it...

Tuesday, August 1, 2006

No Rain This Time!

So last night I went to the Red Sox/Indians game with Rob and Suzanne. It was a hell of a game, both team's pitching totally fell apart for the first half, then they managed to hold each other at 8:6 with the Indians in the lead. This held up until the bottom of the 9th, and all hope seemed lost until Ortiz managed to once again close things out with a 3 run homer to win it for the Red Sox.

This totally makes up for the game I missed due to rain earlier this year, and it's especially nice that they won because it means Rob and Suz won't proactively remove me from the list of people to bring to games when they have spare tickets. They're rather strict about the whole "avoiding bad luck" thing when it comes to the Red Sox ;-)

Monday, July 24, 2006


So I started this morning by waking up at like 6AM so I could stare at the ceiling and worry about my tutorial about using the Subversion libraries in your own code.

Fortunately, the tutorial actually went quite well. I had something like 30 people show up, and most of them managed to stay awake throughout most of the talk ;-)

Additionally, I actually had enough content to fill all three hours, almost exactly. Ideally I would have actually had slightly less stuff, since I ran about 5 minutes over, and it would have been good to stop a few minutes early to leave time for questions.

Most importantly though, it's over, and I can move on to worrying about my talks later in the week.

Post-tutorial I ran into Ugo Cei, who's blog I've read for some time. We grabbed lunch at the Red Robin near the convention center, which was a great way to wind down after the tutorial. I swear the entire convention was sitting in that place over lunch...

Right now I'm sitting in MJD's talk on Higher Order Perl. The high point so far was him going off on a rant about the correct plural of the word octopus, which was quite amusing. Other than that, not too much stuff I hadn't gotten out of his book (although the trick to bless a closure into an object is pretty slick, I don't recall seeing that before), but I have high hopes for the section about parsing at the end of the talk.

Anyway, back to paying attention...

Sunday, July 23, 2006

Bash + Readline + Sanity

So yesterday, in a futile attempt to convince Firefox,, Ubuntu, and a really large s5 presentation to work together without consuming ridiculous amounts of CPU I upgraded from Ubuntu Breezy to Ubuntu Dapper.

Naturally, tihs didn't actually fix anything of consequence, although it did give me a laptop that boots quite a bit faster (bonus!), and an X screen resolution control panel that is capable of controlling the resolution on more than one display (kind of slick).

Unfortunately, it broke my .inputrc, which sets up and down arrows to history-search-backward and hisory-search-forward respectively, and since I'm totally addicted to that feature I had to stop all productive work and find a way to fix it.

After flailing around hopelessly for a while, I came upon the /usr/share/doc/bash/inputrc.arrows file, which has various different ways to configure your arrow keys. Now just cut and pasting all of them into .inputrc didn't help much, well it did actually fix the problem I was working on, but it made me have to hit enter twice to do anything, which isn't really a step forward in my opinion. But after paring it down to just the basics, I found that the following worked:

set enable-keypad on
"\C-[OD" backward-char
"\C-[OC" forward-char
"\C-[OA" history-search-backward
"\C-[OB" history-search-forward

Previously I had gotten away with:

"\M-[A": history-search-backward
"\M-[B": history-search-forward
"\M-[C": forward-char
"\M-[D": backward-char

This worked on dozens of systems, and I still have no idea why it stopped working, but whatever...

Just figured I'd post it in case anyone else has the same problem, or, more likely, I have the same problem again and need to look up what I did to fix it ;-)

Thursday, July 13, 2006

The Housing Situation

So, despite Jessica's attempt to jinx us by posting about it on LiveJournal earlier today, we successfully managed to sign the lease on our new apartment tonight. It's incredibly cool, way nicer than any other places we looked at, and I can't wait to move in. There's a ton of room, it's near all sorts of stuff, and is just generally awesome.

Oh, and the bar that's just down the street from it is just too damn cool. We're totally going to rule their trivia night.

Anyway, now that we've settled that I just get to sit back and relax until September 1st when we move in.

Friday, July 7, 2006

XMPP/Jabber Fun

So just yesterday Paul and I were talking about the various options available for running your own Jabber server (short version, Wildfire and DJabberd appear to be the best options available, which you use probably depends on whether you want to extend it and if so whether you prefer to hack in Java or Perl), and then today the Livejournal guys announce their new Jabber support. It's pretty slick, if you're already a Livejournal user you automatically get a Jabber acount that's integrated with your existing Livejournal friends list (your mutual friends anyway, other friends show up as pending). Perhaps most importantly, server to server support works (although there are still some issues with regard to cross server buddy lists apparently), which means this will work just fine with other Jabber based systems (like Google Talk). The IM world continues to get more and more interesting. Wonder how long it'll take until one of the big three IM systems start supporting Jabber natively...

Monday, July 3, 2006

Railroad Bridge

As part of my ongoing attempt to actually get out and take more pictures I took a quick trip down to the Cape Cod Canal and got some shots of the railroad bridge at the south end.

The results are up on flickr.

It was actually a pretty lousy day down by the canal. Both windy and cloudy. I had planned on waiting around for dusk to get some shots of the bridge as it got dark, but there was no way that was going to happen.

Fortunately, there are few pictures of large metal objects like bridges that can't be made to look at least reasonably artistic by applying the "remove color" command in Photoshop ;-)

Sunday, July 2, 2006


A little over 300 pictures taken at the Onset fireworks last night, and about 10 that ended up looking decent enough to put on flickr ;-)

Things I've learned about photographing fireworks...

People keep standing up in front of you. What a pain. Maybe I need a taller tripod.

Auto focus totally doesn't work at all, although that's not entirely unexpected.

Tripods on the beach only sorta work. Need to find a better spot to shoot from next year.

I really could have used a hands free shutter release thingy. Again, maybe for next year.

Should have reset the focus part way through, it looked decent at the beginning, but a lot of the later shots looked blurry.

The smoke really does get in the way. It's important to get some good shots quickly, because by the end of the show the smoke will obscure most everything.

Anyway, here's the stuff that ended up looking halfway decent. Enjoy.

Friday, June 30, 2006

A New Milestone

I've hit a new milestone as a resident of Massachusetts, I now have a toothbrush at Rob and Jessica's place. Of course, this won't really be all that unusual for very long, since soon I'll actually be living here (once here is relocated to a 3 bedroom apartment), but still, a milestone none the less.

Sunday, June 25, 2006

Damn Rain

So my Dad and I were all set to go see the Red Sox crush the Phillies today. We even made it in to Fenway and had time to have a hot dog, and right at that point the game was cancelled due to rain. It had actually mostly stopped at that point, but the field was apparently saturated, and the weather reports said that it would rain again later...

The game was rescheduled for tomorrow, but I've been procrastinating on a whole bunch of stuff to the point where there's no conceivable way for me to find the time to go.

In other news, Rob, Jessica and I have actually started looking at apartments.

They visited one in Newton today that looks quite nice, great location, right near the T, good parking, etc. Unfortunately, it's a bit overpriced for what you get, and the laundry in the basement is coin-op, which is pretty lame. It's still on our list of potential places, but we're hoping we can find something better.

We're going to look at another place in Newton tomorrow, and another on Thursday, and hopefully we'll be able to set up an appointment to visit a promising place in Brighton later this week.

It's nice to actually be making progress on this stuff, I mean I like Cape Cod, but I'm really looking forward to living closer to civilization, and it'll be nice to have roomates around again.

Anyway, back to polishing up my OSCON tutorial...

Sunday, June 18, 2006

Too Many Presentations...

Since it's actually been really nice out this weekend, for the first time in several weeks, I had some halfway formed plans to, you know, go out and do something...

But that idea sort of fell appart when I realized that OSCON presentations are supposed to be in on the 26th (I'm not nearly brave enough to wait until the morning of the talk to write mine, unlike some people I know...), and I'd only barely begun work on mine. So instead of going out and having fun, I sat around and worked all weekend...

At the very least I'm making progress though. My APR talk is almost done (just need to write a few more examples), and my Subversion tutorial is showing signs of life. The only problem with that one is that I don't actually know how long a talk has to be in order to fill 3 hours (first person to say "3 hours long, of course" dies...), so I'm sort of playing it by ear. I've got a whole bunch of slides, and a lot of examples, some of which I've even written, so hopefully I'll be able to do a run-through later this week and find out if it actually has a chance of filling the time slot.

The Ruby talk's kinda sitting there waiting behind the Subversion one. I've got all the content for it lying around in various articles I've written, I just need to pull it together and get it into slide form. I'm pretty confident on that one though, I mean I've pulled together articles on the subject matter pretty quickly in the past, so I have no reason to believe I can't do the same for a conference presentation.

Anyway, the wonderful thing about deadlines is that this will all be over, one way or the other, by next week ;-)

Sunday, June 11, 2006

Any distance for a Concert

So Suz and I drove out to Troy yesterday for a Mike Doughty concert. A good time was had by all.

I was amused to see that while Troy Pub and Brewery is now Brown's Brewing Company it's still the same old place, and the new live music venue they put in next store is a heck of a nice place to see a show. Didn't get a chance to stop by Psi U though, since we got there just in time to grab dinner before the show, and we weren't about to spend the night in Troy afterwards.

As for the show, it was great. The opening act was pretty good, although I'd have liked to see them with their entire band (they kept joking about how they didn't have room in the car for anyone but the lead singer and keyboard player). Doughty and his band were fantastic, as expected. It was his birthday, so about halfway through the set his band brought out a cake with candles and the crowd sang happy birthday to him. The set list was mostly from Haughty Melodic, and was quite good, finishing up with their cover of The Gambler, and then coming back on stage to spend the last 7 minutes or so of his birthday on a short encore. As Ben had told me in the past, Doughty is clearly worth seeing in person, he puts on a great show.

Anyway, it was a great show, even with the long-ass drive out and back, and for everyone who bailed on going you missed out ;-)

Thursday, June 8, 2006

Kicking Off The Abdera Project

So over the past few days things have started to get going on the Abdera project.

For those who haven't heard of it, Abdera is a project undergoing incubation at the ASF with the goal of implementing the Atom Syndication Format (RFC 4287) and the Atom Publishing Protocol. It's starting off with a Java implementation of an Atom parser contributed by James Snell from IBM, and hopefully it will eventually expand to include client and server sides of the publishing protocol in Java, plus parser, client, and server implementations in other languages.

The mailing lists for Abdera were just set up a few days ago, and as soon as some paperwork makes its way through the system the initial code drop will be committed to the Subversion repository. It's a neat project, and I'm glad to be helping out with its incubation. Hopefully it'll even give me a chance to write a little bit of Java code, something I haven't done regularly in quite some time.

Oh, and for the curious, Abdera's name comes from the Greek city, which was the home of Democritus, the philosopher who created the theory of Atomism.

Wednesday, June 7, 2006

Mailing List Moderation

So maybe its just me, but if you're trying to run an open source project, something that basically lives and dies by random people showing up on its mailing list and making contributions, you'd actually want to go out of your way to make sure it's easy.

When I try and post a mail to your mailing list, and I get a reply back saying I have to subscribe to post, that's a huge turn off. I mean hell, in this case, I was actually subscribed, just under my main email address, not my gmail address. Luckily, I happened to know the mailing list software this list was using, so I knew how to work around it, if I hadn't then I probably would have given up after about 30 seconds and gone and done something else.

Any time someone trying to contribute gives up and goes and does something else, you lose. You lose that contribution, and you lose out on any future contributions that person might have made. Sure, sometimes that person's an idiot, and would be more trouble than they're worth, but sometimes it's the next huge contributor whos participation turns into a big win for the project, but you never know if they give up after they fail to send that first mail.

I mean if you can't get someone to volunteer to moderate your list, maybe you should reconsider the need for the mailing list in the first place...

Monday, June 5, 2006

ETL 0.2.0 Release

Earlier today I tagged and released ETL 0.2.0. Among the many changes and new features are:

  • Addition of a Data Definition Language, for describing sets of variables to pass to a template.
  • Templates can now include other templates.
  • Templates can now define macros.
  • There are now shorthands for printing out variables ([%=) and stripping whitespace from before ([%-) or after (-%]) a directive.
  • Basic arithmatic expressions are now supported.
  • You can now loop over numeric ranges in templates.

For the full list of changes, see the CHANGES file in the release tarball, or the Subversion commit logs.

The release tarball is available from the download page of our new website:

As always, please send bug reports, feature requests, and feedback to the development list,

Tuesday, May 30, 2006

self.location = Place("Onset, MA")

I think Rob did a better job describing our trip across the country than I ever could, so I'll just let you read his version.

I'm staying at my parent's place on Cape Cod now, so assuming there's enough advance notice that I have time to get there I'm now officially on the lookout for amusing things to do in the greater Boston area. Alternatively, if anyone's looking to hang out here at the beach, just let me know, I have no plans for most of the summer, so we can probably work something out ;-)

Today I set up my temporary office, and read some email, but I was mostly either recovering from the weekend's insanity and unpacking. Tomorrow I officially get to find out how this whole "working remotely" thing works. I mean I've done the "work from home" thing before, but that's always had the safety net of "I'll talk to you about it the next time we're both in the office", which is really less useful when the next time I'll be in the office is two months away...

Sunday, May 21, 2006

5 Days To Go

It's coming down to the wire on this move thing, so I spent much of the weekend packing. I discovered a few things.

First, I hate packing. This is not a surprise.

Second, I underestimated by a long shot how many small boxes I needed. The vast majority of the stuff I need to pack consists of books, and anything other than the smallest boxes I bought end up being way too heavy if you fill them with books. I think I've gotten all the books done now, but it sure would have been nice to have some small boxes for other things...

Anyway, I've finished most of the easy parts (books, DVDs, CDs), the rest of the week will consist of the less fun parts (computers, clothing, excavation of the massive pile of crap that's sitting in my bedroom).

5 days to go!

Saturday, May 13, 2006

ETL Website and Mailing List

I've been spending some time working on ETL lately, and it's inching up on a release. It's not quite there, but it seemed close enough that it was time to move it out from behind my cable modem and into the public view. So thanks to Paul Querna we now have a public subversion repository, a web site and a mailing list. There are still a bunch of broken links on the website, those will get filled in with content as we get around to it, but it's enough info to get started.

Anyway, enough screwing around with moving subversion repositories and writing web sites, time to get back to finishing up the last few features before the next release.

Oh, and for those of you wondering about the domain name, that's totally Paul's fault ;-)

Monday, May 1, 2006

On Startups

Paul Graham's latest article is up, and as usual it's worth reading. It's based on a talk I saw him give at the Y Combinator Startup School this weekend, and he talks about the hardest lessons for startup founders to learn. It's good stuff, I'll have to keep it in mind if I ever get around to doing the startup thing.

Speaking of startup school, the thing that really struck me about it was how the various speakers disagreed on a lot of the points.

Joe Kraus (formerly of Excite, and now Jotspot) was pointing out the advantage of being able to claim that Jotspot is a "Wiki Company", because it lets you ride the wave of hype around wikis these days. On the other hand, Ann Winblad stressed how you need to redefine the area you're competing in so that all your competitors are being measured against your new yardstick.

Paul Graham, among others, stressed that money was not the most important thing, and that if enough people love your product the money will follow, while Om Malik came right out and said that money was the most important thing. Kraus also weighed in on that side of the money issue, pointing out that if you go beta without your business model then you're not really in beta, people will use lots of thing when they're free, but you'll never know for sure if they'll pay for it until you make them.

It wasn't all disagreements though. Everyone seemed to agree that you can start a company with far less money these days than you've ever been able to before, and everyone stressed exactly how difficult the entire startup experience is.

Anyway, it was an interesting day of talks, even if I had to hear Mark talk for half an hour about the same stuff I'd already heard a dozen times over lunch while I worked at Bloglines ;-)

Honestly, the whole thing did make me wish I was doing the startup thing, at least a little bit. I'm not going to, of course, my job is too damn cool to give up right now, but who knows, maybe some day I'll have a killer idea and give it a shot. It could happen...

Packing Progress, Part 1

So this weekend, among other things, I managed to clean out my closet (which sounds much more impressive before you realize that all the stuff I cleaned out of my closet is now on my bedroom floor) and pack one bookcase full of books. From this point on nobody is to ask me any questions that require me to refer to a technical book, because virtually all of my technical books now require some moving of boxes to access, and we all know how much I hate moving boxes, especially boxes full of books...

Wednesday, April 26, 2006

Another License Plate

Seen on the way to work today: NACL H20

California certainly has its share of geeky license plates...


There's probably a number of people out there who I haven't told in person, but we're inching up on the actual date in question, so I suppose I might as well just put it up here for the world to see, especially since I told a bunch of people at work yesterday, so it's likely working its way through the company grapevine as we speak.

It's been a great year out here in California, but I've come to the conclusion that I'm more of an east coast person, for a number of reasons I'd be happy to share offline if anyone's interested. As a result, I'm moving back home at the end of next month. I'll be living in Massachusetts, first spending a few months at my parent's house on Cape Cod (it's a rough life, I know) and then moving to Boston with a bunch of friends from RPI. Fortunately, I work for a wonderful and understanding company who is totally ok with me working remotely, so that's what I'm going to do.

The specific travel plans are that I'm going to be throwing everything I own into a little 6x7x8 shipping container on May 26th and having it driven from here to Massachusetts. Around the same time I'll be picking Rob up from the San Jose airport so we can have one more ill advised nonstop trip across the country. I have assured Rob that he will be back home by Tuesday morning (that weekend is Memorial Day, so we get Monday off, which is a big part of scheduling the move for that weekend) so he won't have to miss any work. Google Maps claims we can make the drive in about 2.5 days worth of driving, but we'll just have to see how that plan goes...

So if anyone's up for helping me move the few large (but not heavy really, just bulky it turns out) items of furniture I've got from my apartment to the moving company's terminal sometime on Friday May 26th please let me know. Volunteers will be rewarded with disgarded computer equipment and whatever else I have lying around that I don't want to bring with me to the other side of the country.

Tuesday, April 25, 2006

Camera Prices

So someone explain to me why all decent camera gear has a list price that's astronomical, but is actually sold for far less? I mean while I think it's nice that the Canon EOS 5D sells for just 3 grand instead of the 5 grand it lists at, but if every store on the planet sells it for 3 grand, why not just have it list at 3 grand?

(Yes, if you hadn't guessed, I've been spending far too much time looking at cameras and lenses and other assorted stuff recently, spending several days watching coworkers with way too many toys take pictures at the engineering offsite will do that to you...)

Too Much Junk Mail?

So yesterday I managed to burn out the motor on my shredder while working my way through the huge pile of junk mail I have sitting around waiting to be shredded.

The real question here, obviously, is if this implies that I get too much junk mail, that I let the junk mail pile up for too long before shredding it, or if I just should have bought a less bargain basement shredder...

Monday, April 17, 2006

The Downside To My Irish Heritage

So for the record, the next time I go to a baseball game someone needs to remind me that baseball games are played outside, in the sun.

I burn when I go outside in the sun. A lot.

Not that I didn't have fun at the Oakland/Texas game with Justin on Sunday, I mean we had great seats and it was a hell of a game, but the sunburn part is a a bit annoying.

This is clearly my punishment for being happy that I went to the Sunday game, where it was nice out, as opposed to the Saturday game where Paul and Justin got rained on until the 5th inning...

Thursday, April 13, 2006

OSCON 2006 Schedule Up

Looks like O'Reilly posted the schedule for this year's OSCON.

I'll be giving a tutorial on monday moring (ick, 8:30 AM, at least I'll be getting it out of the way), and speaking on wednesday (5:20 PM - 6:05 PM) and thursday (1:45 PM - 2:30 PM).

So far, the only thing I'm annoyed about with regard to the schedule is that my tutorial conflicts with Theo Schlossnagle's Scalable Internet Architectures, which would have been nice to see. Other that that I don't seem to conflict with anything I'd been hoping to see, which is a nice change of pace, usually it seems like everything interesting happens to fall right when I'm giving a talk.

Anyway, go register, it's going to be a heck of a good time!

Monday, April 10, 2006

iPod Problems

So late last night I bought an album off the iTunes music store and hooked up my iPod to sync it across to listen to in the morning on the way to work. For no adequately explained reason it proceeded to hang transfering the first song, spinning beachball of death and all that. After pulling it out of the dock and manually resetting it I tried again, and iTunes informed me that I needed to do a hard reset in the iPod Update application. I tried that, and it gave me the beachball again. Now it refuses to even mount the iPod.

Oddly enough, it still plays music just fine, although anything that tries to write to it is just totally hosed. This will no doubt get more and more annoying as time goes on.

Anyone got any ideas before I cave and buy a new one?

Sunday, April 9, 2006

Fun with Duct Tape

So what really cracks me up about this howtoon is that back in college Rob actually did it for a halloween costume, minus the "cut the duct tape covered clothes off and use them for something" bit anyway. If I recall correctly, he had quite a bit of trouble sitting down, because the duct tape covering his clothing made him pretty much unable to bend at the waist...

You know, it never would have occurred to me that the remnants of Rob's halloween costume could be useful for something. That's why they create howtoons, and I just laugh at the fact that Rob can't sit down ;-)

Only in Silicon Valley

I was driving into a parking lot today, and the car driving out of it had the license plate "GZIP".

Only in Silicon Valley...

Wednesday, March 29, 2006

OSCON 2006

Well, it looks like I'll be making my yearly pilgrimage to Portland again in July. I was lucky enough to get a number of my proposals accepted for this year's OSCON. In fact, I really wasn't expecting quite that many of them to be picked, so I had to turn one down

In the end, it looks like I'll be doing a 3 hour tutorial (my first) on "Adding Version Control To Your Application With Subversion", and two 45 minute talks, one on "Writing Portable C Code With APR" and another on "Extending Ruby With C".

I'm not nervous about the two talks, I can talk for 45 minutes about APR in my sleep, and I've written enough about Ruby extensions to be sure that I won't have any trouble coming up with enough interesting things to fill the time.

The tutorial is another story alltogether though. I'm pretty much terrified about that one. In theory I know I've got enough content to go around, but at the same time it's still THREE FREAKING HOURS of time to fill. I'm sure I'll be able to come up with enough stuff to talk about, but I'm definately nervous about getting up in front of a bunch of people and talking for that long, I'm just not sure I'll be able to stay interesting, even to myself.

Anyway, I suppose I've got some presentations to work on...

Tuesday, March 21, 2006


I've been reading through the Amazon S3 developer documentation tonight, and I've gotta say I'm quite impressed. This is a perfect application for a REST API, and they sure seem to have nailed it. I fully expect that as the available APIs built on top of it mature it'll start getting built into all sorts of interesting applications.

I'd love to see a library for using this from Mozilla plugins. Seems tailor made for persistantly storing data that needs to be accessible from multiple machines, If-Modified-Since and ETags would let you avoid wasting bandwidth downloading stuff you've already seen, and Mozilla's already got all the infrastructure you'd need to do the http-fu.

The other main application I'm seeing for this is encrypted offsite backups for people who are way too lazy to maintain their own storage. Fortunately, it looks like Brackup has that use case covered.

Monday, March 20, 2006

Blast from the Past

This year there are a number of friends of mine who are turning 30. As a result, we decided a while back that there needed to be a party. There were all sorts of grandiose plans of what to do, but in the end we finally just decided to go back to Troy and hang out for a weekend.

So on thursday night I flew out to Boston (it's actually cheaper to fly to Boston from San Jose than to fly to Albany from San Jose), crashed at my parent's place for a while, and then hooked up with James and Rob and drove up to Troy.

It was a wonderful trip back down memory lane. A few of the more memorable moments:

Not 5 minutes out the door of James and Rochelle's house Rob's car blows a tire, then when trying to remove it James manages to bend the wrench. It was seriously right out of one of our fun filled cross country road trips, although this time Rochelle was able to drive down and pick us up, which is quite a bit nicer than waiting for triple A.

Emily decided that in honor of St. Patrick's day it was necessary to paint the dining room of the house green. Very green.

A trip to crossgates on saturday for no really good reason, other than the lack of anything particularly exciting to do at the house.

We confirmed, once again, that Minh really shouldn't be allowed near the goldschlager, at least not that early in the evening anyway. I hope he got his clothes out of the freezer before he went home...

A number of remarkable appearances were put in by people who aren't usually around, and they were all in rare form. Greg R. making out various people he probably shouldn't be. Maloney proving that he still remembers all the words to the Humpty Dance. Jessica leading the crowd in doing the Electric Slide to NIN's Closer. James P. sleeping in the closet, which was probably the most comfortable place available in retrospect. Rob collecting a small crowd of antisocial people out on the front porch, despite the fact that it was incredibly cold out.

As Cara said, it was a remarkably accurate recreation of her freshman year, sans drama and generally a bit more fun for everyone.

So if you didn't make it out, you missed a great time. You can see some of the better pictures I took in this flickr set, although I did remove some of the less tasteful ones ;-)

Ready For My Closeup

So one of the things I've been doing at $WORK is helping some NetBeans engineers at Sun with their work on a NetBeans Subversion plugin. It's been going on for a while now, with my participation being mostly limited to answering questions about Subversion, looking at their prototypes from the point of view of an experienced Subversion user, and just generally trying to help them make their Subversion integration just as cool as their CVS integration is now.

Anyway, a few weeks ago I stopped by the Sun Santa Clara campus and they interviewed me for the Sun Developer Channel. You can see the video here, my part starts about 20 minutes in. The whole experience was a lot of fun (we did 4 takes, it's hard to have the same conversation 4 times in a row!), and I'd just like to thank the Sun Developer Network crew from inviting me in.

Wednesday, March 15, 2006

DynamicForward, Where Have You Been All My Life?

So I just recently discovered the DynamicForward option for openssh, and man, I've gotta tell you, it's just about the coolest thing ever. I've been using ssh to forward specific ports practically forever, but this option starts up a full fledged SOCKS proxy, so you can point Firefox at it and it'll let you do arbitrary HTTP requests through your tunnel, not to mention all the other applications that work with SOCKS proxies.

Just run something like ssh -o 'DynamicForward 1080' and you'll get your SOCKS proxy listening on port 1080 on your local machine.

Now that's cool, but combine it with Firefox's PAC support for dynamically configuring proxies and you're really cooking. You see, the regular proxy settings in Firefox just let you set your proxy and exclude a list of URLs if you're so inclined. That's nice, but what I really want is for a specific set of URLs (say, the internal servers on a remote network accessible only via ssh) to be proxied but everything else should use my direct connection to the internet.

First, we write a PAC file, which is just a text file that contains a single Javascript function:

function FindProxyForURL(url, host)
if (dnsDomainIs(host, "")) {
return "SOCKS localhost:1080; DIRECT";
} else {
return "DIRECT";

Then you stick it up on a web server someplace and set the URL as your Automatic Proxy Configuration URL in your Firefox Connection Settings. From then on every time you try to connect to a host in * it'll go through the proxy (or try to go directly via the internet if the proxy doesn't work), and everything else just uses your local internet connection.

There are a bunch of other interesting and useful functions like dnsDomainIs() that you can make use of in your implementation of FindProxyForURL(), just take a look at the docs.

If you want to confirm that the things you want to go through the proxy are doing so, just start up the ssh tunnel with the -v option and you'll get debug output every time a new proxy connection is established.

I seriously cannot believe that all this functionality was just sitting there in tools I literally use every day and I never knew about it until now. No more screwing around with /etc/hosts and port forwarding for me!

Interesting Developments

Looks like Theo is looking for people to help with his latest project, a Group Communication System, like Spread, but with all the annoying bits fixed.

His list of goals looks encouraging, practically a laundry list of everything I hated about Tib/Rv back when I had to deal with it. Plus, Theo's one of those scary-smart people who's disturbingly good at most things, so if he's working on it I give it pretty good odds of kicking some serious ass.

Here's to hoping that his post pulls some contributors out of the woodwork. It would make total sense for people to work on this, it's the kind of tool that can be applied to practically any system, and the existing ones out there do have serious problems, either in functionality, reliability, licensing/cost, or most often all of the above.

Sunday, March 12, 2006

Keyboard Memory

It's disturbing how often I find myself hitting the "y" key when I'm done looking at something these days, six months of reading the majority of my email via gmail has gotten me totally trained to hit that key when I'm finished with something. It doesn't even have to be email anymore, I just caught myself doing it on craigslist for crying out loud...

Saturday, March 11, 2006

Peeking Under The Abstractions

One of the things I've been doing at $WORK lately is hacking away on atomic renames for Subversion. You see, at the moment the Subversion filesystem doesn't have an actual "rename" operation, when you run 'svn move' you actually get the equivalent of having done a 'svn copy' followed by a 'svn delete'. Back in the day this apparently seemed like a good idea, but in retrospect it turns out that it's actually important to be able to tell the difference between "I moved this thing" and "I copied this thing and I happen to have deleted the original in the same revision".

Unfortunately, it's nowhere near as simple as one might think to make the Subversion filesystem support renames. You run into all sorts of sneaky little problems, and it's not entirely clear how to resolve them. We've got a plan, but all the ramifications of the various ideas still need to be explored and fleshed out.

On top of that, it turns out that there's a pretty limited number of people who can do this sort of work. It requires a bunch of low level knowledge of how the Subversion filesystem works, and while there are a number of people who know enough to do it, most of them are off busy with other things.

As a result I've been digging into it myself, and I'll be the first to admit that I don't have anywhere near the background necessary, at least not yet. I mean I know in theory how the filesystem works, but once you get down and actually start messing with the code that implements the thing you're diving through several layers of abstraction and getting far enough into the implementation details that it's often difficult to tell what's going on at the higher levels by looking at the lower level code, it's all berkeley db tables filled with serialized objects that at first glance don't have a while lot to do with the higher level concepts they represent.

Adapting to coding in this new environment doesn't really play nicely with the fact that it's not really totally clear what the new code should be doing, let along how it should be doing it...

For the first few days I didn't make a whole lot of progress. The actual low level svn_fs_move operation had already been implemented, but there were (and are, for that matter) still a number of places in the code that don't work correctly in the face of moves. For my first task I was working on making the history tracing functions work properly. I spent several hours on two consecutive days tracing through the code, adding printfs here and there, and generally getting awfully confused about why my changes were not fixing things. Then I spent several hours staring at documentation, looking at berkeley db dumps from filesystems created during the tests I'd written, and finally after all that I was able to go back and write some code that almost worked. It's not perfect, and I've had to revise it twice already to correct problems that became clear only later, but it's definately progress, and that's something.

It's as if I spent the first couple of days walking around in the dark, bumping into things. Finally, after a few bumps and bruises I've been able to basically figure out where all the furniture is, at least enough to make my way through it without tripping over things too often.

The whole thing has definately been an eye opening experience though, pulling back those levels of abstraction that separate you from the details of how things work and actually having to tweak the parts of the system that you'd previously been able to just take for granted. I mean don't get me wrong, I'm enjoying every minute of it, but let's just say I've got a whole new respect for the people who made this stuff work, cause it's not trivial stuff, not even close to it.

Typing Lessons

So I've made my semi-annual switch from vi to emacs, and as a result I've been making way more than the usual number of typos all week long. I find it worthwhile to switch back and forth every now and then, just to keep my skills sharp, and as much as I like the simplicity of vi there is something to be said for the power of emacs.

On top of that, I've also switched my desktop setup at home around a bit. In an attempt to keep from staring at the computer ALL the time, I've hooked the laptop up to the LCD display, giving me a hell of a lot of screen real estate, but also serving to keep things so entrenched in wires that I'm unlikely to get motivated enough to take it into the living room where it can distract me while I'm consuming the latest episode of BSG or Lost or whatever...

Oddly enough, the only keyboard I had lying around to use was a Das Keyboard I ordered on a whim a few months ago. It turns out to be a very nice keyboard (feels a lot like those old IBM keyboards that sound like a machine gun when you get a decent touch typist on them, but a bit quieter), although the lack of any markings on the keys combined with the switch to emacs has certainly been screwing with my productivity a little bit.

On the bright side though, it is giving me a hell of a refresher course in typing without looking at the keys. It's remarkable how many things I never really learned to touch type (numbers and special characters come to mind) that I use constantly, but necessity is a great motivation, so I am learning again...

Monday, February 27, 2006

You Might Be A Winner

So a few months back, I got a random email from someone at saying that I had won a contest they were holding, and the prize was a copy of "Smofe and Smang", by Mike Doughty.

Now, I didn't actually remember entering a contest, but I did buy a t-shirt from them a while back, so I figured maybe I had entered and just forgotten about it. Anyway, I went on with my life, and about a month later I got another email from the asking for a mailing address to send it to. I replied, and forgot about it again. Up until they asked for an address I sort of figured it was a mistake or something.

Anyway, it showed up in the mail today, so I guess the whole thing really was legit.

It's pretty amusing, this is actually the first stuff by Doughty I ever heard, but I was never able to buy it because it hasn't been available for sale in years. Nice to finally have the actual album, considering that I've been listening to the mp3s since I was first introduced to his music by Ben ;-)

Sunday, February 26, 2006

Data Center Fun

So Paul, Justin, and I took a trip out to the colocation site that holds a bunch of the ASF servers today. We had to replace a failed hard drive in minotaur, the machine that hosts, do some operating system upgrades/installs for a few other systems, and a variety of other tweaks that required physical access to the machines.

Anyway, since I'm making an effort to actually take pictures these days, there is some photographic evidence on my Flickr account. Enjoy.

Oh, and predictably it appears that the serial console cable on the machine I installed Ubuntu on was jostled a bit as we were closing things up, cause I can't get into it now. And sshd wasn't installed as part of the default install, so now we can't get into it. Great. Looks like somebody's gonna be making another trip out there soon...

Saturday, February 25, 2006

ETL 0.1.0 Release

So a while back I was playing around with a templating language based on APR. I've still been playing with it, off and on, and it's finally ready for a new release.

I've made a bunch of changes since the last version, including renaming it from "APR-Template" to "ETL" since this isn't actually a part of the APR project, switching from a hand rolled lexer and parser to a lexer based on re2c and a parser based on lemon, and the addition of some new features, like filters to html/xml/url encode output. This version also handles utf8 templates correctly, which is a nice bonus we got as part of the switch to re2c.

Note that from the users point of view, the fact that I use re2c and lemon is totally transparent, they generate regular old C code, which is shipped as part of the release tarball, so the transition from the old lexer/parser to the new one is purely a developer visible thing, other than the fact that the new way of doing things makes it way easier to add new features ;-)

It's still lacking a number of features, but it's far enough along that it can be used for basic tasks, and the groundwork is there for finishing up the remaining features I want to add.

Anyway, if you're looking for a template language to embed into your Apache HTTPD module or other APR based application, feel free to grab it at Feedback, as always, is more than welcome.

Sunday, February 19, 2006


Some friends were in town this weekend, and since they're into fish we went to the Monterey Bay Aquarium. If you ever have the chance to go I absolutely recommend it. Even with the swarms of annoying kids you get at that kind of place on a three day weekend it was exceptionally cool.

I took a bunch of pictures, but unfortunately I'm out of practice enough that most of them kinda sucked. White balance way off, a little blurry, etc. I did get a few nice ones in one of the jellyfish tanks though, and I figure that's as good an excuse as any to actually use the Flickr pro account that Rob gave me oh, about a year ago.

Yes, I clearly need to spend more time taking pictures if all I have that's worth posting to my Flickr account are some shots from 4th of July two years ago and three pictures of jellyfish from this weekend. I'll have to see what I can do about that, both by digging through my iPhoto archive to see what's worthwhile in there and actually getting out and taking some pictures from time to time.

Monday, February 6, 2006

Kick Ass!

So a friend of mine just showed me what his startup has been working on, and man is it cool. I got in on the private beta, and let me tell you, they're going to change everything.

Sunday, February 5, 2006

Subversion Upgrades

So I rolled Subversion 1.3.x out on last night. So far so good, everything seems to be working fine, and the benefits of the new code are already quite clear in some cases. For example, you can now run 'svn diff -r 10:11' and it'll actually return an answer quite quickly, where previously it would spend forever and a day tracing back through history trying to comfirm that your target path hadn't moved in the revisions between HEAD and your targets...

The next step will be turning on Operational Logging for mod_dav_svn, so we can get some easy to parse log info about what exactly people are doing with the ASF Subversion repositories. I'm quite curious about this, so hopefully I'll be able to get some nice statistics on how our Subversion traffic looks over the course of a week or so.

Sunday, January 15, 2006

Making Progress on mod_proxy_fcgi

So over the past few weeks there's been substantial progress made on mod_proxy_fcgi. It's now progressed to the point where it implements all of the FastCGI protocol, and in general is approaching basic levels of usefulness. There are still a lot of things that need to be done (see the TODO list I posted to for details), but we're a lot further along than we were the last time I posted about it.

Note that all the current functionality assumes that you're running your FastCGI backend processes manually, and having them listen on a TCP socket, as opposed to the more traditional way of having the server start up a number of FastCGI processes itself, which communicate with the httpd server via a pipe or unix domain socket. Support for this type of setup will come eventually, once the execd work that Colm is doing gets a little further along.

Unfortunately, I've spent most of this weekend watching season 1 and 2 of Battlestar Galactica instead of using my recently gained httpd commit access to push any of this stuff further towards usefulness, but who knows, I may get a little more motivated today, you never know...