A Brief History of Software’s Increasing Utility
1950s - Formally Provable
Languages
FORTRAN and COBOL - great for
high-reliability but challenging to use
1972 - C
Bell Labs creates ‘C’
1978 - C
“The C Programming Language”
makes ‘C’ accessible to coders
1989 - C++ 2.0
object oriented programming of
the future (with documentation)
1990s - Moar Languages!
new languages emphasize
“codeability” and formalism
and many use common build
tools and linkers (GNU)
1965 - Object Oriented
1967 - Libraries + Linking
SIMULA 67 combines object oriented
programming with classes, libraries, and
compile-time linking
https://en.wikipedia.org/wiki/History_of_programming_languages
https://en.wikipedia.org/wiki/Library_(computing)
A Brief History of Software Development + Dev
Tools
1969 - Punchcards
good luck debugging that run
2001 - SVN Bootstraps
2001 - IBM frees ECLIPSE
syntax highlighting, an integrated
compiler, debugger, unit test AND
multi-user source control?
2005 - GIT is born
linux kernel developer count
grows from ~1 to ~3,700
2016 - GitHub Goes Big
> 14,000,000 users
> 35,000,000 repos
biggest code repository on Earth
https://www.iri.com/blog/iri/business/brief-history-of-eclipse/
https://blog.codinghorror.com/fifty-years-of-software-development/
1976 - Text
Editors
vi + emacs
start a religious war
Eclipse
User-Friendly Workspace
- Syntax highlighting
- Code Navigation
- Code Completion
- Multiple language support
- Multiple OS support
All The Tools In One Spot
- Debugger
- Unit Test
- Refactoring
- Source Control / Versioning
FREE - FREE - FREE - FREE
https://en.wikipedia.org/wiki/Syntax_highlighting
GIT (and GitHub)
Takes the Pain out Multiple Users
Participating in a Software Project
- Hosting + Sharing == More Devs
- Push/Pull/Merge
- Code Review
- Automated Build Tools + Unit
Test
- Continuous Integration
Practically Builds Itself
- Community == Acceleration
- Tool-based Bootstrapping
FREE - FREE - FREE - FREEhttps://en.wikipedia.org/wiki/Continuous_integration
https://upload.wikimedia.org/wikipedia/commons/1/1b/Linux_Distribution_Timeline.svg
accessibility
BUILD TOOLS SO USABLE THAT TODAY’S NOVICES
CAN CONTRIBUTE 10x MORE THAN LAST YEAR’S EXPERTS
WITH HALF THE SWEARING
Accessible Design Principles
● Use Classes + Inheritance
● Provide Great Libraries
● Seamless Linking
● Seamless Build Systems
● Clean User + Design Interfaces
● Intuitive Syntax
● Limit Use Error Through Design
● Remove User Touches
● Write Thoughtful Error Messages
● Democratize Expertise:
Through Process + Offloading
don’t be like MakeFiles!
https://edublocks.org/circuitpy.html https://oshpark.com/ https://fritzing.org/home/
test
TEST IS THE PRODUCT BEHIND THE PRODUCT
https://www.bunniestudios.com/blog/?p=5450
Test Drives Innovation...
No/Bad Test Drives Failure
● Test is a product, too!
(and 3-4x the work)
(with all the UX requirements)
● Test is for HW and SW
● Integrated Test is Best
● Some Test > No Test
● Real, online test unlocks
exponential design velocity
https://www.bunniestudios.com/blog/?p=5450
Automation Requires A
Stable Foundation
Open Source HW Comes in Many Stable,
Mature Flavors
● Arduino
● Circuit Playground
Git Automates FW Builds for HW
Adafruit CircuitPython Stats on Git Action
● each PR builds against 116 boards
in 12 languages
● automated 12 platform checks for
Arduino hardware
https://circuitpython.org/downloads
https://github.com/adafruit/circuitpython/pulls?q=is%3Apr+is%3Aclosed
altruism
WISE SELFISHNESS MEANS PEOPLE WITH EXPERTISE, TIME, AND
RESOURCES CONTRIBUTE TO PROJECTS FOR THE SAKE OF
ENABLING MORE PEOPLE TO CONTRIBUTE TO COLLECTIVE GOALS
A Brief History of Open Source Hardware Tools
1992 - Basic HW CAD
KiCad is released, creating
open-source schematic capture
and PCB design
2021 - Hierarchical Design
benevolent group with massive
engineering resources releases
first open-source visual circuit
editor with modular circuit
libraries
2023 - Usable Hardware Unit Test
Part and circuit libraries add behavioral test support
2031 - Full Collab Mode
> 10,000 users
> 30,000 repos
open source HW designs are
mature, robust, and everywhere
1993 - Low-Level Sim
ngspice can simulate
low-level circuits (current,
voltage, transients)
http://ngspice.sourceforge.net/resources.html
https://esim.fossee.in/
2024 - Concurrent Design
version sets for sch/pcb capture + test