The Graphical User Interface Gallery
toastytech.com
toastytech.com
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.)
Missed opportunity to receive "new" crayons on Christmas Day!
“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).)
I've been wondering this for 25 years: how did you generate the crayons? They were pretty realistic.
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.)
* The Sims https://thesimscss.inbn.dev/
* Windows 98 https://jdan.github.io/98.css/
* Windows XP https://botoxparty.github.io/XP.css/
* Windows 7 https://khang-nd.github.io/7.css/
* Tufte https://edwardtufte.github.io/tufte-css/
Would love any suggested additions
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...
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.
AmigaOS and NEXTSTEP are also leagues ahead of anything Microsoft did.
In that regards, I'd say Windows NT 4.0 and macOS Snow Leopard would be mine!
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.
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 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.
http://toastytech.com/guis/qnx621.html
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.
http://toastytech.com/guis/desk.html
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)
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.
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.
It's really helpful when doing a deep dive on random GUI elements such as for example minimaps.
Now that's a blast from the past... these days, everything is in the cloud, so we have server-side evil rather than client-side evil :-P
http://toastytech.com/guis/win11.html
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...
I hope this remains an option for power users like us who are just used to the old spacing, of course.
EDIT Never mind about the CDE era Solaris. That's already there.
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.
Win 10, 11, iOS (at least 16), Android are not GUIs. They are (the worst) UX. /s