I’m an electrical engineer, software developer, tinkerer.
I’m confident that the Tuolumne Meadows area in Yosemite is the best place on earth: You can just hike off any direction from CA120, and I’ve never failed to be amazed at what I’ve found.
I’m intrigued by electrical engineering history 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 spend time on useless things, and sometimes I feel silly about that, but then I remember that I’m in good company.
I have a B.S. and M.S. in electrical engineering. In school, I built robots for competitions and spent a few years building flight control systems for autonomous unmanned aerial vehicles – some with jet engines! I spent several more professional years building stabilized camera systems for 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 at AWS, along with the more typical embedded C++ development. Most recently, I’m working with researchers at the UW Molecular Information Systems Lab on using DNA for storage and computing. I often spend time tinkering with a variety of fun projects, some of which I occasionally write about on my project blog.
I’m always on lookout for interesting projects, and may be available to help with your company’s software or hardware projects, so if you have something in mind that’s in my wheelhouse (see below), feel free to say hello. If nothing else, we can probably have an interesting discussion about engineering problems. You can email me at email@example.com.
Past experience/skills include…
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’ve recently been experimenting with Rust for embedded systems, and I think it has a real shot to supplant C for a lot of my projects.
- Python is my goto for quick prototyping, image processnig, or number crunching and data analysis: it’s hard to beat the language with Jupyter, numpy, pandas, scipy, scikit, matplotlib…the list goes on.
- 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 in my designs. I've built products with Cyclone IVs, Zynqs, and the tiny Igloo.
- 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 and watching it work is super satisfying.
I've also built a number of simulations of physical systems, and integrated 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 by helping you understand system performance, do quicker development, and build more reliable software.
I’ve developed a number of motor control and “mechatronics” projects, having worked with a variety of motor types, position encoders, and kinematics problems.
I’ve built various radiometry based products, and the fixtures to support them like apparatus for detector calibration, determining materials for diffusers, lenses, minimizing stray light, etc.
I’ve worked on electrowetting-on-dielectric (EWOD)/digital microfluidics devices for small-volume liquid handling