afongen
Sam Buchanan's weblog.

tcWebDev

There's a new group in town. Those of you in the Twin Cities might find this of interest: Twin Cities Web Development User Group. Discussion's already ramping up.

Text and Image in Medieval England.

I don't want to miss this: Text and Image in Medieval England, a conference this October at the University of Minnesota. I've been out of the medieval history scene for the last several years and miss it a bit. I tend not to like to do things half-heartedly, and this is one area that could quickly consume my life if I let it. Still, an occasional refresher is in order. This conference is right up my alley.

It usually comes as a surprise to those who know me only in the web world or at work that my academic background is in French and linguistics. What I don't usually mention is that it's actually in French, linguistics, religious studies, and medieval history. I spent an inordinate amount of time struggling to bring those disparate worlds together, time that I now think was wasted but that nevertheless led me to a fascinating study of the Danse Macabre des Femmes. The Danse Macabre was a fifteenth century memento mori, often containing both text and illustrations, in which Death danced with people from all walks of life, reminding the reader what awaits those who do not lead a good (i.e. Christian) life. The Danse Macabre des Femmes, as the title indicates, was a version in which Death danced with women, usually female counterparts of the male characters in the Danse Macabre des Hommes but also including roles specific to women.

I was drawn to this work in part because the imagery in both the poem and the accompanying illustrations reveal a great deal about the attitudes toward women in 15th century France. Study of these manuscripts involved creative attention to minute details drawn from a variety of disciplines (skills that serve me well in the work I do now — ah, the beauty of the liberal arts). You can see, then, why a conference that addresses text and image and what they reveal about medieval society might hold some small interest for me. Gotta go.

Mac OS X Unix Package Management

A useful rundown of working with Fink and DarwinPorts: what you need to go through to install, upgrade, find, and remove packages. Nothing too detailed, just enough to give you a flavor.

I've never looked at DarwinPorts and haven't done anything with Fink in a while. I just haven't needed to work with anything that they offer. Still, when I have needed it, Fink has been a godsend. I'll be curious to look at DarwinPorts.

Filters in Apache 2.0.

I was talking with someone the other day about post-processing some dynamically generated HTML before it was sent to the browser. They looked at me like I was crazy: you can't do that in Apache! It only allows one handler a shot at content generation. Well, yeah, except in the mod_perl world, where we have access to the entire request cycle. And, as it turns out, in Apache 2.0, which lets you string together output filters like in a Unix pipeline. Cool stuff.

Geoffrey Young, one of the authors of the mod_perl Developer's Cookbook has published an article on mod_perl filters in Apache 2.0 as an introduction to mod_perl 2.0. Well worth a read.

Guess who's anxiously looking forward to Practical mod_perl. That's right, baby.

I'm also waiting to use Apache 2.0. Until mod_perl and mod_php are stable on it, I can't really upgrade our servers at work. Rats.

On the upside, I have plenty of reason to upgrade to MySQL 4, as Jeremy Zawodny explains in January's Linux Magazine. This is great: I've been looking for a good summary to bolster my arguments in favor of the upgrade. Something that I don't think he mentions there is that in MySQL 4 you can change a lot of the server configuration variables on the fly, without having to stop and restart the server.

PNH Developer Toolbar

Tired of managing all those web development bookmarklets on your already cluttered toolbar? Try out the PNH Developer Toolbar, a Mozilla-based tool that includes, among other things, links to most W3C specs, tools to disable style sheets, apply external style sheets, kill images, outline block-level elements or table cells, etc. Very good.

(Via WebGraphics.)

Safari tabs not quite perfect.

I'm glad that Safari has tabs now. Really glad. What I miss, though, and maybe I'm just missing something, is the ability to drag a link to a tab to have it opened there.

That's it. I've got to set up comments.

New Crypto-Gram

At last, I can read this month's Crytpo-Gram without having to go out of my way. Usually GroupWise cuts it off. For some reason it displays only so many characters, then just stops. Grrr. I have to either read the raw message text, headers and all, or go to the web. I prefer reading it on the web anyway, and I shouldn't subscribe at my work address in the first place (since I never read it there), but I've held on out of curiosity: will Schneier write a shorter Cryto-Gram? Will this bug be fixed with a GroupWise upgrade?

Siesta Time!

Every workday should include a nap, a study says. "It estimates that sleepiness on the job costs the nation's businesses about $18 billion a year."

Well, duh. I've long advocated the siesta for its health and productivity benefits, although I've had no data to back me up. I often take the bus to lunch, and take the opportunity to catch a few minutes of shut-eye followed by a nice, invigorating walk. Somehow, though, I just don't see employer-endorsed naps happening anytime soon, especially within the State. I can just imagine the headlines.

"Headlines." Hmph, as if people read the news. It's the TV news teasers that would be killer.

Thank god for oscillating fans.

I'm at work, and man it's hot in here. I can handle heat just fine when outside, at least there's usually a breeze. But it's a couple degrees hotter inside at work than it is outside, and the landlord won't turn on the air conditioning because it's going to be in the 40s in a couple days. Okay, fair enough, ya cheapskates, but how about turning on the fan to at least circulate some air?

No.

Someone's brought in a large oscillating fan. Thank god. I'm tired of dripping sweat onto my keyboard.

Open Source GIS

Via Tim McGyver, a list of open source GIS tools.

I'm still looking for a reason to use MapServer. Maybe if I can attend the upcoming MapServer Users Meeting, I can be inspired. Or at the very least, make it to May's Twin Cities PHP Users Group meeting, at which MapServer's creator will be speaking. I've been trying to go for a long time now, but never seem to make it. Doesn't help that now I live even further away from where the meetings are held.

Quick Links

For later reading, once I catch some time:

That last one has me the most curious:

As someone who has spent the past several years learning and using the various XML APIs available throughout the industry, I can honestly say that the .NET implementations are the best I've seen in terms of productivity, efficiency, and extensibility. The .NET XML framework provides support for all of the W3C-stamped XML specifications including:

  • XML 1.0
  • Namespaces in XML
  • DOM Level 2
  • XPath 1.0
  • XSLT 1.0
  • XML Schema

Mozilla script warning.

I've never seen this before. I got this message today in Mozilla 1.4a:

script warning: a script on this page is causing mozilla to run slowly...

Not sure how useful that is for the average end user, but of course the average end user is not using Mozilla. I suppose we can expect this feature to be rolled into Netscape. It may be nice to make it clear that it's not necessarily the browser's fault that a page loads slowly, if only to lessen the chances of people switching browsers for some perceived speed improvement. Hm.

I've always been bothered by the options on dialog boxes like these. Let's see, click OK to abort (i.e., to cancel), and Cancel to continue … huh?

More Mozilla goodness.

Henrik Gemal's Using Mozilla in testing and debugging web sites makes me realize just how much I take for granted in Mozilla. Sure, I give a silent thanks whenever I use the JavaScript console, Venkman, or the DOM inspector, but until now I hadn't really given any thought to how nice it is to have detailed control over my cookies, colored HTML source, and detailed page information.

Cool things that I didn't know about:

Granted, I no longer use Mozilla for casual browsing at home (I switch between Safari and Chimera), but I do use it as an ever-more-indispensible development tool.

Hydra

Hydra is a decent text editor in its own right, but what makes it interesting is its collaborative editing feature: just click on the "share" button and you can allow others on a network to edit the document right along with you. Click the Rendezvous button and share over an ad hoc wireless network! Too damn cool.

They mention extreme pair programming on their home page as one possible use. I wonder how it could be used in the classroom…

Chimera/Camino, Phoenix/???

First Chimera had to be renamed Camino for legal reasons. Now I see that Phoenix must be renamed, too, also for legal reasons. What gives?

Oh, this reminds me. When I was working for The Roastery, I took a call from a guy who was wondering how long we'd been in business. When I told him, he just sort of sighed, then explained that he owned a shop in Missouri or Montana or somewhere like that, also called The Roastery. He'd been told the company name was unique in the country. "Well, thank you for your time," he said, "now I have to go kick my lawyer's ass."

At least he was good-natured about it.

Unit Testing

Unit Testing in PHP.

And if you're not convinced: Top 12 Reasons to Write Unit Tests.

And what do you know, the latest issue of The Perl Journal has an article on "Test-Driven Development in Perl."

Pragmatic Programming

I have very much been enjoying the serialized interview on artima.com with Andy Hunt and Dave Thomas, authors of The Pragmatic Programmer. In particular, the first segment rang true: "Don't Live with Broken Windows".

As soon as something is broken—whether it is a bug in the code, a problem with your process, a bad requirement, bad documentation—something you know is just wrong, you really have to stop and address it right then and there. Just fix it. And if you just can't fix it, put up police tape around it. Nail plywood over it. Make sure everybody knows it is broken, that they shouldn't trust it, shouldn't go near it. It is as important to show you are on top of the situation as it is to actually fix the problem. As soon as something is broken and not fixed, it starts spreading a malaise across the team. "Well, that's broken. Oh I just broke that. Oh well."

I picked up the book at the library a few weeks ago and devoured it. It's very good, I learned a lot and have much to think about. I'm not ready for everything in the book, especially the latter chapters, partly because of the situation in which I work, partly because of where I am in my development as a programmer. So much of it, though, just resonated with me. They just plain make sense and have some great ideas. Read through the interviews and you might see what I mean.

It's been especially interesting to me as I've been working with code that I wrote a couple years ago and realize just how far I've come in my programming practices. Sometimes I look at the code and wonder, "What was I thinking?!" Other times I just look at it and go, "Oh yeah, that made sense, but I've figured out a better way of handling that now." It's kinda cool. When I read "Don't Live with Broken Windows," I had just come across a comment in some oldish code: "Not the best way to handle this, but it'll work as a proof of concept. Clean it up before it goes into production." Of course, it had been in production for over a year. Heh. So i cleaned it up.

I don't do so much of that anymore: I try very hard to take the time to get things right the first time, while at the same time avoiding premature optimization. The trick is balancing this against the unreasonable timelines I must usually work with. It's been satisfying to realize that the code that I write under these conditions is far better than it was even a couple years ago. I'm confident that what I learn from The Pragmatic Programmer will help even more.

The Return of Hobbes

The Return of Hobbes, in which it's demonstrated quite clearly (almost painfully) that Jack and Tyler in Fight Club are in fact Calvin and Hobbes from, well, Calvin and Hobbes.

I feel like watching the movie again now. Which is too bad, since I really, really did not like it.

Solution in search of a problem.

Dang I wish I could think of a reason to use MapServer. Here I am, just a couple miles away from its birthplace, itching to go to their first MapServer Users Meeting, and I have no real reason to use the software. It just looks so damn cool. If I worked for the DNR, that would be one thing: they do all sorts of stuff with it. But no. I work in higher ed. Not a lot of call.

Let me think. Maps to campuses? More detailed network status maps? I dunno. Let me know if you have any ideas. It won't likely be nearly as cool a work-related expense as buying an iPod to bootstrap an XServe cluster, but it might be as close as I get.