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
- Math is the first design step
- Every design starts with a value proposition.
- Continue it to every level of the design from the entire system to the power supply.
- Factor the system design early and often.
- Design for reuse must be part of the development process
- Design for test is essential to a maintainable product, hardware or software
- Test driven design is useful at every layer of a product
- Test jigs are required for fast development, rushed development is rarely fast.
- Tooling should be done early and often. Panics are what cost time, schedule, and brain cells.
- Difficult & low value tasks must be off-loaded to move fast. Hire, outsource, or automate.
- 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.
- Always have a second unit ready for when the primary device breaks
- Document all designs from the very beginning. The design goals and value proposition should slowly transform into the user manual.
- Labels are better documentation then a manual
- Every design needs an interface description, this can go on the label or board if it will fit. The schematic should reference its existence.
- Plugging things in wrong and commands typed in wrong should always be undoable
- The cheap component should blowup first
- Cheap iterations make hardware easier, thoughtful planning makes it cheaper and faster
- Project managers are required regardless of their formal role
- Figure out a way to pay to reduce workload or gain schedule. Have this as a contingency in the project plan
- Buy the book
- 1 day of thorough research saves weeks of learning the hard way
- Teaching is the best way to learn
- Order more than you need, the unit cost is less than the time loss
- Reuse design elements, form ecosystems where parts work together. You can start a project with work already completed.
- Follow standards when possible that way you can collaborate with people you’ve never met
- Standardization and modular design allows exponential network effects with designs
- Using standard components makes you more agile. This applies to electronic hardware, mechanics, and software.
- 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.
- 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)
- Custom parts are always a trade-off
- Customization should be clustered on as few sections as possible
- Customized pieces should be easy to customized
- Prototype the hard part
- 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
- Everything is in version control
- Tweaked top of the line older instruments are a better investment than lower grade new equipment
- 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
- Shoot me an email: [email protected]
- If you’re in New York come to a Fat Cat Fab Lab open house! Meetup Link.