Movable Type so far
13

Movable Type so far

Thought I’d give a quick status update on how I’m doing with Movable Type, and talk about what I like, what I don’t like, and what my plans are for the site.

The good:

  • Movable Type has all of the features that I always wished I had written for my own blogging software. Comments, trackbacks, categories, the ability to schedule posts. I didn’t have any of that stuff, and it’s nice to have.
  • Typekey. I really like the fact that if users sign up for a Typekey identity and use it to post their comments, I can be pretty sure that they’re not sending me spam.
  • Polish. Movable Type is obviously a professionally written software package. The user interface is very nice, it has features galore.
  • Community. Whenever I run into problems with Movable Type, it seems easy to find solutions via Google or to just ask. There are a lot of people who’ve been working with Movable type for a long time. That’s a heck of a feature.

The bad:

  • It’s slow. I’m not sure Movable Type is at fault here. It could very well be the overhead from cgiwrap that’s gumming up the works. The bottom line is that it’s slower than I’d like. I also don’t know what effect having nearly 8000 entries is having. That could also be part of the problem.
  • I still get Internal Server Errors here and there. This may be a problem with running a beta version of the software, I’m not sure. I don’t have access to the error logs on this server (shared hosting has some downsides), so I am having trouble diagnosing the problems. I’d prefer not to have to hack on the Movable Type code to figure out what’s going on.
  • I still hate the model of publishing files. This may still be a deal breaker when it comes to me and Movable Type. I realize that Movable Type is a real content management system and most content management systems publish files, but I don’t think it’s necessary for a weblog package. I’m using dynamic publishing where I can, but even then Movable Type still wants to write out some files on its own.

What’s next:

  • Improve comment management. There’s more comment moderation overhead than I’d like right now. If you sign in with TypeKey, your comment is published immediately, but otherwise I have to publish it manually. There has to be a better way.
  • Gmail throws all my comment notifications into the Spam folder. That makes things even more difficult. I have to do something about that. (It’s tricky because the comment notifications are “from” the email address of the commenter. There’s probably a setting in Movable Type I could tweak to change that.)
  • The default templates suck. Why Six Apart thought that weblogs should be published with a miniscule body font (that everyone seems to hate) by default is anybody’s guess. I still haven’t updated the templates due to laziness and lack of motivation. (Your continued dissatisfaction hasn’t proved to be the kick in the pants I thought it would be.)

To be honest, one reason why I haven’t really started hacking on the templates is that I’m not sure Movable Type and I are in for a long term relationship. I want things to work out, but it’s a bit dicey. There’s that and the fact that hacking on the templates means learning something new. Right now, I’m statically publishing the home page and dynamically publishing the archive pages, and I think that means having to learn two new things. That seems like a lot to me right this second. So we’ll see.

Eclipse 3.1
7

Eclipse 3.1

Today is finally the day when I migrate to Eclipse 3.1. It has been released for a few weeks, but I had to wait until the plug-ins that I use regularly were updated, specifically Subclipse. Some stream of consciousness thoughts on the process.

The distribution of Eclipse 3.1 is 105 megs. NetBeans 4.1 weighs in at 46 megs. IntelliJ IDEA is 53.3 megs. I’m not sure why Eclipse is larger than both of them put together.

The next step is downloading the latest and greatest MyEclipse Enterprise Workbench, which is now a whopping 107 megs in its own right. I originally started using this product so that I could easily run Tomcat via the Eclipse debugger and in order to have a decent editor for JSPs, but it has grown into this monstrous beast that includes database browsing, generation of entity-relationship diagrams, and 100 other features that I never use. I can see myself migrating to the Eclipse web tools once they’re released. I have a perhaps irrational suspicion that MyEclipse has grown so large that it’s making Eclipse slower overall.

Other than some small, temporary problems related to starting up Eclipse and pointing it to my workspace without all off the requisite plug-ins present, the upgrade generally went without incident. In fact, I started this entry thinking that I would write up some tips explaining on what you need to do to upgrade without ruining your life, but I didn’t run into any land mines in the process. That surprised me.

Now to mess around with the new features and figure out whether the promised performance improvements are actually noticeable.

Joel on programmer quality
0

Joel on programmer quality

Joel Spolsky has some thoughts on what it means to hire the best programmers:

So, why isn’t there room in the software industry for a low cost provider, someone who uses the cheapest programmers available? (Remind me to ask Quark how that whole fire-everybody-and-hire-low-cost-replacements plan is working.)

Here’s why: duplication of software is free. That means that the cost of programmers is spread out over all the copies of the software you sell. With software, you can improve quality without adding to the incremental cost of each unit sold.

Essentially, design adds value faster than it adds cost.

Or, roughly speaking, if you try to skimp on programmers, you’ll make crappy software, and you won’t even save that much money.

He also provides some quantitative evidence that the variation in ability among programmers is very high, at least in terms of implementing various features and algorithms. Of course, there’s more to being a professional software engineer than being able to crank out the code (even though that’s the most important skill). For guidance on this, see Eric Sink.

Assuming risk
3

Assuming risk

One topic that has been on my mind a lot for the past few months has been the notion of who bears risk. For example, Social Security is a system that insures people who have worked throughout their lives from living in abject poverty when they reach retirement age. The argument is whether the costs of Social Security are worth the risk it mitigates.

Leaving government programs aside, Mark Nottingham has an interesting post on who bears risk in the world of business. Conventional wisdom is that shareholders are the main risk bearers when it comes to firms, but there’s an alternative argument that employees most of the risk.

I hadn’t really thought about it, but it’s certainly true. Shareholders obviously suffer when a company’s stock performs poorly, but most investors diversify enough that they are insulated from suffering significantly when a firm fails. Compare that to the fate suffered by employees of companies like Enron, where many employees got burned both ways. Not only did they lose their jobs, but they also lost most of their investments because the company offered incentives for employees to invest their retirement funds in Enron stock.

If employees are the main risk bearers in any enterprise, what management practices does that dictate? And even if it is true that employees bear the risk, incentives are what really drive human behavior. Executives have many financial incentives to please shareholders, so that’s probably what they’ll continue to do.

Secure Flight
0

Secure Flight

Bruce Schneier has the goods on the TSA’s Secure Flight program, which is designed to check whether airline passengers are on terrorist watch lists. Unfortunately, the program was expanded to take over the functions originally designed for the CAPPS-II program, which would assign some kind of risk score to every airline passenger based on a bunch of factors mined from commercial databases. This program was killed in Congress, but the homeland security people just can’t resist the temptation to repeatedly revive it. Anyway, Schneier has all of the details.

The economics of activism
2

The economics of activism

In this Slate dialogue, a point is raised that I think deserves further attention. Activist groups (conservative, liberal, and otherwise) have a financial incentive to manufacture as much outrage as possible during the Supreme Court confirmation process. The more worked up people get, the more money they shovel at these various groups in order to feel like they’re making a difference, so these groups are going to try to overheat the process to the degree that they can. When you toss in the 24 hour news networks who have to do something to get people to tune in to all of their stupid talking head shows, and the bloggers out there who benefit from keeping their readers whipped into a frenzy, then it hardly matters who the nominee is or what they believe.

Last night I was at a restaurant and CNN was on the TV (usually they show international soccer matches, which I would have preferred in this instance). I couldn’t hear the sound, but the text on the bottom of the screen said, “Why did Bush pick Roberts?” Andy Card was off course being interviewed. Then New York senator Chuck Shumer was on and the text was of course, something about objections to Shumer. How is this news? Bush picked him because he’s a qualified candidate and has been a reliable foot soldier for the Republican party for his entire professional career. Liberals are opposed to him because he doesn’t agree with them about much of anything.

The opening scenes of this grand piece of political theater already have me fatigued.

mt-comments.cgi
13

mt-comments.cgi

Anybody know why I get ye olde “500 Internal Server Error” from mt-comments.cgi from Movable Type whenever I post a comment? Is everybody else seeing that error as well?

Generally such errors mean that the script is not generating a Content-type header before sending printing out the actual content of the page. What’s probably happening is that some error or debug message is being printed unexpectedly, but I have no idea where. If nobody pops up with an easy answer, I’ll be forced to figure it out for myself.

Update: I’ve talked to a couple of commenters, and they’re not seeing this bug. (And I just posted a comment and didn’t see it either.) I’m thinking it may be something obscure like signing in using TypeKey and clicking on “Remember Me.” More research necessary.

Unit testing PHP
4

Unit testing PHP

Like many developers, I’ve become test infected. When I’m creating a new API in Java, I generally try to write tests that provide good coverage before writing my code. And, I think more importantly, when anyone finds a bug in my code, I write a test to duplicate the bug before working on fixing it, so that I can verify that I’ve fixed the bug and that it stays fixed.

Anyway, I want to do bring my PHP programming practices in line with my Java practices. Right now, I don’t write any tests for PHP at the Web layer, and I write basic command line scripts to test my PHP at lower layers. (I have a library that I’ve written that has a few basic assertion functions to make things easier.)

JUnit and Eclipse make testing a lot easier in the Java world, and I’m wondering if there’s something similar in the PHP world that will make me a happier programmer. Here’s what I’ve found so far:

Anybody tried any of these or know of any other approaches for PHP unit testing? Comments appreciated.