With modern software, I find it that there isn't much to learn at all - in the past decade, seems to only be removing features and interaction modes, never adding anything new.
Still, I don't regret having learned so much all those years ago. It gives me an idea what the software could do. What it was supposed to do. This means I often think of multi-step solutions for problems most people around me can't solve unless there's a dedicated SaaS for it. As frustrating as it often is to not be able to do something you could 10 years ago, sometimes I discover that some of the more advanced features still remain in modern toy-like software.
"In 2003, I was given the chance to lead the redesign of the most well-known suite of productivity software in the world: Microsoft Office.
"Every day, over a billion people depended on apps like Word, Excel, PowerPoint, and Outlook, so it was a daunting task. This was the first redesign in the history of Office, and the work that we did ended up shaping the standard productivity experience for the next two decades."
...
I’m still waiting for people to stop complaining about it.
Originally: Taxonomically organized nested menus, culminating at a specific function or option screen
Now: Usage-optimized Ribbon (aka Huffman coding for the set off all options), culminating at a specific function or option screen
Future: LLM powered semantic search across all options and actions, generating the exact change you want to implement
Why have an "email signature" options page at all, when an LLM can stitch together the calls required to change it, invoked directly from English text?
10-20 years from now? Maybe. It depends on whether or not the industry will cut corners in this part of the experience. I find it hard to predict which features get polished, and which are forever left barely-functioning. Might depend on which are on "critical path" to selling subscriptions.
0-10 years from now? We'll still need the options page.
"Email signature" options page provides visibility, consistency, and predictability. That is, you can see what your e-mail signatures are, you are certain those are the ones that will be used for your message, under conditions defined in the UI pane, and if you change something, you know exactly how it will affect your future e-mails.
LLMs are quite good at handling input, though not yet reliable enough. However, as GUI replacement, they are ill-suited for providing output - they would be describing what the result is, whereas the GUI of today display the result directly. As the writers' adage goes, "show, don't tell".
(That said, the adage is way overused in actual storytelling.)
Think less "make a signature for me" and more "here's the signature I want to use, make it my default."
Then the model would map to either Outlook / Options / Signature / fields or directly to whateverSetSignature().
From that more modest routing requirement, it seems a slam dunk for even current models (retrained to generate options paths / function calls rather than English text).
LLMs could certainly help loosen the input requirements, not to mention aim some sorely needed hype back in this direction. I am afraid that they will murder the latency and compute requirements, but hey, progress is always two steps forward one step back.
For a while, ubuntu had a local search where you could hit a button (super?) start typing, and it would drill through menus at lightning speed
All the fancy dialogs will switch around every few years.
This mindset extends to stuff like Word. Whenever you do something think hard about the essence of what you’re doing. Realize this should have been a script, but due to constraints in reality you are forced to use some wanky GUI.
If you look at it like this, you won’t care the pixels move around. Your mental model will be solid and building that is 90% of the work.
Maybe I'll reject instead of embrace the next big thing once I'm old enough?
in another browser tab i'm running jupyter (the renamed ipython notebook from 02011) to graph some dsp calculations with matplotlib (02003, but mostly providing the plotting functions from matlab (01984)) which i made with python (01991, but i've only been using it since 02000) and numpy (02006, but a mostly compatible reimplementation of numeric from 01995, which i've been using since 02003). in jupyter i can format my equations in latex (01984, but for equations basically the same as plain tex82 from 01982, but i've only been using them since 01999) and my text in markdown (02004, though jupyter's implementation supports many extensions). i keep the jupyter notebook in git (02005, but i've only been using it since 02009, when i switched from cvs (01986, but i've only been using it since about 01998)). the dsp stuff is largely applications of the convolution theorem (01822 or 01912) and hogenauer filters (01981).
i do most of my programming that isn't in jupyter in gnu emacs (01984, but i didn't start using it until 01994) except that i prefer to do java stuff in intellij idea, which i first used in 02006
earlier this year, my wife and i wrote our wedding invitation rsvp site in html (01990, but using a lot of stuff added up to 02000) and css2 (01998) plus a few things like corner-radius (dunno, 02006?) and a little bit of js (01995, but in practical terms 02004), with the backend done in django (02005) backed by sqlite (02000, but this was sqlite3 (02004), but sqlite mostly just implements sql (01974, first publicly available in 01979, but mostly the 01992 ansi standard) which in turn mostly just implements codd's relational data model (01970) and acid transactions (01983), all of which i've been using since 01996). and of course python, emacs, and git. most of the css debugging was done with chromium's web inspector (present from the first chrome release in 02008, a clone of firebug (02006)).
for looking up these dates just now, i used google's newish structured search results, which mostly pull information from wikipedia (02001); i also used stack overflow (02008) and its related sites.
the median of the years above is 01998, with 25% and 75% quartiles of 01987 and 02004, which i calculated using r (01997, but a reimplementation of s (01976)). if we assume that each new introduction listed above displaced some existing skill, then we can vaguely handwave at a half-life of about 25 years for these churning technology skills, which to me seems like enough time for a lot of them to amortize; but it seems like it's slowing down a lot, because the 25% quartile is in 01987 and not 01973
it's true that all the time i spent configuring twm, olvwm, fvwm, and afterstep, and working around bugs in netscape 4's javascript implementation, and maintaining csh scripts and informix ace database applications, and logging into anonymous ftp sites running tops-20, and debugging irq conflicts, isn't really serving me today. but you could kind of tell that those things weren't the future. the surprising thing is really how slowly things change: that we're still running variants of the bourne shell in emulators of the vt100
other still-relevant technological skills for me today include building a fire, qwerty typing, ansi c (my wife is taking a class), bittorrent, operating a gas stove, and making instant coffee. still beyond me, though, is how to turn this tv on