I’m Not OK: An Update

An update: over the last couple days there has been an outpouring of support, and I am extremely grateful to everyone who has reached out to me. It will take me a while to catch up with everyone, and though I am fortunate enough to still have a full time job with some flexibility, the number of hours I have available means I have a new and welcome challenge. I’ve learned a lot recently; some things worth sharing:

  • It’s clear that people care about me, and that’s pretty cool.
  • I am not alone in my experience. It’s sad hearing about all the other people who say they’ve gone through similar things, but I appreciate the sharing. This is shitty; depression sucks.
  • A lot of the guilt and shame I’ve felt about not keeping up with people, which has made it harder to try to reach out, has evaporated. It turns out it’s ok to say “dude, we haven’t talked in almost 15 years. What has happened in your life? Get me up to speed.”
  • My friends are awesome! I’ve been missing out by not being more involved.
  • I have successfully curated an image that has convinced other people that I’m put together and confident and busy, but that was a mistake on my part. I have been like every failed startup; make everybody think you’re doing great up until the moment you are out of runway and crash spectacularly. It turned out that vulnerability was the important part I should have been showing more of. Convincing everyone I was doing fine wasn’t getting me what I needed. I just had to ask for it.
  • My life is pretty good right now. Talking to people and catching up I have been describing a pretty rosy situation in which I have a good job, a good house, and a good partner. Part of this is definitely my habit from the previous point leaking through, but there’s a lot of truth to it, too, and I find myself feeling guilty for being depressed. All the rock star movies portray a person who has it all still suffering depression, so I guess it can happen to anyone. Just like the rock stars, I had impossible expectations for myself and shallow connections and craved human connection.
  • I still have a long way to go. The self-awareness and reaching out is a sign of an upward trend, but it’s a deep valley I’m in. I’ve taken some steps and have momentum, and I’m not doing this alone.

Thank you all.

Friends, I’m Not OK

Friends, I’m not ok, and this is a call for help. I’m not in danger, and I’m not thinking about hurting anyone or myself. For a long time I’ve been depressed, though the optimist in me always found reasons that it wasn’t depression and that it would just be ok once ___ was over. But there was always a new ___, and it wasn’t until an intervention in January by a loved one when I realized the extent of my depression. The tests had me so close to severe on the scale that even when I went back through to see if I could tweak the results I was still firmly in depressed-land. This was before COVID. Now the random bouts of sobbing is inconvenient, the things that were causing me problems before are magnified unbearably, and the effects on those who have no choice but to be around me are undeniable.

I’ve been seeing a therapist. I’ve been doing research and reading books. I’m working on appropriate medication (which has not been easy. The first attempt had side effects that had me rolling in pain for a week). I had a plan before the pandemic. I was going to get out more, be more social, find a squad. I had even taken a new dance class and was starting to get involved in that community. I was anxiously awaiting summer so that I could try to find an ultimate team to join. I knew it was going to be hard to stick my neck out, but the current situation hasn’t been tenable for some time.

Even before COVID I spent so much time at home working on projects and side hustles and so little time interacting with people. This whole thing has changed my lifestyle surprisingly little, and that’s telling and terrible. Part of me yearns for human connection while the part of me that usually wins celebrates being able to go grocery shopping without interacting with anyone. My throughput and volume of projects is still high, but I rarely feel worthy enough to share. My loneliness and feelings of having no impact are crushing me, and the lowered confidence and self-esteem makes me think I have little to offer. The voice in my head is the meanest bully you can imagine, and he’s really hard to escape.

Now the call to action; please schedule something with me. Any amount of time, and most days and times are ok. You can just tell me about your day if you want. Call or video or even text or email. If it’s been a while since we’ve talked, that just means we have more to catch up on. I need to get over the hump of this depression and anxiety and feel like there really are people out there who want to spend time with me.

Thank you.

There should be more love in our politics, like there is at the library

The news has been filled with hate and anger lately. My normal sources of information are overflowing with it, and it makes the world seem like a terrible place.

This weekend I went to the Verona Public Library on a tour. My friend was so proud of it and wanted to show it off. I’ve been a fan of the Dane county libraries, but what I saw at this one was inspirational. If you want to skip to the point of the post, it is this: libraries are where we should be putting our tax dollars and attention. The community building, the learning, the understanding, the savings: the Verona Public Library represents who the average American is and what they do and care about, and how deep down we’re all loving people who just want to live a decent life and pursue interests like raising children and fantasy football.

Everything about this library is finely tuned to be awesome. The building is gorgeous and spacious. On walking in there is a book return with an automatic sorting machine that reads the tag and deposits the book into a specific bin for shelving. I know this because it’s behind a huge glass window that shows it off. Also near the entrance is a section for Wisconsin authors, popular new releases, and books for sale. My friend showed me where she votes, and the table that had all the appropriate documents for filing taxes. There was a computer lab, a reading room with a fireplace and all the latest magazines and newspapers. We walked by a giant shelf full of holds for people to pick up the books they had reserved online. The movies section rivaled Netflix (maybe not in volume, but definitely in the number of quality films, and many that weren’t available to stream). For adults, this place had everything, and if they didn’t have it, you could use the inter-library loan program and get it delivered there.

Then we went in the kids section. It was chaos, but perfectly organized for it. A giant castle in the center had little nooks for reading, and play areas distributed around the giant room were loci for congregating kids, with seats around them for parents to rest and mingle. There were piles of toys and books. The books were organized by ages and categories, and so many of the categories were really powerful and important, like bodies, Jewish, military family, countries like Pakistan, Iran, Korea, and Vietnam, and parents were reading to their kids from seats all over.

THAT’s what this country is and should be about. Teaching our kids about other cultures, learning about ourselves and others, and sharing resources. The place was safe and full of people who cared and weren’t afraid of other people and who understood the value and benefits of the library.

As we left, we checked out at the kiosk, where we were able choose our language to start the process. We chose pirate, because how freaking awesome is it that pirate is an available language at a kiosk? I still get a little choked up thinking about the library. There was so much love in that place. So much intellect and opportunity and community. That’s who we are as people, not this crap on the news every day.

Creating an Automated Optical Inspector for $50

In the world of electronics assembly, parts are really small, quantities are really large, and equipment is really expensive. The process of putting all the components onto circuit boards thousands of times per hour with really high accuracy is challenging, but tools are getting easier and cheaper every day.

At my job (Quietyme), we’re doing our own circuit board assembly. We had to purchase some equipment, like a pick and place, which for $5000 automates the process of taking the small components off of reels and putting the components on the circuit board. We also have a stencil screenprinter and a reflow oven (toaster oven). Total investment so far has been under $6000.

The most recent tool to add to our arsenal is an Automated Optical Inspector. The purpose of the AOI is to examine the circuit board to find defects in the assembly process. Sometimes a component doesn’t solder on correctly, or there is a bridge where there shouldn’t be. These need to be found and fixed before they are programmed and used. We had been doing it manually with just visual inspection, but that was tedious and not very accurate, especially after the 100th board.

I had been reading into OpenCV and decided I’d give it a shot. The idea was to take a regular webcam, point it at the circuit board, do some image analysis to figure out if there were parts that didn’t match a “good” board, and highlight those so that a full inspection by a human wouldn’t be necessary. After a little bit of playing, I realized it could work. I designed a holder and laser cut it out of acrylic, then glued it together. It was pretty slick. With the threaded rod I could raise the camera up until the PCB occupied the entire field of view, so no pixels were wasted. I wanted consistent even bright light, so I added a bunch of white LED strips. I immediately noticed a problem with hot spots, so I added a layer of acrylic with a diffuser (a piece of paper glued to it).  Finally, I glued the bottom of the enclosure to the base. The PCB was designed for the enclosure, so it was a perfect holder that would consistently keep it in the same place.

aoi

The camera is a 720p Microsoft LifeCam that I had laying around. In the next version I’ll upgrade to a better camera. The LED strips are just 12V white LEDs.

Now the software. I used the OpenCV CV2 python library, and ran it both on my main dev computer (Linux Mint), and my test laptop (Win XP (shut up)). The older computer was definitely slower, and setting up OpenCV in windows is a pain, but I made it work.

The first step is to get the video stream from the camera and display it. Fairly simple. Then I experimented with diffing against a known good board. The idea was that by subtracting the video from a good image, only the differences would be visible. This is good in theory, but it didn’t work at all in practice:

diff

This is way too busy to think about and try to analyze to find poorly placed components. It wasn’t going to work.

The next idea was to mask out anything we didn’t care about. There are unpopulated components on this board, and we don’t care about the silkscreen or the outside edges. There’s no point showing them to the user. So I created a black and white mask:

mask

 

This mask is displayed over the top of the video stream, so that the operator only has to look at the unmasked parts to evaluate the board. Like so (note that this is an intentionally sabotaged PCB which has bridges, tombstones, and misaligned components that I put in to test the pattern matching):

output2

Great! Now the work is already a lot simpler. From here I wrote a quick routine that would zoom in on the Zigbee chip to digitally and show a 4x zoomed chip to look for bridges. So no pattern matching yet and we’ve already significantly improved the inspection process and reduced eye strain.

The next step was adding in the pattern matching. The idea is to use the OpenCV template matching feature to identify components that are correctly soldered and use those as a template, then when the video stream sees those templates matched it’ll draw a black box over the component indicating that it doesn’t need to be examined. So the above image after pattern matching should look like this:

output3

Bam! Now we’ve gone from having to inspect a full board to just having to check over a few components! In reality it ends up not matching perfectly so we usually see a few extra components that are just fine, but it’s better than having the threshold too low and accidentally blocking out bad joints.

So how does the setup process work? By drawing boxes! In the python application, just drag a box around the component you want to use as a good template, and it will create an image and store it and use it as a template from then on. I started by first looking over the entire video stream for each template, with the idea that a capacitor in one place might look like a capacitor somewhere else. This was a dumb idea and slowed down the system to unusable. Then I got the idea to save the image coordinates as the filename, and only look within a certain bit of slop within that area for that template. That got me back up to near real time processing of the feed. It also allowed me to have multiple good templates for a single component to bump up the likelihood of matching without sacrificing the threshold of matching.  So it ends up working pretty well. Here are some examples of component templates:

template_example

 

So to summarize, I’ve put a few hours of time (<20), a webcam, and some hardware into this, and I’ve got a functional AOI to add to our assembly line. It’s really only useful for small circuit boards, and a single camera that doesn’t move definitely has limitations, but it’s really a testament to the awesomeness of OpenCV for making this so easy.

It should be noted that a cheap AOI can be had for $20k, and the ones used in some factories sell for over $100k. Mine is by no means competitive with theirs, and couldn’t find nearly as many types of faults on as large a board. They move the camera around and look at solder quality using colored lights and blah blah blah. But for the price of a webcam, some acrylic, an LED strip, and a few hours of time, this is a pretty big step.

Want the code? Here ya go: AOI Python code

Post-China update

Yep, I haven’t updated in a while. So what happened in the last year?

  • Went to china to participate in HAXLR8R, the first hardware startup accelerator, which took place in Shenzhen. Read about it here!
  • Came back a few weeks early because I couldn’t get what I needed there, went to San Francisco for demo day and launched a kickstarter project.
  • Demo day was a flop and my kickstarter failed. I just wasn’t ready for it. I didn’t have a team, I was exhausted after China, and I didn’t know how to do media campaigns.
  • I learned my lesson and brought on a couple of co-founders to handle marketing and business development.
  • I learned another lesson about hiring people I’m not completely comfortable with, and was able to fire him before the paperwork was signed making him official.
  • I drove across the country with my girlfriend to go to an amazing wedding and see friends and be with Erin’s family.
  • I continued product development for a long time, making it manufacturable, talking to U.S. factories, jumping through regulatory hoops, getting prototypes in the field with beta testers, and in general making the product and the business awesome.
  • I sent balloons into near space.
  • I have become an expert in many things business and startup related.

And now you’re caught up. 🙂

I’m going to China!

A couple months ago I applied for a program in its first year for hardware startup companies. Called HAXLR8R, the goal of the program is to make manufacturing in China more accessible to startups by providing workspace and tools and mentors and experts to ten teams for three months in Shenzhen. After those three months, the participants spend a week in San Francisco and give a demo to investors.

I found out recently that I was accepted for my project on the Portable Electronic Scoreboard. I’ve been working on this project for a while, and now is a good time to go to China because I need to take it to production, and this is a great way to do it.

Over the next few months I’ll be updating a new blog that I created called Engineer In Shenzhen, which will have personal posts about what I’m going through, and advice and articles for other people who are interested in the process and what it takes to work in China and outsource manufacturing.

If you want a postcard, make sure I have a current address for you. I’ll try to keep everyone updated with progress as I can.