Alex Keeling

Awesome Domain Finder October 2019

Here's a website I put together which generates random domain names, checks whether they're available to register, and displays the available ones to you:↗

Sometimes the available options also lend themselves to suggesting a project or business idea.

The site in an iframe

Using and Abusing AWS Lambda June 2019

At Maritime DevCon 2019 I gave a talk about AWS Lambda functions and unconventional ways to use the Lambda environment.

Me giving a presentation to a crowd.
Me at Maritime Devcon 2019!

See the slides

ffmpeg standard command February 2016

I use ffmpeg just infrequently enough that every time I go to use it, I need to look up the commands again. I'm typically converting a video taken with my point-and-shoot Canon from a huge MOV file to a much smaller MP4 so that I can more easily share them with family & friends.

For future reference for myself, here's more or less what I usually want:

                ffmpeg -i input.MOV -c:v libx264 -crf 22 -s 1280x720 output.mp4

CRF is Constant Rate Factor. Lower values give larger file sizes with better quality, while higher values give smaller file sizes with lower quality. A good rule of thumb is to try for between 20 and 30. When I'm just sending videos of things like kids' birthday parties to family, I'll often end up around 30 or 32 to get the file size down. If you're working on something important, you'll want to stick to lower values.

More information written by people more experienced with this than me can be found on this ffmpeg page and this Stackoverflow question.

Photo Booth Surprise! Summer 2013


For only 10¢, you could get your photo taken at the Photo Booth Surprise! Unlike a traditional photo booth which makes a print of your photo for you, this photo booth sent your photo to be displayed on screens scattered around town.

Wooden box with coin slot, big red button, and camera.
The photo booth

This work was part of the 2013 Mondo Monde New Media festival. You can still view all the photos taken.


For the photobooth itself, I built a wooden enclosure which revealed a coin accepter, a webcam, and a big red button. Everything was connected to a Rasperberry Pi hidden inside. Upon entering two nickels or a dime, the coin acceptor would alert the Raspberry Pi via the GPIO pins, and the Pi would light up the red button, start watching the webcam, and listen for a button press. Pressing the button would tell the Pi to capture a frame from the webcam, and upload it to a website.

Computer screen in the window of an art gallery.
Screen in a window showing the photos
Woman kissing child in the photo booth.
Slide show of all the photos taken

The website was setup to receive connections from the Raspberry Pi, and accept images from it. The images would be added to a folder full of photo booth images, which were cycled through upon viewing the website. This webpage, cycling through all of the images, was opened and put into fullscreen mode on a few computers around the town, in shop windows.

agit POV Summer 2013


agit POV is a project run by some folks based in Montreal. They travel all over the world putting on workshops where the participants create an arduino-based led "Petit objet de vélo". It gets hooked to a bike wheel, and when it spins, the leds flash on and off very quickly to spell out a short message.

When the agit POV team came to Sackville in July 2013, I took their workshop and created my own POV. It was great. They've been doing it for a while, and they've made a few generations of POVs, adding improvements like more leds. One thing that they didn't have yet was the ability to write lowercase letters.

Spinning bicycle wheels with LEDs spelling out 'Share the Road' and 'CEREBRO'


I took a look at the arduino sketch code (C code) being used to program the POVs, to see exactly how the current letters were implemented. I then set about creating an alternative character set which would include lowercase letters, as well as common symbols, punctuation, and accents.

A single letter when displayed is 12 leds tall, and 7 units wide. (your speed on the bike determines the actual width of a letter) So, POV stores letters as an array of 7 integers. Each integer indicates which leds should be on, and is declared as something between 0x000 (all leds off) and 0xfff (all leds on). Each hex digit represents four leds, and the least significant bit corresponds to the top of a letter.

Spinning bicycle wheel with LEDs spelling out 'Paradise'

To create an expanded set of characters, I wrote out all the letters in a plain text editor using a monospaced font, 7 characters wide, 12 characters tall, and used '#'s to represent 'ON' leds, and '_'s to represent 'OFF' leds. Once I had all my letters written out, I wrote a small shell script to parse the patterns and spit out appropriate hex values between 0x000 and 0xfff. From there I just pasted the new characters into the arduino sketch code, and reprogrammed my POV! It was pretty fun. Feel free to check out the code.

Notice in the images the difference between the all-caps, "CEREBRO", and the mixed-case, "Share the Road" & "Paradise".

anamnesis the ability to hold in the mind February 2013


A collaboration with Rebecca Blankert. This installation combined a series of videos of abandoned/shut-down industries from around Sackville run through a variety of video filter effects and carefully calibrated projections onto a three dimensional canvas.

Boxes with matching projections


After filming a series of slow panning shots documenting a bunch of businesses & industries of yesteryear, we created a variety of video filter effects in Max/MSP/Jitter. Our video ran through these filters live, and the resulting video streams were sent to MadMapper. Here we were able to define the edges of the boxes, and control which video streams were projected onto which surfaces.