Member Since: January 28, 2009

Country: United States



I started at SparkFun in September of 2007 as an assembly technician. My experience in electronics had consisted of only running sound equipment for my band and fixing the occasional broken guitar cord. After only a few days on the production floor, my skills with a soldering iron improved dramatically, and I was building beautiful little widgets. It wasn’t too long before I started wondering how all these circuit boards actually worked. Whenever I had the chance, I would walk across the hallway to the engineers and ask for 5 minutes of their time. I learned words like micro controller, source code, op amp and many more. I was hooked.

My first project was an analog headphone amp. It was something I could use as a performing musician. This has since kept me busy on week nights (and most weekends) as I’ve grown my own business around audio products for musicians.

While perfecting my headphone amp design, I got into other DIY projects too. Before long, I was in my front lawn with my laptop and a few servos. I was hacking my sprinkler system. With some active pressure control, I was able to make my sprinkler shoot a perfect square. My neighbors thought I was a crazy :)

Little did I know that taking this position at SparkFun would open my eyes to a new favorite creative outlet, DIY Electronics. I get super stoked about a lot of things, but from the moment I felt that initial spark of interest, I knew this was something very special. I was learning tools that would allow me to truly harness my inner inventor.

In the last few years I have focused my energy at SparkFun to designing more efficient testing equipment and providing feedback to the engineers on how we can better design for manufacturing and testing. I can hardly call it a job, because I love it so much :)


QC Manager

Programming Languages

Arduino, Tera Term Scripts and Batch Files.


Rock On Audio


Incline High School (Lake Tahoe), Squaw Valley Academy, Cate High School, Golden West (Huntington Beach), Cal State Long Beach, CU Boulder, Sparkfun University




A nice fillet and clean layouts. DSP, particularly the Sigma Studio stuff from AD. Thermal updrafts and circling in them. Remote control Airplanes - Electric in the parking lot and Slope when the winds up.


http://www.rockonaudio.com, http://www.phillewisart.com (that’s my bro!)

A re-creation of our Simon Says Soldering Kit using trampolines, spot lights and a ton of new sounds!

Continue reading

Join us for an epic journey into design for manufacturing, voltage spike suppression, stress testing, hex file analysis and more!

Continue reading

While designing our new Simon Tilts Through Hole Soldering Kit, we ultimately found that the best solution for the tilt sensor involved creating a custom plastic part. Here is the story of this project - including a couple interviews with the people that helped us along the way.

Continue reading

Dunk Tank Hack

In addition to the ongoing robot competition at AVC 2013, we included some carnival-type entertainment for the attendees. We rented a dunk tank, triggered it with a swiveling mallet, and challenged people to play "Trampoline Simon Says".

Continue reading

Raspberry Pi Stand-Alone Programmer

March 8, 2018

This tutorial will show you how to use a headless Raspberry Pi to flash hex files onto AVR microcontrollers as a stand-alone programmer. It also tells the story about production programming challenges, how SparkFun came to this solution, and all the lessons learned along the way.

Binary Blaster Assembly Guide

March 13, 2014

Learn how to assemble and play the Binary Blaster Game from SparkFun Electronics.

Constant Innovation in Quality Control

December 11, 2013

In this article, we share our recent advancements in quality control. Along with making our tests more thorough, we have also made them more efficient and robust.

Simon Tilts Assembly Guide

December 3, 2013

This tutorial will guide you through assembling your Simon Tilts PTH Kit.

Simon Says Assembly Guide

January 20, 2011

No matter what flavor of the Simon Says Through-hole Soldering Kit you've purchased, this tutorial is here to guide you through the entire build process.

Simon Says Experiments

October 21, 2010

So you've built up a Simon Says kit? What next? This tutorial will get you up and running with Arduino software, guide you through a few example sketches, and send you on your way to create your own. Careful, this stuff is highly addictive. :)
  • Thanks for your feedback 773!

    Solid State Relays are a smarter option, for sure. I should have looked into those before committing to our beefcake relays. I suppose these SSRs would do the trick: Solid State Relay - 40A 3-32V DC Input. They seem a little overkill, but I was switching the mains power to the spot lights.

    For the LEDs, I definitely agree that using some sort of addressable is the better option. I do like the look of the old fashioned 10mm gum drop LED, though. I wonder if there is an addressable 10mm diffused PTH out there?

    Either way, I’m planning on doing some experimenting, and giving a few suggested resistor values for 3.3V and 5V on our LED product descriptions. Even just knowing “barely on”, “pretty bright, and "partially blinding” would be helpful as a starting point.

    The large 7-Segments are indeed fun. We have one right near my workstation actually that inspired me to use it in this project. Nate installed a “speed trap” that’s always popular on the tours. You can read his tutorial on that here.

    About your thought on tying the trampolines together. Hose clamps are a brilliant idea! We did use some metal brackets to mount them to the wall studs, but I think we just used zip ties to connect them to each other.

    Thanks again and I appreciate your input! -Pete

  • Thanks for this awesome post Mike. It reminded me of many good memories searching through boxes at Saunders for the perfect potentiometer, and checking out all of the enclosure options - oh so inspirational. It was pretty satisfying when you found the reel of the part you needed - score!! Sad to see Saunders close.

    Sometimes when I walk through SparkFun’s inventory I will take a closer look at some switch or button, and then find myself 5 minutes later gazing into other bins nearby with completely different parts. Then 10 minutes pass and I find myself wondering “What was I doing here again?” Something very special about seeing electronic parts in front of you.

    I give tours most Fridays, and I see this attraction happen to a lot of our guests. They’re always curious to look inside the inventory boxes. And the work-in-progress shelves are usually a hit. It’s fun to see thousands of boards - all ready for programming and testing. Unfortunately, we can’t linger too much near the inventory or production, and we need to get on with the tour! This gives me an idea, we need to host the “grab as much as you can in 2 minutes” style gameshow that Toys-r-us used to have… Let’s get our PR people on that. I’d probably go for the bins of RFM69s and Pro minis.

  • That’s awesome! Thanks for working through this issue. If we end up doing some serial programming to 32u4 (or any other micros with USB capability), this will be really helpful to know ahead of time!

    I’m gonna add in the delay to the standard test.py (and comment it out, with a note to use for 32u4s). This seems like it might be kind of buried in the code. Is there another place you might have looked for help?

    I suppose this comment thread is good, but I’m wondering if a general troubleshooting section would be a good idea… any other issues you came across?

  • Sorry, I haven’t been able to try this out yet, but I did think of one thing. It might be that after programming the bootloader, your 32u4 has not had enough time to enumerate the serial port. Try adding in a slight delay into test.py just before it calls program_serial(). Maybe even just 1 second should do the trick. Here is the line in the code where I would add it in:


    The code for a 1 second time dleay in pythong is like this:


    If you wanted to really go for it, I suppose you could put in a function that looks for that com port and times out, but adding in the delay would be the first step to see if this is really the problem.

    Yet another option might be to read the entire hex from a known good board (this would include the bootloader and the sketch code). Then you could program that entire “combined hex” over SPI nice and fast. We also erase the “blanks writes” in the middle of the hex to shrink it down. That’s how we do it in production.

    More about hex file snipping here, if you like:


  • That’s good that most things are working, but sorry to hear about the 20% successful serial uploads.

    No, we do not have any procedures currently that include serial upload to a 32u4 based board. All of our current 32u4 tests include only a verification of com port enumeration.

    We have plenty that do a serial upload to 328 based designs (usually an FTDI or CH340 bridge IC), and see great reliability, so I’m not sure what’s going on here.

    Could you post the failure message from avrdude? (It should be accessible in the “serial_upload_results.txt” file after a failure).

  • You’re welcome!

    I did just come across one more thing that is necessary (edited my comment above). It is important to use the avrdude_gpio.conf file. This includes the GPIO programmer (“pi_1”), but also the “linuxspi” programmer and defines the reset pin (which is default 26 on our design).

    See Kevin Cuzner’s tutorial for more info on setting up SPI in avrdude:


  • Hi There, thanks for your interest. Sorry, we do not yet have a standard image hosted online somewhere. Is there a service for this?

    It’s fairly quick to get from the noobs image to a pi_grammer image though:

    1) copy a few files to “\home\pi” directory: test.py, pi_program.sh, avrdude_gpio.conf, your_firmware.hex.

    Note, it’s a good idea to open up permissions on all of these files to avoid access errors in debug. To do this navigate to \home\pi, then type use the command “sudo chmod 777 test.py pi_program.sh your_firmware.hex”

    2) enable SPI hardware tutorial here

    3) replace the standard RC.LOCAL file with the one from the repo. It is located here: “\etc”

    4) install avrdude. A single command will do this: “sudo apt-get install avrdude” but you can read more about it here adafruits gpio tutorial

    I’m about 99.9% sure that’s all you need to do, but I will run this from a fresh noobs and get back to ya.

    Also, is there a better way to host a pi image? I’d be happy to get that available for download, although our “master” image for production models is 8GB, and seems a little large to deal with.

  • Wow. Right on Nate. This is very impressive! I’ve always wanted to dive into the world of Eagle ULPs! We use the BOM generation one all the time, and I’ve also played around with image import a ton. https://learn.sparkfun.com/tutorials/making-custom-footprints-in-eagle But ULPs have always been a black box to me. I’m excited to take a closer look into your code on this. Thanks for sharing!

  • Nice work Joel! Those bubbled boards make me shiver :) Does your stencil open up over the vias? Not sure if it’d be enough solder paste to cause the connection, but probably worth a shot…

  • Nice one Nick! What a cool project. I’m excited to see how it progresses. I’m already wondering how this could scale to store a larger inventory. Maybe a portal on the back position that can exchange each tub from a larger storage array? Now I’m envisioning a train track around my kitchen with a ton of peanut butter jars cruising along :)