Why work for machines, when they can work for you?

3D Printing

I built and calibrated a 3D printer. Here are a few related projects:
You can see the objects I've designed and shared on my thingiverse account.

For more talk about my 3D printing hobby, check out that category on my blog.


I've had a lot of fun programming with the Xbox Kinect, which is basically a 3D depth sensor + skeleton tracking.
Ultimately I expect a similar device to become a household 3D scanner, as well as be used for gesture recognition. Right now the resolution is a little too low, and the latency a little too high.


My time teaching using MIT's Scratch imbued me with a deep respect for the power of visual blocks to empower young children to program their own games and animations.

Still a work in progress, Bloccoli allows any Blockly-compatible blocks to easily be imported into the same environment, which then renders the code into a real web page, run right in a browser iFrame.

My latest programming fix has been Node.js, and the notion that you can use Javascript anywhere, from web sites, to servers, to video games.

I've published a few modules on the npm package repository, attended NodeConf 2013, and have generally grown to really cherish the Node.js community for its diversity, creativity, and friendliness.

In fact, this site is served with Node, using domains for error handling and streams for delivering all of the content. That means you start loading the web page before the server has even read the whole first file involved.

The source code is on github here.

Resistance Probability Estimator

I made a web app for calculating probabilities in the board game The Resistance.

It's a very intense game where a couple people in the group are secretly chosen as spies, and the group has to select teams to go on missions, but the spies have the ability to secretly sabotage missions they are on.

I took the opportunity to apply some of the Bayesian statistics I'd been learning over at Udacity's Statistics 101 course, and the result is a very precise, systematic approach to the logical side of this very bluff-heavy game.


Partly inspired by the difficulty of large group cohesion during the Occupy protests, I've put a lot of thought into how the internet could facilitate consensus:
You can read several of my thoughts in this field on my blog.


My first Web 2.0 site was designed to allow people to trade home-brewed beer on the internet. It was built entirely in client-side Javascript using the Parse framework.

Ultimately I became aware of a competitor that had been around for years, had partnerships, and still hadn't gained a strong following, making me think the audience wasn't big enough to fight for.

I have however re-used pieces of this code-base for projects such as OPR Crime Map.


My first major foray into programming was a joke that asked a question: If Apple's Terms of Service say they will reject apps that 'duplicate functionality, such as fart apps', what would they do for a very innovative fart app?
The answer is they rejected it. But I swear it was the most expressive, creative fart app ever. Check out the promo video I made for it:

Site made by Dan Finlay 2013.