About what I expected

Robert W Gordon on President Bush’s Supreme Court nominee, John Roberts: All the indications are that he will become another vote to expand presidential power in national-security affairs, to limit the federal government’s authority to regulate business and the environment and protect civil rights, to make it harder for women, minorities, labor and the disabled to pursue practical remedies in the courts, and to favor a larger role for religion in public life and as object of public subsidy. ...

July 20, 2005

The Plot

Christopher Allbritton describes a persistent belief among Iraqis in something he refers to as The Plot: Robert Fisk once wrote about Lebanon that The Plot—the plans of foreign powers to defeat and humiliate Lebanon during its 1975-1990 civil war—was always present in his conversations with Lebanese. He joked that The Plot should have its own chair at the table at every meal, since it was always a topic of dinner conversations. Well, Iraq has the same mentality. It is inconceivable to Iraqis that America, as powerful as it is, could have bungled this place as badly as it has. Americans walked on the moon! And they can’t find Zarqawi? ...

July 19, 2005

The trouble with frameworks

Andy Smith explains why frameworks suck. Frameworks hurt sharing. I’d really like to give you this fork Jimmy, but you’re gonna need a knife and plate to use it. The framework checks out all your girlfriends for you, the framework won’t let anyone dirty get through, the framework will wait up until you get in, the framework will always find out were you’ve been, the framework keeps you healthy and clean. Frameworks embrace, extend and hold on to greedily. ...

July 19, 2005

World of Warcraft dupe bug

Players have discovered (and exploited) a dupe bug in World of Warcraft. This is the worst kind of problem to have in any multiplayer game. A few abusers can destroy the economy of a game in hours (literally) by adding huge amounts of illicit cash into the economy. Interestingly, the gaming community seems eager to blame Chinese farmers for the problem, but I think it was almost certainly American ingenuity. ...

July 19, 2005

Married to Markdown

Movable Type supports multiple Text Formatters, which convert the entries that you type in to HTML. It comes with a simple one that turns blank lines into tags, and you can add others, like Markdown and Textile, which enable you to use a Wiki-like syntax to add markup to your entries when you’re typing them in. I’ve installed the Markdown plug-in, and the first thing I discovered when I typed a weblog entry and told Movable Type that it was formatted using Markdown was that my dynamically generated pages wouldn’t work because I hadn’t installed the PHP version of markdown. What I find interesting about this is that Movable Type transforms your entries when they’re presented rather than when they’re saved. I think my first instinct would have been to do the opposite and add the HTML when the entries are saved. The way it works currently, you’re married to those text formatters. If I want to pull my entries out of the database and use them in some other way, I have to look up the text formatter that’s being used and then run that transformation on my text to turn it into HTML. On the other hand, by transforming your text only on presentation, the tool preserves it the way it was entered so that you can easily go back and edit without wrangling with the HTML that was inserted. Interesting design decision, but upon reflection I think I agree with it. Most people want their input preserved more than they want to futz with the contents of their Movable Type database. ...

July 18, 2005

Patterns and practices

Ruby on Rails creator David Heinemeier Hansson said something really smart the other day differentiating between languages and patterns and practices: As Java gained traction and became the focus of business, it naturally attracted many of the best brains. While working in Java, they developed and profiliated an impressive array of patterns of practices. We got the rise of MVC for the server side, an explosion in frameworks, test- and domain-driven development styles, and so much more. And while general ideas, most where explained from within the language that they had been practiced. So you have Java-first examples and implementations all over the place. ...

July 18, 2005

Slice of life du jour

Patrick Nielsen Hayden has posted a fascinating <a title=“Making Light: “I also feared she would judge my life and find it wanting”” href=“http://nielsenhayden.com/makinglight/archives/006563.html">roundup of links relating to a New York Times-published essay by a woman who had her husband fire her nanny because of her blog. Naturally, the nanny responds. Patrick has gathered links to some of the more interesting commentary that has been published so far.

July 18, 2005

Migration to Movable Type initiated

I’ve started migrating to Movable Type. As you can see, I’ve gone with the default theme for now, which I hate. That’s probably for the best, though, because it will inspire me to work on creating a new theme rather than just dealing with something substandard indefinitely. If you read the site via RSS, you’ll need to update your RSS reader to point to one of the new syndication feeds. I’ve redirected the old feed URL to the URL of the new RSS 2.0 feed in the meantime. ...

July 17, 2005

Following up on Movable Type

A couple of people have told me that they have gotten Movable Type working with cgiwrap at pair.com, so I’m going to look into that. Pair.com has a Movable Type FAQ. David Bau has some tips on setting up Movable Type at pair.com here. Update: I’ve got Movable Type up and running with cgiwrap. Basically, you just have to set your CGIPath in mt.cfg to the cgiwrap URL. I still have to work out some kinks with dynamic publishing, but I anticipate that the next entry you read will be published through Movable Type. ...

July 15, 2005

Unfair comparisons

IBM developerWorks makes an unfair comparison between Ruby’s Active Record persistence component and Hibernate, a persistence framework for Java. It also compares Rails and Struts, but I’m not interested in that comparison (it’s easy to see why Rails wins there). On the Hibernate front, Active Record and Hibernate are beasts of a different nature. Active Record creates a sort of proxy for database tables by examining the database schema itself. This makes your database schema tightly coupled with your business objects (since there aren’t any, really). Rails, in turn, is tightly coupled with Active Record. What this means in practice is that if you have the ability to design a schema with the semantics that Rails prefers, you can get a whole lot done in no time. Hibernate, which has all those nasty mapping documents (shown in the article) takes you longer to get up to speed (although you can save a lot of time using something like Xdoclet rather than writing your mapping files by hand), but if you’re working with a legacy database schema, this flexibility pays off in a big way. Hibernate can deal with just about any existing schema you could possibly imagine – even if it uses composite, natural keys or other byzantine practices of database design. I’m not knocking the tight coupling that makes Ruby on Rails easy to roll out, but I do caution people that when comparing it to Hibernate, they’re comparing apples to oranges. Hibernate is built for maximum flexibility in dealing with legacy databases, Rails is built for speed of development when you own the whole stack (and generally are working from scratch). Also, for the sake of comprehensiveness, it’s worth noting that Hibernate ships with a number of tools for code generation that enable you to generate the code for other layers from any layer of code that exists. In other words, you can generate a DB schema from mapping files, Java classes from mapping files, mapping files from a DB schema, and so on. This comes in really handy when you want do something like run tests against a clean database when you’re regression testing. ...

July 15, 2005