Linear Motion from a Rotary Actuator

Locked State

Box lid prototype in the locked state

This is part of a project I have been playing with on and off for the last 9 months. It is similar in concept to a reverse geocaching box but with cooler locking mechanism. I have always appreciated the giant vault door bolt mechanisms and figured designing a laser cut version controlled by a servo would be an interesting learning exercise.

To accomplish the desired effect I had to solve a fairly simple geometry problem for the linkage mechanism. I figured this might be of use to someone else or my future self so I will walk through the derivation of the basic equations for finding functional linkage lengths.

Read more

Build Log: Helicopter on an LCD

This was a fun little LCD project I spent an afternoon putting together. It’s based on a whole family of single button obstacle avoidance games. In short you move your helicopter up and down to avoid obstacles, scoring points for the distance travelled before inevitably crashing.

Read more

Build Log: Shaken Granular Laser

Completed enclosures

Update: Someone translated this post to Russian.

Update: I have confirmed that the output is still well within the spontaneous emission range and I am doubtful I can build an exciter with enough power. The paper uses a 532 nm Nd:YAG laser with a 7ns pulse duration and samples were performed at energies of 1.6mJ and 3.7mJ. This means that their source had an approximate power output between 229kW and 529kW.

There was an interesting article a while back over at new scientist describing research into a laser with a tunable output wavelength, after tracking down the original paper over at and looking at there experimental setup the I decided the device should be pretty straight forward to build.

The principal behind the design is you suspend a bunch of reflective balls in a laser dye and shake them really fast so the balls behave as though they are suspended. The laser dye is then excited by an external source and by changing the vibration frequency you can filter out different wavelengths of laser light emitted by the dye.

Read more

The Internet Defense League

I tend to try and avoid politics because I am allergic and they usually give me a rash. However I have a weak spot for anything related to freedom on the internet, so even though I’m from Canada I had no problems blacking out my blog for the day to help fight SOPA. So in that vein I strongly support the Electronic Frontier Foundations Internet Defense League, a centralized way to rapidly spread the word about threats to the free and open web.

In the interests of helping spread the word I have put together a small WordPress plugin to automatically inject the necessary javascript into your site so you can participate as well.

Download the Internet Defense League Plugin(

UHAAPI Version 2.0

Geminid Meteor Shower
I have finally found some time to make some much needed improvements to the Unofficial Heavens Above API. While not quite ready to see the light of day I thought I would post a list of some of the new features.

Read more

Some Thoughts on Software Accessibility

I had an interesting discussion with a good friend of mine recently about web accessibility that led her to a blog post and got me thinking. According to Human Resources & Skills Development Canada in 2006 (I was unable to find more recent numbers) approximately 1 in 7 individuals reported having some form of disability. To put this in perpective: If we treat that as a more or less global average – most of the statistics I pulled support this assumption – and we consider that as of September 2011 Facebook reached 800 million users then nearly 114 million of Facebook’s users have some form of disability. So what can we as developers do to make our services more friendly to these individuals?
Read more

Selecting Random Items in Amazon SimpleDB

I am in the middle of working on a project that relies heavily on the ability to select random items from an Amazon Web Services SimpleDB domain. A little bit of google-fu turned up an answer to a post over at Stack Overflow which described Amazons recommended approach. A really rough psuedo-code implementation looks like this:
Item selectRandomItem() {
// Generate a random value
String randomValue = generateRandomString();

// Retrieve the data from SDB
Item item = randomLE(randomValue);
if(item == null) {
// Handle the edge case where there are no items
// with randomizers less than the random value
item = randomGE();
return item;

Item randomLE(String randomValue) {
"select * " +
"from MyStore " +
"where randomizer <= '" + randomValue + "'" +
"order by randomizer desc " +
"limit 1"
Item randomGE(String randomValue) {
"select * " +
"from MyStore " +
"where randomizer >= '" + randomValue + "'" +
"order by randomizer asc " +
"limit 1"
The algorithm stores a randomizer field with a random value on all of the items; when you need a row, generate another random value and select the first item whose randomizer attribute is less than this new random value. Unfortunately this approach is broken. Read more

Scraping the Heavens Above

Expedition 23 Docking (201004040010HQ)

Image Credit: NASA

A couple of weeks ago a light went on and I felt the need to finally get around to building something I’ve been tossing around in my head for a while. If you are unaware of the amazing Heavens Above website then I encourage you to check it out before reading any further. They have a huge amount of satellite tracking data and have done all of the math for us of figuring out when a particular satellite is visible (e.g. the International Space Station). Unfortunately for us hobbyists they don’t provide an API and as a result whenever a neat project comes along that uses the Heavens Above data set there is HTML scraping involved which can be a bit of a hassle; which brings me back to what I’ve been tossing around in my head.

Read more

All Pork Plantain Sausage

After taking a sausage making course back in October I decided to put my new found skills to work and concoct my very own variety of the tasty links. Something with a Jamaican bent seemed like a good idea. I decided it was going to be an all pork sausage and since I happen to like plantains I started there. After some flipping through The Flavour Bible (I can not say enough good things about this book but that is another post) I compiled a nice list of savoury spices and got to work hammering out a recipe; something a little bit spicy with just a hint of green plantain. Read more

Date Liqueur

This is my second attempt at making a small batch of date liqueur. The dates have been soaking in Everclear for 3 weeks and I drained off the first batch today. I’m going to try and repeat this process a couple of times to get as much flavour out of the dates as possible. I have varied the technique I used for the first attempt to something a little more traditional for this round to change some of the characteristics with which I wasn’t 100% happy.

Read more