Daily Driver Tools & Frameworks

General Purpose

  • VIM
  • Geany
  • Ranger
  • ZSH
    • oh-my-zsh
  • Linux Mint
  • LibreOffice

Video

  • OBS Studio
  • Blender (Video Editing)

Mechanical CAD

  • OpenSCAD
  • CADQuery
  • FreeCAD

EDA & Electronics

  • ngspice
  • LTSpice
  • KiCAD

Visuals

  • Inkscape
  • Gimp
  • OpenSCAD
  • FreeCAD
  • LibreOffice Draw

Documentation

  • Jupyter Notebook
  • Marker
  • TexStudio
  • LaTex
  • Pandoc

Business Software

  • GnuCash
  • Zoho CRM

Web

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

Embedded

  • FreeRTOS
  • Zeyphr
  • CMAKE
  • Eclipse (for GUI debugging)
  • Vivado / Vitis
  • Verilator
  • gtest & gmock
  • MCUXpresso (when all else fails)

Languages

  • C++
  • Python
    • click
    • pymodbus
    • pytest
  • Verilog
  • Ladder logic but only in times of distress

Books

  • Machinery’s Handbook
  • Art of Electronics
  • Building Electro-Optical Systems
  • Unix & Linux System Administrators Handbook
  • McMaster-Carr Magazine
  • Printed Circuits Handbook
  • Design of Everyday Things
  • Manufacturing Processes for Design Professionals
  • Making It
  • Refactoring
  • Clean Architecture
  • Mechanisms and Mechanical Devices Sourcebook
  • Hacking the Xbox
  • Test-Driven Development for Embedded C
    • James Grenning
  • Physics: A Student Companion
  • Theory and Application of Digital Signal Processing

Hills I’ll Die On

  1. Math is the first design step
  2. Every design starts with a value proposition.
    • Continue it to every level of the design from the entire system to the power supply.
  3. Factor the system design early and often.
  4. Design for reuse must be part of the development process
  5. Design for test is essential to a maintainable product, hardware or software
  6. Test driven design is useful at every layer of a product
  7. Test jigs are required for fast development, rushed development is rarely fast.
  8. Tooling should be done early and often. Panics are what cost time, schedule, and brain cells.
  9. Difficult & low value tasks must be off-loaded to move fast. Hire, outsource, or automate.
  10. Tools with good ecosystems help prevent projects from getting stuck. This is usually worth the time to learn the tool. These are typically open source.
  11. Always have a second unit ready for when the primary device breaks
  12. Document all designs from the very beginning. The design goals and value proposition should slowly transform into the user manual.
  13. Labels are better documentation then a manual
  14. Every design needs an interface description, this can go on the label or board if it will fit. The schematic should reference its existence.
  15. Plugging things in wrong and commands typed in wrong should always be undoable
  16. The cheap component should blowup first
  17. Cheap iterations make hardware easier, thoughtful planning makes it cheaper and faster
  18. Project managers are required regardless of their formal role
  19. Figure out a way to pay to reduce workload or gain schedule. Have this as a contingency in the project plan
  20. Buy the book
  21. 1 day of thorough research saves weeks of learning the hard way
  22. Teaching is the best way to learn
  23. Order more than you need, the unit cost is less than the time loss
  24. Reuse design elements, form ecosystems where parts work together. You can start a project with work already completed.
  25. Follow standards when possible that way you can collaborate with people you’ve never met
  26. Standardization and modular design allows exponential network effects with designs
  27. Using standard components makes you more agile. This applies to electronic hardware, mechanics, and software.
  28. Software should be composable, preferably with software you don’t have to write and maintain.
    • Python is an excellent tool primarily due to its ubiquity and useful libraries.
  29. One specialty part can make a cutting edge design, more than three is probably a design flaw (if the design is to supported, go crazy for proof of concepts)
  30. Custom parts are always a trade-off
  31. Customization should be clustered on as few sections as possible
    • Customized pieces should be easy to customized
  32. Prototype the hard part
  33. Measure important sections in at least two different ways.
    • If the design and two measurements agree then it’s probably right, one measurement is more subject to confirmation bias.
    • Do this for calculations also, there should always be a way to check the results
  34. Everything is in version control
  35. Tweaked top of the line older instruments are a better investment than lower grade new equipment
  36. Check every rail with an oscilloscope

About Me

  • Electronic System Designer at ElectroOptical Innovations and Hobbs ElectroOptics. We specialize in designing high performance measurement systems that are manufacturable in the required schedule.

    • Embedded development
    • Circuit design
    • Safety systems (fire detection)
    • Custom Photoreceivers, SiPMs, APDs, SPADs, PIN, etc.
    • Optical measurement test equipment
    • Sensitive measurement design
  • 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.

Contact