It's quite amazing that we've put layer after layer of leaky abstractions on top of each other and managed to make systems that mostly work.
I don't hate all the software. I think it's awesome. It can be hell to develop, though.
It's quite amazing that we've put layer after layer of leaky abstractions on top of each other and managed to make systems that mostly work.
I don't hate all the software. I think it's awesome. It can be hell to develop, though.
>>> The Programmer-Archaeologist churns through this maddening nest of ancient languages and hidden/forgotten tools to repair existing programs or to find odd things that can be turned to unanticipated uses. - lambda-the-ultimate.org
At the time, I was a freshman in college studying "Classics" - dead languages and history, like Latin and Ancient Greek.
I dropped out that same year, flabbergasted and excited that I could experience the same archeological thrill on a much shorter time scale. All I needed to learn was some system engineering...
So I did that. Been here ever since, loving every day that I got to make some beautiful jank soup of software work for another epoch.
P.S. I was on the IRC server trying to pirate some music and textbooks I couldn't afford to buy. Wound up gainfully employed throughout my 20s, able to retire in my 30s (programmer / data archeology pays well)
One was to dig through a system that was built a decade ago and modernize it. I just wrapped that up. The end result has eliminated multiple points of failure and unnecessary process, and has enabled my team to completely own the solution end to end.
The other task is to dig into and modernize a system that was originally started over 2 decades ago. I've got some other, minor tasks to get through this month and next and am excited to get onto this next task around August.
I'm ~20 years into this career and I am have more fun in the job today than I ever have before.
It was live history working in my hands and in a usable way after Euclid and Newton.
No need to buy hardware and materials to do technical stuff, a computer was enough. And not even a good one. My cwm+tmux setup would still work in a Pentium 2.
I can only imagine the people working on the actual chips are screaming in silence somewhere at the complete waste of energy we've made.
The old canard that programmer time was worth more than processing time that bad coders quote is less and less true by the year; SWEs who are able to wring better performance out of less hardware resources are going to become more valuable in the future.
As much as I'd like for this prediction to come true, I think it's wishful thinking. Compute capacity continues to increase exponentially while (human) cognitive resources, for all practical purposes, do not, which means less efficient code will continue to be the more economically viable option as far as I can tell.
Even with AI, where we're essentially trading compute (used for running code) for extended cognitive resources (used for writing code), what incentive exists to channel those resources into writing faster code rather than writing the same code faster?
https://www.st.com/resource/en/errata_sheet/es0182-stm32f405... https://www.nxp.com/docs/en/errata/IMXRT1170CE.pdf https://www.nxp.com/docs/en/errata/IMX8_1N94W.pdf
As a dev, this bothers me a great deal. We have miracle machines on our desks and in our pockets, and 80% of the capabilities of that hardware are pissed away by terribly inefficient software.
Some of the experiences are downright magical like being able to copy something from my MacBook and paste it on my phone.
Software is just buggy in general. I mostly agree with the parent comment. The amount of software that I've never had a negative experience with is close to zero.
The ctrl key randomly stops working, tested by pressing ctrl-C at random intervals. Sometimes it's perfect, sometimes not.
I worry about complacency with overcomplexity and over-reliance on software, and our fast-growing trigger finger to automate everything....
Personal responsibility and training backed by a human touch will not be beat by code any time soon in my opinion. Citing that code is almost always deeply influenced if not forged and maintained by human hands, any credible singularity is far from our currently over-marketed Ai reality at the moment in my opinion as well... Google can't even get it's assistant and spell check to work properly, and they've been one of the largest companies on the block for decades now.
I have seen too much software to ever trust software with an automobile.
Automobile is as broken as software and hardware.
Things will start falling apart one day.
Is there a hidden assumption in "unnecessary"? None of the tech unfolded in a deliberate, methodical manner. It was random people doing various things over time and a plethora of details.
To assume that the aggregate would have a tidy structure seems unrealistic.
And much goes into RFCs.
But is there much internet-wide engineering going on to squeeze out the entropy?
Repackaged: the engineering that occurs is more bottom-up than top-down. Google, for example, has enough heft to say: "QUIC: here is a bit of top-down engineering." But that example bolsters my general point, in my opinion.
The problem is that they're not layers of abstraction, they're just layers.
An actual layer of abstraction should allow you to replace or combine the lower layers. But we just have layers without abstractions.
It just barely hangs together enough to sort of function most of the time.
I'm just saying the remaining 10% can be pretty impressive considering the complexity and cruft developers deal with to make it.
Software that fully works is too expensive to build.