first of all sorry for the long hiatus. It won’t be the last. I don’t have a posting schedule. I just post when the cosmos aligns.
I hope this isn’t too bad. I promise I do have a lot of vents that are steaming. Just need to solve the puzzle of opening each
Nature has a myriad of weapons to combat human arrogance.
― Wayne Gerard
[ insert generic utopia picture here ]
I’ve come to understand that programmers are unprincipled engineers and craftspeople. We produce tools that other humans use for their various purposes, just like every other specialist, but the only difference is that we unfortunately lack discipline. We, more often than not, are reactionary to our systems we live on top of — lacking vital intention. We keep repeating phrases like:
- programmer time is more [important]1 than computer time
- memory is at infinity
- ship now, fix bugs later
As we shut our eyes and ears to the reality that our programs are part of a large system. If the parts are rotten, the whole won’t stand. No other discipline would dare to take this lightly, but we do.
This isn’t to blame programmers themselves. It’s the environment they found themselves in. A programmer can be forever frustrated at the sheer rot they have to navigate, rebelling against it and creating good software with no hope of being useful unless the whole civilization collapses2, or giving in to the beast and embracing the rot, letting it infect their own creations, and perhaps hoping for a perfect world.
In a perfect world, from a programmer’s perspective, everything is mathematically elegant. Everything is simple to understand and trivial to implement. There’s no excuse to avoid being disciplined. After all, there is not a place for complex monoliths with many moving parts.
Instead, we have many simple units of computation interacting with each other organically, like bees in a hive.
In a perfect world, we don’t have opaque hardware. Computers do not need interfacing glue in the form of extra special-purpose hardware chips that have the sole purpose of modelling an illusion of a simpler interface. Instead, computers have many simple special-purpose chips each carrying its roles independent of others. buffering their input from, and output to outside world via many memories. We as (low level) software implementors are faced with that reality and are fully aware of it. Our code, thus, uses what it needs.. and only what it needs.
Hardware is, for that to be achievable, less heterogeneous. It is vital to be able to replace faulty chips in a system and expect our computer-patient to live. Chips live a long life, so they must be repurposable, and they must live their life to completeness.
In a perfect world, we don’t use wasteful technology that would stand as a testament to our arrogance and striving. We must not build towers upon marble pillars, rather we ought to build huts and raise tents.. Houses that use the resources of, and benefit from their environment and its patterns.
We must be humble and show humility to our world and its forces. We must design our computing systems similarly — to be fully aware of, and fully utilising it — to live with, not against.
The common hardware should be low-speed, low-availability, low-complexity, low-power, highly parallel, and brutally simple. First and foremost, it must not hold its users back. It should be locally responsive and independent, which requires disciplined software.
High-speed instantaneous communication, extremely demanding infrastructure for, complex instruction sets and architectures, all do have a place in this perfect world; They are now out of that place, used for consumer entertainment and against human benefit, when they must be more central and shared, used for social entertainment, and for the enhancement of human life. They would be the exception, not the norm at which we build our everyday computing software.
Computers are built to compute. We must keep that in mind. Every human should have a computer for sure. But the computer must augment the human’s intelligence as a priority. Our modern-day computers have lost that vision early-on. The augmentation part was reserved for niche uses, while the mainstream suffered from a drought of available computing systems that help them in their everyday work (or art), and an abundance of entertainment programs. A modern-day computer is a consumption machine, but in a perfect world, it’s a tool of discovery.
In a perfect world, as we are the stewards of our craft, our job is to create sharp and focused tools for others to use. A blacksmith may create a toy, but that’d be out of what’s considered a blacksmith’s obligation. A chemist may create a deadly chemical weapon, but that’s against what a chemist does to serve humanity. Programmers, similarly, shouldn’t devote their life to distracting or harming their own kind. They should fix their vision on excellence.
If hardware is efficient common good, if software is focused and powerful, if other people benefit from both in their respective fields instead of being dulled by the product of our field, we may find ourselves more focused on other socio-economic issues that lead to this perfect world.
A perfect world that isn’t now, and likely never.
Life is never perfect after all.
But perhaps, just perhaps, if we keep that vision in front of us. Our current world wouldn’t be as bad.
measured by money as you’d expect