Behind the Windows Start Menu - Insider Secrets

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
this is me back at Microsoft in 1994 working on Windows NT 4.0 this is the office where I wrote things like pinball and task manager but why is there a dollar bill pinned to my cork board and why was it worth more to me than any other trophy find out today in The Insider story of the Windows start menu [Music] hey I'm Dave welcome to my shop I'm Dave Plummer a retired operating systems engineer for Microsoft going back to the MS-DOS and Windows 95 days back then my day job was working on the shell team where we built the start menu the desktop the file explorer and most everything that you interact with on a daily basis most of it still survives on today in Windows 11. now software might be a little bit like sausage as in maybe you don't really want to know how it's actually made but then again maybe you do the response to the recent task manager video was quite positive so it seems there's quite a bit of an appetite for Insider stories on the early creation of windows I figured I'd tell you a few more and today we're going to focus on stories related to the Windows desktop and the start menu which was my team's primary responsibility for almost 10 years now success has many parents and the start menu is no exception one person likely wrote the original pop-up menu but someone else wrote the shell folder code to enumerate the menu someone else handled the launching of the app and so on no I'm just a fun Uncle who wrote the code to actually draw the menu including the sideways Windows text banner I also wrote the launch code that executes things from the start menu's run dialog I was one of about a dozen developers tasked with porting and reworking the Windows 95 code to run on what you know and love as Windows today But ultimately there were hundreds of people involved in shipping both Windows 95 and Windows NT and while some of my contributions might be memorable they're just tiny cogs in a big machine built by a lot of very talented people whatever pride of authorship I do take therefore I share it equally with them we're all just standing on the shoulders of the Giants that came before Windows nt4 contains a little-known Easter egg one that I bet you've probably never seen before so let's take a quick look at it it's complicated to launch so I'll just put a link to the steps in the video description but once it does come up we can see it contains a list of the people responsible for the quotes magic of nt4 and there we are there's me Dave PL and we have Mark Taylor Bob day Rick Turner and just a few of the many people that contributed to this version of Windows a little later in the video we find thanks being given to the comfy chair now I might be conflating a few memories here but as I remember it's my boss at the time John Berry and his wife had recently had their first child in order to make nursing more comfortable they bought a big comfy padded rocking chair of some kind and then when the chair had served its purpose it moved from their Nursery into John's nice window office at Microsoft John was a good friend of mine before he was my boss so I would stop by most mornings with a big coffee and chill in the comfy chair while we chatted about computers physics and The Simpsons and even occasionally about what I was supposed to be working on and most of the people that came by John's office wound up sitting in the big comfy chair and sooner or later it was an integral part of life on our team as a relaxing and quiet place it became like a trusted Haven away from stress and that's why you see the big comfy chair in the windows credits I actually started my own Windows NT days on the olecom team but I'd only been there a couple of months when one day I ran into one of our most talented Windows developers Bob day and found out that he was working on a complete port and rewrite of the Windows 95 user interface but this time for Windows NT it was a bit of a Skunk Works project as Windows NT already had an interface plan for a future release named Cairo the Cairo interface had three start buttons was significantly different than what was going to ship and windows 95. it shared absolutely zero code with it and about as much design the new anti-shell would thus be in direct competition with the Cairo shell and more than a few feelings would be heard before it was all over I jumped at the chance to get on the ground floor of the new UI project soon enough I interviewed with the NT shell team and then moved to their group with that developing the desktop UI became my new day job one of the first things I tinkered with was the start menu as I wanted to remove the Windows 95 branding and replace it with the appropriate Windows NT System logo and text in the original Windows 95 code the side Banner is actually a hand-drawn bitmap that is then rendered alongside the start menu as a graphic the code now had to support not just Windows 95 but also many different versions of NT from workstation to server and advanced server and that would be a lot of different bitmaps especially if they had to be localized into other languages as well I decided to draw things live using text apis and rendering the icon manually rather than the simple bitmap approach that way the menu could say anything I wanted it to in any font we chose and so on the problem was that the whole thing had to be sideways text and Windows 95 doesn't provide a way to draw sideways text Windows NT however does allow you to set a world transform on a graphics device context so with a little experimentation I soon had sideways text and graphics working for the next many versions of Windows I had the satisfaction of knowing that every time somebody popped up the start menu it was my code that Druid a small contribution to be sure but at least a highly visual one it was a fun way to ease myself into the code base but we soon faced a fair number of serious technical hurdles in getting the code up and running on Windows NT first and foremost even though the underlying win32 API is largely the same Windows 95 and Windows NT are undeniably different kernels and that makes a big difference when you're writing the system shell Windows NT like everything that is followed it up to and including today's Windows 11 is fully Unicode that means that instead of each character being a single byte like on MS-DOS and Windows 95 There are 16 bits on NT that allows for much larger character sets capable of holding for example the Chinese alphabet but changing the characters to be two bytes breaks almost every assumption that every C programmer has ever made about strings when writing their code the amount of work importing the code to Unicode was massive for several reasons first every character or string definition across about a million lines of source code had to change second each character is more than one bytes and so the size of a buffer is no longer simply equal to its length which is an assumption that programmers quite often rely on and every such case was now effectively a bug not only does that mean that every piece of code that touches a string needed to be hand reviewed and fixed it also meant that anytime any text was persisted like in the registry or within a shortcut or to a file on disk it has to Now operate in Unicode as well the real challenge came with things that were portable between Windows 95 and Windows NT like a shortcut on the desktop since you could move a disk between machines or browse the same network location from both Windows 95 and NT our shortcuts had to be at the same time fully Unicode and yet 100 backwards compatible with the existing format in a way that wouldn't choke windows 95. some cases were easy whereas some like when I ported the briefcase featured NT were really quite complex another requirement for running on NT is CPU Independence while Windows 95 ran only on the Intel x86 our antique code also had to run on the risk chips like the mips the Alpha and the power PC since the code was primarily in CNC plus plus part of that work was as easy as a recompile but as usual the devil is in the details and one of the more devilish details of risk platforms like the maps is that data must be properly aligned that means that a 32-bit value must begin on a 32-bit boundary and that's completely different from the Intel chip where a 32-bit value could be packed into any byte address even living at an odd memory address the classic Windows developers were nothing if not efficient and all of the data structures were tightly packed with bytes and ins and Longs all intermixed which simply doesn't work on a risk chip that means that every access to a data structure that is packed that way must be carefully manipulated in a manner that doesn't crash the processor you can't just take an x86 pack structure and start partying on it with your powered PC and it's a lot of extra work to jump through all the necessary hoops writing our code for four different processors meant that we had to test on all of those platforms as well and to that end many of us were equipped with non-intel Dev machines that was true in my own case and everything I worked on in those years including the shell task manager pinball and so on was all done on the mips Dual processor workstation that I'd been equipped with the only real downside was debugging all of our debugging was done at the Assembly Language level with text mode debuggers and there was no source code support you lived and died by your ability to debug crashes in a glorified monitor program if we're up to me all Assembly Language would be macro 11 but since it's not I'm willing to settle for having to debug at least x86 assembly when needed but debugging the risk platforms was no fun they have weird features like delay slots that execute instructions after a branch has been taken and the fact that I was fairly new to the instruction sets didn't help either plus you had to be reasonably confident in all of them x86 mips Alpha and powerpc just in case your components happen to crash or misbehave on one of those other machines it took a big tool belt to wander the halls in those days the changes to the Shell Code were pervasive and widespread in almost every line got touched at some point it took months of work before we got it anywhere near ready to even compile let alone try to run it but eventually we got it there the chances that the code would initially work or do anything remotely useful seems pretty slim at best but I was hoping for the best Bob and I made a friendly wager with Bob betting the code would crash early in process initialization I optimistically bet that we'd get all the way to the desktop when the code finally finished building we all gathered around the PC in my office and we eagerly typed explorer.xc and pressed enter my old 48633 test machine turned away for a few moments and then like magic the screen changed to The Familiar Windows 95 see foam green color and a few icons appeared I'm sure it didn't make it much further than that but it did get all the way to the desktop so Bob pay being my dollar I probably pinned it up on my cork board where it remained for the rest of my time at Microsoft and now you know why there's a dollar bill pinned to my cork board is because the newly converted window shell booted all the way to the desktop the first time it was ever run as we continued our work of getting all the code to work on Windows NT we also had to make sure the code still worked on Windows 95 as the ASCII version of our new code would also be back ported to later become the Shell Code for Windows 98 and later the Windows 95 shell team continued to run in parallel to ours so it was a bit of a nervous Arrangement where they created the original UI and we were tasked with making it all work well for NT along the way I made a few choices that seemed smart at first but that weren't the most accessible in retrospect for example Windows NT added file compression and encryption to the mix so I had to expose that in the Explorer when you're looking at files I decided to color code the files by showing compressed files in dark blue and encrypted files in dark green pretty clever unless the customer happens to be colorblind as we work to update their code the Windows 95 team kept changing and tweaking and improving things in their original Source base which meant almost weekly source code merges between the teams this was long before git and even before Source Depot and so on we were using a primitive internal tool affectionately called slime as in Source Library manager didn't support Forks or branches or anything like that and so Hand merging code back and forth was a tedious but necessary grind that we did over and over and over again at some point coincidentally I had borrowed a shovel from my boss as I was spreading around some Landscaping bark at my house on the weekend so when I brought the shovel back to him on Monday I propped it up at his front office door where everybody could see complete with a big sticker that read Shell Code merge tool it was more of a comment on the drudgery of the tats and on the quality of the code we were handling but I'm never quite sure how my humor is received by some folks one other big difference between the teams is that Windows 95 was written by developers on a net buoy Network that's a broadcast standard quite different from today's TCP IP mainly because it's a network where every machine can already see every other machine directly if you look for a machine named Sylvester you'll either get an answer or a failure immediately with no waiting that's very different from tcpip where the network could time out for up to 90 seconds at a time as a result there were numerous cases where the shell would block and wait on the network under net buoy this was a delay of only a second or two but 90 seconds is a long time to get back even an error message under windows certain pieces of code like the Run dialog would also block and hang until the network responded and your entire shell was hung in the meantime not really acceptable for a professional workstation operating system like NT so it had to be fixed to handle cases like this I wound up rewriting all the launch code to spin off a new thread each time you try to launch an app or a path from the Run dialogue that meant you could enter the name of a non-existent server and control would turn directly to the user without a delay and that's why to this day if you type in the wrong network path into the Run dialog you can keep right on entering wrong paths as much as you want until the results start coming back up to a minute later another big difference between Windows 95 and Windows NT was the security model NT servers could be quite locked down let's say you're looking for a server named scratch temp but you accidentally type scratch TMP well each time you type a character in The Path the system will auto-complete and look for a share by that name so it would hit the server named scratch and first stash for the share name t and it wouldn't be found of course and when you typed your next character it would look for TM and then when you type your next character TMP and so on now depending on how the server was configured it could begin to consider all of these attempts to be a hacking or denial of service attempt and so merely typoing a name could lock you out of your server entirely before it even asks for your password so there were a lot of edge cases like this that we had to re-engineer to account for the differences between the way the operating systems worked I was fairly fascinated by the new shell and the way that it could show all different kinds of items from files to control panel outputs within a folder in theory you could host almost any enumeration of items in a folder and in my spare time at home I started to think around with writing my own shell extension I think I started with a sample from Microsoft systems Journal called Big gak which simply placed a few icons in a folder each one named for someone no one reason big gack and by the way if you happen to know the origins of the big gak sample please let me know in the video comments as I was thinking about what kind of shell extension I could write and what the host in it it came to me I could write a zip file parser and expose the contents of a zip file as if it were an actual folder instead of manually decompressing files out of the archive you could just browse right down on into it it seems a really elegant way to handle zip files I already had an agreement with Microsoft that I could work on inside shareware projects so I started writing what would soon be named visual zip a few months later I released it a shareware and soon enough it caught on a little bit then I was telling perhaps a dozen copies a day by mail then one morning as I was about to head into work the phone rang it was a lady from Microsoft who wanted to know if I was the author of visual zip as they were interested in acquiring it for inclusion in the Windows 95 Plus Pack I eagerly said sure what building are you in I'll stop by well this took her by surprise and she stammered a bit before saying no no we've got to coordinate with legal and travel first but that made no sense to me why would I need to work with Microsoft's Travel Group when I was probably just two buildings over and that's when we both realized that she didn't know that I already worked for Microsoft she had just cold called the author of visual zip which happened to be me to discuss it soon enough we figured it out they made me an offer and at first I tried to negotiate but I was in a tight situation if they didn't buy my zip software they'd ultimately buy someone else's or write their own and then at that point I couldn't be in competition with my own employer so I'd either have to quit or stop selling visual zip entirely anyway since my options were pretty limited I took their first best and only offer I use the proceeds to buy a used Corvette a red 1994 LT1 Coupe and like most things I can't leave well enough alone and soon had added everything from a supercharger to a roll cage and so on visual zip shipped zip folders in the Windows 95 Plus Pack and the code was eventually migrated into Windows itself and has shipped ever since my understanding is that Windows is going to soon move to a unified and open compression library but whether the shell extension I rode almost 30 years ago Will Survive remains to be seen I've got complete episodes on both pinball and visuals that appear on the channel so be sure to check them out if you've never seen them from calculator to pinball and from zip folders to task manager I was fortunate to work on some memorable aspects of Windows and I hope you've enjoyed today's little historic look back at a few of them if so please make sure you're subscribed to my channel for future episodes I'm mostly in as for the subs and likes so please be sure to leave me one of each before you go today if it generates a strong response I'll be sure to make more videos like this one if you or someone you know is impacted by autism or Asperger's be sure to check out the free Amazon sample chapter of my book secrets of the autistic millionaire in the video description it's got nothing to do with money and everything to do with living a successful life on the Spectrum it's everything I know now that I wish I'd known back then by the way I'll be speaking at vintage computer Festival West August 4th and 5th in California it'll be my first chance to meet many of you in person and I hope to see a lot of you there in August in the meantime and in between time I hope to see you next time right here in Dave's Garage
Info
Channel: Dave's Garage
Views: 231,999
Rating: undefined out of 5
Keywords: start menu, windows start menu, windows 10, windows start menu evolution, windows 11, start menu windows 10, windows 10 tutorial, windows xp start menu, windows start menu history, windows start screen, windows start menu customization
Id: HrDovsqJT3U
Channel Id: undefined
Length: 17min 59sec (1079 seconds)
Published: Fri Jun 16 2023
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.