I’ve been working on this project for the last few months, and finally got to the point where I can finally declare it done. Mercator is a spherical persistence-of-vision display based on a ring of DotStar programmable LEDs and the Adafruit HUZZAH32 ESP32 dev board. As the LEDs spin around, the pattern changes to display pretty much anything:
The whole project is open source and the source code and design files can be found here. In this post I’ll walk through the design and explain it in some detail.
How I built a robotic Etch-a-Sketch that can be controlled from anywhere.
For the last year, I’ve been working on a side project at home which I call Escher. It’s a robotic Etch-a-Sketch that can be controlled over the Internet from anywhere in the world. It’s made possible by the Adafruit Feather HUZZAH32 development board, and Google Firebase to provide the control between the Etch-a-Sketch and a web client. Here it is in all its glory:
It also sports an easy web interface that lets you upload images to draw, or even draw with your finger directly on the virtual…
A little more than three months ago, I left a long-time position at Google (as head of the Chrome Mobile teams in Seattle and Kirkland) to join Xnor.ai, an early-stage startup developing AI for embedded devices. In an earlier post, I wrote about my reasons for jumping ship for a startup: the TL;DR was that I was ready for a big career change, and I was very excited about the technology and the team at Xnor.
I have made an amazing discovery: working at a startup is not at all like working at a Big Tech company. …
In this post, I’m going to walk though how to use Xnor’s AI2GO platform to build a Raspberry Pi-based person counter: an app that periodically counts people in images from the Pi camera, and displays counts and statistics on a beautiful LED matrix display. …
A few strategies from a long-time Google engineer and manager.
Over my eight-plus years at Google, leading a fairly large and successful team, I’ve developed a set of principles that are core to my own approach to management. Since I’m about to leave Google for a startup, I thought now would be a good time to capture and share these ideas more broadly. The following notes are a slightly modified version of a doc that I shared within Google a while back.
A long-time Googler jumps out of the frying pan and into the fire.
After more than eight and a half years as an engineer and manager at Google, I’ve decided to tackle a new challenge by joining XNOR.ai, an early-stage startup developing AI for embedded devices. I’m equal parts excited and scared — it feels a bit like I’m playing the Bird Box Challenge with my career.
Ironically, it was also after about eight years at Harvard that I left my faculty position there to join Google. So the timing seems right to make another big career change.
In which we support multiple firmware versions.
If you’re like me, you are incredibly lazy. This means not wanting to run around plugging cables into your Internet-connected Arduino devices when they should be able to pull new firmware over the air. For the cloud-controlled LED light display on my house, I have six Arduino boards on my front porch, and I’ll be damned if I’m going to go outside in the rain and plug my laptop into each of them whenever I want to push a firmware update.
We don’t need no stinking cables!
In my last post, I talked about how you can use Google Firebase to control an Internet-connect Arduino project without running any servers at all — all of the data is hosted by Firebase. In this article, I’ll talk about how you can use Firebase to enable over-the-air updating of your Arduino firmware, allowing your devices to magically download new firmware and reflash themselves without plugging them into a laptop. This is a great party trick and is sure to impress all your friends. (Well, if your friends are anything like mine.)
I have seen the light, and it is Firebase.
Here at Team Sidney Enterprises, we wanted to develop a programmable light display for our house for the holidays — consisting of Arduino-controlled RGB LED strips that can be programmed to display arbitrary patterns (rainbows, sparkles, seizure-inducing strobes, you name it). Check out the final result:
I wanted to make it possible to control the light display not just from my phone, but ideally any web-capable device anywhere in the world. And I wanted to avoid writing a custom native app to control it — a web browser should be all…