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...
Sunday, March 12, 2006
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 musictoday.com 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 http://svn.apache.org/, 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 http://electricjellyfish.net/garrett/etl/etl-0.1.0.tar.gz. Feedback, as always, is more than welcome.
Sunday, February 19, 2006
Jellyfish!
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 http://svn.apache.org/ 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 http://svn.apache.org/repos/asf' 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 dev@httpd.apache.org 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...