62 points by stargrave
11 days ago
>Continuing a legacy is an honorable task, except in programming.
This is the most important of the items in the list. The "upgrade or you're unclean" ethos has some very deep roots.
It goes all the way down to the security model of our operating systems. It was perfectly reasonable to assume that a user knew what they were doing with their own files back in the days when Unix was written. That wasn't assumed in the world of mainframes, which were designed to multiplex hardware across tens, hundreds, or even thousands of jobs.
In mainframes, your job is explicitly given resources to use and a run time environment. No matter what went wrong, a job run for Acme Inc couldn't corrupt the files of Bob's Distributor.
We don't have that... we've been lead to believe that we just have to be pure enough, our code has to be perfect enough, and defect free, in order to have safety. We blame everything except the OS, mostly because we don't want to cast doubt on the wisdom of Linus, and the sanctity of Linux.
We recreate the mainframe model, over and over, in part, not in whole. I'll paraphrase Greenspun's 10th rule
Any sufficiently popular computing environment contains an ad hoc, informally-specified, bug-ridden, slow implementation of capability based security.
We need to make better choices. Legacies are a choice, lots of old stuff is tossed by kids all the time, the legacies are the good things kept from the past. Keeping legacies alive is a choice.
> We blame everything except the OS, mostly because we don't want to cast doubt on the wisdom of Linus, and the sanctity of Linux.
Why single out Linux here? Every Unix fits this (except maybe SELinux). And then, does Windows also fit here?
Because we're mostly Linux users, but yeah, Windows, MacOS, SELinux all suck.
> Never changing the defaults is like living in a motel your whole life.
Seldom changing the defaults is like being at home in many places.
"The future was better in the past."
Perhaps this is one of the reasons retro is seeing such a resurgence (pun intended) these days.
Not to mention that in the future the past too will be better.
Nice! I love the symmetry in:
The future was better in the past. The past will be better in the future.
"Affordances are so called because many contemporary UI designers have deemed them too expensive."
I do not understand this. I know what "affordable" means and that it must be a word play, but I have no idea what the other meaning could be.
"Affordances" are a UI design concept - they're things that the design of an object makes you think you can do with that object, if that makes sense. In this context, door handles afford being pulled (because they stick out of the door and you want to pull the door, so you pull the handle), buttons afford being pressed (because they are small, often labelled with a function, and project above the surface they're embedded in), etc.
So yes, I think you're right that it's a word-play between the UI design concept and the cost of implementation concept.
And in the modern UI, all those small "hints" at how the interface can be used are being steadily removed: links, buttons, text fields, etc. all pretend to be static text.
Given that affordances is defined as "the quality or property of an object that defines its possible uses or makes clear how it can or should be used," I think it refers to how modern UI designers obfuscate the entire power of a system behind easy to use functionality that is aimed at mostly non-technical users, leaving those who have the capability to mold it to their preferences and customize it at a disadvantage. I guess affordability is then a word play on affordances.
Also - second definition here
formal - to allow someone to have something pleasant or necessary:
* The hut afforded little protection from the elements.
* Her seat afforded her an uninterrupted view of the stage.
Write your code like you will need to debug it at 2:00 am drunk
"Hypocrisy is taking pride in Unix shell scripts kept since the 1990:s while scoffing at banks running Cobol."
Well, maybe obliviousness is.
> In the future, when computers are at long last voice controlled, open office floor plans will finally disappear.
More likely we will all get sore throats talking at computers before this happens...
Some people have been doing it for a long time.
Yeah, when I saw Emily Shea's talk* I became aware of the accessibility-unfriendly code I normally put out. I still find myself writing bad code, but at least now I'm aware what to be aware of.
After that happens we switch to neural chips, using the pc.
> It's important to consider ergonomics in sedentary jobs: every now and then, programmers should shift a bit.
I’m curious if this was an intentional pun? I thought maybe in addition to moving now and then, it’s subtly suggesting to write low-level code? Having taken a recent career trajectory from high level code to assembly & hardware, I’m being exposed to reasons why practicing some bit-level hacking is good for my understanding of how the machine works. Maybe that wasn’t the intent here and I’m seeing faces in the clouds. :P
Yes, I'm sure it was intentional. I guess the sad part is that fewer programmers will get this pun now vs in the past.
"The mouse is a much faster input device than the keyboard: the latter is almost always stationary."
Keyboard doesn't move.
It depends on how fast you type. Mine moves, sometimes. ;)
Read it again. Slowly....
The whole article must be a very subtle humor which I did not recognize at first.
Maintaining an ideal set of defaults is like trying to arrange your favorite lamp and flower vases in every hotel room where your job requires you to spend the night.
(Fix) bugs is more important than adding (new) features.
Love the domain name. Gave me a chuckle.
> Programming is one of the few crafts that will only make you dirty on the inside.
What are any others examples? Killing people?
Killing people possibly makes you dirty on the outside too - bodily fluids or getting dirty in potential struggle with the victim.
It doesn't have to be. Here is some inspiration: https://en.wikipedia.org/wiki/Therac-25