This is the Director’s Commentary Track for a Twitter hashtag reply.
As the 80s progressed, the program my brother and I would type into Commodore 64s in department stores when nobody was looking got longer and more complicated.
I vaguely remember the ultimate version asked you for your name, then asked you if you were an idiot. If you entered "Y" it would print out "(name) is an idiot!!!" a few hundred times. If you said "N" it would print out "(name) is a liar!!!"
Then it would clear the screen and return to the first prompt. GOTO 10.
(2) 1997: Miranda
After dropping out of Law and spending a year “finding myself”, I decided to take a shot at studying Computer Science. My first text book was Bird and Wadler’s Introduction to Functional Programming, taught with one of Haskell’s parent languages, Miranda.
The charitable side of me says that the professors at my University were really passionate about spreading the gospel of FP, and were just a decade or two ahead of their time. The uncharitable side says that they thought CS100 was over-subscribed and wanted to scare as many students as they could off in the first six months.
(3) 1997: Pascal
First Year Comp. Sci. was one semester of Miranda, in which we learned how to write five-line programs to express mathematical formulae and comprehend lists, followed by one semester of Pascal in which we wrote programs that transformed input into output and drew things on the screen. This might explain my next decade-and-a-bit of assuming Functional Programming wasn’t useful for “real world” things.
The final assignment of the year was developing a game of Othello/Reversi. As usual, I left it to the last minute and wrote the whole thing at 3am in the Mac Lab the night before it was due. Decidedly not as usual, I discovered the next day that I had got the submission date wrong, and spent the next week fixing bugs, and adding silly animations and Easter Eggs.
Some time around here I also learned Just Enough C, but never used it for any more than reading other people’s code, and Just Enough Shell Scripting, which is too boring to make the list.
(4) 1998: PHP
I taught myself PHP for the same reason everyone else did. I wanted a webpage where I listed all the CDs I owned and rated them out of five. OK, maybe not exactly the same reason everone else did, but close enough. Still, it convinced someone I was overqualified for the ISP phone support job I was applying for, and thus naive and exploitable, so it must have been good for something.
Some time around here I also learned Just Enough SQL… OK, I knew simple selects, deletes and inserts and had a vague idea how joins worked, but that pretty much describes where I am almost twenty years later, so whatever.
(5) 1999: Perl
One of my greatest Perl creations was a set of scripts for managing an Internet cafe. One half of the program ran as an (unprivileged) CGI script that gave the person at the front of the cafe a view of who had been on which computer for how long, the other half ran as root, listening at a Unix Domain Socket for commands to add or remove firewall rules to take those computers on and offline. I was pretty proud of it at the time.
I wrote this service after I had already vowed to leave my job, so the code was utterly unmaintainable; partly because I was using it as an excuse to learn Object Oriented Perl5, and partly because I was doing things like naming every method after the song I was listening to at the time (oh_my_god_thats_some_funky_stats), or writing functions with five mutable local variables called $binky, $banky, $bunky, $benky, and $bonky.
The joke was on me. A month before I left the job, I had to rewrite all of the provisioning and reporting functionality because they changed their business model.
(6) 1999: VBScript
One day, my boss pulled me into his office and said “Do you know Microsoft Active Server Pages?”
“Can you know them by Wednesday?”
“I guess I can try.”
I was dispatched to the local bookshop to pick up the most plausible-looking “Learn ASP in 24 hours” book, and by the time we met with the client, I could bullshit well enough to get the job.
The job was to rescue a website, the previous developers of which were quite possibly that section of the infinite monkey dimension that didn't get to produce Hamlet, so the bar was luckily set pretty low, and whatever I managed to develop was good enough that I was never called on my making the whole thing up as I went.
(7) 1999: Java
My father told me there was an opening for me in Sydney at his company, but in order to convince his co-founders that I knew my stuff I would probably have to know Java. So that was next on my list. I wrote a massively over- engineered credit-card payment system that I think might at some point maybe have gone into production. That was apparently enough to talk my way through the interview.
I boot my Windows box (less than 24 hours since I last sent it to sleep) because I want to play a game. For the next twenty minutes, I am watching a progress bar tracking an operating system update.
I log into Bitbucket because I want to create a repository for the code I've been working on. I can’t log in because they have migrated me to their central ID platform, and I need to recover a long-forgotten account and merge it.
I start Steam, but I have to wait for the client to upgrade.
I understand that it is important to stay up to date with security patches and bug-fixes. I understand that sometimes, new identity platforms happen. But I know that all of these changes could be scheduled in a way more convenient to me, you just chose not to to do it.
The first priority of any software should be to do what the user is asking it to do. There are very few OS upgrades that can't schedule themselves in the background while I play Overwatch. Steam upgrades don’t change the games I have already downloaded. Your identity management migration can bug me with popups for a while before forcing me to merge my account.
Don’t tell me that your time is worth more than mine.