Sunday, January 6, 2019

IoT button notifies you when laundry is done

The AWS IoT button is a few years old now. This is one of many gadgets I bought before knowing its use. Today it's glued to my washer/dryer and notifies me when my laundry has finished. Just tap once for the washer or twice for the dryer.

The code is very simple. A Lambda function is invoked, which starts a StepFunctions workflow execution. The workflow waits a specified duration of time (37 minutes for my washer, 107 minutes for my dryer) before sending an SNS message. My cell phone is subscribed to the SNS topic.

Code is on GitHub here:

KSMO and back to KBFI

I successfully made the trip all the way down to Santa Monica (KSMO) and back to Seattle. Rather than journaling in two places, I ended up keeping track of the trip on my Instagram:

Posts are embedded here

A post shared by Dylan Rush (@dylanhrush) on

Wednesday, December 12, 2018

KBFI -> KVUO - Portland OR

I took off from Boeing Field this afternoon in an elderly Cessna 150M, N7991U. My plan is to travel up and down the West coast. San Diego would be a stretch goal. Los Angeles would awesome as well.

Today I planned on stopping in Hillsboro and continuing to Eugene, but weather was uncooperative.

Headwinds were quite strong; I often measured just 59 knots across the ground. I had to temporarily divert to Kelso to refuel when HIO showed IFR conditions. I made it to VUO (Pearson Field, Vancouver WA, just north of Portland) to stay for the night.

Wednesday, July 11, 2018

Nixie Tube Clock

My brother bought me some nixie tubes for my birthday a while back. They sat in my desk drawer for a long time, until I finally got around to building this clock.

The nixie tubes are driven by four SN74141 IC's and a 180v power supply, hanging off the back:

I control it with an Arduino and a DS1307 RTC module, keeping battery backup. The button on the side can adjust minutes or hours with short or long presses.

This was the first time using 3D printing in a custom electronics project. I sketched the model using Blender. The PCB's slide into their respective sleds, and a front gate locks the main PCB in place. The enclosure is designed to be replaceable.

Soldering this beast took a few weeks. I'm going to try printing my own PCB next time.

I resurrected my old Printrbot Simple from five years ago. With a ton of tweaking and calibration, I was able to print the rear sled and bracket, but it was unable to finish the full 10cm base.
So, I finished the base and front gate using an Ultimaker from work. What a beaut

Code and enclosure model:
Help from:

Saturday, July 15, 2017

Live Sectional Map

A polished and well-crafted variant of this project was featured on HomebuiltHELP's Tip of the Week

The Live Sectional Map is a small cylinder showing the aeronautical sectional chart around Sea-Tac. Seven airports are illuminated with colored LEDs. When the cylinder is plugged in, it will download the METARs for these airports every minute, and update the color for each airport depending on the conditions.

Just like ForeFlight, VFR is green, MVFR is blue, and IFR is red. LIFR flashes red.

The map was super glued around an old Quaker oats can. I wrapped it in rubber bands for a day to let the glue settle.

I drilled holes for each airport and hot-glued common cathode RGB LEDs to each airport.

After experimenting with an Arduino like I did with Thinking Man, I decided Arduinos are a pain to connect to WiFi, and Raspberry Pis are much more robust. I SSH'ed onto a RPi running Raspbian on headless mode while developing. The RPi's GPIO ports control each LED anode.

I used a simple GPIO breakout along with female-female jumpers to connect each LED. The cathodes were strung along this awkward extension, shown below. I used a 200 ohm resistor on ground for the whole circuit. Later I found out the red LEDs ate a lot more power, and would dim rival blue LEDs when in use. Rather than put 21 resistors on all of these anodes, I just balanced the color using pulsewidth modulation through the RPi.GPIO library. Code:

Sunday, February 28, 2016

This project is as awesome as it is dumb. A website where you can order a robot to flip a coin for you, and watch the outcome on streaming video.

Note that mobile users probably won't be able to see the live video.

I used a combination of ServoBlaster, VLC, and good old CGI + Bash to make this work.

The robot, sitting on my kitchen counter
View from the camera, which is live streamed to the website

Powered by a Raspberry Pi

Sunday, February 7, 2016

Alexa-Connected Speakers

This is a follow-up to my last post, Internet Connected Speakers

The speaker-controlling widget
I finally got around to building an Alexa skill to control my speakers. Now I can control my TV's volume hands-free with my Amazon Echo, and the commercial skip feature works great.

All code hosted on Bitbucket here

If you'd like to build your own:

1. Make the IR blaster device as explained in the last post.

2. Program it using the sketch in my Bitbucket repository. You will have to modify the WiFi SSID and password variables.

3. Set up your home router so that your IR blasting server is hosted on a port other than 80.

4. Sign up for an AWS account and create an AWS Lambda function to control your speakers. The Lambda code is also in my repository; you will have to modify the host and port variables. Use "Alexa Skills Kit" as the event source. Note the ARN of the lambda that you create.

5. Set up an Alexa skill using the Alexa Skills Getting Started Guide. Creating your own Alexa skill requires many steps. If you follow the getting started guide, you will set up an example skill. You can replace the intents and hints from the example with those hosted in my git repository. Then, use the Lambda ARN as the skill endpoint.

Note that this project is terribly insecure. If someone knew my home IP address, they could very easily gain control over my speakers. The ESP8266 is currently limited in that it does not support TLS when hosting a server. If TLS were supported, the device could use a secret password only known to the Lambda invoking the function. But without TLS, that password would be transmitted publicly. Until secure servers are supported on the ESP8266, I can't recommend this project for anything serious.