Programming

Web Development

The web is an amazing place, built on a somewhat haphazard collection of technologies. I have more than a decade of experience with frontend web development, from the fundamentals of X/HTML and CSS to modern tools such as jQuery and Canvas, with all the browser warts in between.

On the backend, I’m quite comfortable running my own Linux servers. I have experience with Amazon EC2 and some of the other Amazon Web Services. And I know how to keep Apache, nginx, Posfix, and MySQL running.

I’m also familiar with a range of Semantic Web technologies, including XML, XSL, RelaxNG, RDF, SPARQL, and OWL, some of which are connected to my research on biomedical ontologies.

I tend to experiment with the latest tools in my spare time, so I’ve recently build sites or prototypes using Node.js, Snap, and Jekyll.

Languages and Platforms

My first language was Perl, but I’ve moved on to Python as my favourite getting-things-done language. More recently I’ve taken up Ruby for the incredible range of web development tools it supports, such as Jekyll and Sass. And I’ve taken the time to learn Haskell, which is beautiful and powerful but difficult to master.

The language I know best is JavaScript, from years of work on Mozile. I’m familiar with jQuery and some of the other popular tools. And I’m intrigued by CoffeeScript and its promise of a more beautiful syntax for JavaScript.

I’ve also been experimenting with domain specific languages. Having the right language for the right task is important, and a DSL can help you to think more clearly and code more quickly. For instance, this site uses Sass to simplify complex CSS, Slim to write elegant HTML templates, and Rake to run build tasks.

Mozile

My main contribution so far to the Open Source community has been the Mozile project. Mozile is a WYSIWYG inline HTML editor for your browser: you just browse to the page, click a button, and start editing. I started on Mozile as a contributor in the summer of 2003, and took over as the project leader in 2004. I continued to develop Mozile until late 2007, and did some contract work adapting it to the needs of a client. The final version, Mozile 0.8, worked in Firefox and Internet Explorer, and in addition to XHTML editing there were some cool demos for editing XML+CSS and XML+XSL.

However this was all in an earlier age, when Internet Explorer 6 ruled the web. Before Google Chrome. Before GitHub. Before iOS. Wonderful tools like jQuery were just getting started, and I had to plaster over many crippling browser incompatibilities myself, which meant strange bugs. JavaScript engines are also much faster now than they used to be, but at the time Mozile didn’t run fast enough. Although I did my best to write clean and readable code, excellent documentation, and foster a positive community, bugs and slow performance meant that Mozile never caught on. Although I still keep an eye on the mailing list, I set the project aside when I started my PhD.

The web has moved on, and we now have tools like Google Docs and Apache Ace. But none of them do quite what Mozile was designed to do, and I still find myself typing plain-text in tiny little boxes. The web is a little worse off without Mozile.