Dave Plummer: Programming, Autism, and Old-School Microsoft Stories | Lex Fridman Podcast #479

By Lex Fridman

Share:

Here's a comprehensive summary of the YouTube video transcript:

Key Concepts:

  • Early Computing: TRS-80 Model 1, Commodore 64, Apple II, machine language, assembly language.
  • Microsoft Era: MS-DOS, Windows 95, Windows NT, Windows XP, Windows Media Center, Windows Task Manager, ZIP file support, Windows activation.
  • Operating Systems: OS/360, Windows 95, Linux, Unix, BSD, Windows NT, VMS, RSX-11.
  • Programming Concepts: Machine code, assembly, C, C++, Unicode, memory management (640K limit, high memory, extended memory), debugging, asserts, multithreading, object-oriented programming, porting code.
  • Autism and Neurodiversity: Monotropism, sensory sensitivities, repetitive behaviors, literalism, masking, meltdowns, emotional post-processing, social interaction challenges, communication styles.
  • Modern Computing & AI: LLMs, code generation, GitHub Primes, language performance benchmarking, AI for learning programming.
  • Hardware Restoration: PDP-11, vintage computers, muscle cars.
  • Business & Software Distribution: Shareware, banner advertising, negative affirmation billing, user experience, customization.

Early Computing Experiences and Learning to Program

Dave Plummer recounts his initial encounters with computers, starting with a TRS-80 Model 1 in fifth or sixth grade (around age 11) at a local RadioShack in 1979-1980. He describes his precocious attempt to set up the machine, despite having no prior knowledge, and his early attempts to communicate with it using English commands. He notes that the state of computing at the time was marked by the release of the "big three": the TRS-80 Model 1, the PET 2001, and the Apple II. He expresses a preference for the Commodore 64, citing its higher sales numbers and broader influence.

His experience with the Commodore 64 involved writing a clone of Galaga entirely in hand-coded machine language. This was a challenging process due to the limitations of 6502 machine code, which required sequential programming and made inserting code in the middle difficult, resulting in "hideous spaghetti code." A significant early lesson in data management occurred when he accidentally overwrote his first program by copying a blank floppy onto his data floppy. He describes the feeling of guilt and frustration associated with such mistakes, which are common in programming.

Plummer identifies two stages of falling in love with programming: the initial fascination with machines from the TRS-80 era and a later realization in university that he "loved programming" regardless of the specific application, finding solace in the process itself.

Dropping Out and Finding His Way Back

Plummer admits to dropping out of high school by gradually decreasing his attendance until it became embarrassing to return. This led to a period of working odd jobs, including at 7-Eleven. He describes the difficult and hazardous nature of his 7-Eleven job, particularly the task of taking "gas dips" with a long wooden stick, which resulted in splinters and exposure to extreme cold. This experience served as a catalyst for him to seek a different path. At age 21, he approached his local high school principal and was eventually allowed to return to complete the necessary classes. He emphasizes that the gradual "dropping out" is a dangerous process of making small, seemingly insignificant decisions that accumulate into a much larger, unintended outcome.

He then attended university, initially struggling as a student. A mercy pass in a remedial Geometry class scared him into realizing the precariousness of his academic career. This prompted him to take his studies seriously, leading to significant improvement. His advice for students is to focus on aspects of school they enjoy and to endure the difficult subjects, as it is easier to do so earlier in life.

Joining Microsoft and Early Contributions

Plummer's journey to Microsoft began during his third year of university. While working for the phone company on networking conversions, he read "Bill Gates, and the Making of Microsoft Hard Drive," which inspired him to seek employment at Microsoft. Despite being in Saskatchewan, he found a few Microsoft email addresses from his shareware registration cards and cold-emailed them. One contact, Alasdair Banks, put him in touch with Ben Slifka, leading to a phone interview and an offer to work on MS-DOS for the summer.

He explains his shareware product, HyperCache, a file system cache for the Amiga, which he used to fund his education. Written in C with some 68,000 assembly for performance-critical I/O operations, it sold a few thousand copies at $20-$40 each. He describes the early days of distributing software through Usenet and Amiga forums, and how a call from a software retailer for 50 copies was a significant financial boost.

The Microsoft Ecosystem and MS-DOS

Plummer characterizes Microsoft at that time as "the single most potent assemblage of smart people" he had encountered. He attributes Microsoft's dominance to Bill Gates's relentless pursuit of his vision ("a computer in every home and a computer on every desk"), his intelligence, determination, and his ability to hire equally or smarter individuals. MS-DOS, though not complex, was precisely what the market needed.

He details MS-DOS as primarily a "command launcher" with a simple shell, lacking multitasking or a graphical interface. He notes Microsoft's experiments with text-based graphical interfaces and file managers in later DOS versions. The operating system was constrained by the x86 architecture's 640KB memory limit, with various workarounds like high memory and extended memory being developed. He clarifies that the quote "Nobody will ever need more than 640K" is often misattributed to Bill Gates.

During his internship and early career, Plummer contributed to SmartDrive, adding CD-ROM caching. A significant project involved moving parts of SmartDrive and the double-space compression engine into high memory, utilizing the A20 line to access an extra 64KB of memory by manipulating segment and offset registers. This was a complex optimization for an Amiga programmer new to x86 architecture.

Windows 95, NT, and Operating System Philosophy

Plummer worked briefly on the Windows 95 COM/OLA team, focusing on the presentation cache for embedded objects. He then moved to the Shell team, working on NT from then on. He describes Windows 95 as a revolutionary leap from Windows 3.1, introducing 32-bit support, VxD drivers, and a new user interface, exemplified by the Start menu. He was fascinated by the new Shell, which led to his work on Shell extensions, eventually evolving into ZIP folder support.

He ranks Windows 95 as the second most impactful operating system, behind OS/360 (for its long-term commercial influence and backward compatibility) and ahead of Linux (for its server penetration and open-source spirit).

A Day at Microsoft and Porting Code

A typical day at Microsoft in the MS-DOS/Windows 95 era involved downloading the MS Mail address book, which could take an hour due to network congestion. This time was used to review overnight crashes from the "Stress" testing process, where unused machines ran tests to find bugs. These bugs were triaged and assigned, with Plummer often tasked with debugging. He notes that 80% of his professional life involved fixing bugs and porting code rather than writing new code, which he found to be a valuable learning experience.

Porting Windows 95's user interface to NT involved significant challenges, including making it Unicode (converting 8-bit to 16-bit characters) and dealing with the intricacies of memory pointers. He likens porting to "breaking into somebody's house" and discovering both good and disturbing code, including profanity. He emphasizes the line-by-line review required, highlighting how code written for personal use can end up being seen by millions.

Windows NT and Dave Cutler's Influence

Windows NT is described as a "clean-sheet design" led by Dave Cutler, who was recruited from Digital Equipment Corporation (DEC) with a team of experienced OS developers. While OS/2 served as a starting point, NT was primarily written in C. Dave Cutler is identified as the architect of the kernel, akin to Linus Torvalds in the Linux world. Cutler is portrayed as a brilliant, farmer-like taskmaster who ensures code quality and doesn't tolerate subpar work.

Software Engineering Teams and Tools

Plummer stresses the importance of "tools" and "people" in successful software teams. He notes that the absence of tools like Git, relying instead on "Diff and manual Deltas," made porting and development significantly harder. He recalls a heated debate on an open NT dev alias regarding the NT boot experience, highlighting the contentious nature of technical arguments among brilliant engineers.

He shares a personal anecdote about a lost argument regarding ID list handling on MIPS architecture. He believed that ensuring ID lists always had an even number of bytes would have significantly improved performance, but his proposal was rejected, leading to code he believes is thousands of times slower than it could be. This illustrates the frustration of technical disagreements.

Debugging on multiple instruction sets (Intel, MIPS, Alpha, PowerPC) was a significant challenge, often requiring debugging in pure assembly language without source-level debugging in Visual Studio. He estimates that 80% of his professional life was spent debugging and fixing, rather than creating.

Legendary Software: Task Manager and ZIP Support

Windows Task Manager: Plummer describes Task Manager as a tool for inspecting and terminating processes that are consuming excessive resources or have locked up. He started developing it at home as a personal project, initially using registry keys for performance data. Upon bringing it in-house, he gained access to internal APIs like NtQuerySystemInformation and NtQueryProcessInformation, which made the application fast and responsive. The original Task Manager was a mere 87KB. He emphasizes building it to be robust and small, avoiding linking to the C runtime to save space. He implemented a custom object constructor calling mechanism in C++ to achieve this. A clever optimization involved a "dirty bit" system, similar to Hamming code, to efficiently repaint only changed cells in the ListView control, ensuring smooth resizing and performance even with multiple CPUs. He notes that the original code is largely still present, with layers of new code added for modern features.

ZIP File Support (Visual ZIP): Plummer developed Visual ZIP as a shell extension at home to express his creativity and earn extra money. He was motivated by a desire to buy a specific house. The software, released as shareware, was eventually acquired by Microsoft. He recounts the humorous situation of Microsoft cold-calling him, unaware he was already an employee. The acquisition allowed him to continue developing it internally, though some features like encryption and multi-volume support were removed for simplification and to comply with export regulations on encryption. He explains the history of ZIP, originating from Phil Katz's PKZIP for MS-DOS, and its necessity in Windows due to the widespread use of ZIP files on BBSs. He notes that the current ZIP implementation, written for single-core days, doesn't leverage multi-core processors effectively.

Other Notable Projects and Insights

  • Windows Media Center Prototypes: He worked on initial prototypes in 1996, using MPEG video files for testing. The goal was to create a "distance viewing UI" for Windows.
  • Windows Activation (XP): He was brought in late in the XP development cycle to implement the activation system, adapting Office activation code. This involved working with DRM and research teams to create product keys and a phone activation system, which he acknowledges can be a painful user experience.
  • Blue Screen of Death (BSOD): He clarifies that the BSOD in Windows 3.1 is unrelated to the NT version. The NT BSOD's color scheme (white on blue) was influenced by the MIPS firmware and Visual SlickEdit editor he used during development.
  • Rebooting Computers: He explains that reboots fix issues by clearing accumulated memory leaks and resetting code to an anticipated, stable state.
  • Beautiful and Ugly Code: He praises the Windows kernel as "very well written" and highlights Bob Day's named pipe implementation as an example of impressive user-side code that avoided shared memory issues. He also mentions encountering poorly written code during porting.
  • Greatest Programmer: He cites Laura Butler, a distinguished engineer at Microsoft, as an example of exceptional debugging skill, able to diagnose a complex scheduler deadlock in minutes.
  • PDP-11 Restoration: He has a passion for restoring old hardware, including PDP-11 minicomputers, aiming to build the "best PDP-11" with features like four megabytes of RAM and custom BSD kernel modifications for LED displays.
  • Slot Machines: He explains that slot machines generate a random outcome first and then create a visual representation to match it, rather than the reels determining the win.
  • Autism and Neurodiversity:
    • Monotropism: His brain focuses intensely on one task at a time.
    • Benefits: Incredible focus and dedication on tasks he loves.
    • Challenges: Difficulty with multitasking, easily distracted, literal interpretation, challenges in understanding others' thoughts and emotions, difficulty with social cues and sarcasm.
    • Masking: The effort of "acting normal" in social situations, which is work for individuals on the spectrum.
    • Meltdowns: An overwhelming emotional state where behavior can no longer be managed, triggered by accumulated stress or a specific event.
    • Literalism: Taking figures of speech literally, as demonstrated by his childhood confusion about a horse in a kitchen.
    • Emotional Post-Processing: Replaying social interactions to analyze and improve future behavior.
    • Communication: Advises being specific and not assuming understanding of nuance.
    • "A Little Bit Autistic": Suggests that many people have autistic traits without it being a disorder, and understanding these can be beneficial.
    • Programmer Connection: Believes the single-minded focus and curiosity about "what's inside stuff" are key traits for programmers.
  • AI and Programming: He uses AI (like Cursor) to learn Python for his Tempest AI project, finding it helpful for generating code and learning new syntax. He sees AI evolving programming towards an "architect" role, where developers assemble components and describe interactions to AI.
  • Future of Programming: He believes the future involves higher levels of abstraction, with AI assisting in code generation and component assembly. He feels fortunate to have experienced the evolution of technology over decades, giving him a comprehensive understanding.
  • Meaning of Life: For him, it's "making cool stuff" that is complex, useful, and leverages his abilities creatively.
  • Programming Languages: Primarily C++ and assembly, but currently using Lua and Python for a side project. He distinguishes between modern C++ and "C with classes."
  • Software Online Experience: Describes a challenging period involving aggressive advertising practices and legal issues, leading to a greater self-awareness about user experience and communication.
  • Windows Versions: Favors Windows 2000 Server for its stability and functionality as a server OS, and Windows XP for its completeness, impact, and longevity as a consumer OS. He values "crispness" and a consistent design philosophy.
  • GitHub Primes: A project benchmarking programming language performance by solving prime number sieves, highlighting Zig, Rust, and C++ as top performers.

Chat with this Video

AI-Powered

Hi! I can answer questions about this video "Dave Plummer: Programming, Autism, and Old-School Microsoft Stories | Lex Fridman Podcast #479". What would you like to know?

Chat is based on the transcript of this video and may not be 100% accurate.

Related Videos

Ready to summarize another video?

Summarize YouTube Video