Blog
October 6th, 2023
How to write a good web browser/extension bug report
October 29th, 2022
Chrome Manifest V3 extension development advice
August 16th, 2022
Setting up a simple audiobook feed on a Synology NAS
June 12th, 2022
My implementation of Getting Things Done (GTD)
April 14th, 2020
How I install Emacs on Linux
March 15th, 2020
Staying sane when working from home
October 15th, 2019
Firefox extension development
December 5th, 2015
Not an entrepreneur
January 18th, 2014
Automatic updates for Chrome extension hosted in private Bitbucket repository
December 9th, 2013
Disabling read-only warnings in Emacs using TRAMP
October 1st, 2013
WordPress rewrite rules
January 6th, 2012
Telit GM862-GPS hex() bug
August 22nd, 2011
bit-ratchet, easier binary parsing in PHP
May 14th, 2011
Embedded development setup with MacBook
May 9th, 2011
Stop Rails trying to parse the POST / PUT request body
December 11th, 2010
Blocking Spotify's P2P Connections
October 6th, 2010
Fixing Spotify uxtheme.dll error on Windows 2000
October 1st, 2010
Web.py checkboxes
April 18th, 2010
How to setup a simple Compojure project
April 7th, 2010
Clean parameter based Nginx re-writes with map
March 4th, 2010
Round image corners with PHP
July 14th, 2009
web.py captcha form
July 10th, 2009
I like Python
July 10th, 2009
web.py + SQLite tutorial
June 23rd, 2009
Meld Darwinports problem
December 26th, 2008
Lisp, CouchDB and cl-couch example usage
December 21st, 2008
String permutations using Lisp
December 18th, 2008
Website change alerts using Lisp
December 12th, 2008
Simple genetic algorithm in Lisp
November 26th, 2008
Month learning game
October 8th, 2008
Setting up a Lisp web development environment
September 27th, 2008
MU puzzle 'solver'
September 21st, 2008
Parsing date strings in Lisp
August 25th, 2008
Visualising Working days with Vecto
August 21st, 2008
Generating transaction dates in Lisp
June 14th, 2008
SQL Injection comment
October 14th, 2007
Myspace account recovery
Atom Feed