Sunday, May 11, 2008

The Death March in Greater Detail

It's been a couple weeks since I referenced the death march in this space and about a week and a half since I gave a brief update.

I didn't get much of a break after that initial release because the project wasn't done. What we had accomplished on 4/30 was the first of three releases.

First, a little background on big picture. The original blogging application, as developed by the outsourced developers, ran on a single server. The separation of application, business, and presentation logic was awful. A number of modules that were responsible for talking to the database also emitted HTML. When things are that tightly integrated, you lose a lot of leeway in customization, the kind of customization that potential customers have been clamoring for.

To make that kind of customization possible, we developed a template language, a way of describing where things should appear on a page, and how they should look. I came up with the syntax and created a processor based on XSLT, an XML transformation language, for turning the template into bona fide HTML.

With a processor in place, I had to go rework the old database querying code so the HTML emitting stuff was replaced with cleaner interfaces and then wrap that into a nice module that collected the data and presented it to the template -> HTML processor.

Templates were designed to be easily changeable, but we realized that not everyone would want to hand-edit XML files. So my boss worked on a JavaScript user interface that would allow a user to add, configure, rearrange, or remove elements from a page. The user interface wasn't capable of working directly with the full-blown XML files, so I was given the task of creating server-side functionality that would edit the files on behalf of the user interface. Much of that new functionality was ironed out in early April, so I saw my to-do list grow by leaps and bounds.

The software engineer we hired on in late February was responsible for writing a program that would generate the new templates for existing networks. He was also responsible for wiring in the customization interface into the administrator pages that create new blogs.

Phase I was the switchover to a new page rendering system, using a collection of page templates generated from settings in the old system. Phase II took place on 5/6, introducing a beta release of a user friendly template editor. It was not feature complete, lacking support for removing and reordering elements on a page. Phase III on 5/8 rolled out the last two missing features.

The editor still has some bugs, which should get ironed out with a Wednesday release. In addition, templates will get patched to repair a glitch in the original migration script. The glitch was caused by my coworker violating a key portion of the template language specification. I took ownership and wrote the fix because he wasn't clear on how best to remedy the problem. We also will migrate the low level storage of templates from file system to a relational database, which is in the other developer's tray.

I've held out pretty well through all of this, not only in fixing issues with my own code, but helping coworkers troubleshoot integration issues. On 4/29, the day before we went live with Phase I, my boss called me into the office in private and said he was pleased with the effort I had put into the project and was impressed with how much I had learned. He said that while the group would celebrate as a whole when the product went live, he wanted to give me something to show his appreciation. He handed me a gift card for a restaurant he heard me mention a few days back, a brewpub that I was especially fond of.

This past Thursday, the CEO awarded the group with a very nice gift -- Krups Beertender B95. It chills 5 liter kegs of Heineken, and it includes a display for temperature and supply level. We fired it up Thursday afternoon and sampled the first glasses during an in-office happy hour on Friday afternoon. True to geeky form, I started a temperature measurement table on a whiteboard and then generated a graph of the cooling curve.

When my boss, a geek himself, saw the graph and the regression formula for estimated the cooling time (13 hours to get to 36 oF), he said that made his day.

Once we wrap up the bug fix release this Tuesday, we'll move on to the next project, which should be easier to break up into smaller pieces so that we avoid this kind of a crunch cycle. We also have an interview with a very promising candidate from the Chicago area on Monday afternoon, so we'll have more help on the way.
blog comments powered by Disqus