It’s been so fine!
TL;DR I’m 51₁₆ long past the usual retirement age. So, after more than 30 years working with super talented, fun people at the best software company in the world, I’m retiring from Microsoft 😊. Stephen Chua now owns Math in Office.
It all started in 1988 when I had a summer job getting Microsoft’s CodeView debugger running in protected mode up out of the MS-DOS 640 KB address space. My SST debugger could load and run real-mode DOS programs in protected mode with access to all the memory on Intel 286 and 386 CPUs. It could also execute backwards, quite handy for debugging. CodeView was cool, but Windows 2.1 seemed cooler, so David Weise and I decided Windows needed to run in protected mode too! David used SST to single step through the Windows kernel, fixing exceptions along the way. Pretty soon Windows ran in protected mode as described in the post Saving Windows from the OS/2 Bulldozer. It was a seminal moment for Windows.
In July 1992 I joined Microsoft full-time working in Research for Nathan Myhrvold who reported to Bill Gates. My hope was to spend a couple of years implementing math editing and display in Word along the lines of my PS Technical Word Processor and then resume being a Professor of Optical Sciences at the University of Arizona. Word wasn’t ready at that time for better math handling, and Peter Pathe wanted me to develop RichEdit 2.0 for Office 97. That proved to be a great fit since I had written PS. I joined the Unicode Technical Committee partly because Unicode had so many math symbols and naturally RichEdit 2.0 had to be based on Unicode. At a crucial Word meeting back in 1995, we made the decision to base Word 97 on Unicode. Word 97 was the first major app to use Unicode! Fortunately, Windows NT 3.5 and TrueType were based on Unicode, and David Weise created ExtTextOutW one weekend to display Unicode in Windows 95. Okay, admittedly without complex script support! I chaired the Text Object Model (TOM) committee and implemented TOM in RichEdit. Alex Gounares, José Oglesby, Rick Sailor, Hon-Wah Chan, Christian Fortini, and Jon Matousek all contributed to RichEdit 2.0.
Office 97 was a sensation at the time, and management concluded RichEdit 2.0 could go into maintenance mode. José and I didn’t think it was ready for that and we stayed on. Ayman Aldahleh added Bidi support for RichEdit 2.1 and Chai Chaoweeraprasit added Uniscribe complex script support for RichEdit 3.0, the first globalized version. That version is still available in Windows today for backwards compatibility. Chai, Greg Hitchcock, and Dwayne Robinson have been immensely helpful over the years in explaining how display software works. Greg is probably the only one left at Microsoft who used my SST debugger! I joined the MathML working group in 1999.
Pocket Word and WordPad wanted lots of Word functionality, and eBooks needed pagination and special UI. So, we kept improving RichEdit with the able help of Greg Heino and his test team. I implemented the RichEdit nested table facility, the RichEdit binary file format, UTF-8 RTF (a major improvement on RTF), and created the Alt+x Unicode entry method now available in Word, OneNote, Outlook, WordPad, and Notepad (should be available in any decent text editor!). OneNote raised the bar still further. And then sheer magic happened! I demonstrated that LineServices could render built-up math equations using appropriate callbacks. That didn’t surprise Eliyezer Kohen and his incredible team (Sergei Genkin, Igor Zverev, Victor Kozyrev, Andrei Burago, Alex Vaschillo, Anton Sukhanov) since they had designed LineServices with math display in mind. But an extraordinary team of engineers came together somewhat spontaneously to add elegant math editing and display to Word in a sharable way that we subsequently integrated into OneNote, PowerPoint and other apps. Bill Gates, Steven Sinofsky, and Chris Prately gave the team their support. Jennifer (Michelstein) Halberstam, who had just graduated from Yale (40 years after I did), was the Word Program Manager for math and did an amazing job. The math display quality rivals TeX, which guided the design. Bill Hill’s team sponsored the Cambria font family including Cambria Math, and Sergey Malkin wrote the math-font library facilitating access to what is now the ISO OpenType standard for math typography. I suggested that Word handle formula autobuild up on its own, but Jennifer correctly observed that it should be written in shared code. So, I created the TOM2 interfaces adding math-oriented (and other) methods to the original TOM interfaces that we created for Office 97. I’m forever indebted to Isau Yamauchi for testing my math code. Today that shared code converts UnicodeMath, LaTeX, speech, and braille to/from OfficeMath. The math build-up facility needs a rich-text scratch story, so I implemented the RichEdit multi-story facility.
For Office 2010, Sasha Gil masterminded OfficeArt’s text layout using RichEdit and built the dual GDI/D2D capability, I implemented the shared math context-menu and math ribbon, José integrated the math facility into OfficeArt among many other contributions, Mikhail Baranovsky wrote and/or polished our MathML and OMML converters, and Joe Roni ran the test team. OfficeArt is a shared component used, for example, by PowerPoint.
After Office 2010, Ayman added the text services group to his team. I first met Ayman in the summer of 1991 when I was an expert witness for Microsoft in the Al Alamia lawsuit. It’s been great working with him these many years improving the Unicode Bidi Algorithm and enhancing RichEdit. Windows 8 needed a lot of new RichEdit functionality, particularly for XAML, and fortunately Rick Sailor and Hon-Wah Chan were on board to help with that. Stephen Chua, my boss for several years now, had his first project testing the OS password control option which I implemented using an encrypted backing store.
Later the Excel folks wanted RichEdit to be the new Excel editor and needed specialized functionality. After all that along with lots of other features described in Math in Office, notably math speech and braille for accessibility, I decided to retire at age 75. But my boss at the time Ziad Khalidi convinced me to stay on to add GIF animation and variable-font support. And then the Windows Calculator folks wanted the math facility for the graphing option, Notepad wanted to use RichEdit upgraded in significant ways, e.g., “Show Unicode control characters”, and Modern Comments wanted RichEdit to replace Word in desktop commenting. So, I exposed and improved the RichEdit HTML converters, implemented autoformatting and emoticon shortcuts, and created RichEdit D2D window controls. Imagine: 26 years after Office 97 and RichEdit still isn’t in maintenance mode! Collaborating with Mingxin Wang on Notepad via Teams has worked so well. We’re on opposite sides of the planet and it’s almost as if we’re in the same room together! Recently I implemented math dictation and you can dictate equations into OneNote and PowerPoint! There’s still more math work to do, e.g., add OfficeMath support to our web apps. But hopefully other people can figure out how to do that.
Myriad people have helped me accomplish things over the years, only some of whom are mentioned here, and I’ve always had great management. Many thanks to all!
Enjoyed reading all your posts! Thanks
Great post, thank you
Thank you for all your hard work and for detailing certain messages and flags on this blog!
Murray, What a great retrospective of your career. It was wonderful crossing paths with you starting in 94 when Howard Campbell was managing the team. Loved your call out of Jennifer, who was a brand new PM on my team during that project. Amazing that she was able to wrangle that team of very experienced engineers. Enjoy retirement.