Butterflies

April 1st, 2005

I walked out of my apartment yesterday and was greeted by thousands of butterflies. After admiring them for a while, I grabbed my camera and took dozens of photos.

Many of my photos were blurry due to the camera auto-focusing on bushes rather than the butterflies on the bushes. I don't know whether my camera has a manual focus feature.

Switching from Movable Type to WordPress

March 13th, 2005

Downloading WordPress was much easier than downloading Movable Type. Installing WordPress was very easy. Importing from Movable Type was also easy, unless you include the hours I spent cleaning up WordPress's mistakes in the import process (see "Problems I ran into after importing from Movable Type" below).

I found that WordPress could be installed in a directory with generated Movable Type content. Apache chooses the index.html generated by Movable Type over the index.php that is part of WordPress, so the Movable Type blog was still live until I deleted index.html. This approach worked better than installing WordPress in a different directory, which was the first approach I tried.

Advantages of WordPress over Movable Type

  • WordPress is free and will remain free.
  • When I am logged in, I get an "Edit" link for every post and comment. With Movable Type, I had added a <link rel="edit"> to every individual archive page and written a bookmarklet to follow these hidden links. WordPress's "edit" links are built-in and more convenient.
  • Templates are arranged in a way that avoids duplication. I can change the sidebar in all pages from sidebar.php, and a single edit modifies how posts appear in both category archives and monthly archives. (I had rearranged my Movable Type templates in a similar way.)
  • No rebuilds. Rebuilds in Movable Type were slow, and I had to to think about what needed rebuilding after each change.
  • The default template, Kubrick, is prettier than Movable Type's default template.
  • WordPress automatically adds rel="nofollow" to every link added by commenters or trackbacks. This might be enough to keep spammers from actively seeking out WordPress 1.5 blogs to spam.
  • Trackbacks and comments are combined.
  • Permalinks for comments.
  • For each post, there is an RSS feed for comments.
  • RSS feeds for many pages. For URLs that start with "/index.php?", such as searches, change "/index.php?" to "/feed?" to get an RSS feed. For other URLs, such as category archives, simply add "/feed" to the end. If you prefer Atom to RSS, use "/feed/atom" instead of "/feed". I haven't added links to these RSS feeds yet. (With Movable Type, I had set up category feeds by adding a new template.)
  • Cruft-free post URLs. (When I enable this feature, I had to paste rules generated by WordPress into an .htaccess file. For some reason, WordPress does not have permission to edit my .htaccess files on its own.)

Disadvantages of WordPress

  • WordPress generates every page for every request, so loading my blog is now slightly slower.
  • WordPress doesn't support If-Modified-Since, so every request results in an entire page being sent, even if the visitor has a cached copy and the page hasn't changed. When I used Movable Type (which does support If-Modified-Since), RSS feeds accounted for over 10 GB/mo. I'll have to keep an eye on my bandwidth usage for a few days. I don't know what percent of RSS readers requesting my feeds support If-Modified-Since, so I don't have a good prediction of how much bandwidth my RSS feeds will use now. I'll probably be ok, since I was only using 25 GB/mo of DreamHost's generous allotment of 120 GB/mo.
  • Kubrick (the default WordPress theme) uses images in bad ways. For example, there is a single background image for the content area and sidebar combined. Also, the backgrounds don't seem to have corresponding background colors, so the background colors are very wrong until the background images load.
  • Kubrick is too narrow for The Burning Edge because you can't see enough bugs at a time. This will take some work to fix.
  • Kubrick uses some some CSS rules that use "ol li" where they should use "ol > li". "ol li" matches a list item in an unordered list that is nested in an ordered list, such as in this post. I think I can fix this without breaking Internet Explorer.
  • Kubrick's CSS doesn't take into account the different element classes on the main page and individual archive pages, so paragraphs and lists in posts look different depending on what page you're on.

Problems I ran into after importing from Movable Type

  • Character encoding. My Movable Type content was exported as ISO-8859-1. WordPress imported this file as if it were UTF-8. As a result, many western european characters in my posts got mangled and I had to fix them manually. I later read that some switchers avoided this problem by converting the file from ISO-8859-1 to UTF-8 using a text editor before importing. Characters not in ISO-8859-1 had already been converted to numeric HTML entities(?), so they were fine.
  • Post formatting. Movable Type has two methods of formatting posts: "None", which leaves your post alone, and "Convert line breaks", which converts double line breaks to paragraphs and leaves single line breaks alone. WordPress's import script doesn't pay pay attention to which Movable Type formatting method I used, and it doesn't have modes correpsonding to either of Movable Type's modes. WordPress has more complex formatting: "Correct invalidly nested XHTML automatically", auto-formatting, and auto-texturizing(?). All three of these features are so buggy that I had to disable them.
    • "Correct invalidly nested XHTML automatically" doesn't let me nest blockquotes, and actually changed the original HTML for one post that uses nested blockquotes. It was easy to turn off.
    • Auto-formatting added <br /> tags for every line break and put <p> tags in many places they didn't belong, such as inside <textarea> tags. It also inexplicably added backslashes before double-quotes within <pre> blocks in this post and this post. I had to install the Text Control plugin to disable it.
    • Auto-texturizing, which turns quotes into “smart” quotes. It got the direction of quotes wrong in this post. It also smartified quotes in places they shouldn't have been smartified, such as in examples of HTML code and examples of Google queries. The Text Control plugin let me disable this feature too.

    Before I tried turning off auto-formatting altogether, I tried using Markdown instead of WordPress's default auto-formatter. Markdown fixed some of the problems, but not all of them, and introduced some new (minor) problems. I ended up disabling it too.

    Once I had disabled auto-formatting, I was left with the problem that many of my posts didn't have <p> tags, because I had relied on the "Convert line breaks" option in MT. I wrote a bookmarklet to add those tags to posts that needed them. (Note: this bookmarklet doesn't handle <!--more--> well.)

  • Headers in posts. In my modified Movable Type template, posts were <H2>, so sections of posts were <H3>. In Kubrick, posts are <H3>, so sections of posts should be <H4>. I made this change manually in old posts. This change should make Planet happier too.
  • Home page title. I wanted the front page of The Burning Edge to have the title "The Burning Edge - Firefox nightly build changelog" rather than just "The Burning Edge" to help search engines and search engine visitors. My solution was to add a PHP conditional statement using is_home() to the part of header.php that generates the <title> tag.
  • Redirecting individual archives. I wanted to redirect old Movable Type URLs to new WordPress URLs because many people have linked to the old URLs. I used a modified version of this Movable Type template to generate .htaccess redirect rules. I had to add encode_php="qq" and str_replace("_", "-", ...) in order to make my URLs correct.
  • Redirecting other URLs. I redirected what I thought were the most important category, RSS, and category RSS URLs manually by adding .htaccess files. I'll go through my error logs in a few days to see what other URLs need redirecting.

Now powered by WordPress

March 13th, 2005

This blog and The Burning Edge are now powered by WordPress rather than Movable Type. I'll write more about the switch soon.

Google Adsense doesn’t like Adbar

March 8th, 2005

From: Google AdSense
To: Jesse Ruderman
Subject: Google AdSense Account Status
Date: Tue, 8 Mar 2005 21:56:17 -0800

Hello Jesse,

We regularly review sites in the AdSense program for compliance with our program policies.

While reviewing your account, we noticed that you are currently displaying Google ads in a manner that is not compliant with these policies. We've noted that you are in violation of the following program policies on www.squarefree.com/extensions/adbar:

- We've found that you're displaying Google ads in a manner that does not comply with our program policies. According to Google AdSense program policies, no Google ad or search box code may be pasted into any software application, even if it is modified to not show ads through your AdSense account. In order to comply with our policies, please remove the Google ad code from the software provided in your site.

Thank you for your understanding. Once you've made the necessary changes, please reply to this email so that we may review your account again.

We also suggest that you take the time to review our program policies (https://www.google.com/adsense/policies?hl=en_US) and Terms and Conditions (https://www.google.com/adsense/localized-terms?hl=en_US) to ensure that all of your pages are in compliance.

Sincerely,

Heraldo
The Google AdSense Team

New lists

February 8th, 2005

Please vote "yea" on items you like in these lists :)

More Google changes

January 26th, 2005
  • The maximum words per query has increased from 10 to 32.
  • If you click a word in your query, it now takes you to answers.com instead of dictionary.com. Answers.com shows not only dictionary definitions but also thesaurus entries, encyclopedia and Wikipedia articles, and several other sources of information.

Security advisories for old versions of Firefox

January 25th, 2005

Dan Veditz has updated the Mozilla Foundation Security Advisories page with information about holes that were fixed for Firefox 1.0, Thunderbird 0.9 and 1.0, and Mozilla 1.7.5.

None of the holes were arbitrary-code-execution holes, which surprised me. The worst hole fixed for Firefox 1.0 was the javascript: Live Bookmarks hole, which required some user cooperation and allowed attackers to steal cookies and sometimes execute arbitrary code. In contrast, many previous Mozilla and Firefox releases included new fixes for memory management holes such as buffer overflows. Exploits for memory management holes are harder to write, but they allow attackers to execute arbitrary code without getting any cooperation from users.

Tom O’Malley-Finkel-Harris-Smith

January 25th, 2005

Ever wonder what will happen when all the people with hyphenated last names start having grandchildren? Alaskan musician Lou Nathanson has an answer on his CD, Genetically Enhanced.