I'm glad you called out Duane Campbell as having both a big brain and a big heart. My experience was he wasn't alone. I'm thinking of you, Jon DeVaan. There was a humanity that pervaded many early 'Office folks' that rubbed off on even more. Kind, patient, and whip-smart. Not a bad combination.
This was in full display at an Excel party (Excel 30th I think) a couple years ago. Lots of amazing camaraderie and genuine appreciation of others' accomplishments as well.
Windows 3.0 was a huge breakthrough for app developers. Windows 2 was hamstrung by the 1mb RAM limit of MS-DOS. There were memory expansion kits available like the Intel AboveBoard(tm) (a little marketing of complexity for you, as "AboveBoard" meant 4 64k segments of memory above the 640k limit and IO commands that mapped up to 4mb of RAM into those 4 segments). With Windows 3.0 there was ample memory, all addressed using the 16 bit segment and index registers of the Intel architecture. It gave a lot of space for apps to grow in capabilities in theory up to 16mb. PCs could start to deliver on their promise of "real" apps and running more than one app at a time (although that didn't really happen until Windows 95). The biggest problem Excel has was it had a few algorithms that did "peek ahead reads" that worked fine in real mode but in protected mode all of those speculative reads became memory protection faults. Those changes were the meat of Excel 2.1c. ChrisP (Chris Peters) also added the 3D look for the row and column headers.
There was an infamous company meeting presentation by Jeff Raikes during this period that relates to the, "What Intel gives, Microsoft takes away." The movie Top Gun was just released and mocking the movie poster, Jeff said, "I feel the need for speed!" Then he went on to declare that our strategy was, "cycle sucking software." As a developer I never appreciated that presentation.
I recall that under Windows 2 and/or 3 there were special undocumented Windows APIs especially for Excel for memory management. We tried to use them but to the best of my recollection your app had to be called Excel.exe for it to work so we could never use them.
Yeah definitely not true. I spent a ton of time on all the Windows APIs (in the next chapter). The root of this urban legend ended up being “app hacks” or Windows Compatibility Flags. You could actually see in a Windows installation the names of applications and calls to certain (documented) functions but only for those apps. Sometimes to maintain compatibility an running old app would trigger old obsolete code which had the illusion of an incompatible API. Crazy times. And even a book “Undocumented Windows” :-)
In those days, Excel's memory management demands on the system were extremely simple. I remember discussions between marko and chrisp about how to convert Excel's data structures from the flat memory model of the Macintosh 68000 to the segmented memory on the Intel chips. The segmented architectures meant every system allocation had to be limited to 64K in size. (My cloudy memory tells me we actually limited to 16K). Once that architectural change was done, the only thing Excel needed from Windows was a bunch of 16K GlobalAllocs. Couldn't be simpler.
I think the 16k limit had to do with compatibility with the Intel AboveBoard RAM extender. Protected mode Windows made that obsolete and then a block could be 64k.
Definitely not true. Many years later I was tasked with removing calls to “undocumented” API’s from Excel. While doing so I grabbed my Windows 1 API guide from my shelf and looked up each supposed undocumented API and they were in there. It could be that by Windows 3 or so that they’d been removed but they were there originally. I think they had just been deprecated.
It was one of the software developers on a different team than the one I managed that showed me this. I wish I had taken a picture of his screen back then.
When you talk about Systems I remember early days visiting Microsoft and hearing “DOS isn’t done until Lotus won’t run”. And I noticed after hearing that, how future MS DOS releases would keep breaking Lotus 123. Funny to think about now.
This has been a false meme for 30 years. 1-2-3 was the largest DOS app by far; it was the reason people owned IBM PCs. The line was "DOS isn't done until Lotus runs", because any change that broke 1-2-3 would be catastrophic. Then, having Excel across the pond, the opposite version was offered up as an obvious joke. Sorry you didn't get it.
I’ve heard you mention Apps vs Systems and how each group was very different (Systems having the experienced executives). Jeff Raikes, Brad Silverberg etc would fall into the experienced executives I’m guessing. Was there always a division then where you could never feel an equal against the people in this group - and similarly ‘they’ (big generalisation) never valued the work of Apps? at least not for a while anyway
Once Maples arrived, Apps became highly organized. Having worked in marketing in both divisions, at the time I described Apps as a “bureaucracy” and systems as a “dictatorship”. Ballmer was a powerful force but the shifting dynamics of Windows and OS/2 make systems feel much more disorganized and chaotic. Also when your market share is > 90% it’s not easy to ascertain what the goals really are.
There’s an interesting duality here Steven where you paint the picture of things being really quite disorganised and a little ‘shoot from the hip’ inside Microsoft, however from the outside it was a behemoth that could do no wrong and was firing on all cylinders. Was this true and was this incongruence hard to handle?
I think world dominance will be in another few years. I tried to show the contemporary press to give a feel for how immature the process of making software was at the time.
The timing isn't exactly right but at roughly this time, Word for Windows was almost two years behind schedule. There were two database projects before Access that were canceled because they were too buggy. Excel 2.0 took an extensive death march to complete. Eventually we figured out an engineering system that worked. From the Excel 3 timeframe (only 11 days late) things in the apps division shipped much more regularly. I don't know if Steven is planning on writing about, "Zero Defects Programming," but that was what we called it. Each team had its own interpretation and implementation of this philosophy.
I vividly recall an all-apps meeting in 1989 where Mike Maples enlightened us in an amazingly creative way. At the time all three versions of Word (PC, Mac, Windows) were super late and everyone felt really bad and cynical about it. MM figured out and explained that the amount of *new* code in PC Word 5 (or whatever version it was, I forget) was greater in size than the entire size of the code in PC Word 1.0! And then he concluded “we’re not bad coders, we’re just really bad schedulers”. And managed to prop the entire division up!
Thanks Jon, so interesting. It’s fascinating to see all the internal major challenges yet as I mentioned earlier knowing how Microsoft becomes this juggernaut and uber successful - was the momentum was unstoppable. Also interesting how the memos (Steven has marked ‘Zero Defects’ in the contents) had such an impact at Microsoft. All companies have internal issues/challenges, but I would think it’s rare these days for an internal memo to rally the troops that much to bring about org-wide change. In the financial services company I am part of, we have leadership updates but even addressing serious backend problems it would rarely engage even a significant majority of the staff - more just read by a fraction but not actioned.
My interpretation of IQ was about three things: (1) general breadth of knowledge brought to a problem space (like NathanM), (2) engineering robust architectures that were extensible and flexible, and (3) invention or use of new technologies. These are all double-edged swords for sure. It is in contrast to a “shipping” mindset which I will get more into as well (and is also more first person). I don’t know if growth mindset is something I could assign qualities too like I could IQ. It feels like a subset of IQ to me.
I'm glad you called out Duane Campbell as having both a big brain and a big heart. My experience was he wasn't alone. I'm thinking of you, Jon DeVaan. There was a humanity that pervaded many early 'Office folks' that rubbed off on even more. Kind, patient, and whip-smart. Not a bad combination.
Thank you. I tried to bring out many of our role models. Stay tuned. 🙏
This was in full display at an Excel party (Excel 30th I think) a couple years ago. Lots of amazing camaraderie and genuine appreciation of others' accomplishments as well.
Windows 3.0 was a huge breakthrough for app developers. Windows 2 was hamstrung by the 1mb RAM limit of MS-DOS. There were memory expansion kits available like the Intel AboveBoard(tm) (a little marketing of complexity for you, as "AboveBoard" meant 4 64k segments of memory above the 640k limit and IO commands that mapped up to 4mb of RAM into those 4 segments). With Windows 3.0 there was ample memory, all addressed using the 16 bit segment and index registers of the Intel architecture. It gave a lot of space for apps to grow in capabilities in theory up to 16mb. PCs could start to deliver on their promise of "real" apps and running more than one app at a time (although that didn't really happen until Windows 95). The biggest problem Excel has was it had a few algorithms that did "peek ahead reads" that worked fine in real mode but in protected mode all of those speculative reads became memory protection faults. Those changes were the meat of Excel 2.1c. ChrisP (Chris Peters) also added the 3D look for the row and column headers.
There was an infamous company meeting presentation by Jeff Raikes during this period that relates to the, "What Intel gives, Microsoft takes away." The movie Top Gun was just released and mocking the movie poster, Jeff said, "I feel the need for speed!" Then he went on to declare that our strategy was, "cycle sucking software." As a developer I never appreciated that presentation.
“Cycle sucking software” ... I remember that well!! The phrase lived for years after that meeting.
I hated that expression and that presentation.
I don't know if your email analytics are telling you this, but I for one am devouring every post
🙏 Thank you! It is great to hear that.
I recall that under Windows 2 and/or 3 there were special undocumented Windows APIs especially for Excel for memory management. We tried to use them but to the best of my recollection your app had to be called Excel.exe for it to work so we could never use them.
Sorry, that is not true.
Yeah definitely not true. I spent a ton of time on all the Windows APIs (in the next chapter). The root of this urban legend ended up being “app hacks” or Windows Compatibility Flags. You could actually see in a Windows installation the names of applications and calls to certain (documented) functions but only for those apps. Sometimes to maintain compatibility an running old app would trigger old obsolete code which had the illusion of an incompatible API. Crazy times. And even a book “Undocumented Windows” :-)
In those days, Excel's memory management demands on the system were extremely simple. I remember discussions between marko and chrisp about how to convert Excel's data structures from the flat memory model of the Macintosh 68000 to the segmented memory on the Intel chips. The segmented architectures meant every system allocation had to be limited to 64K in size. (My cloudy memory tells me we actually limited to 16K). Once that architectural change was done, the only thing Excel needed from Windows was a bunch of 16K GlobalAllocs. Couldn't be simpler.
I think the 16k limit had to do with compatibility with the Intel AboveBoard RAM extender. Protected mode Windows made that obsolete and then a block could be 64k.
Definitely not true. Many years later I was tasked with removing calls to “undocumented” API’s from Excel. While doing so I grabbed my Windows 1 API guide from my shelf and looked up each supposed undocumented API and they were in there. It could be that by Windows 3 or so that they’d been removed but they were there originally. I think they had just been deprecated.
It was one of the software developers on a different team than the one I managed that showed me this. I wish I had taken a picture of his screen back then.
When you talk about Systems I remember early days visiting Microsoft and hearing “DOS isn’t done until Lotus won’t run”. And I noticed after hearing that, how future MS DOS releases would keep breaking Lotus 123. Funny to think about now.
This has been a false meme for 30 years. 1-2-3 was the largest DOS app by far; it was the reason people owned IBM PCs. The line was "DOS isn't done until Lotus runs", because any change that broke 1-2-3 would be catastrophic. Then, having Excel across the pond, the opposite version was offered up as an obvious joke. Sorry you didn't get it.
My apologies I only wrote about this since I though the statue of limitations had expired a long time ago.
Ha, well everyone is a bit sensitive on this one :-)
I’ve heard you mention Apps vs Systems and how each group was very different (Systems having the experienced executives). Jeff Raikes, Brad Silverberg etc would fall into the experienced executives I’m guessing. Was there always a division then where you could never feel an equal against the people in this group - and similarly ‘they’ (big generalisation) never valued the work of Apps? at least not for a while anyway
Once Maples arrived, Apps became highly organized. Having worked in marketing in both divisions, at the time I described Apps as a “bureaucracy” and systems as a “dictatorship”. Ballmer was a powerful force but the shifting dynamics of Windows and OS/2 make systems feel much more disorganized and chaotic. Also when your market share is > 90% it’s not easy to ascertain what the goals really are.
Mike was incredibly important to the success of Apps and of Microsoft. In my own timeline I did not yet meet him but that is coming!
There’s an interesting duality here Steven where you paint the picture of things being really quite disorganised and a little ‘shoot from the hip’ inside Microsoft, however from the outside it was a behemoth that could do no wrong and was firing on all cylinders. Was this true and was this incongruence hard to handle?
I think world dominance will be in another few years. I tried to show the contemporary press to give a feel for how immature the process of making software was at the time.
The timing isn't exactly right but at roughly this time, Word for Windows was almost two years behind schedule. There were two database projects before Access that were canceled because they were too buggy. Excel 2.0 took an extensive death march to complete. Eventually we figured out an engineering system that worked. From the Excel 3 timeframe (only 11 days late) things in the apps division shipped much more regularly. I don't know if Steven is planning on writing about, "Zero Defects Programming," but that was what we called it. Each team had its own interpretation and implementation of this philosophy.
Stay tuned!
I vividly recall an all-apps meeting in 1989 where Mike Maples enlightened us in an amazingly creative way. At the time all three versions of Word (PC, Mac, Windows) were super late and everyone felt really bad and cynical about it. MM figured out and explained that the amount of *new* code in PC Word 5 (or whatever version it was, I forget) was greater in size than the entire size of the code in PC Word 1.0! And then he concluded “we’re not bad coders, we’re just really bad schedulers”. And managed to prop the entire division up!
Thanks Jon, so interesting. It’s fascinating to see all the internal major challenges yet as I mentioned earlier knowing how Microsoft becomes this juggernaut and uber successful - was the momentum was unstoppable. Also interesting how the memos (Steven has marked ‘Zero Defects’ in the contents) had such an impact at Microsoft. All companies have internal issues/challenges, but I would think it’s rare these days for an internal memo to rally the troops that much to bring about org-wide change. In the financial services company I am part of, we have leadership updates but even addressing serious backend problems it would rarely engage even a significant majority of the staff - more just read by a fraction but not actioned.
Do you have a perspective on the “IQ as currency” model vs current-day MSFTs emphasis on Growth Mindset?
My interpretation of IQ was about three things: (1) general breadth of knowledge brought to a problem space (like NathanM), (2) engineering robust architectures that were extensible and flexible, and (3) invention or use of new technologies. These are all double-edged swords for sure. It is in contrast to a “shipping” mindset which I will get more into as well (and is also more first person). I don’t know if growth mindset is something I could assign qualities too like I could IQ. It feels like a subset of IQ to me.