Projects

I code a lot for someone who isn't a full-time developer. Why? mostly because coding allows me to put cool ideas out in the world that can change it. It's powerfully addictive.

I tend to be more about great ideas coded and implemented than the actual code itself, but always striving to improve craftsmanship. I also do a lot of data jujitsu and analytics. Useful and notable projects are below. Most code gets shared on Github. You can read about my toolchain and the stacks I use if you're curious.

AArk Global Species Assurance app

Helping make the planet a hoppier place

Amphibian Ark Global Species Assurance app A pro-bono project I took on because of my interest in conservation and concerns over the global biodiversity crisis (and they asked nicely), this application for Amphibian Ark tracks assessed amphibian species and their ex-situ (and often out-of-country) species assurance programs at zoos and conservation insitutions worldwide.

It tries to help bring critically endangered and, in some severe cases, species that are extinct in the wild, and bring them back from the brink to the point they can be re-introduced and thrive.

The app replaces a crazy manual pass-the-spreadsheet process they were using, but also extends their capabilities to allow program managers worldwide to log in and update program tracking details themselves, but also see what programs need to be taken up with urgency by various conservationists as well as give a worldwide view of the state of amphibian conservation.

The software is still in heavy development (effectively a beta really), but I hope to open source it as a base for other conservation organizations to use. It's devloped in ruby with the padrino framework, backed by postgres and is lightweight and extremely fast and built to be deployed to heroku or amazon EC2.

Kobayashi

A sleek, svelte and highly hackable blog engine

Kobayashi is doubly named after the mouthpiece of the infamous Keyser Söze in The Usual Suspects and an extra-geeky nod to Star Trek's no-win mission scenario (more in the README)

I wanted a replacement for wordpress and took some of the best ideas I'd seen in different blog engines, accelerated them to near relativistic speeds and smashed them together in the code equivalent of a large hadron collider (or, as I say... "schmooshed them") to create something slick, sleek, and nimble while remaining highly hackable and working out-of-the-box if you need something up quickly.

It's Unique Selling Proposition is that is supports very large numbers of posts (thousands in my case; 8 years of posts!) without having to spend enormous amounts of time pre-generating a static site before pushing. Due to caching and speed, both speed and resistance to fireballing should be on par with static site delivery.

The code base is small (< 250 LOC), simple, clearly documented and built on top of Sinatra so that you can easily hack on it (pull requests, people!!). It also provides dead easy migration routes from wordpress (a script to pull your posts) and github-darling jekyll (Kobayashi uses an identical file format to jekyll so you can just file copy your posts from jekyll to Kobayashi).

It has several unique (and stolen!) features to support speed, simplicity and general awesomeness as well as advanced blog features like tagging, caching, syntax highlighting, asset pipelining and is built on top of twitter bootstrap for ease of theming. Posts and pages themselves are simple Github-flavoured markdown files supported by nice rake tasks, all git source controlled and then pushed to awesome services like github and heroku for deployment where your server setup defaults to Puma powered, and Rack::Cache and memcached enhanced to give you the biggest possible bang for your dyno buck — as well as surviving the continual slashdotting/fireballing of your site as soon as you deploy your amazingly compelling content.

Plus, I had a blast coding it and learned a suprising amount about design, speed and caching for such a small, simple and seemingly innocuous programming exercise.

Kobayashi is the awesomesauce powering Tundramonkey.

TweetStreamer

MongoDB backed twitter stream display

Another project helping out Leadnow during the 2011 Canadian federal election, this was a project for the National Debate to allow people to be able to discuss and follow on twitter the intricacies of policy details of various arguments.

The app pulls tweets of any arbitrary hashtags (or any arbitrary text in the twitterstream, for that matter) and dumps it into a mongo database very, very quickly and then pulls it out slowly in a nice, ordered waterfall cascading style in a single page.

It had to be programmed with very little turnaround time so there's plenty of room for improvement, but a nice starting template available to any organization that wishes to do a similar event. Improvements I wanted to make but never had time were to provide a way to bubble up questions for moderators so there was a private discussion stream between a moderated panel and the audience discussing it tweeting about it side by side while it was going on. As with most of my code, happy to take pull requests if you'd like to work on it.

LeadNow.ca

Crowdsourced digital activism for Canada

I ran across the LeadNow guys while actually working for another activism organization in Australia and offered to help them get the fledgling operation off the ground tech-wise and gave them some pro bono help where we looked at cheap, fast options to get them up and scaling out before they'd even secured funding. The site is light, fast, and easily scalable from an infrastructure perspective while providing an easily hackable ruby base which links to eAdvocacy's campaigning platform. At time of writing (early 2013), LeadNow is still using it to run their site and campaigns.

My favourite thing about this was that I did most of the work on this, and pushed leadnow.ca live globally, from a lovely little island in the Andaman Sea in Thailand while on an extended vacation. I really need my life to be a little more like that all the time. Doing stuff like this really makes you feel like you've got your life together.

Tess the TOIL-bot

Effortlessly manages In Lieu, Sick Days and Vacations

Tess the TOIL-bot

Tess grew out of the fact I generally work with maniacs. While fun, the big problem is everyone worked way too hard. It all became a bit too macho, sending mails at 3am, massive overtime and people not getting proper rest. Work and creativity suffered, burnout followed and we lost some good folks.

Tess allowed us to easily see who was doing crazy overtime, stick to our legal TOIL (Time Off In Lieu) obligations, make people take days out if it went on too long or got out of hand and make sure our staff were healthy, well rested and happy mutants all as well as make sure everyone knew when people were off so as to deal with resourcing issues.

And for managerial types, staff requests are all through one click email responses and with automated reports and alerts to make it as effortless to manage as possible.

Another "off book" project, written on my own time outside of work, I wrote this because I saw a problem I saw affecting our sustainability and one I've seen at lots of places that need to be solved.

And yeah, I thought Miller's Rosie the Riveter made a great Tess.

GetUp.org.au Re-build

Streamlining digital campaigning for Australia

One of the problems with fast moving advocacy organizations is that they rarely have the time, let alone the resources, to focus on infrastructure until the point it starts to really hurt core campaigning.

Brought in as Director of Online Campaigning, our team redesigned and rebuilt GetUp's core campaigning engine in Ruby on Rails from the ground up for rapid response campaigning, action flexibility, email blasting at "Obama-esque" speeds and an elastic cloud architecture designed to handle the "fireballing"" of the site during email blasts and TV media coverage, while minimizing costs in off-action periods.

LunchMeets

Does one simple thing... it invites people to lunch.

Lunchmeets

Lunchmeets was a simple Rails program designed to solve a seemingly small, but very big problem my organization had, which was people not really knowing other people they worked with. Collaboration and sharing are vastly more difficult with people you don't know and a showstopper if you're trying to change organizational culture. So, this app acts as a facilitator for people to meet other people in the organization, community or area usually by randomly having people matched up to go to lunch.

While an "off book" project, it's been very successful and been running in production (with occasional upgrades) since October 2007 with over 2500 lunchmeets having been served up and at peak one third of all full time staff participating. Several organizations have asked for the code and there has been discussion about a larger not-for-profit Lunchmeets community for London as a whole. To be honest, I keep wanting to find the time to turn this into a small, fun commercial site to help people out and connect organizations internally and to each other. One of the two I'm working on in 2012.

Amnesty.org Relaunch

Re-floating the world's human rights flagship

Amnesty needed a complete overhaul of their platform, online branding and ability to reach and engage supporters in non-traditional locations globally.

A massive project involving overhauls of everything from branding to content to the document library at the heart of all of Amnesty's human rights research, this comprehensive relaunch of amnesty.org is now one of the world's reference Drupal and CiviCRM installations as well as connecting to the internal Alfresco document library and delivering capabilities the organization had never had before as well as the capability for faster turnaround for digital campaigning.

Older Projects

CTSE - Campaign Trading Stock Exchange

This was a combined idea accumulator, information market and crowdsourcing app. Heavily influenced by uservoice, the idea was to provide a way to submit well-crafted, peer reviewed and modded campaigning ideas and have the best ones percolate to the top for consideration and execution by the organization. Still thinking of dusting off and improving this one for both a number of orgs I've seen needing it, not to mentioning Railscamps and Hack Nights.

GPC Political Canvassing application

This was the first rails app I ever built back in 2006 (and it shows... ahem...). It was built in a flurry of activity over a sleepless weekend to meet the urgent need to get good information on voting patterns for the original leadership campaign of Elizabeth May of the Green Party of Canada (I had been asked to run technology for the campaign). It was basic, simple and did exactly what was needed (and not an iota more), randomly giving you a person to call from the membership list and then allowing you to register their intention.

It gave the national campaign team daily statistics (I wish I'd known rake much, much better back then) and let us know exactly how we were tracking. It let us know what ridings we were strong in, which we were weak and which to focus on as being close or a swing riding. While I think Elizabeth was the stronger overall candidate anyway, I do like to think this first dip into Rails helped her come from behind and beat her opponent by a 2:1 margin due to good information, better decision making and more efficient allocation of our scarce electoral resources.

Also, and I still think this was über-cool, Elizabeth thanked me on national television in her victory speech.

Whuffie Beast

Knowledge management is a deep problem for all organizations. Vendors often make it very easy to confuse buying a piece of software with the idea of creating a culture of knowledge management, sharing and findability. Vendors do this by being particularly good at blurring the idea between explicit knowledge (ie. what's written down) and tacit knowledge (what people have in their heads) and what a single software system can actually support (usually, just the former). The problem I was trying to solve with Whuffie was the issue that the organization was phenomenal at writing stuff down, but the writing had low "real knowledge" value. Most of the good stuff was in peoples' heads or written down in ways that made it impossible to extract useful, actionable knowledge and make the organization smarter.

And to get at the stuff written between the lines and the stuff in peoples' heads, you need to have conversations with people... questions and dialogues. But the organization in question had a deeply rooted information gatekeeper culture. The modifications to Beast were an attempt to create a social marketplace for ideas, knowledge and help and to encourage information sharing through recognition and showing it was something the organization valued.

Why Whuffie ? The idea came from Cory Doctorow's sci-fi novel Down and Out in the Magic Kingdom. Basically, it's the idea of a social currency to show personal value from contributions to the collective or larger society. It's the carrot here that makes the social knowledge system work.

Facebook game - Code name Secret Squirrel

This is one I was working on in my spare time as an attempt to create a cooperative multiplayer game which focuses on a common goal amongst a set team of players which they must achieve by working together. It's built to be played via facebook with the goal of creating a global leaderboard of teams competing cooperatively and leveraging the social networking features in FB. No code releases on this one yet (still working on the game mechanics and balance).

The original idea is heavily influenced by Z-Man Games' excellent boardgame Pandemic so a tip of the hat to the designer for the inspiration (and a great game !)

IndyBot

This is a more a bit of a code hobby I work on (very) sporadically rather than a real project and something I modified from an original GIS program idea I had while working on my MSc. The enhancements to the original code are to create an AI system to methodically sift through Google Earth imagery and detect (hopefully) undiscovered archaeological sites through geographic anomalies from artifacts in the images.

I'm hoping longer term to turn it into a more generalized framework for the detection of anomalies from photographic data and apply the same idea for astronomic detection (for example, my someday/maybe target is extrasolar planets. I'd like to name an habitable planet at some point ;-) ). Update: It does seem like the astronomers have already beaten me to this technique as extrasolar planets are popping up all over the cosmos these days.

Dokuwiki MS Word wiki markup macro (unmaintained)

This was a simple Word macro (and later OpenOffice) to deal with a very technically challenged organization that needed to draft, share and collaborate on complex information, documents and press releases but who mostly had a userbase of older, non-internet savvy audience who had (at best) only perhaps ever used Word. The macro simply took whatever was typed, converted it into wiki markup and then copied it to the clipboard buffer for pasting into a wiki page.

I think now it's largely been superceded by online services such as Basecamp and straight up Google Docs, so it's basically abandoned though I still get a non-trivial number of questions about it from people still using or planning on using it. It's released under GPL now and can be found on the dokuwiki site.

Tania Hew has also apparently lifted the code and modified it to create a Word template that can be found on her site.

virusNotification sysadmin tool (defunct)

I merely took over as maintainer on this project when the original author Keith Resar was looking to pass it on. The code simply runs on a cron job and downloaded the latest McAfee software updates for distribution to a local network of computers and mailed the admin to let him know it was sorted. It's been superceded y the AV companies now having built this basic ability into their packages (for a fee, of course).

At the time though, it was a fantastic solution for keeping up to date on virus definitions and saved our internal network bacon at least twice during two major global virus outbreaks that paralyzed less prepared corporate networks. At peak, the software had over 45k downloads.