I live in Seattle with my wife and dog.
I enjoy hiking and exploring the outdoors. The Tuolumne Meadows area in Yosemite is probably my favorite place on earth.
I’m intrigued by “electrical engineering archeology”, and the history of physics circa 1850-1950; there’s something satisfying about understanding old technology and how we got where we are, and experiments of that era were both beautiful and relatively easy to understand. Sometimes I worry about spending time on useless things, but then I try to remember that I’m in good company.
I’m an Electrical Engineer by training, and a polymath at heart. I’ve built robots for competitions. I spent a few years building autonomous unmanned aerial vehicles (some with jet engines!), and several more building stabilized camera systems for yet more UAVs. I helped start a company to develop sensors for agricultural aerial survey, and along the way got to dive into the world of cloud computing. For several years I spent most of my development time building web services to run on clusters at AWS, in addition to my usual embedded C++ on small microcontrollers. At the moment, tinkering with a variety of projects, some of which I occasionally write about on my project blog.
I’m also available for hire and on the lookout for interesting projects, so if you have a project that’s in my wheelhouse (see below), then we should talk. I love to talk about engineering problems, so if nothing else we can probably have a good discussion. You can email me at email@example.com, or checkout www.relativejump.com.
When it comes to software:
- I write a lot of C/C++ because it’s the goto for embedded systems, when you need performance, or if you need a linux kernel driver for your custom FPGA peripheral.
- I love Ruby, but I write a lot more Python because for number crunching and data analysis it’s hard to beat the language with Jupyter, numpy, pandas, scipy, scikit, matplotlib…the list goes on.
- I enjoy the process of building software, and worry a lot about making good architecture decisions. I’ve come to be a huge believer in test-driven development by experience, but testing in the embedded world comes with its own set of challenges. This is exactly the kind of software I love to work on, and I’ve picked up a few approaches for dealing with this along the way.
Which brings me to hardware:
- I love building digital logic in an FPGA.
The combination of a processor and configurable logic is just so powerful and flexible that it has shown up again and again. Whether a Cyclone, Zynq, or a tiny Igloo, FPGAs have been at the core of many of my designs.
- I’ve built several cameras from the chips up.
I've interfaced to a half dozen different CMOS imagers -- they all seem to have their own quirks -- and implemented various image processing, including de-bayering, color calibration and correction, image stabilization, compression, object detection, etc.
- I’ve built several iterations of small inertial stabilization systems (i.e. gimbals); enough to have learned quite a bit about what works well and what doesn’t.
I love this kind of project because it's a great mix of electronics and physics. Building a feedback control system for something like this feels almost like re-writing the laws of physics.
I've also worked on building simulations of physical systems, and integrating those simulation models with control software for software-in-the-loop testing, and I highly recommend this approach for any project of significant complexity. It takes some up-front work, but it pays off in spades by helping you understand system performance, do quicker development, and build more reliable software.
I’m familiar with motor control and “mechatronics” projects, having worked with a variety of motor types, position encoders, and kinematics problems.
I’ve solved various radiometry problems, or the physics of light. For example, apparatus for detector calibration, determining materials for diffusers, lenses, minimizing stray light, etc.