Multifinder could be thought of as a spiritual successor to Switcher but it shared no code with Switcher and took a different approach to solving the problem of allowing a user to interact with multiple running applications.
Erich Ringewald, the author of Multifinder, and Andy weren’t done with this problem at, or with, Apple. I got to work both of them, Erich at Be and Andy at General Magic/Eazel.
For perspective, that's >$320k today. For 'switching apps'. It's always kinda crazy to look back and realize how incredibly minute and small programs were back them. Like 'spellcheck' being a project you'd assign half a dozen programmers to or Knuth would write almost a book about.
My recommendation is to have ChatGPT write code to solve calculations like this, and have it put the data it fetches as constants in said code.
AI is not a calculator, but it'll try to fake it - and above say, three or four digits, there's not enough training data to guarantee accuracy enough of the time. Labs probably train models on massive amounts of arithmetic, but still. It's not the right tool for the job.
Now, ChatGPT won't solve problems with code unless asked, but if you ask, it has its own full computer and can write code for it!
AI is powerful because it can use tools and can build tools for you to use or for it to use.
> AI is a powerful tool because it can use tools and can also build tools for you to use or for it to use. But it is not a calculator.
It’s both, and a million other things. Of course AI can do complex calculations today. I can’t even remember the last time I saw an AI make a mistake on something like that.
The problem is that people’s mental image of what AI can do always has an inertia of 6-12 months. Like you can still see people talking about how image generation models supposedly can’t draw hands, even though today we have 2K AI-generated video with perfect hands.
I've seen AI-generated videos posted two weeks ago with six fingers on someone's hand. I don't know what model they used, but it still happens. Less often than it used to, granted, but it still happens.
Early on, pretty much as soon as it was able to run arbitrary Python code it created (note: it can use other languages now too! Ask it!), I instructed it to NEVER guess at any question that is best served by computing it or counting it, and to always write a small program to do the computation or counting instead.
So I never actually saw the "strawberry" problem since it always just wrote a program to count the "r"'s!
I'm pretty sure were it not for Knuth and other programmers solving spellcheck and other problems, big and small, AI wouldn't be able to solve programming tasks today.
Reading these types of of stories growing up was always humbling.
I started at Microsoft on the Windows Mobile compiler team, having never taken a compiler class in college. I was surrounded by people who had already done great things, and by the time my career started the glory days of doing real software engineering was already waning.
I got to work with a few of the greats during my time as Microsoft, and I wish I'd taken up an in offer I had to meet Raymond Chen.
Sitting next to people of old school caliber and watching them work is, to use the proper word yet again, humbling as hell.
Fuck your design patterns. These people can debug starting at assembly, and sometimes when that fails they'll debug by pulling out an oscilloscope. Then when that is done they'll build design patterns on top of the foundations they laid themselves.
Yes, it was humbling and one reason was many of them had developed their skills in tandem with the growing complexity of the hardware and software. They had an amazing advantage of being there when it was all happening and being built up around them.
As for design patterns, I would never accuse Andy of using them. He was a coding wild man and super impressive, but his real skill was coming up with cool ideas and willing them into existence. Working with him, I always felt he was going through the jungle making paths with a machete and the rest of us had to actually build the roads behind him.
You can still get this experience by trying to do some things the old ways. One that's come up to me recently: program an ATMega328 (the famous Arduino chip) in assembly to output a waveform with tight timing requirements.
That is, as opposed to using a timer interrupt or a delay routine, arrange instructions so that the processor naturally gets to the instruction to change the output pin at the correct time, within the acceptable tolerance. These processors have no caches or predictors so instruction timing is reliable.
I think people are doing it these days on the Raspberry Pico chips, but any "old school" microcontroller will do.
Now I'm curious, was this video an emulation on top of a much newer system? Because the first seconds show multiple windows in non-full screen besides each other.
While they could argue it was derivative code, they would not own rights to the new code, only could argue that they wanted to stop its distribution without license.
And validity of any "we own everything about you" contracts gets kinda iffy if you're not paying the worker who went on "leave of absence"
Meanwhile, Amiga 1000 Workbench (also released in 1985) not only had application switching, even when full screen, they had desktop screen switching where each screen can be different resolution / colour depth.
Yes, and absolutely ghastly screen artifacting when doing so which would have had Steve Jobs smashing the screen with a chair.
(my favourite Amiga game was Obliterator, but I hated the screen appearances one had to go through to get it running if one had been doing some sort of graphical work)
Also, only pixel fonts --- but the Apple Mac at that time was outsourcing its own vector font usage to the much faster processor in the Apple LaserWriter.
Lots of TV stations using Amigas for screen graphics though.
Open up Multiplan, and fire up some spreadsheet manifestation.
Then, launch Cricket Graph as the second app.
Go back to Multiplan, click on a column, Cmd-C to copy it, switch back to Cricket Graph and hit paste.
Voila! A new chart!
Now fire up MacDraw as a third app.
Back in Cricket Graph, Cmd-C the chart.
Switch to MacDraw, and Paste. Now the chart is in MacDraw. Not only is it in MacDraw, you can ungroup it and play with the primitives (the wedges of a pie, the bars of a chart, the legend as text and filled in boxes).
The magic here was that none of these applications were cooperating. It's not that they knew about each other. It was just the dumb luck of supporting common formats on the clipboard. Lines of numbers from Multiplan. A Quickdraw PICT resource from Cricket Graph.
It’s just hard today to appreciate how extraordinary that kind of painless integration was. None of these applications knew about Switcher, they all came out before it (mind, stuff was moving REALLY FAST back then).
And, how, much, much later, I tried to Copy and Paste a diagram from Visio into PowerPoint -- and it didn't work. That was a dark time.
It was pretty magical to instantly flip between the different apps.
In many ways multi-finder view later felt like a regression vs the full screen takeover of Switcher. Even today I appreciate Spaces and the ability to full screen apps and flip directly into an app taking over the whole screen, a small echo of that original magic.
I really like the contrast between the strategic aims, and negotiating levers, of Gates & Jobs in this story.
Both want the same software to be in the Mac world for its 2nd-order benefits; neither needs to monopolize it.
Both want a good deal, which Gates pursues by a sort of "labor-theory-of-value" and Jobs by assertion of Apple's proprietary rights.
(It does sound to me like Hertzfeld could've gotten more with the right ask, but getting to tackle the problem, and see his solution out in the world, was of even higher value to him.)
bix6 | 19 hours ago
flomo | 17 hours ago
(The article doesn't mention this later became "Multifinder" and included with System 6 iirc.)
diskzero | 16 hours ago
Erich Ringewald, the author of Multifinder, and Andy weren’t done with this problem at, or with, Apple. I got to work both of them, Erich at Be and Andy at General Magic/Eazel.
gwern | 19 hours ago
thechairman12 | 19 hours ago
rjrjrjrj | 18 hours ago
At least that’s what ChatGPT says
cadamsdotcom | 18 hours ago
AI is not a calculator, but it'll try to fake it - and above say, three or four digits, there's not enough training data to guarantee accuracy enough of the time. Labs probably train models on massive amounts of arithmetic, but still. It's not the right tool for the job.
Now, ChatGPT won't solve problems with code unless asked, but if you ask, it has its own full computer and can write code for it!
AI is powerful because it can use tools and can build tools for you to use or for it to use.
But it is not a calculator.
p-e-w | 18 hours ago
It’s both, and a million other things. Of course AI can do complex calculations today. I can’t even remember the last time I saw an AI make a mistake on something like that.
The problem is that people’s mental image of what AI can do always has an inertia of 6-12 months. Like you can still see people talking about how image generation models supposedly can’t draw hands, even though today we have 2K AI-generated video with perfect hands.
cadamsdotcom | 17 hours ago
Quick!
What's the next top-k tokens after each of these?
"999 + 999 = "
"999.0 + 999.0 = "
"999 * 2 = "
"999 * (3-2) = "
Mathematically identical. But as a token sequence, not so much.
Modern models will of course have very similar next-token distributions across all of these. But not identical!
Now add a few digits and you quickly land in territory whose synthetic training data is much sparser.
Code has determinism and runs in milliseconds. It's the better tool for the job.
speerer | 16 hours ago
jmmcd | 12 hours ago
(BTW the last one was meant to be (3-1).)
rmunn | 17 hours ago
cadamsdotcom | 17 hours ago
Creator did you a favor making their slop so detectable ;)
sampullman | 17 hours ago
cowlevel | 14 hours ago
pmarreck | 8 hours ago
So I never actually saw the "strawberry" problem since it always just wrote a program to count the "r"'s!
jakelazaroff | 19 hours ago
simondotau | 19 hours ago
WillAdams | 11 hours ago
https://www.folklore.org/Negative_2000_Lines_Of_Code.html
kps | 9 hours ago
anticodon | 14 hours ago
polarsanel | 13 hours ago
chr15m | 12 hours ago
These are actually still the best programs.
tomhow | 19 hours ago
Switcher (2004) - https://news.ycombinator.com/item?id=32414661 - Aug 2022 (30 comments)
"Don't argue with me. $100,000 is fair, and you know it." - https://news.ycombinator.com/item?id=1637862 - Aug 2010 (110 comments)
Mac OS gets multi-tasking - https://news.ycombinator.com/item?id=1319308 - May 2010 (7 comments)
defrost | 19 hours ago
As a 1980s developer I wonder if that may have been a reference to Borland's Sidekick launched in 1984.
* https://en.wikipedia.org/wiki/Borland_Sidekick
Or was Memory Shift an actual TSR swapper I simply never encountered?
CharlesW | 18 hours ago
defrost | 18 hours ago
joshu | 18 hours ago
com2kid | 18 hours ago
I started at Microsoft on the Windows Mobile compiler team, having never taken a compiler class in college. I was surrounded by people who had already done great things, and by the time my career started the glory days of doing real software engineering was already waning.
I got to work with a few of the greats during my time as Microsoft, and I wish I'd taken up an in offer I had to meet Raymond Chen.
Sitting next to people of old school caliber and watching them work is, to use the proper word yet again, humbling as hell.
Fuck your design patterns. These people can debug starting at assembly, and sometimes when that fails they'll debug by pulling out an oscilloscope. Then when that is done they'll build design patterns on top of the foundations they laid themselves.
diskzero | 16 hours ago
As for design patterns, I would never accuse Andy of using them. He was a coding wild man and super impressive, but his real skill was coming up with cool ideas and willing them into existence. Working with him, I always felt he was going through the jungle making paths with a machete and the rest of us had to actually build the roads behind him.
cowlevel | 14 hours ago
That is, as opposed to using a timer interrupt or a delay routine, arrange instructions so that the processor naturally gets to the instruction to change the output pin at the correct time, within the acceptable tolerance. These processors have no caches or predictors so instruction timing is reliable.
I think people are doing it these days on the Raspberry Pico chips, but any "old school" microcontroller will do.
PStamatiou | 17 hours ago
O_H_E | 6 hours ago
Now I'm curious, was this video an emulation on top of a much newer system? Because the first seconds show multiple windows in non-full screen besides each other.
floren | 6 hours ago
saagarjha | 13 hours ago
p_l | 12 hours ago
And validity of any "we own everything about you" contracts gets kinda iffy if you're not paying the worker who went on "leave of absence"
smallstepforman | 12 hours ago
https://www.youtube.com/watch?v=rDDndh6OPK4
The key combo was Amiga-M to send window to back of stack, and cycle windows.
BTW = Amiga had preemptive multitasking
But the world decided to ignore the Amiga and focus on MsDOS and black and white MacOS.
WillAdams | 11 hours ago
(my favourite Amiga game was Obliterator, but I hated the screen appearances one had to go through to get it running if one had been doing some sort of graphical work)
Also, only pixel fonts --- but the Apple Mac at that time was outsourcing its own vector font usage to the much faster processor in the Apple LaserWriter.
Lots of TV stations using Amigas for screen graphics though.
fifticon | 10 hours ago
pmarreck | 8 hours ago
I did not realize it was inspired by a DOS app, though. It was usually the other way around...
whartung | 8 hours ago
Open up Multiplan, and fire up some spreadsheet manifestation.
Then, launch Cricket Graph as the second app.
Go back to Multiplan, click on a column, Cmd-C to copy it, switch back to Cricket Graph and hit paste.
Voila! A new chart!
Now fire up MacDraw as a third app.
Back in Cricket Graph, Cmd-C the chart.
Switch to MacDraw, and Paste. Now the chart is in MacDraw. Not only is it in MacDraw, you can ungroup it and play with the primitives (the wedges of a pie, the bars of a chart, the legend as text and filled in boxes).
The magic here was that none of these applications were cooperating. It's not that they knew about each other. It was just the dumb luck of supporting common formats on the clipboard. Lines of numbers from Multiplan. A Quickdraw PICT resource from Cricket Graph.
It’s just hard today to appreciate how extraordinary that kind of painless integration was. None of these applications knew about Switcher, they all came out before it (mind, stuff was moving REALLY FAST back then).
And, how, much, much later, I tried to Copy and Paste a diagram from Visio into PowerPoint -- and it didn't work. That was a dark time.
mrkstu | 3 hours ago
It was pretty magical to instantly flip between the different apps.
In many ways multi-finder view later felt like a regression vs the full screen takeover of Switcher. Even today I appreciate Spaces and the ability to full screen apps and flip directly into an app taking over the whole screen, a small echo of that original magic.
gojomo | 3 hours ago
Both want the same software to be in the Mac world for its 2nd-order benefits; neither needs to monopolize it.
Both want a good deal, which Gates pursues by a sort of "labor-theory-of-value" and Jobs by assertion of Apple's proprietary rights.
(It does sound to me like Hertzfeld could've gotten more with the right ask, but getting to tackle the problem, and see his solution out in the world, was of even higher value to him.)