33 Comments
Feb 24, 2021Liked by Steven Sinofsky

Design folks at Microsoft (all six or 10 of us) were so jealous of the gray scales available on NeXT. Sure there was no color, but the first toolbar icons at Microsoft were all gray scale anyway. But we only had black, white, a light gray, and a dark gray to work with. There was some religion around not using color in icons that ChrisP challenged when he ran Word. Not that that you could do much with the remaining 12 colors in the Windows palette anyway! We did our best.

The stacked menu bar on the left of the screen was also attractive to me. It read easier to me being left justified. I did endless mocks and VB prototypes of the ubiquitous "File, Edit, View, ..." in stacked form a la NeXT. I guess the Start menu kind of ended up there.

Tandy kept a NeXT running in a UI research lab in Building 17 and I would sneak in there to play with the NeXT. The application I remember being most impressive was Mathematica. Wolfram was committed to NeXT and their early work showed. http://www.kevra.org/TheBestOfNext/ThirdPartyProducts/VerticalMarkets/HigherEducation/HigherEducationSW/MathematicaForEducation/files/page595_2.pdf

Coming from a UNIX world working on SGI workstations at Wavefront, a love for svelte UI, and sophisticated industrial design, I was in love with NeXT.

Expand full comment
author

I might need to up my game as the toolbar color story makes an appearance later :)

Expand full comment
Feb 24, 2021Liked by Steven Sinofsky

It’s true that the original 1988 NeXTCube did indeed retail for $10,000. However the sleek 1990 NeXTStation pizza box you refer to in this post started at $4,999. Still expensive, but not crazy and very competitive with Sun workstations.

Expand full comment
author

Yes!

Expand full comment

I sold my newish Fiat Spyder to buy my cube. For $10K you got the printer as well, as a developer. Thank you, or your predecessor, more likely

Expand full comment
Feb 24, 2021Liked by Steven Sinofsky

I love the way you're referrring to your colleagues with their email names (the story with Jeff/JeffH is really funny) but I'm starting to get lost with the list growing. For example, I've inferred that CharlesS was Charles Simonyi but I didn't read who was him before (or I didn't pay attention back when you first referred to him if you did).

Anyway, I'm enyoing this so much. I started my BS in Computer Science in '91 in Spain and I don't remember ever have been aware of what Jobs was doing at NeXT at that time. In the uni the available computers were VT-100 terminals, some really basic PCs with MS-DOS and, I remember well, a solitary Macintosh classic (yep, the 1984 one) that was kind of a testimony of the past and almost nobody used. MS-DOS and Windows dominated everything back then.

A few months later I bought an Amiga 500 and a year later an Amiga 1200 that from my point of view were far superior both in its operating system (that preemptive multitasking was something Amiga users were really proud of) and in gaming, which was something I did a lot at the time. It's great to confront those memories with all the details you're giving: most of us here were really ignorant and naive and didn't have a clue of what was really happening in the computing scene because access to that reality was scarce over here.

Expand full comment
author

Thank you for the kind note and feedback.

It’s like an Altman film or keeping track of the Marvel Comic Universe :-) I have gone back and forth on having and maintaining a list of “characters” but decided that the need to know the full name is no more than it was when we worked—we often didn’t know full names or especially how to pronounce them (we would call voice mail late at night to verify that!). The trouble comes in when you know a few people (directly or by reputation) and can’t remember as you’re reading what the alias was. It turns out that is exactly what it was like for us too! It is why my email name was often written StevenSi or sometimes people would do something like “BillGalleger” just to be safe.

Expand full comment
Feb 24, 2021Liked by Steven Sinofsky

You can't really call it _raiding_ the minibar. It's right there in your room!

Expand full comment
author

I’m going to stick with that because you almost got me fired!

Expand full comment
author

Fixed the garbled sentence. Sorry.

Expand full comment
Feb 25, 2021Liked by Steven Sinofsky

To me, the big realization of the AFX "app month" was we needed far better documentation than we had. We were all decently knowledgeable programmers, and most of us knew how to write a GUI app on Windows and OS|2, and a lot us knew the Mac, too. I think we all assumed we could just look at our own code and class definitions and figure out how all these new classes were supposed to work, because ... well ... how hard could it be?

But everything in AFX was different. And without decent documentation, it was hard to know if we were using some brilliant new class incorrectly, or if there was a bug, or if there was a fundamental design flaw that needed to be addressed immediately.

And we were also built on top of a full-feature operating system, and we were constrained by that native programming interface. And the more we diverged from the underlying system, the more overhead we added. So whenever we tried to fix some short-coming of Windows or OS|2 (and one of our goals was to "fix" Windows and OS2), the slower it got.

Expand full comment
author

This is so true. Thank you.

I went back and forth over how much to dive into the details. There’s so much technical detail later on. I might go back and add your full bulleted list (don’t fix windows, don’t cache state, call windows directly). The fix windows was such a huge problem and exactly what every application framework did back then. The same thing happens now with iOS and Android, or just any new abstraction layer for “portability” (fix AWS). I didn’t give this enough “treatment” and thank you so much for diving in!

Expand full comment
Feb 24, 2021Liked by Steven Sinofsky

What a great, enjoyable read. I feel like I’m there with you and the team. Interesting, when Jeff wasn’t seeing progress - did he have pressure from above / micromanage at all? You portray it as a bit of a lost cause, but I’m thinking in reality you guys were making headwinds albeit slowly? Otherwise I’m not sure why the project would have kept on? Keen to hear more!

Also, it feels like Microsoft had a lot of bets going on many that failed or fell flat at this time (plus the superstar products that were bringing in the money). So interested to learn how that idea generation / where to go next came from. No doubt BillG/SteveB and other execs drove a plan in some way.

Also, are you going to talk much about Jeff Raikes?

Thanks for the great chapter!

Expand full comment
author

Thank you for the enthusiasm. You’re racing ahead of the story. Hopefully as more stuff happens these will get filled in :-)

Expand full comment

Sounds good!

Expand full comment
Apr 22, 2021Liked by Steven Sinofsky

You skim over your Cornell recruiting trip without a date, but I can offer some color if it was in the 1988/89 time-frame. That’s when my now-wife Tonya (TonyaE at Microsoft later, though people often assumed TonyAE) and I were STOSes (Student Terminal Operations Supervisors) at Cornell, managing the public computing rooms. (And for those who don’t know, which will be everyone, Steven was Tonya’s dorm resident adviser in her freshman year of 1985/86.)

In 1988 or 1989 (can’t remember if it was fall or winter), Cornell got the first public room of NeXT Cubes, and Steve Jobs came to open the room and give a talk later at Bailey Hall. I honestly don’t remember much about the ribbon cutting ceremony, but Tonya says she was utterly awed by Jobs’s personal magnetism. And his polished Italian shoes—this is well before the jeans and turtleneck era, and he cut quite the figure. We didn’t know the term “Reality Distortion Field” at the time, but it was in full force that day.

The NeXTs were in the basement of Upson Hall, which was Cornell’s Computer Science building at the time. (Now it’s Gates Hall. Things change.) The STOS office was right across the hall from the Upson computer room, so although neither Tonya nor I was explicitly in charge of Upson and the student PTOPs (Part-Time Operators) who actually staffed the room, we were the next level of support if they had problems. And wow, did they have problems. The major issue was that the NeXT Cubes were cooled by drawing air from the front of the machine to the back, and the main opening on the front was the optical drive. As a result, all the dust in the environment (and there was a lot—Upson was an old, rather dirty building) went through the drive and caused all sorts of disc errors.

We didn’t love the NeXTs; they were tremendously cool, of course, but there was no real software for them, unlike the Macs. I think they were used purely for programming classes at Cornell. Sometimes we’d torture them by making the digital clock app as tall and thin as we could—remember that they used Display PostScript. Juvenile and probably pointless, but it felt good when they were making our lives miserable by breaking all the time.

Expand full comment
author

Thank you for sharing this Adam. Such a wonderful addition. I worked as a STOS in Upson as well. But alas there were only VT100 terminals back then--the Macs were in places like Uris and Founders and less "computer science" locations. The arrivial of the Mac in 1984 was quite similar. If you recall the STOS office had one door that faced the Upson terminal room. And then around the corner towards the vending machines there was another room with no windows. In the fall of 1983 there was a macintosh in that room, which was locked. The Mac was chained to a beam in the ceiling. It is incredible to think about.

Expand full comment
Apr 23, 2021Liked by Steven Sinofsky

By the time I was a STOS, our boss, Sharon Sledge, had taken over the office that was directly opposite the Upson computer room, and the STOSes were in the corner office by the vending machines. I don't think anyone ever told us that our office had held the pre-release Mac. :-) But I was familiar with the ceiling, since we discovered that we could go into it and over the walls into the other offices. We got in trouble for one April Fools prank enabled by that trick, though I don't think anyone ever squealed on how it was done. I believe it looks very different now since Upson was heavily renovated, though I haven't been down in that spot in a few years.

Expand full comment

I am curious - you waited until you got a pizza box, which came out in September of 1990? I would have thought that NeXT's team would have sent you cube loaners a year before that.

I saw that Edward Jung had one in his office in early 1991, and was amused a year later when my small company took delivery of the same loaner - had Edward's name and address still on the box.

Also, I developed deeply on that environment. You could direct allocation out of an NXZone when instantiating a class, but they did not yet have the refcount system for allocation, let alone GC.

Great to relive all this.

People often ask me how Apple was able to have their OS fit on a phone, but MSFT needed to create a separate mobile OS. "Are they sloppy programmers?" they would ask. I always pointed out that the NT code base was successful, and as such added features for more than a decade and got bigger because of that. Meanwhile, despite my love for it, no one was using or wanted either NeXTSTEP or OpenSTEP until the early 00s, rebranded as OS X. So APPL already had a smaller OS ready to deploy on these devices.

Expand full comment
author

I was just a kid and didn't do any ordering of anything. I did not meet Edward right away but it makes sense he would have had a machine early as he was on the forward looking Windows team. It was rare that NeXT would have seeded much hardware (just like Apple does not today). Microsoft Apps had not committed to building for NeXT, its hands were full with Mac, Win, OS/2, MS-DOS. Lotus, however, made a big commitment as the video shows.

From a programming language perspective there was a lot of tension between the Objective-C community and the biggest Objective-C paying customer, NeXT. There was a divergence of features in the "official" language and what was in NeXT, which itself added language features. GC was one of those divergent points.

Expand full comment

I'm not sure that's right. Tell you why - like you, I became fascinated with frameworks that provided portability across OSes, and put my hands on all of them. I bought the Stepstone OC compiler, convinced that most of our engine code would run on Windows, even though the market didn't quite care yet. When I got my NeXTCube, it still came with a Stepstone manual. With the next NS release, they had developed their own.

There was no GC in StepStone OC at the time (SS OC 4.0). The main thing that NeXT had done was to not require object = [[Class alloc] init]; you could just write object = [Class new]

Do you remember C++ Views? I liked it but thought C++ a poor language for the Software IC ideas in Brad Cox's class OOP book. I got pretty excited when a guy in Wisconsin created a product called "Objective-C Views": a literal port to Objective-C from scratch with no C++ in it (NeXT hadn't merged GNU C/C++ with OC yet, BTW).

We started to prototype AutoCAD in it, but Stepstone's compiler (like C++, a pre-processor) did not work with Metaware; like most massive PC apps around then - dBase, Paradox, AutoCAD, other CAD apps) MSC did not support the memory models we were all using, so we were stuck.

Too bad - Objective-C Views was a MacApp-like framework that was quite elegant, and developing was a charm; the Stepstone compiler worked well with MSC. You could do source-level debugging of Objective-C in CodeView, no problem.

BTW, recall that IBM's RT PC had a port of NeXTStep as an option. Steve had done a deal with them to port it. The main difference between that and the NeXT machine was that for the RT PC you used the Stepstone compiler. The code was completely portable. So there's another data point for you.

Keep this up. I'm writing about my own history and am happy to share how I got Autodesk to stop developing 15 versions for every Unix flavor, and just focus on Windows. If you saw AutoCAD code today, you'd say, "hey, that looks like a NeXTStep/Cocoa application written in MFC". That's no accident.

Expand full comment
author

The Autodesk Files make an appearance shortly. I don't recall the name or even if it was you, but we had an advisory council down in the bay area that I met with (about 5 members) and someone from Autodesk came to the dinners I hosted a few times a year, c 1991-1992.

Objective-C was a mess because of the divergence Next, whether on GC, ARC, lambda, IPC, and more. Things diverged fairly quickly (some of these were added before release of Next .9). Since all the languages were new and evolving and not yet standard, often features were fluidly described as in the language when they had not yet been implemented in all/any compilers. C++ was the same way then--basics like operator overloading, protected members, MI, and later templates and so on all had that characteristic.

Yet, Objective C became a commercial language because of Next. That divergence was never settled by Brad (RIP). Jobs was going to do what he always did with acquired technology, which is to make it his own.

Expand full comment

Oh also, I should say that I used to coach my co-developers who were ex-Windows developers like me to think of NXZone allocations as "GlobalAlloc()" calls that we were doing LocalAlloc() calls against. I never looked at NXZone implementations, but it acted like a HeapAlloc() so that's how I thought of it.

Expand full comment
May 14, 2021Liked by Steven Sinofsky

I love the story so far! I have found that you were writing this blog/book (interesting format, by the wat) on Twitter just a few days ago, and I am hooked up. I want to know more, hear more stories, more details. Up to now one of my favorite books was Showstopper (the history of DaveC and NT), but this is promising to be even more exciting.

Being born in the '80 I am too young to have lived the first stuff you are writing about first-hand, but I am so fascinated by Microsoft history and products that I can recognize most of the names and stories. My first real encounter with Windows was in 1992, when I got a new shiny PC for christmas, complete with Windows 3.1 and Word (2.0 IIRC). On the one hand I can't wait for you to arrive at Windows 95 and MFC, when I started to really get into programming, but on the other hand I want to continue reading about all the details you can possibly remember and write about!

I am lucky enough to have crossed paths with NeilK a couple of years ago, while working for Ferrari. Neil arrived in Ferrari around year 2000 and built for them version 1 of a vehicle dynamics tool, which I contributed modernizing in the last few years (version 18!). It still has some NK-named classes in it, and at its core is still an MFC application (complete with the occasional AFX function or macro!), even if new modules are now built in .NET and C#. It surely is a testament at the quality and value of his work.

I have only exchanged some emails and technical discussions with NeilK, but my older co-workers have plenty of interesting stories about him. Contrary to the beliefs of many, no one working at Ferrari but the F1 drivers actually own and drive a Ferrari, not even the CEO. The notable exception was NeilK, who used to park his among the rows of little fiats of the other employees.

Expand full comment
author

So wonderful that you added more about Neil. I was very lucky to have worked with him on a project and great to hear about how he used MFC early on! He had a fancy car on campus back then too. If I recall it was a convertible and had a crazy proximity alarm that used to emit a low frequency buzz (like a subwoofer) that got increasingly noticeable the closer you got!

Expand full comment
Mar 6, 2021Liked by Steven Sinofsky

This is an amazing read, thank you! For those of us who worked in organisations you led later in your career, it's awesome to read about your own early years.

What secret sauce, if any, did Next have that they were able to develop such a sophisticated full stack system in such a short amount of time? I imagine basing it on Mach saved a bunch of time, but that can't possibly be the entire reason?

Expand full comment
author

Starting from a brilliant team that had already done Lisa and Mac sounds like a good start to me :-) They were brilliant at what they did. No other way to say it. Sure starting from the likes of Mach, Objective C, Postscript, etc. helped but knowing what to pick and how to leverage it was brilliant.

Expand full comment
Feb 24, 2021Liked by Steven Sinofsky

I'm hoping you talk about Sequoia. Will you?

Expand full comment
author

I can’t remember what that was. I could never track code names, which is why we didn’t use any in Apps :-) (for the most part). I know I didn’t work on it though.

Expand full comment
author

Oh...it came after me in tools. I learned (tonight) it was the IDE before Visual Studio but after Visual C++.

Expand full comment
Feb 24, 2021Liked by Steven Sinofsky

Yeah, iirc it was supposed to be the ultimate gui dev tool, built on afx...

Expand full comment
author

I got lost at templates and MI. Not on my watch :-) A product is not a compiler test suite, I used to say.

Expand full comment