January 1

Word of the Year

Merriam-Webster’s word of the year 2004, based on online lookups, is “blog.”

posted @ 07:12 AM EST

January 3

New Hampshire Adoptees Access Biological Birth Records

Under a provision of the New Hampshire Adoption Ethics law which became effective in the New Year, an adult who was born in New Hampshire and adopted as a child may now get a copy of his or her pre-adoption birth records, i.e., the original, sealed birth certificate that identifies the biological parents, by applying to the Division of Vital Records Administration.

posted @ 08:36 AM EST

Adblock Breaks Some Graphics

I retract whatever endorsement of Firefox Adblock was implied by my previous citation. The problem is that it breaks some content, notably QuickTime on Mac OS X. Gaak! The good news is that “deinstall” worked without a problem.

posted @ 03:58 PM EST

January 4

2005 Pan-Mass Challenge

Pan-Mass Challenge On August 6th and 7th, for the sixth year, I’ll be biking with Team Dolben in the Pan-Mass Challenge, a Jimmy Fund event benefiting the Dana-Farber Cancer Institute, a leading center for research in prevention of cancer and treatment of people with cancer.

You can contribute on-line in support of my ride. Or if you would rather make a donation by check, and don’t receive a direct solicitation from me, please contact me by email.

posted @ 09:31 AM EST

January 5

Macintosh Folklore

In December O'Reilly published Revolution in the Valley by Andy Hertzfeld, an insider’s view of the development of the original Macintosh; a reworking for paper and a wider audience of his Macintosh Folklore website.

posted @ 09:29 AM EST

January 7

Interview of Brent Simmons, NetNewsWire Developer

Jeff Harrell published a good interview of Ranchero Software’s Brent Simmons, the creator of NetNewsWire, including a nice introductory explanation of RSS and news readers:

I usually describe RSS by what it does for you.

Say you like to read news from a few different websites (or a dozen or a hundred). Maybe you have a bunch of bookmarks and you check those sites once or a few times a day.

It’s a pain because you have to go to each one, and there might not be anything new. And you have to actually look and remember — did I read this article yet? Where do the new things start?

And sometimes you find there’s nothing new there at all, and you’ve just wasted a few seconds loading the page and scanning it.

What RSS newsreaders do is make it work more like email: the news comes to you. Each article is a separate item. Your newsreader tells you what’s new: you don’t have to try and remember.

There are NetNewsWire users who get news from more than a thousand sites this way. You could never do that by checking a thousand sites in your browser every day. But even if you’re just checking two or three sites, RSS saves you time and mental energy.

What’s going on behind the scenes is that there’s an XML file that newsreaders understand. But you don’t need to know the details of that to use a newsreader. (Understanding the details is my job as the developer.)

posted @ 04:18 PM EST

January 12

TextWrangler Is Freeware


Of interest to only a small number of people, yesterday Bare Bones Software released version 2.0 of TextWrangler, a text editor for Mac OS X (10.3.5 and above), as freeware. Over ten years ago, Bare Bones Software showed what plain text editing—for things like programming source code and web pages—should be with BBEdit. For some time, BBEdit Lite was a freeware application with a subset of the functionality of BBEdit, but was discontinued (still, the latest version works in Mac OS X) when TextWrangler was first released. Now the freeware tradition of a little brother to BBEdit is restored.

Some of the features in TextWrangler that aren’t in BBEdit Lite:

  • Syntax coloring
  • Spell checking
  • Editing of files on FTP server
  • Shell “edit” command
  • Capability of administrator to save files owned by others, e.g., root

posted @ 08:18 AM EST

January 15

Trash Flash

It’s not so much web ads that I can’t stand as animated ads, especially CPU hogging Flash media. So, I tried the mozdev.org Flashblock extension, which not only didn’t work, but screwed up my Firefox extensions altogether, forcing me to create a new profile to recover. Then I belatedly realized that I could just remove the plugin completely—simply by dragging it out of the Internet Plug-Ins folder. The good thing about a plugin is that it can be unplugged.

Of course, this means that other users of my computer can’t view Flash content either. Good! In fact, I encourage implore everyone to do the same: trash Flash. Web pages can check whether or not you have the plugin installed. If enough people stop viewing it, maybe advertisers will give up using Flash.

posted @ 12:17 PM EST

January 18

Version 2.0.4 of BlueJ Was Released Yesterday

BlueJ is an integrated development environment designed for learning Object Oriented Programming with Java at the introductory level.

posted @ 03:40 AM EST


For those of you who don’t already know (I didn’t until today), one good way to track commercial airline flights is via FlyteComm.

posted @ 02:42 PM EST

January 19

Preventing Comment Spam?

The latest buzz in the blogosphere is over the new use of a “nofollow” value for the “rel” attribute in a web page link—supposedly to remove the incentive for comment and trackback spam in blogs (and other visitor-supplied content). This is yet another case of engineers inventing a solution without clearly identifying the problem. It’s as if they say, “Hey! We’ve got a problem. We need to do something to solve it. Here’s something we can do. It must be a solution.”

In this case the reasoning goes as follows. The incentive to generate comment and trackback spam containing links to the spammers’ sites is the elevation of what is known as pagerank by Google, who figures that if there are links to something on lots of other sites, then the something must be good and so will show up towards the beginning of the list of pages returned by the search engine. Major search engines (Google, Yahoo, MSN) now have a policy that they will not use “nofollow” links in determining pagerank. And blog tools can filter comments and trackbacks, adding the “nofollow” attribute value to all links.

Problem solved, right? Spam won’t elevate pagerank, so the spammers will give up. Wrong. There are at least two errors in the logic. First, not all bloggers will implement (or update their tools to an implementation of) the comment and trackback link filtering. As long as there are blogs that don’t modify visitor-supplied links the spammers will continue to have pagerank elevation as an incentive and won’t bother discriminating between sites that modify links and sites that don’t. Second, pagerank elevation isn’t the only incentive to spamming. The spam itself contains links that actual people, not just search engine spiders, see and can follow, making the spam a form of advertising displayed on blogs all over the net. The bloggers who employ “nofollow” links are saying, “Go ahead and put whatever crap you want on my site. It won’t help your pagerank.” Yeah. (Note that Google’s blog, linked to above, allows neither comments nor trackbacks.)

So what’re ya gonna do? I dunno, but accountability still seems important to me. Spammers get away with what they do because the Internet grants privileges to anonymous entities. Sheesh! Why do you think bank robbers wear masks?

posted @ 12:05 AM EST

January 20

Escalatory Violence

New York Times Op-Ed columnist Maureen Dowd uses a famous bit of math to make a point: “Or, as Fibonacci might have calculated it, if you kill one jihadist, two more arrive to take his place; if you kill three, five more pop up; if you get five, eight more appear, and so on.” While this may be a little too glib (and despite her inconsistent use of the series), it offers a valid shift in thinking from the standard phrase “cycle of violence,” which fails to capture the potential for escalation.

posted @ 08:32 AM EST

January 21

Stylesheet for RSS

Yesterday I totally geeked-out and made a stylesheet for the RSS on this blog (the file to which RSS links); a nearly pointless exercise, but the sort of thing that geeks do. You see, while normal people just want to use their computers, and get frustrated when things don’t work as they expect, those of us in the geekdom willingly spend hours creating something next to useless just for the fun of learning how things work, enjoying the challenge of unexpected wrinkles.

There was a slightly legitimate motivation for doing this. Someone once told me that he’d clicked on that little orange button in a page of my blog and all he’d gotten was some code. Clearly, it’s confusing when there’s no indication that the code (XML) is meant for some other program—a news feed reader or aggregator—not for a human browser. Applying style to the code causes it to be rendered in the browser in a more user-friendly way.

I’d been mildly aware that stylesheets (CSS) could be applied to XML1, but hadn’t ever looked at how it was done or what could be achieved. I Googled around and found a few examples and sketchy explanations, but no good tutorial. Nevertheless, it didn’t take very long to get the idea and to get something close to what I’d had in mind. (What I’d had in mind was sufficiently vague that almost anything would do.)

However, the body of each entry was still just the raw web page code (XHTML) fragment, not rendered. That was still a little too ugly for my taste, so I kept Googling and browsing until I found a site that had well rendered entries in its styled RSS. It turns out that the easiest technique is to put the entry body in an XML <body xmlns=“http://www.w3.org/1999/xhtml”> element—making all of the XHTML known to the XML parser—instead of surrounded by “CODE” brackets in a <description> element. Apparently, this is a well known way to extend RSS 2.0, and is handled by most feed readers and aggregators. Anyhow, the “official” feed validator approves, which is good enough for me.

The last task was to do something about XHTML character entity names, which XML parsers don’t know, that I’ve used in the past; like “&mdash;” for the “em dash.” By a couple of methods, one can add declarations for those characters that aren’t directly encoded in plain text2, but since now my entries as well as the RSS XML are encoded in UTF-8, I substituted (by search and replace in the entries database) the Unicode characters for the entity names.


  1. Firefox, for example, when you go to some XML without a stylesheet, tells you that there’s no stylesheet and shows the document tree.
  2. ISO-8859-1 is basically what old-timers knew as the ASCII character set.

posted @ 08:58 AM EST

January 24

Yay, Pats!

In yesterday’s American Football Conference Championship game there were only four statistical categories in which the Patriots bettered the Steelers: interceptions, 0-3; fumbles lost, 0-1; yards penalized, 5-20; and touchdowns, 5-3. Not counting the interceptions, Ben Roethlisberger had the same passing success—14 completions in 21 attempts—as Tom Brady, but for more yards. Of course, those interceptions cannot be discounted. As is the case in so many football games, turnovers were the deciding factor; New England had four turnovers to none by Pittsburgh in the Steelers’ mid-season win, also by two touchdowns. One might think that turnovers are unpredictable, and therefore the outcome of games between otherwise evenly matched teams is a toss-up, but in the playoffs the Patriots are making it look like something other than chance is at work.

posted @ 10:58 AM EST

January 25

Movable Type 3.15

This blog’s software has been updated to version 3.15 of Movable Type, which was released yesterday, fixing a hole in the email sending packages.

posted @ 07:50 AM EST

January 27

SQuirreL SQL with MySQL on Mac OS X

SQuirreL SQL is a graphical Java application that connects to any kind of database for which a JDBC driver exists. To use it on Mac OS X with a MySQL database and Connector/J 3.1 (the recommended version) download the generic installer, not the Mac OS X wrapper, because that uses the 1.3 JVM instead of 1.4 which includes java.sql.Savepoint, required by the driver.

SQuirrel SQL works with Cloudscape, a Java database management system that, of course, comes with JDBC drivers for server and embedded (meaning that the database software runs within the client) operation. See what a little contest will turn up?

posted @ 11:03 AM EST

January 31

Eye Candy

Here’s my idea of eye candy. Well, you knew I was a geek, right?

posted @ 07:20 PM EST