One of the things that landed in my lap early on (System 8?) at Apple was the color picker. We were moving to PPC (PowerPC) and much of the HSL (hue, saturation, lightness)picker (HSV, hue, saturation, value?) was in raw 68K assembly.
Having never written assemble (68K or otherwise), I knew I was out of my league ... but I persisted.
Line by line, I replaced the assembler code with straight C. I was able to scare up a Motorola 68K assembler book around Apple and I recall that there was one assembler code I could not find: it turned out that it was a 68020-specific operator (and since we're talking color picker I suppose an '020 could be assumed — some kind of bit-shift-with-mask or some such weirdness, FWIW).
(I guess each pixel of the "color wheel" was a rather complex calculation that someone had found benefitted from a straight assembler implementation — keep in mind you could slide the brightness/value slider and the wheel would redraw in real-time on those underpowered Macs.)
Apart from getting the assembler over to straight C so the PPC compiler could have something to compile I also had to move over the API. Color pickers were plug-ins and had a couple of calls that, again, I believe had a different signature on PPC.
To learn the API and test it I wrote an HTML color picker that was essentially an RGB picker that gave you hex values instead of 0-255. Further I did a crayon picker as sample code (I thought this was kind of "Mac-like", right?).
I was a bit surprised when the HTML and Crayon pickers shipped. Then, much later, when someone ending up "porting" the crayon picker to Mac OS X I suddenly had regrets at having not spent more time coming up with good names for the crayons. (There was a general pattern though: naming the grayscale colors after minerals for example.)
I was almost fired I think though when my crayon picker shipped and it got out that I had slipped some T.S. Eliot quotes into the resource names in the Color Picker modules. I was called "into the office" and told that I had fucked up.
It's true though, I had fucked up. I had let the "Easter egg" thing get to my head and wanted to leave my mark. I think they had to quickly rev the OS after stripping out the offending T.S. Eliot quotes.
(There may though have still be an Easter egg lying around where the crayons would wear down until Jan 1 when they would be restored to full size.)
(Also, that was the first time I almost got fired. The second time would come when I was on the Photos team some 15 or so years later.)
A feature was tossed in my lap for Photos. I think AppKit had added something new — maybe file handlers or something — and I was to wrap the photo export (for desktop Photos) with file handler calls. Sort of lock access to the file while writing, unlocking after — something like that.
I knocked it out rather fast but was told not to check it into the "master" branch for some reason — maybe they were trying to get some kind of stable branch for QA to test, I don't remember. In any event, the code sat in a branch and I went about other features.
Somehow months go by and suddenly we're about to ship when someone says, "Hey, where's the file locking?" Oh shit!
Well, I knew to check it in this late in the game (we had already done full suite testing etc.) was wildly irresponsible. The code was untested, I expected we would find an issue here or there. But I was told by management, nope, check it in. Somehow we needed that feature in that release of Photos.
Well, it didn't work. The export code was wildly threaded and ping-ponged between background processes. It was not easy code to wrap your head around.
For some reason one of the managers already had it in for me and it started to become clear to me that this was a kind of do-or-die moment for me. In fact, I rather think he hoped I would fail so he could give me the boot.
I confess a full on panic took a hold of me and I started experiencing levels of anxiety I had never experienced in my entire life. An engineer in Finland (I think he worked on AppKit) became my only life line. Or rather I should say he became my "smart friend". I put in consecutive 18 hours days, teleconferencing to Finland, trying to unwrap the mess that was my export code.
And as I recall, another one of the truly genius engineers that I was lucky enough to work with made some casual remark to me along the lines of:
"File handles have a bug: they store data in the thread you create them on, if you try to tear down a file handler on a different thread it crashes. The only way to guarantee you create and tear down the file handler on the same thread is to dispatch to the main thread before creation/teardown."
So easy for smart people.
Yeah, I survived again but I immediately looked for another team. The anxiety lingered I think for months after. (Thank you, Leo, again, for pulling me over to your team and maybe even saving my life — it was a weird thing that I needed major intestinal surgery not long after the Photos ordeal.)
Yeah, I suppose the latter. Apple was super-cautious (even then) about copyright violation (even though it was clearly outside copyright). I was too big for my britches.
“We have lingered in the chambers of the sea
By sea-girls wreathed with seaweed red and brown
Till human voices wake us... and we drown.”
(Maybe I should add that Apple was sort of circling the drain about this time. I wondered if it was the last OS we would ship and there was a kind of sadness if that were the case. Somehow the line resonated with me at the time — I felt we were a little like "drowners" (that would probably be more of a Suede reference).)
For whatever it's worth, people like you are why I stuck with Apple even when they were headed for bankruptcy. Quirky, human stuff like the crayon picker (which I remember a lot of people loved; the weardown effect especially) and easter eggs (which I spent much of my childhood hunting for in ResEdit) really defined the Mac experience for me at that point. It was one of the few platforms I can think of that actually had a sense of character.
I've been wondering this for 25 years: how did you generate the crayons? They were pretty realistic.
URLs won't get linkified in code blocks. If you want people to click them I suggest that you convert them back to normal text (delete the spaces at the start of the line).
I have this theory that everyone will just pick a GUI from "their era" as the best; not because the UX was the best, but because it reminds them of the "good times".
In that regards, I'd say Windows NT 4.0 and macOS Snow Leopard would be mine!
My "era" would be Win3.1, largely because i had a dinky 386 until the late 90s and yet i still find Win95 to be the superior UI. Aside from nostalgia i can't think of a good thing for the Win3.1 UX despite using it for years.
In both, just look at interface elements that are actually visible, and can be distinguished from one another. Buttons that look like buttons. Window chrome that looked like window chrome...
Leopard/Snow Leopard were pretty good, but I have one gripe with them: the gray used for "metal" (titlebars, toolbars, bottom bars, etc) was oddly dark (only visible in the last of the linked screenshots, due to them being taken while windows were inactive). To me it was reminiscent of the gloomy grays of Windows 95/98 (which themselves were replaced by lighter shades in Win2K), and back when those OS versions were current I had a theme installed that replaced all the dark metal with the lighter white-gray gradients found in titlebars and "unified" toolbars in 10.4 Tiger.
The most refined iteration of Aqua overall IMO is that of Mavericks, aside from its scrollbars. It still had plenty of dimension, color, shading, etc while also feeling a touch more sharp and professional than earlier versions.
The lack of any Smalltalk or Lisp machine examples stands out to me. I guess those were always niche. But still, would be nice to consider adding for completeness.
On an unrelated note, I've always loved the look of the NeXTSTEP desktop. I know WindowMaker exists, but most modern Linux software nowadays simply clashes with its design and provides an awkward experience at best. It's not a desktop environment I'd use daily, but if enough graphical software played nicely with it, I'd definitely consider using it on Linux machines.
Yes, I believe the course of the history of the Linux desktop would have been very different had GNUstep took off, especially around the crucial years of 1996-1998. In our timeline KDE started in 1996 and GNOME started in 1997, and neither desktop adopted GNUstep, instead preferring the Qt and GTK+ GUI frameworks, respectively. However, suppose instead of KDE and GNOME being developed, the community rallied behind GNUstep, speeding up its development. Had GNUstep been completed by 1998 or 1999, this would've been revolutionary, especially if some type of Wine-like compatibility layer was built to support NEXTSTEP/OPENSTEP binaries, thus immediately providing the Linux desktop high-quality commercial applications such as those from Lighthouse Design (https://en.wikipedia.org/wiki/Lighthouse_Design), as well as providing a path for companies with legacy NEXTSTEP/OPENSTEP codebases to bring their code over to GNUstep running on Linux or one of the open source BSDs (IIRC, NEXTSTEP was built on top of a 4.2BSD userland running on the Mach microkernel).
Why did we end up with KDE and GNOME instead? I wrote about it in more detail here (https://mmcthrow-musings.blogspot.com/2019/06/some-thoughts-...), but in short, my opinion is that (1) GNUstep wasn't ready when KDE and GNOME were under development; the developers involved preferred to use existing GUI toolkits, and (2) there might have been a reluctance to using Objective-C in the mid-to-late 1990's.
Another fascinating consequence of a world where GNUstep took off is two competing implementations of the OpenStep API: Apple's (Cocoa) versus GNUstep's. Would Cocoa and GNUstep have diverged from each other, or would GNUstep have followed Cocoa like in our actual timeline? Would a GNUstep desktop have (1) stuck to OPENSTEP's UI conventions, (2) moved to Mac OS X's UI conventions, or (3) chartered a new path? We'll never know, but it's fascinating to think about what could have been.
On "being ready", Gimp first used Motif, then it created it's own toolkit, and Gnome took GTK+ to create Gnome. I think GNUStep was far more complete than the first GTK+ releases.
On Gnome being "corporate" founded, yes. First Helix Gnome and then Ximian Gnome. But Gnome with Sawfish was far more scriptable than Gnome 3 with JS.
The custom pixel font, the modest yet vibrant colours, the icon design, the entire desktop shell, the fact that it is actually a UNIX-compatible OS, from a time Windows had a Fisher-Price UI and Linux looked... quite utilitarian.
Every time someone posts a GUI gallery site like this one, the first thing I do is navigate to the QNX section, and just marvel at what looks like a BeOS/Windows 95 love child from an alternate universe, and get all nostalgic for what seems to be a niche embedded RTOS I and many other have never used.
I would love SerenityOS to make a couple steps closer to this aesthetic ideal than the Windows 95 look.
it claims that it doesn't have a bootscreen, but there are desks in cabinets with a roll-up or fold down cover (i had one of those), which were even key-proteccted. (like password protected desktops today)
Ha! I love that one of the bottom photos shows a trash can literally placed on top of the desk itself.
Which makes me suddenly realize, how did it never occur to me before that the trash icon does not belong on the desktop?
I think, at least on my first Mac, I must have been too busy being even more confused about why the trash icon was also where you dragged a floppy to eject it.
I'm hard pressed to think of one modern app that avoids all of these antipatterns.
But if you want some UX abominatione let's start with Slack, Chrome, VSCode, Unreal Editor, Blender. That's just a sampling from my frequently used apps.
This is cool.... but where is the lisp machine(s)? It's sort of there as it mentions xerox early stuff but not directly. Needs a whole category for symbolics on the left I reckon.
It’s quite tricky to find interesting screen shots of Symbolics stuff. Weirdly I found more interesting stuff in old product demonstration videos on YouTube than I did in still images.
What isn't mentioned is that the spacing of the files in Explorer list view is much wider, and (at least for now) you can turn it back to the original spacing with the "compact" view option. A completely useless change for everyone not using a tiny touch screen as their sole pointing device. I absolutely hate this trend of hieroglyphic UI elements floating in a sea of white(or black)space...
What decent reviews. So precise.
However, I should note there is lack of reviews for MS Windows Servers (there is for server 2003 only).
Author should pay attention to server edition of recent (8,10,11) versions of MS Windows. There are not such silly advertisement and are much less annoying garbage apps and other spyware.
I try to switch to server editions as the lesser evil where possible.
A lot of late 90s to early 2000s geeks had extremely strong opinions and didn't keep them to themselves. Less of it now. Compare the typical Reddit to old Usenet posts.
It’s quite crazy how tangible nostalgia these evoke in me. Something about seeing a screen I used to watch a lot and have not seen since makes it really strong. I’d even argue it’s stronger than seeing old photos.
Mac OS 7 is the superior and ultimate aesthetic. Objectively. Which has nothing to do with the fact it was the first computer I had access to. No connection at all.
Having never written assemble (68K or otherwise), I knew I was out of my league ... but I persisted.
Line by line, I replaced the assembler code with straight C. I was able to scare up a Motorola 68K assembler book around Apple and I recall that there was one assembler code I could not find: it turned out that it was a 68020-specific operator (and since we're talking color picker I suppose an '020 could be assumed — some kind of bit-shift-with-mask or some such weirdness, FWIW).
(I guess each pixel of the "color wheel" was a rather complex calculation that someone had found benefitted from a straight assembler implementation — keep in mind you could slide the brightness/value slider and the wheel would redraw in real-time on those underpowered Macs.)
Apart from getting the assembler over to straight C so the PPC compiler could have something to compile I also had to move over the API. Color pickers were plug-ins and had a couple of calls that, again, I believe had a different signature on PPC.
To learn the API and test it I wrote an HTML color picker that was essentially an RGB picker that gave you hex values instead of 0-255. Further I did a crayon picker as sample code (I thought this was kind of "Mac-like", right?).
I was a bit surprised when the HTML and Crayon pickers shipped. Then, much later, when someone ending up "porting" the crayon picker to Mac OS X I suddenly had regrets at having not spent more time coming up with good names for the crayons. (There was a general pattern though: naming the grayscale colors after minerals for example.)
I was almost fired I think though when my crayon picker shipped and it got out that I had slipped some T.S. Eliot quotes into the resource names in the Color Picker modules. I was called "into the office" and told that I had fucked up.
It's true though, I had fucked up. I had let the "Easter egg" thing get to my head and wanted to leave my mark. I think they had to quickly rev the OS after stripping out the offending T.S. Eliot quotes.
(There may though have still be an Easter egg lying around where the crayons would wear down until Jan 1 when they would be restored to full size.)
(Also, that was the first time I almost got fired. The second time would come when I was on the Photos team some 15 or so years later.)