show and tell for hackers in DC.


16 May 2019

Big thanks to WeWork for hosting.

Food and drinks are sponsored by the pseudo-anonymous Jay Kay! Thanks Jay Kay!

Want to be an official sponsor? Check out

Event link:

Notes copied directly from the hackpad!

Mike McGurrin

66 Tolls: Alexa skill that provides current tolls for I-66 inside the beltway, as well as travel speeds on I-66 and US 50, utilizing open data from VDOT.

Project Description


66 Tolls change dynamically but they can be as high as $40! VDOT makes open data available with their Smarter Roads dataset (28 datasets available). Yearly statistics (construction) to secondly (signal phase and timing data). Tolling and trip pricing. Data formats include XML, XLS, JSON, Shapefile, etc.

Alexa Device -> I-66 Tolls Skill -> Lambda -> Gets SmarterRoads data -> DynamoDB

Store most common inbound / outbound entrance and exit in the database

“What’s the outbound toll from Washington to I-495?” $6.00

“What’s the current Inbound toll Route 7 to Washington?” $0.00

“What’s the travel speeds?”

“Save my outbound route”

Lots of tutorials with easy things, very few on more intermediate

Test voice interface with

It would be nice to expand to I-495 and I-95 toll lanes, but they use TransUrban and no public API

Maybe port to Google Assistant?

Owen Diehl

Tool for discovering multi-word homophones, i.e. what combinations of words can be recombined into different words based on sound alone?

Homophones are words that sound the same but have different meanings

Some of these aren’t words.

Used a Carnegie-Mellon dictionary which contains a lot of sounds that aren’t words. An IPA dictionary would be better as it defines symbols

Likes to find clever domain names; hence “doe mane”

Discovery tool looks for homophones via brute force. But it generates a LOT of homophones, so how to filter to just find ones that are clever?

Using the stress sounds will make homophones sound much more like the homophones

How difficult would it be to extend this to homophone Markov chains?

Haven’t found any fun domain names yet; this is stage one!

Generated 36 GB of homophones, so need to come up with some better heurististics

Ttygif is used to make GIFs of the terminals

User interface was built in Brick for Haskell (all built in Haskell)

Shannon Turner

I created a series of Selenium unit tests for Metro Map Maker in order to be able to test the front-end functionality and ensure that any changes to my Javascript won’t end up breaking functionality or introducing regressions.

Need to create unit tests to make sure the code is working. Works well on the backend, if the tests fail, great, now we know what to fix. HOWEVER, when writing a test in python, we only test the python [SAD FACE]. Used Selenium to test the full integration, 30 tests. Comes in many flavors, but there is a python version. GIves me (as the dev) peace of mind.

Using Selenium actually encouraged changing the underlying HTML and CSS to find the selectors better. Right now, there aren’t any good tests for mobile – this is a good thing to add in the future!


Most is written is JavaScript

Selenium tests

Dots and Fs (Success and fail)

Tests all written in Python

Download image functionality breaks all the tests.

Selenium can run headless

Grant Harper

Cooking assistant that uses websockets to synchronize multiple possible inputs (screen button, Alexa) to guide users through a recipe.

The problem grant always ran into – in a very interactive scenario, you keep wanting to interrupt it or change what it’s doing

Having a screen in addition to the guidance – both are useful when putting together your recipe.

Get a preview of your recipe -> Click “Let’s Cook” to see the full thing

Integrates perfectly with Alexa to narrate the ingredients, and the website allows you to see the steps.

Building the library of recipes takes a long time and is very difficult to get a standardized format that makes those interactions really nice! (Inline ingredients, streamlined

Built a websocket broker; Alexa makes a call to the websocket broker; any screen connected will then get the latest and greatest.

Multiple users / concurrency is not a problem! Each person has its own websocket topic

If you click a button and you’re in the middle of a session with Alexa, it’s a race condition that hasn’t been solved just yet.

Travis Hoppe

Deep vaporwave aesthetic using drone footage, colors from art, and depth map blurs.

A vision of the future (from the 80s)

An unreasonable fascination with the 80s aesthetic

Ugly, clashing Chroma

Could I recreate these effects with Pixelhouse?

Shift the three chromas (RGB), blur them -» VCR effect!

Learn a really cool color space -> apply the deep-learned

Use a depth map

Nathan Mika Epstein

Multi-layer sculpture via python + laser

Joined a MakerSpace & learned how to use the laser cutter!

Created with a DXF file; can write it in Python and output the results!

Whichever pattern you want to make, you can write that in your code. Take the intersection of negative space or union

If you stack a bunch of layers of cuts, you can make really intricate designs

8x4 feet of finishing paneling for $8, so a 2x2 foot square is about $2

Mostly, do the cut and whatever depth

To make waves: code two sine waves, repeat the process some distance apart in a loop

Byron Gaskin

Using ML to decide what photography to post on social media


Lots of photographs that have never been published (~8300)

Wrote some code to automate the choosing and do something a little more sophisticated.

Using Google Drive for the storage, so can use Google Colab to use a Jupyter notebook

Complete data dump from the camera, so needed to be able to read raw camera data.

Used PIL and rawpy to get the image data in different formats

Created a neural net, trained on image net

Run all 8400 images, for each image, get a 2048-length vector and used it for K-means clustering

Lots of pictures of things and buildings/architecture,

Used principal component analysis

What are these four categories?