What is this?
This is the personal website of Nick Lothian.
I'm a developer based in Adelaide, Australia. I mostly work with internet technologies and I'm involved with a number of open source projects. I also write a number of blogs.
Open Source Projects
This is a list of projects on which I'm a committer or the main developer:
- Classifier4J - Classifier4J is a Java text classification library I wrote to teach myself more about IR (Infomation Retrieval). It's designed to allow multiple classification implementations, and so far has Bayesian and Vector Space implementations (and an contributed k-nearest-neighbours implementation which is unreleased). Classifier4J also has a text summarizer tool, which (ironically) has proven more popular than the classification tools.
- Argos - Argos is a programmatic Java interface to internet search engines. It allows a user to use a single interface to retrieve search results from many search engines including Google, Yahoo and MSN. While the programming model is great, I think it was only partially successful, because the non-published interfaces to search engines continually change. However, I developed it partially to learn some of the (then) new features in Java 5 such as generics and the concurrency libraries.
- ROME - ROME is an open source (Apache license) set of Atom/RSS Java utilities that make it easy to work in Java with most syndication formats. Initally I contributed the ROME Fetcher module, which encapsulates best practices for retriving syndication feeds over HTTP. Since then I've contributed a number of features and bug fixes to ROME itself.
- Pluto - Pluto is the Reference Implementation of the Java Portlet Specfication. When it first became available I became deeply involved in adapting it to meet requirements at work and was voted a committer in late 2004. I was release manager for the first formal release as an Apache Project in December 2004. I later changed jobs and have since become less involved.
Some other projects I've made contributions to include:
- The Spring Framework - I contributed a major set of patches to add support for JSR-168 portlets to the Spring MVC framework. My patches allowed the standard set of Spring Tag Libraries to be used in both portal and conventional web applications. Since that time the portlet support has been refined and was released as part of Spring 2.0.
- Jakarta FeedParser (and the Tailrank version) - on the ROME project I made a set of security patches to fix a XXE issue in the parser. The same issue existed in FeedParser (another competing Java syndication library), so I submitted patches to fix the problem.
- JBoss Application Server- I submitted patches to improve Sybase database support in JBoss.
- Apache Tomcat - I argued for a fix to some cross-webapp session sharing bugs which were breaking the Pluto implementation (and all other JSR-168 portal which run on Tomcat). My patches weren't used, but I did pursuade the Tomcat team that they had a bug, and an alternate solution which I suggested was implemented.
- Mark-All-As-Read greasemonkey script. The inital version of Google Reader did not allow the user to mark all items as read. I (an many other users) found this annoying, so I wrote a greasemonkey script to fix the problem.
- Google Homepage version of Google Reader - I wrote a Google Homepage RSS reader by reverse-engineering the internal Google Reader API. Google eventually created an official homepage module but were kind enough to thank me for my version.
- De-spammed blog search - I created a de-spammed version of Google's blog search. Greg Gershman (Blogdigger's founder) said:Rather than fuss with spam blogs, Nick Lothian did something about it, and fixed Google Blog Search, himself. Never mind that he happens to have done a pretty swell job of it, to boot. Simply put: Nick Rocks.
- BadMagicNumber - my oldest existing blog, which I've writing since early 2003. I'd previouly had two other versions, neither of which are still around. Much of the content on this is about Java development
- WWWScope - a newer blog, mostly about internet technologies and development. Usually less technical than my BadMagicNumber blog.
- Nick @ education.au - my work blog. I try to focus on things relevant to my company, ie: technology in education.