Interview with Shawn Hymel
2016-07-07 | By Kevin Walseth
I was lucky enough to spend a little bit of time with Shawn Hymel from Sparkfun. During our time, we talked about things from electronics to bow ties. A good portion of the interview is discussing the project Shawn made to demo at Maker Faire Bay Area. The project was “T³: Making a Dark Node out of the Edison”. Shawn was kind enough to put together an extra demo for DigiKey to have at our booth. Enjoy!
To start things off, tell me a little about yourself.
I was born and raised in Louisiana, and despite common misconceptions, it was not in a swamp. I attended Rose-Hulman Institute of Technology for my undergraduate studies in Computer Engineering and eventually moved to Washington, DC for my first job. While there, I got my master's degree in Electrical Engineering through Virginia Tech. Funny enough, most everything I did for my EE studies consisted of programming in MATLAB and C++. During that time, I started swing dancing and have kept it up as a hobby ever since. I was lucky to get a job as an engineer at SparkFun in 2013, although I do miss DC sometimes, as the swing dancing back East is the best in the country. In late 2014, I was asked if I wanted to move to our marketing department, and I readily agreed, as that meant more time spent doing videos and tutorials to spread the joy of tinkering, electronics, and programming.
I have to ask... what is the story behind the bow tie?
I've really liked them for some time now. When I first started swing dancing, I guess 5-6 years ago, I wanted to learn how to tie them to add to my repertoire of clothing options and to look more vintage-y at formal dances. So, before one such formal dance, I spent 40 minutes watching this YouTube video of a guy explaining how to tie one. I remember he spoke verrrrry sloooowwwly and it took forever to get through it. I probably had to practice it 8 times before I got it the way I wanted. When I started at SparkFun and the opportunity for making videos came up, I wanted to wear something a little nicer than my everyday dress of shirt and jeans (so no, I don't wear a bow tie every day- I do value some level of comfort). I wanted some unique accessory that would make me more recognizable every time I appeared in public or on camera, so I decided on the bow tie. It also acted as a way to pay homage to two of my favorite TV personalities: Bill Nye and Alton Brown.
Going through college and working your way into an Engineering Superhero, what has your relationship with DigiKey been like?
I will admit that Electronics Goldmine was probably my first stop for parts during my undergraduate studies, but that's because I had little cash to spare in college. After that, however, DigiKey was my go-to place for individual components. Any time I make a personal, custom PCB, I see if DigiKey has the components in stock before I even make the footprint.
What is your favorite part about your job?
While I may not have the exuberance of my idol, Bill Nye, I enjoy being on camera and writing tutorials. More than creating products or projects, I love teaching people new concepts, how to use tools, and make things. I still get to lay out a PCB every now and then, so I try to stay in touch with the engineering side of myself.
Now onto the Project:
In your “T³: Making a Dark Node out of the Edison”, what is the Edison doing?
The Edison is acting as a few things:
- A WiFi Access Point - people can connect to it like any other access point. The trick is that the Edison is not connected to the Internet, so only the local resources are available. It's nothing new, but I'm calling it a "Dark Node" to show that's it's kinda hidden from the rest of the internet. It's the same technique that the LibraryBox Project is using to serve up digital literature to people in the area.
- A DHCP server - assign IP addresses to users that connect with their phones, tablets, or computers.
- A poor DNS server - I'm using dnsmasq to try and redirect any URL requests to the Edison's web server. It didn't work very well for some phones, so I need to figure out how to set up a real DNS server.
- A web server - running in Node using the Express framework. At its core, it just serves up a web page with a Canvas-based browser game. The client (your phone or computer) does most of the heavy lifting for the game.
Why did you choose tempest?
Sadly, I'm too young to ever have played an original Tempest arcade game, although I'm sure I can find one that someone has restored. Back in 2014, some creative programmers in our IT department created an Easter Egg game for Halloween for our site. On some pages, you could click a thing, the whole page would move down, and you'd be presented with an exact Tempest clone, only the player was replaced with a spider and you shot candy corn as bullets. It can be found as "SpookFest" here: http://sparkfun.github.io/Dino_Eggs/
I thought the mechanic behind this seemingly simple arcade game was brilliant. I read more about the original Tempest and learned that the original controller was actually a knob that you turned, and your ship followed the rotation of the knob. This type of direct control for a video game was so cool, and I fell in love with the idea behind Tempest.
While teaching myself JavaScript and the Phaser framework for making browser games, I knew that one of the first games I wanted to make was a Tempest clone because the mechanics were relatively simple. Sadly, Phaser works best with sprites, so I couldn't get actual vector-based graphics (although I'm sure with enough work, I probably could).
What does the code for this look like? What is it doing?
There are two parts to the code:
The server runs in Node on the Edison and serves some HTML, JavaScript, image, and sound files to clients whenever they request the main page. I'm also using socket.io to receive scores back from clients. If the client gets a top score, a local top 10 list is updated. I'm then using the Johnny-Five framework to display the top 10 list on a character LCD.
The client is a browser-based game written in JavaScript using the Phaser framework. Phaser manages all the sprites, sounds, physics, and collisions for me, so I'm very thankful I didn't have to write all that from scratch. I wrote a custom plugin for Phaser that shows a simple joystick and button if you're on mobile. Otherwise, you can use a mouse to play, which, from my experience, makes the game a lot easier.
Is there a phase 2 plan? Expand this into a new project/product?
First of all, there's no end to the game. You just aim for the high score as the game throws more and more enemies at you. After about 30 seconds or so, the game becomes impossible, and that was by design. I wanted to give people a quick gaming experience they could try while standing around our booth at Maker Faire. For the game itself, I would want to combine elements of classic shoot-em-ups so that you have bosses, power ups, shields, and so on. Having an actual final boss that you could beat to win the game would be nice. I'd also like to get someone to help fix up my terrible MS Paint graphics.
In reality, I probably wouldn't touch Vortex for phase 2. I would want to play with the multiplayer aspect of the Edison server. Right now, the Edison is just collecting high scores, but I proved that client-server communication is relatively easy to do with browser-based gaming. I know, it's been done before, but it still makes me excited. My next version would be an 8-player deathmatch with Asteroids-like controls.
Or the other thing that I would do (or hope someone will do with the work I've done so far) is to really play with the hardware control aspect of the project. Imagine a big locked chest that has some prize in it - a t-shirt, SparkFun Kit, whatever - as well as an Edison that's broadcasting an Access Point and browser game. The game is some kind of REALLY hard puzzle that might take an hour or more to solve. So, people would come to the booth and start working on this puzzle independently on their phones. The first person to solve it and *click* the chest unlocks and they get the prize.
In augmented reality, you do something in the real world to affect something in a virtual world. To me, this is almost like a reverse-augmented-reality game, and I love the idea.
What would it take for the average Maker to implement this on their own?
Good news! I've posted a whole tutorial on https://learn.sparkfun.com/tutorials/sparcade-edison-as-a-web-server-for-browser-games under the name "Sparcade" (with a 'c'). If you search for that on sparkfun.com and look under "Tutorials," you should see it. You'll also need an Edison, a Base Block, a GPIO Block, and a character LCD. I designed this project to work with all the parts found in the SparkFun Inventor's Kit for Edison.
Anything more to add?
I really hope that someone takes Sparcade to the next level. I have many other things I'm working on at the moment, so I don't think I will be able to get around to phase 2 in the near future. I love the idea of proving some interesting or hacker-ish way to combine pieces of technology and show that it can be done. Sadly, I rarely ever take them to the next level, and I think Sparcade really needs that kind of love. If someone out there has an Edison and is wondering what to do with it, please make a deathmatch Dark Node or a strong box puzzle game! If you do, Tweet a video or something of it working @ShawnHymel.
What does the future look like for the Engineering Superhero Shawn Hymel?
I don't know, and I love the uncertainty. I'm actively working on setting up my workbench at home with a camera so I can create videos and tutorials on my own time, as I would like to share knowledge around platforms and tools that SparkFun does not promote. I have also toyed with the notion of setting up my own company, but without some great product idea, I think I just like the idea of being an entrepreneur. Thanks, Silicon Valley.

