For the fun history, @DonHopkins had a thread a few years back:
For the fun history, @DonHopkins had a thread a few years back:
Now it's all about how to make it useful to the company.
<YOUR FILES ARE NOT BACKED UP, WOULD YOU LIKE TO TURN ON ONEDRIVE?>
<Yes> <Maybe later>
Anyway, the links in that post have deteriorated.
Here's the link to Raymond Chen's blog: https://web.archive.org/web/20190218080905/https://blogs.msd... (shame on MS for redirecting you to another page when showing you a 404, which make it harder to find the original URL).
Updated link to Raymond Chen's blog, where the comments have been 'retired': https://devblogs.microsoft.com/oldnewthing/20080619-00/?p=21...
And the 2 imgur links (same issue with the redirecting...):
https://web.archive.org/web/20230509182201/https://i.imgur.c...
and
https://web.archive.org/web/20230507201645/https://i.imgur.c...
If Microsoft spent money on UX research that improved its UI controls, it would benefit a lot of people. Essentially the cost of that research was bore by all application developers.
The problem now? Every company is designing their own UI components. Every company has to bear the cost of UX research individually. It’s a lot of wheel re-inventing. UX easily takes a backseat.
I wish we could pay them to do something useful instead.
_Re_designing. And _updating_ ... /s
(Only ignorant fools would start to fight it.)
and give them a modern touch or rewrite them to some modern language D/Zig but exactly.
I think this is what as a community should be also doing. It should be also a curriculum in universities.
Thanks to Internet Archive.
[1] https://cdn.dribbble.com/userupload/41647820/file/original-8...
It would cycle through a small number of text values with some kind of backspace/overwrite to keep things localized to where the cursor ought to be.
One version was a variable length ellipses: . .. ... that would grow and reset in place.
Another was an expanding "dot": . o O that would cycle in place as one character.
And the early "spinner" was: - \ | / that would cycle in place as one character. Hmm, not sure this will render properly on HN but it is hyphen, backslash, pipe, forward slash.
(c.f: https://ftp.netbsd.org/pub/NetBSD/NetBSD-release-10/src/sys/...)
[1]: https://cdn.dribbble.com/userupload/20351752/file/original-b...
Instead we get these spinning wheels that are like "maybe in the future this wheel will stop and we will have a return value." No confidence whatsoever.
I know this is true because Apple tries to implement progress bars in IOS like real chads. But their progress bars are just fake. They are a cheap animation all the way up to 90% and just stop moving until the progress is actually complete which could be 5 seconds of 90% and 40 seconds of the last 10%. So they think they are chad but lie.
That said, back in DOS era, this kind of thing was much more straightforward because most operations that would warrant a progress bar involved some kind of disk I/O, which - if you amortize it - is fairly linear, so one can estimate the completion time relatively well. In more complicated cases - e.g. Win95 installer doing things like hardware detection - those estimates were often wildly off.
Hard drives and networks are both so fast that you rarely are waiting for data to stream, you're just waiting for the stream to begin
I'm sure I could have made the progress bar move more smoothly, but it would have required restructuring my entire program. (It probably needed it, but for a simple script I ran occasionally, not worth it.)
Back in The Day, Mac OS X Tiger just faked it by measuring how long it took to boot to LoginWindow, writing that number of seconds to a file, and displaying the next boot's progress indicator as a percentage of that time.
Power words: `/usr/libexec/WaitingForLoginWindow` and `/var/db/loginwindow.boottime`
- https://daringfireball.net/misc/2005/04/tiger_details#waitin...
- https://web.archive.org/web/20060427030025/http://www.macosx...
- https://arstechnica.com/gadgets/2005/05/397/
- https://web.archive.org/web/20060506092123/http://www.macosx...
- Observable fact: Taking the computer from a fully-powered-off state to a usable state happens when the user presses the power button, involves loading the operating system from slower disk to faster memory, and takes some amount of time to complete.
- Observable fact: `WaitForLoginWindow` is the first “Aqua” UI element one sees after powering their computer on, the first visible thing that's drawn by the operating system that's being loaded instead of drawn by OpenFirmware or by BootX.
- Observable fact: Aqua has an `NSTabView` control used for grouping panes of related UI elements. In original 2001 Aqua, NSTabView looked like something that “stuck out” toward the user from a window. In Panther (2003) it was redesigned into something that looks “sunken in” to visually allow for nesting multiple layers of grouping.
- Observable fact: Panther-style NSTabViews get progressively darker as they are nested, indicating controls which are “more related”. See here for an example of four layers of nested NSTabView: https://cdn.arstechnica.net/wp-content/uploads/archive/mac-o...
- Observable fact: Any OS X user will be familiar with `NSProgressIndicator` as the UI control they see when they tell their computer to do something and some aspect of the computer itself (like disk or network bandwidth) is the limiting factor causing their action to be non-instantaneous.
- Observable fact: The progress indicator is the only part of `WaitForLoginWindow` that moves, and it's grouped with a text label reading “Starting Mac OS X…” in what looks to be a `noTabsBezelBorder`-styled `NSTabView` even though the grouping-box and even the “Starting” text are actually just a static image that the Wait window draws and overlays the progress indicator on, not really Aqua controls because the UI frameworks are still being loaded.
- Illusion magic: Look at the Tiger boot screen, compare it to the previous link, and notice how the fake grouping pane is as dark as what four nested levels of real NSTabViews would be: https://cdn.arstechnica.net/wp-content/uploads/archive/journ...
The coloration makes your own brain tell you that the progress indicator and the “Starting Mac OS X” text are as related as any two UI elements could possibly be, more related than any other pair of UI elements you will ever encounter in Mac OS X, because no reasonable application designer would ever nest four layers of NSTabView.
Since the progress indicator is so strongly visually grouped with the “Starting Mac OS X” text, and every Macintosh going back to 1984 has displayed some form of “Welcome to Macintosh” text while the OS is loading from disk, and progress indicators are the UI element for long-duration user-initiated work, and the computer was fully off so pushing the power button was the only thing the user did, and the wording of “Starting” means it isn't fully “Started”, then the progress indicator must represent how much of the OS is loaded in the current session, right?
In the Before Times your UNIX would have a progress bar that was basically the same spinning icon: overwrite - \ | / - \ | / in the same character location in quick succession.
It was as useless then as the spinning sunburst is now.
The linear indicator provides two bits of information: that something is happening, and that progress is being made towards completion. The sunburst only provides one.
https://bjk5.com/post/44698559168/breaking-down-amazons-mega...
Reminds me of the first time I ever used classic Macintosh System OS, and how you have to hold the mouse button down to keep menus open. It doesn't take much to throw everything off.
https://bjk5.com/post/44698559168/breaking-down-amazons-mega...