"I have this little saying that the successful people in the world are the people that do the things that the unsuccessful ones won't. So I've always been this person that, you know.. I will build the system, I will fix the bugs, I will fix other people's bugs, I will fix build breaks. It's all part of getting the job done."
When I was a kid, I enjoyed reading "Show Stopper! The Breakneck Race to Create Windows NT and the Next Generation at Microsoft" that chronicled his move from DEC to build NT. Jeff Atwood has a quick review of it at http://blog.codinghorror.com/showstopper/
Clearly however he's found success through this, I can only hope he sticks around long enough that I may selfishly brush shoulders and share some of his wisdom, I find there to be far too few who have managed to succeed to that level of notoriety/accomplishment while maintaining the principles he seems to uphold, and would love to learn more from those who have on how they approached surmounting their environment. (on that note, thanks for the showstopper link, the review was more than sufficient to motivate a longer read)
In most companies focus on quality is something you're precluded from having, and usually it's in the same category as security and maintainability (refactoring). I've been in various planning meetings where I wasn't able to convince the dev team manager to allow time for such things, because they stubbornly wouldn't accept that these things will pay dividends sooner than they believe. As a result in most code bases it's: prototype -> production -> patch, patch, patch. This is the norm but there are also places that know better and you don't have to convince anyone of the benefits.
If you want to learn more about the WinNT kernel and Windows operating system in general, go no further than have a look at the compatible implementation (open source):
(similar to what Linux is to Unix, ReactOS is to WinNT series)
Some of the technical analogies are a little weak, but all the quotes and anecdotes are great.
By mid 1993 Dave Cutler and his team released a multi-threaded, pre-emptive multi tasking pure 32 bit version of Windows that supported the Windows API and worked across three different hardware architectures (two of which were pure RISC processors). Apple, often lauded for being ahead of the curve, wouldn't release anything remotely matching those capabilities for eight years when OS X came out. When Apple developers were just starting to port over to Cocoa and Carbon, Windows had reached deep maturity and stability with NT and its successors (still labelled as NT versions intenrally) and basically all Windows software ran on it natively and had been doing so for years.
Windows isn't exactly my cup of tea but Microsoft was way, way ahead of the curve with NT. It was a superb achievement and I strongly recommend reading Show Stopper to get a sense of what the team sacrificed, went through, and achieved.
Engineers who choose to "trade up" to management will always baffle me.
They don't get work on cutting edge stuff like cutler.
There was a recent entry here in HN where a developer discussed his/her regret at not having moved to the managerial path. I am trying to find it but it's taking me some time.
It's a tough decision.
One of mt first jobs was running a VMS cluster...then went on to work with Windows. Enjoyed it all. Dave Cutler is brilliant.
Thanks Dave!
For the latter, I noticed a serious drop in quality starting with 3.51 SP2, which to the best of my ability on Google seems to have come out 9 months before NT 4.
- 3D widgets serve a purpose and make it much easier to see what's a widget and what's not
- Windows XP theme engine was great and it got killed in Windows 7
- Windows XP and Windows 2000 UI was to the point and didn't waste screen real estate like 7, 8, 10 do as well as current OS X and GNOME or KDE. First we complained open source desktops had no designers, now we should curse the day we wished for designers to get involved.
- all Windows tools and subsystems got much better and featureful and there's new filesystems and subsystems, but you cannot take the core and slap on a different desktop environment like you can with Unixes. Back in the day you could use a different Windows Shell, but I don't know if that's still possible.
I have this suspicion that Cutler has a private build of Windows on his machine which still has Classic UI, but the product managers would never allow that to get published, or else they would be wrong to have killed it off in the first place. This constant desire to change the UI is unbelievable and hard to explain. Imagine if new knives would follow the same mantra. Many things work best the way they are with no need to change, and if change is wanted, something like Windows XP's theme engine is more than sufficient.
There is very little to hate about the actual NT kernel.
Kudos to Dave, instead.
I went to NT as soon as it was available. It helped me with my productivity but it did take a long time for the applications to catch up with the OS.
Why do you imagine that technical people will look down on him despite groundbreaking innovations and steady decades worth of work going back to VMS? That's hardcore on a level only reached by a few, and only those also mentioned in the article - Alan Kay, Vinton Cerf and Tim Berners-Lee, are equals to Dave Cutler.
From a quick search I see that it uses braces at the end. I'd be curious if CNF encouraged subsystem prefixes (e.g. the "Ke" in "KeBugCheck").
I wonder if CNF had any influence on "Systems Hungarian" (e.g. "dwCreationFlags") that dominates the Win32 API or if that came as an accidental offshoot of Simonyi's "Application Hungarian"
//
// Comments are always surrounded both by empty comment lines
// And by whitespace
//
//
// The return type is always on its own line.
// The function name always starts at column 0 and is whitespace delimited,
// this (allegedly) was a consequence of search macros that Cutler used
//
int
main (
int argc,
char **argv)
{
//
// Even a one line comment ends up taking up at least 4 lines
//
printf("Hello, World!\n");
if (argc == 2)
{
//
// All blocks always use braces
//
}
return 0;
}That seems to be what is missing most with modern software development. Everyone thinks they can do it better, and in the end repeats the same mistakes while creating new ones.
When Cutler came to MS, and worked on NT, he added a cool VMS easter egg in the name WinNT:
W --> -1 --> V
N --> -1 --> M
T --> -1 --> S
VMS is/was a great OS. I was fortunate enough to work on it on a satellite communication system straight out of college. I recall adding the the TCP/IP drivers and achieving connectivity across large Wide Area Networks and setting up one of the first wireless ISDN video conference systems, in this case between former east and west berlin and moscow. There were many similar projects around the world and VMS was a lot of fun/stable to work with.
It would mildly be interesting to get confirmation of the real source.
I had to look for this, information is available here [1] but not an electronic copy. Some Googling turned up this [2] but I'm not sure how authentic it is.
[1] http://americanhistory.si.edu/collections/search/object/nmah...
[2] http://gate.upm.ro/os/LABs/Windows_OS_Internals_Curriculum_R...
http://americanhistory.si.edu/collections/search/object/nmah...
I'd pay good money for a digitized copy. I wonder if there are any legal or Microsoft barriers to that happening someday.
It was great, stable, and ran Windows and DOS apps in emulation (sort of like DEC's FX!32 for NT/Alpha).
Per Microsoft: "On RISC-based computers, Windows NT provides a 486 emulator that runs applications designed for 286, 386, or higher processors."