Contact

  • Shoot me an email: [email protected]. I’m always happy to hear comments or help out motivated people build useful things.
  • If you’re in New York come to a Fat Cat Fab Lab open house! Meetup Link.
  • When I’m in Houston you can usually find me at the ION or hacking at TXRX.

About Me

This is my personnel blog mostly focused on the various nonconfidential discoveries and tools made as a measurements system designer with ElectroOptical Innovations. We’re a small highly technical shop designing a wide breadth of challenging systems. Some of the products that we develop are available from Hobbs ElectroOptics. As part of my frustration

  • Electronic System Designer & Embedded Developer at ElectroOptical Innovations and Hobbs ElectroOptics. We specialize in designing high performance measurement systems that are manufacturable in the required schedule. If you have a project to discuss shoot me an email at [email protected]. Extra interest in complex and constrained systems.

    • Embedded development
    • Circuit design
    • Custom Photoreceivers, SiPMs, APDs, SPADs, PIN, etc.
    • Optical measurement test equipment
    • Sensitive measurement design
    • Low noise diode lasers
    • Cost effective, compact time domain reflectometers TDRs
    • Fire detection
    • CO2 Gas Sensing
    • Spectroscopy systems
    • Flow cytometry
    • Luminescence detection
    • Low noise amplfiers
    • Custom silicon PCB design
    • TOF and CWFM Lidar
  • Founder of TheJigsApp

    • Fast turn and simple design process bed of nails test jigs
    • Deliver your products faster by streamlining testing with the help of our mechanics and back-end electronics.
    • Fully custom bed of nails systems through a parameterized system.

Some Books

  • Pattern Language — Christopher Alexander
  • A Timeless Way of Building — Christopher Alexander
  • Design of Everyday Things — Don Norman
  • Making It — Chris Lefteri
  • Manufacturing Processes for Design Professionals — Rob Thompson
  • Art of Electronics — Horowitz & Hill
  • Building Electro-Optical Systems — Phil Hobbs
  • Printed Circuits Handbook — Clyde F. Coombs
  • Test-Driven Development for Embedded C - James Grenning
  • Hacking the Xbox — Andrew Huang
  • Refactoring — Martin Fowler
  • Clean Architecture — Robert C. Martin
  • Unix & Linux System Administrators Handbook — Evi Nemeth et al.
  • Machinery’s Handbook — Oberg et al.
  • Mechanisms and Mechanical Devices Sourcebook — Neil Sclater
  • Theory and Application of Digital Signal Processing — Lawrence R. Rabiner
  • Signals and Systems — Alan V. Oppenheim et al.
  • Physics: A Student Companion - Lowry Kirkby
  • The Definitive Guide to ARM® Cortex®-M3 and Cortex®-M4 Processors - Joseph Yiu (Not a page turner but an occasional life saver)
  • McMaster-Carr Magazine: Always good for mechanism inspiration
  • NASA Systems Engineering Handbook: PDF Link
  • Advanced PID Control - Karl Åström

Hills I’ll Die On

  1. Math is the first design step
    • Calculations and models are the systems equivalent of headlights at night: you should probably use them.
  2. Every design starts with a value proposition.
    • What does it do, and why is that worth building?
  3. Factor the system design early and often.
    • Don’t let coupling seep in without thinking about it
  4. Standardization enables network effects
    • Modular, standards-compliant designs scale well
  5. Using common standard components makes you more agile. This applies to electronic hardware, mechanics, and software.
  6. Reuse design elements
    • Form ecosystems where parts work together. You can start a project with work already completed.
  7. Design for reuse
    • Avoid over specializing a design where you can.
  8. Follow standards when possible.
    • It enables collaboration with people you’ve never met.
  9. Tooling should be done early and often.
    • Panic costs more time, schedule, and brain cells.
  10. Test jigs accelerate development.
    • You’re not going fast without them — you’re gambling.
  11. Test driven design is useful at every layer of a product
    • Software, hardware, interfaces — test-first thinking reveals design flaws early.
  12. Design for testability
    • If you can’t verify it, you can’t ship it — and you definitely can’t maintain it.
  13. Difficult & low value tasks should be off-loaded to move fast.
    • Hire, outsource, or automate.
  14. Tools with good ecosystems prevent stalls.
    • These are often open source. Invest time learning them — it pays back.
  15. Software should be composable
    • Favor systems you don’t have to write or maintain but don’t get hemmed in. Open-source is a win here.
  16. Everything is in version control
  17. Prototype the hard part first
  18. Cheap iterations make hardware easier
    • Thoughtful planning makes iterations cheaper and faster
  19. Measure important sections in at least two different ways.
    • If the design and two measurements agree then it’s probably right, one measurement is subject to confirmation bias.
  20. Cross-check Calculations
    • There should always be a way to check the results — always sanity check.
  21. Check every rail with an oscilloscope
    • Even 3.3
  22. The cheap component should blow up first.
    • Protect expensive parts by design.
  23. Tweaked high-end older instruments beat low-grade new ones.
  24. Every design needs an interface description.
    • Put it on the label, the silkscreen, or in the schematic — ideally all three.
  25. Plugging things in wrong should always be undoable
    • Mistakes will happen at the worst time
  26. Labels are better documentation then a manual
    • Put essential info where the user needs it most: on the product itself.
  27. Document from day one.
    • The design goals and value proposition should evolve into the user manual.
  28. One specialty part can make a product cutting edge.
    • More than three is usually a support nightmare (unless it’s a one-off proof of concept).
  29. Custom parts are always a trade-off
    • Consider total cost — not just price, but risk, lead time, and support complexity.
  30. Customization should be clustered on as few sections as possible
    • Customized pieces should remain easy to customize
  31. Order more than you need.
    • The unit cost is almost always lower than the time loss of reordering.
  32. Always have a second unit ready for when the primary device breaks
  33. There needs to be an acknowledged project manager.
    • Even if they’re not called that. Someone has to manage scope, time, and communication.
  34. Find ways to pay to reduce workload or gain schedule.
    • Have this as a contingency in the project plan
  35. Buy the book (if it’s a good one)
  36. 1 day of real research saves weeks of learning the hard way
  37. Teaching is the best way to learn.
    • Explaining it reveals what you don’t know — and what others do.

Daily Driver Tools & Frameworks

I am open-source first with tools even when they take some wrangling to setup. Here’s a running list of the tools I use the most often.

Mechanical CAD

  • OpenSCAD
  • CADQuery
  • FreeCAD

EDA & Electronics

  • ngspice
  • LTSpice
  • KiCad
  • kikit
  • OpenEMS
  • Ansys
  • Skidl
  • Atopile

Visuals

  • Inkscape
  • Gimp
  • OpenSCAD
  • FreeCAD
  • LibreOffice Draw
  • mermaid

Documentation

  • Jupyter Notebook
  • Ghostwriter
  • TexStudio
  • LaTex
  • Pandoc
  • doxygen

Business Software

  • GnuCash
  • Zoho CRM

Web

  • Digital Ocean
  • Django
    • Django-Oscar
    • Cookiecutter-Django
  • Hugo
    • Docsy

Embedded

  • FreeRTOS
  • Zephyr
  • Vivado / Vitis
  • Verilator
  • Renode

Tools / Assorted

  • Ranger
  • neovim (lazyvim)
  • Eclipse (slowly edging towards VSCode)
  • pulseview / sigrok
  • docker
  • act
  • conda

Languages & Scripting

  • Python whenever I can
  • C++ when it’s serious
  • Verilog when it’s fast
  • Matlab/Octave when it’s needed
  • Go for my websites that aren’t Django
  • Ladder logic but only in times of distress
  • Latex to make nice pdfs
  • make for every build I can
  • cmake for whenever the makefile gets too complicated