My Techie Wife

It may not be original anymore, but I set up a weblog for my wife Julianne. She’s always sending email out to all our friends with updates about our son, her job and other general goings-on, so I thought writing a weblog would be a good way for her to keep everyone up to date. She picked the name TechieWife in order to inspire the wives of techno-geeks everywhere. 😄

I noticed she got the address of my weblog wrong in her inaugural entry. What’s funny is that my friend Chris Church (no weblog yet) is so lazy that he bought devhawk.com and set it to redirect to devhawk.net. Now he can use IE’s ctrl-enter shortcut key to get to my weblog.

Minor DasBlog Bugfix

A few months ago, one of my first enhancements I made to dasBlog was to change the way the CommentView page is rendered. Previously, it was rendered using the item template. However, I don’t include the entry post date in the item template, since it’s in big bold letters on the day template. So I changed the CommentView to render the single entry being displayed using the day template. This makes the CommentView page consistent with the Permalink page, which also renders the single entry using the day template.

However, when I made the change, I introduced a bug that shipped as part of the v1.4 release. When I called ProcessDayTemplate, I passed in the entry’s CreatedUtc time as the day to render parameter. This caused an issue where the CommentView would not render the entry when the day of the CreatedUtc did not equal the time-zone adjusted created date. For example, if I posted a new entry at 8pm PST, that is 4am UTC the following day. So if I ask to render the UTC based date, the time-zone adjusted entry does not fall on that day, and thus doesn’t render. So I changed the call to ProcessDayTemplate to use the entry’s CreatedLocalTime property instead of the CreatedUtc. I tested, all seemed good, so I submitted the fix, which made it into the v1.5 release.

Today, I noticed a thread on the dasBlog GDN workspace indicating the bug was still there. A little bit of tracking down and I discovered that what the server thinks is the local time does not always match what dasBlog thinks the local time is. CreatedLocalTime is based on the server local time. If you run your server in a different time zone than dasBlog is configured for, you run into basically the same issue as before. Of course, since I run my dev server in the same timezone as dasBlog, I never noticed it. However, since my production server is on the east coast and I’m on the west coast, the issue showed up on my production machine.

I posted a code fix over on the GDN Message Board Thread. Basically, I calculate the correct time based off the dasBlog configured time zone. Seems to have fixed the problem on my dev and production machines. (I’m running my dev machine in a different time zone now). Let me know if you run into any more issues.

Now With More Power

If you’re reading this, you’ve found the new-and-improved DevHawk. I’ve changed both web hosts and blogging programs to deliver an improved blogging experience for all. Well, at least an improved blogging experience for me. You, you’re on your own.

I wrote two months ago that I was planning a switch to dasBlog. I helped out with a few features (so far just CDF support and comment deletion, but I’m working on story support). Actually, it’s kinda cool how dasBlog v1.5 shipped as I was moving servers. I did have to hold of on blogging for a couple of weeks, but in the end, I think it will be worth it. Now I get all the cool stuff I was too lazy to add to my own blog engine like comments, search and a web-based admin interface.

I am running a slightly non-standard version of dasBlog. If you read my site (as opposed to my RSS feed), you’ll see I have a little comment that I call a tagline associated with each entry. I got the idea from Matt Williams, who uses to record where he was when he made that entry. I got bored with just putting my location in there, so I started making snippy comments instead. I submitted the Tagline code to dasBlog, but Clemens rejected it on the grounds that it pretty much a Harry-only feature.

Since I haven’t got story support figured out, I’m just using static files for my articles, projects and presentations. DasBlog has a feature called FormatPage for rendering static content inline with the weblog template. Combined with the built-in URL rewriting engine, I was able to create simple URLs for my static content. Unfortunately, I still had to break all my old urls. And I’ll (probably) break them again when I get story support figured out.

Anyway, now that my new site is live, we can return to normal programming.

Nautilus

Randy blogged an open position on his team: Nautilus. I saw a Nautilus demo today. To quote from the job details:

“[W]e are building a complete developer tool and are taking a clean slate approach to defining development tool architecture and user experience.

The Matrix Rethought

I took my wife to see Matrix Revolutions, even though I saw it Monday. Still liked it, though the second viewing really helped me figure out what I didn’t like about Reloaded and Revolutions. I can sum it up in two words: The Merovingian. He represents everything thematically that was added in the second two movies that both didn’t work and wasn’t there in the original Matrix.

Note: I’m guessing everyone who’s going to see Revolutions has seen it by now. So there are some spoilers below. If you haven’t seen it and want to remain blissfully unaware, stop reading now.

The themes of Control and Choice were very strongly represented in the original Matrix. Choice was directly represented (red pill vs. blue pill), control somewhat less so, but still there. Certainly, there was enough material in those themes for two more movies. Choice is stated bluntly in the climatic battle between Neo and Smith when Smith asks Neo why he continues to fight and Neo replies “Because I choose to”. A little corny and heavy handed to be sure, but still consistent with the original theme. Smith’s relation to the theme of control (or lack thereof) is also stated bluntly by Neo: “The program Smith has grown beyond your control”. Choice and Control come up over and over again: The Architect’s unbalanced equations, Commander Lock’s defenses, Neo returning to the Matrix rather than Source, Niobe going after the Nebuchanezar, etc. Pretty much every character has to deal with Choice and Control to some degree.

However, the Brothers Wachowski apparently decided that wasn’t enough, so they added all the stuff about “exiled” programs. Programs hacking programs, choosing exile over deletion, falling in love and having daughter programs, etc. Thematically, I don’t see the connection to the Choice and Control elements introduced in the first movie. There were only a few machine characters in the original movie: the Agents and the Oracle – and we didn’t know for sure that the Oracle was a program at the time. So when we meet Merovingian, Persephone, the Twins, the Train Man, etc. in the second and third movies, they are a major departure from the way programs in the first movie act. They act like they have free will. I can accept that the Oracle – a program “initially created to investigate certain aspects of the human psyche” – would exhibit some aspects of free will. But all programs? Come on. Free will could have been the thing that differentiated Smith from the other Agents. Instead, all of the programs basically act human. And their motivation makes no sense. The Architect claimed the entire Matrix would suffer a “cataclysmic system crash” unless the One returned to the Source. Why would the Merovingian, who lives in the Matrix, try and stop Neo by keeping the Keymaker prisoner? Since Merovingian has survived Neo’s predecessors, he must have some idea what’s at stake. Of course, the Neo the Matrix doesn’t crash when he doesn’t comply, but how would the Merovingian know that would happen?

The really sad part is that it wouldn’t have taken much to rework the stories without the human-acting programs. The second half of Reloaded would have been tough. Maybe Agents would have had the Keymaker instead of the Merovingian. Or the Twins, working for the Architect, could have him. Revolutions would have been much easier: Merovingian et. al. are in Revolutions for just a couple of minutes. Neo could have figured a way back to the Matrix on his own – it’s sorta crappy when your main character has to be rescued. After that, it’s back to just Smith and the Oracle. Seraph can stay since he’s just a bodyguard program but Sati would have to go. With the extra screen time, I think I would have concentrated on the Neo / Smith relationship more. Since Smith is “the result of the equation trying to balance itself out” then his power should equal Neo’s. When Neo gains the power of the Source, Smith should have had some similar improvement. But Smith’s already has the ability to replicate as well as “reach” the real world by the time Neo meets the Architect.

One thing I liked is that they killed off this story line, literally, while keeping the world open for more. There’s a Matrix comic now and a MMORPG coming next year. I’ve seen several short fan films done with Machinima plus a hilarious parody. I’m sure there are more out there. I’m looking forward to more stories from the Matrix world.