The reason why an epoch in the past was picked, I think, is that the designers wanted date stamps to represent all dates in common use, e.g. birth dates (of course, that did not cover >80-year-olds in 1984).
Pretty sure that the reason to pick 1904 in particular was to simplify leap year calculation to !(year & 3). 1900 didn't have a leap day, and by picking 1904, all leap years within the range of the time stamp had one.
After explaining how this one affects computers over 2 decades old, that this doesn't affect the system but _only_ setting of the clock, and how a utility already provides a workaround, I had a moment of giddiness when I read that we're going to walk through patching every version of the 20-40 year old OS.
Does anyone else remember the weirdness with dates in Excel files? On Windows, they used 1900 as the epoch, and on the mac they used 1904 (like the Mac itself), so if you got a spreadsheet from someone on a windows machine, dates would sometimes shift by 4 years.
Excel also has a deliberate bug where it thinks 1900 is a leap year because they wanted compatibility with Lotus 123, where the bug was actually a bug! [0]
Reading Joel’s post again, I suspect Bill’s style of review (having read the spec, made notes, and having a “F” counter for screwups) lends credence to the idea that he would have done exactly as Joel did and sought out Fries or some other senior Excel person if he didn’t get a satisfactory answer.
As Joel laments, you can’t bullshit a programmer, and Gates was (underneath it all) a programmer.
I've got a PowerBook G3 Wallstreet (the last machine that couldn't be updated to OS X) that still runs a couple hours off its battery and looks very much like the screenshots shown in this article. I've also got the original boxed game of Myst which is the main reason I kept it.
I've done far too much research into this lately, but I believe that Wallstreet was officially supported by OS X (although only up to 10.2).
The PowerBook G3 Kanga, however, cannot without some hacking; it's a frankenstein model which was only available for about four months. It shoehorned a super fast (at the time) 250mhz G3 CPU into the old 3400c form factor and looks like it's from another era in comparison to the sleek Wallstreet.
I'll have to get it out (might end up wasting some time on Myst tonight!) ... I'm remembering that some Wallstreets had Ethernet ports and others didn't and that those without couldn't be updated. Of course, that machine wasn't terribly speedy with OS 9 on it so I'm not sure it's worth the upgrade. Still, it was an amazing piece of hardware which still runs almost 25 years later.
About the housekeeping overhead in PowerPC machine code generated by the C compiler:
> This, combined with the (correct) practice of modularizing everything into small subroutines that don't individually do much, produces very long programs dominated by instructions that don't do anything we care about.
I wonder how much of this was due to the RISC nature of the PowerPC instruction set and how much was the relative inefficiency of compiler code generation. For a fairly recent ISA like RISC-V or ARM64, with a modern compiler like clang, are things now better or worse? I imagine link-time optimization helps some.
Both, probably. The CISC certainly would have made shorter, and since it was hand-written it would probably do much better than the compilers of the day.
The original Xbox has a similar problem coming up soon, I believe the clock only goes up to 2022… I can't remember the exact year and it's become impossible to Google thanks to the clock battery issues.
Pretty sure that the reason to pick 1904 in particular was to simplify leap year calculation to !(year & 3). 1900 didn't have a leap day, and by picking 1904, all leap years within the range of the time stamp had one.