Secret Santa List Generator And Mailer

The Problem

This Christmas season I found myself running a secret santa, completely over the internet. I want to keep everyones secret santa information secret, without even me knowing it. I also wanted to automate the emailing process, which was required to keep the information for who had who, away from me. A log file also needed to be produced (and promised not to be looked at... or encrypted), to help fix disputes. So I ended up with the following requirements:

  • Takes a list of participants and generates secret santa pairs.
  • Create a message from a template
  • Send the email
  • Create a log file

The Solution

I am not going to lie, this piece of kit was not particularly difficult to write, but I believe is a good argument for why everyone should know how to write scripts; and why public API's and libraries are awesome.

To write the script I chose Python, which has a built in JSON parser library, and support for SendGrid's API. I chose SendGrid to send the emails because it required the least setup, I just needed to set up an account and I could send emails. Their API was simple and all of the code I used for interacting with it was ripped directly out of their examples. Quick and easy, just what I wanted.

I then came up with a quick JSON structure for containing all of the information I needed, an example of which can be found below:

The python script parses the JSON file, shuffles the participants, links them together into partners and then sends each of the participants an email populating the template sotred in "message". I will admit this script has a lot of short comings, but it successfully helped me send out my secret santa emails and everyone is happy!

You can access the code on Github.

Making Broken Electronics Into Wall Art


About one year ago (Summer of 2013) my Kindle Touch 3G died a terrible death and could no longer be charged. I tore it apart initially with the intention of getting it working again, but ended up keeping it apart and turning it into a piece of wall art after being inspired by Bolt in Boston, MA. I found looking at the internals of a well designed piece of hardware rather inspiring to my Electronics Designer brain, and decided I wanted to keep old, now defunct (or obsoleted) pieces of hardware around to remind me of what good design looks like, and an outlet to criticise designs constructively.


  1.  Heavy Duty Double Sided Tape (Amazon)
  2. 12" x 24" Clear PETG Sheet (Amazon)
    1. I would suggest getting a white (or other color) acrylic sheet (Amazon)
  3. Misc. screws, washers and anchors for mounting. This is wall specific

The Process


I forgot to record a teardown video as I went, but I am attaching one from David L. Jones from the EEVBlog. I could not find a teardown of the exact model I have, so now I wish I remembered to record it.


To lay out the components I taped down some standard US Letter 8.5"x11" pieces of paper onto my desk and marked the corners of the PETG sheet. I also used this sheet to mark out my drill its (1/8" drill hits each 1/2" in from the sides). I made the drill hits before finishing up the layouts and then placed all the components on the white sheet and marked the corners of the components. This is one advantage of using clear plastic; however, I think the aesthetics of opaque are much better so I suggest using an opaque acrylic sheet instead.

Once I felt secure with the layout I broke out the double-sided mounting tape and mounted all of the parts down. Nothing fancy, adjust the amounts of tape so that it is making full contact. I also reccomend cleaning both surfaces with Isopropyl Alcohol before applying the tape for the best quality bonds.



This is a simple and easy project, but can make a workspace more inspiring. I have also been thinking about doing this for old broken, or obsolete, PCBs of my own designs as a trophy wall of sorts. Have fun with it, and let it inspire you!



Tutorial: 3D KiCAD Parts using OpenSCAD and Wings3D


KiCAD is an Open Source EDA (Electronic Design Automation) suite, which I use for schematic capture and PCB layout. Like many other EDA tools that are floating around KiCAD can make 3D renderings of your circuit boards. If you use stock PCB symbols this is great; however, when you make your own PCB footprints you need to define your own 3d models.

I personally find it convenient to utilize OpenSCAD to make 3D models of most eletrical components, which are simple and easily defined parametrically in OpenSCAD's language. OpenSCAD allows you to write code that translates directly to a 3D model and export this to an STL. However, KiCAD expects VRML files which can be easily generated in Wings3D (which can import STL files). On the plus side Wings3D will allow us to add color elements and surfaces for nice rendering by KiCAD.

However, there is one pretty terrible problem: Wings3D can't for the life of it read in STL files read by OpenSCAD. Actually, Wings3D will just crash. To fix this you can use meshconv; however, use of meshconv does require use of the command line (in either Windows, OS X or Linux). I can only vouch for its usability under Linux. This will modify our workflow a little bit, but not by much.

The question now is how does this workflow go down?
Continue reading Tutorial: 3D KiCAD Parts using OpenSCAD and Wings3D

DIY PCB of an E-Match Test Rig


For BU Rocket Team I needed a quick way to test E-Matches and get two readings off of then, namely current draw and to monitor voltage sag from a 3.7V Lithium Ion battery which will eventually be powering the board that is controlling the motor.

At first I tried to test using an IRF820 I found. The main reason was that I could quickly breadboard a test rig, get my data and call it a day. However, the devil is in the details, because at 3.7V this transistor simply can't draw more than 50mA or so. However, for the actual controller board, called Firestarter, I was going to use SI2308BDS N-Channel FETs, which have a much nicer V_ds vs I_ds curve for our application. The SI2308s only come in a SOT-23 package. There are methods to get around this, but I decided to take the opportunity to try PCB Etching.

Continue reading DIY PCB of an E-Match Test Rig

Water LED Art: Making LEDs Light Up With Water

Water Light Graffiti by Antonin Fourneau, created in the Digitalarti Artlab from Digitalarti on Vimeo.


When art and electronics meet some very beautiful things can be born. Here Antonin Fourneau made this wonderful piece, basically a wall of circuit boards with LEDS, when exposed to water the LEDs light up. A friend of mine came to me immediately after he saw it and asked me how it worked, so I took the time to do some experiments of my own and am currently working on making my own Water LED Graffiti display with the BUILDS hackerspace at Boston University.

I gave a basic explanation to Kawandeep Virdee with New American Public Works over The Sprouts mailing list, another space in Boston, to explain some of the engineering behind Antonin Fourneau's amazing art piece. His writeup can be found here:

Basically there are two exposed pieces of metal around each LED (that correspond to each LED). Water is all pretty much conductive, due to the fact that water ionizes things, and as water is splashed onto these metal contacts you will have an decrease in resistance and allow current to flow through the LED. All said and done, taking some measurements you generally wont get much lower than 100k, but it is geometry dependent. However, for many LEDs, especially super efficient super bright ones, this is enough current to get a pretty bright light coming out of them (we attempted with a small pad 1206 pad on a PCB we had around and a super bright 3mm blue LED).

Read on for more.
Continue reading Water LED Art: Making LEDs Light Up With Water

Artemis Synthesizer: A Music Synthesizer Kit


For Boston University's Artemis Project, a STEM education summer program for female rising high school freshmen, the BU Electronics Design Facility designed a synthesizer kit and ran a two day soldering workshop for the students. The whole kit was put together over about a 1 month period.

The Artemis Synthesizer is a basic 12-bit resolution synthesizer which has an output sample rate of 22kHz. The output audio is filtered at 11kHz to satisfy Nyquist and prevent weird aliasing and reflections in the output audio. Internally the synthesizer generates sound using a predetermined wave table, which can be changed and recalculated if desired. By default, the wave table contains a sine wave with 256 steps, but harmonic sound data can be programmed into the synth kit using our web interface.

The synthesizer contains two interactive modes and one mode for the optical communication link. These modes are: a keyboard mode, which contains 4 scales (C major, C pentatonic, C blues and C minor) and has 8 available keys; and a sequencer mode, which can hold eight 8-step by 8-note sequences. In sequencer mode, new sequences can be entered from the web interface.

The optical link, which is kindly called the "Optoloader" has its own separate mode and detects timed transitions between black and white from a computer monitor. The light levels are taken in on a photo-transistor and transitions detected using an analogue comparator interrupt with the comparison set at V_bat/2. The data is encoded using BiPhase Mark Code which encodes the clock with the data. The link is generally reliable when the monitor is set to a high brightness and a low speed is used. Mostly it allows for us to have a kit which is interactive with minimal programming experience and can still be changed and played with long after they leave. Thus the web interface which was developed by Sam Damask becomes very important for the end goal of our project.

The development team contained:

  • Christopher Woodall [Me] who designed the kits and wrote the firmware
  • Eric Hazen who reviewed my designs, advised my decisions and wrote the assembly instructions and parts list
  • Sam Damask who wrote the web interface code.

Along the way I documented the process, explaining a few design decisions and experiments. I will go over vital information and reference the posts which contain relevant information as I go along:

  1. Artemis Synthesizer 1: Testing the TDA2822 Audio Amplifier
  2. Artemis Synthesizer 2: Interfacing with the MCP4921 SPI DAC
  3. Artemis Synthesizer 3: Basic I/O with Buttons and LEDs
  4. Artemis Synthesizer 4: Post-Mortem
  5. The Optoloader: Transmitting Data With a Blinky Box (Coming Soon)
  6. Fixed-Point Arithmetic: Fast Fractions using Integer Arithmetic (Coming Soon)

Read on!
Continue reading Artemis Synthesizer: A Music Synthesizer Kit