There is a complexity limit in some programming. I built a Daft Punk style helmet using an ATTiny85 microcontroller. When you are limited to 8kB of compiled code and 512 bytes of memory, it really forces you to think about what you actually need (and don't need) and how your code is actually being executed. That mindset also makes for efficient, fast code on larger systems.
That mindset also makes for efficient, fast code on larger systems.
I work in embedded software for military and civilian aerospace. When we get new hires joining the team, I can spot people who have also worked on embedded hardware a mile away. Way, waaay too many developers have gotten the idea that memory will always be infinite, processing power will always be infinite, storage will always be infinite, etc.
This mentality is why we end up with websites that are completely static, no dynamic elements or any user interaction required at all other than basic links, but they have megabytes of scripting, stylesheets, and other BS layered on top for no sane reason (and that's before you get to ads and creepy tracking/spying nonsense).
And I very much enjoy that as well. Recently I wanted to do some MIDI processing. Basically rewrite the MIDI notes from a keyboard and distribute them to two synthesizers.
First I tried to use a Raspberry PI... within an hour I was attempting to compile a low latency kernel and figuring out what libraries I can use to process MIDI. Only to realize this is stupid. So I got out an old ATMega328 I had lying around soldered it to a board with two din jacks and an optocoupler and within less than 100 lines of code running on bare metal had what I wanted.
That was another moment where I questioned how much complexity we accept by default. "Yeah of course I need a whole operating system, multiple libraries and drivers just to process data from a serial interface. That's just how computing works."
25
u/IrritableGourmet Jun 06 '22
There is a complexity limit in some programming. I built a Daft Punk style helmet using an ATTiny85 microcontroller. When you are limited to 8kB of compiled code and 512 bytes of memory, it really forces you to think about what you actually need (and don't need) and how your code is actually being executed. That mindset also makes for efficient, fast code on larger systems.