Software best practices in (Hard)ware world!
Chinmay Pendharkar
@GeekcampSG 2022
whoami
- Engineer ๐ง๐พโ๐ป
- CTO @ Subnero
- Hackware ๐ช
- Intersection of Hardware and Software
Software best practices are NOT widely adopted in hardware world!
Definition
Hardware โ Mechanical + Electronics + ...
Poll ๐
Software Only
Software + Hardware
Hardware Only
Can software best practices be applied to hardware development?
- Anyhowly
- Effectively
- Practically
Concrete Example
- Mechanical & Assembly Drawings โ๏ธ
- Electronics Schematics, Layouts, BOM ๐
- Software code ๐งโ๐ป
Concrete Example
- Documents โ Versioning + Version Control
- Components โ Integration + Testing
Versioning
- No standard versioning scheme ๐
โโ๏ธ
- Everyone makes up their own ๐ฅ
../schematics > ls
electronics-rev-010A.PcbDoc
electronics-rev-010_copy.PcbDoc
electronics-rev-010_copy_20180809.PcbDoc
Can I use mechanical assembly v4-MKII with PCB rev-010A?
Semantic Versioning - SemVer
- Pseudo-standard ๐คทโโ๏ธ
- Widely adopted ๐
- MAJOR.MINOR.PATCH
"we propose a simple set of rules and requirements that dictate how version numbers are assigned and incremented"
Our SemVer
- MAJOR: Changes that affect other components ๐
- MINOR: Changes that only affect your component ๐ช
- PATCH: Changes that only affect your component but don't change any functionality ๐งน
"understand what changed at a glance"
Version Control
- Design Documents need version control ๐
git
โค๏ธ
- Propreitary Binary file formats ๐ญ
Version Control - git
Version Control - git
Version Control - git
- commits + tags ๐ท๏ธ
- branches and PRs ๐ฒ
- Custom Porcelain/GUI ๐ฝ
CI - Hardware
CI - Hardware
CI - Hardware
Can software best practices be applied to hardware development?
- Hard but not impossible ๐โโ๏ธ
- Extract the essence of the best practice ๐ง
- Apply in context ๐ค
#Hiring
- Like to work on hard problems? ๐ช
- Underwater wireless communications? ๐ก
- Join us!