By day, I use Nokia's internal SCM tools, but by night I use github. A lot. For personal projects and for experimental ideas and just sharing things between the various places that I use computers. My main github page might be quite chaotic, and does not include some of the projects which I collaborate on with others. Here is some order to the chaos:
-
rest-driver
java, clojure, scala
A mature and well-used library for making it easy to test RESTful services. The core library is written in Java and there are Scala and Clojure wrappers underway too.
-
foosaholics
clojure, javascript
To learn more about the Heroku platform and MongoDb, and to keep track of our table-football scores. Current league.
-
aa-maven-plugin
clojure
To teach myself java-interop with Clojure I wrote a maven plugin without using any java at all. This plugin shows ascii-art during your maven build.
-
unshred
javascript
Solving an online programming challenge in JavaScript. Although Python or C++ were the recommended languages I decided to try some image-analysis in JS. The challenge was to recreate an image which had been put through a shredder.
-
pacman
clojurescript
ClojureScript is a dialect of Clojure which compiles to JavaScript rather than JVM bytecode. After its announcement I was keen to play with it so I decided to build a game.
-
doomsday, hawk
bash
I spend a lot of time programming using bash. But due to its nature these are usually 1-off scripts which never make it to github. I've got a couple of good ones though:
- doomsday allows you to practise the doomsday algorithm, for quickly calculating the day of the week for a given date.
- hawk watches a directory for changes to files and runs an arbitrary command. Useful for running tests automatically when source files change and similar operations.
-
so-leaderboard
javascript
A leaderboard for you to compare yourself and your friends to people like Jon Skeet on StackOverflow. I wrote this with a friend while researching RESTful APIs on the web (SO's is pretty good!) - and practising TDD in JavaScript using Jasmine.
-
Protovis Grapher
javascript
Protovis (now called d3) is a Javascript library for plotting graphs and drawing diagrams. It's extremely interesting in its design and while learning it to help write some tools at work I wrote this simple grapher which uses HTML5 localstorage to retains its data too. I also wrote two visual representations of approximations to π: by counting squares, and by counting triangles.
other things
- Clojure - A lisp-like language on the JVM with strong features around concurrency.
- Maven - Industry-standard bulid tool, I contributed to the test-running framework.
- Overtone - Clojure's API for SuperCollider, allowing programmable music/sounds from emacs.
- CodaHale / metrics - Reporting tool for JVM-language apps.
- Csound - An audio-synthesis language, I wrote some opcodes while at university.