Open source

Eudora is dead, long live Thunderbird


This past week Qualcomm, makers of phone software and telecommunications systems, announced that they were dumping their aging Eudora email program and would instead be focusing on contributing to the Mozilla Foundation's excellent Thunderbird program with a Eudora-branded & enhanced edition. While some questions remain to be answered, for example what will happen to the existing code and whether the enhancements to the Eudora-branded edition will be made available in a license suitable for inclusion into the core Thunderbird code-base, it is to all intents a major achievement for one of the world's best open source projects.

From a personal perspective, Eudora was the first email program I ever used on a PC, way back in 1995.  While I had used email apps on other platforms, on Windows it generally felt "right" and worked the way I expected an email app to work.  I continued using it over the years, but the lack of progress and the continual bloat pushed me away from it, and as it happens I migrated to Thunderbird in 2003.  Since then I've helped many other family members also migrate to Thunderbird and it has worked well for them also.  While I'm sorry to see Eudora become little more than a brand name after being the defacto standard for so many years, I'm encouraged to see my cross-platform email app of choice gain more acceptance.

ColdFusion MX 6.1 with Apache 2.2 on Windows


Apache 2.2 was released to a mixed fanfare. While everyone was pleased at the improvements most had to rest on their laurels while their web programming technology of choice was updated accordingly. At the time of writing, PHP 5.1 and 4.4 have an unofficial connector available (unless you want to run the unreleased 5.2 code), Ruby on Rails has several ways of working with it, and many others have received updates. Adobe's ColdFusion MX 7 was given an update which provides compatibility, but the company decided against including (the older though still officially supported) 6.1, so officially users of 6.1, my current employer included, are up the proverbial creek without an equally proverbial paddle. Or so we thought.

Before I explain how I did this, I just wanted to mention that Adobe does not officially support running CFMX 6.x with Apache 2.2, and neither they nor I am responsible if this turns your web server to mush. Proceed at your own risk.

As it turns out, presumably thanks to the wonders of Java binary compatibility, the official ColdFusion MX 7 connector works with ColdFusion MX 6.1, though I had to tweak the instructions a little. Here's what you need to do to get it running on Windows:

  • You'll need both ColdFusion MX 6.1 and Apache 2.2 installed and running correctly.
  • Stop both the Apache and ColdFusion services.
  • Make a backup of both the Apache and ColdFusion directories.
  • Start up the ColdFusion services again.
  • Download the updated connector file from Adobe's site (read the full release instructions if you want).
  • Extract the wsconfig.jar file from the file you just downloaded and put it under your ColdFusionMX directory under runtime\lib, e.g. C:\CFusionMX\runtime\lib. It will ask if you want to overwrite the existing file, so click Yes.
  • Open up the command prompt and move to the runtime\lib directory, e.g. CD \cfusionmx\runtime\lib.
  • Enter the following command all on one line:

    java -jar wsconfig.jar -ws apache -dir /apache2.2/conf -bin /apache2.2/bin/httpd.exe -coldfusion -v

    where "/apache2.2/" is the directory you have Apache 2.2 installed. Note that I have both ColdFusion and Apache installed on the same drive so didn't have to give any drive letters, and I used the UNIX-style directory separator (forwards-slash) instead of the Windows-style (backslash).

  • If you got an error message that said
    'java' is not recognized as an internal or external command, operable program or batch file.

    then you need to close your command prompt window, download and install the Java Runtime Environment (JRE) v1.4, and try again.

  • Presuming everything worked correctly you should see the following in your command prompt window:

    Macromedia JRun 4.0 (Build 107948) Windows 2000
    os.version: 5.0
    os.arch: x86
    platform: intel-win
    Extracting resource connectors/installers/intel-win/prebuilt/jrunwin32.dll
    file defaulted
    last modification date: Thu Apr 06 13:07:04 EDT 2006
    size/compressed size: 73728/26315
    to D:\CFusionMX\runtime\lib\wsconfig\jrunwin32.dll
    Created file D:\CFusionMX\runtime\lib\wsconfig\jrunwin32.dll
    findServers(): found server default at
    Found JRun server default at
    this host is tlcweb:
    web server: Apache
    web server directory: D:/Apache2.2/conf
    verbose connector logging: false
    apialloc: false
    force resource extract from jar: true
    CFMX: true
    mappings: .jsp,.jws,.cfm,.cfml,.cfc,.cfr,.cfswf
    filter mapping prefix: false
    Using Apache binary D:\Apache2.2\bin\httpd.exe
    Server version: Apache/2.2.3
    Apache 2.2.3 is recognized
    isValidVersion(): Apache is 2.2.3
    Compiled in modules:
    Parsing Apache configuration file D:\Apache2.2\conf\httpd.conf
    Extracting resource connectors/apache/intel-win/prebuilt/
    file defaulted
    last modification date: Thu Apr 06 13:07:04 EDT 2006
    size/compressed size: 65536/25836
    to D:\CFusionMX\runtime\lib\wsconfig\3\
    Created file D:\CFusionMX\runtime\lib\wsconfig\3\
    Wrote file D:\Apache2.2\conf\httpd.conf
    Added JRun configuration to Apache configuration file D:\Apache2.2\conf\httpd.conf
    Created file D:\CFusionMX\runtime\lib\wsconfig\3\README.txt
    Wrote file D:\CFusionMX\runtime\lib\wsconfig\
    Error stopping service. The web server must be restarted to complete this operation.

  • At this point start up the Apache server and try loading a CFM file. :-)

Wordpress Widgets - Enhanced Search Box


After installing Wordpress 2.0 and discovering the wonderful Widgets plugin I added a few widgets to this site. While the widgets are great and give a really wonderful level of configuration over the site, I was quite disappointed to discover that the default search box looked pretty, well, aweful:

The old search box

So I did what every self-respecting geek does, I fixed it :-) I present to you, WPWidgets_EnhancedSearchBox v0.1:

The new search box

You can download a small zip file I made of both the new widgets.php file and a diff file off the SVN source code (in case you're into that kinda thing), along with a quick readme.txt file explaing how to install it, which you can download at will:

Project managment software for the rest of us


A really awesome find this evening. I've always been on the lookout for good project management tool. I've wanted something that was web-based (so that I could access it from anywhere), open-source (so that I had full control over the code if needed), easy to use, and able to cope with both my personal projects along with any consulting work I pick up along the way. There are some definitely great programs available, for example 37Signals' Backpack, BSAG's Tracks, etc, but most of them suffer in one way or another, particularly Backpack which is a hosted application so you can't control its inner workings. In the end I found a program called activeCollab which is very heavily based on Backpack but is open source, so you host and manage it yourself. The current version works well for what I need and the update coming in a few weeks adds many improvements, mainly being able to add comments to anything and a rewritten file system to simplify uploading and managing attachments. Worth trying out.

TIP: Apache rewrite rules forgetting stuff


On a side project I'm working on they're using Apache mod_rewrite rules to turn ugly page addresses into pretty ones, e.g.:

RewriteRule widget-(.*)\.htm$ widget.php?id=$1

Nice goal and in general it works well. There was a problem, though, when they started doing this the SAJAX AJAX fancy stuff I wrote stopped working. A few thousand hair and some time later I worked out that one very simple keyword was missing from the rewrite rules, the %{QUERY_STRING} keyword to retain all of the extra fields passed in by SAJAX, e.g.:

RewriteRule widget-(.*)\.htm$ widget.php?id=$1&%{QUERY_STRING}

Also, note the extra ampersand in there before the keyword, you need this to separate the extra values from the one you're passing in from the widget-somat.htm address. Et voila!


Subscribe to Open source