I first started putting information on the Web way back in the early-to-middle 1990’s while teaching Computer Science at UC Riverside. Back then you hand-coded Web pages in HTML with a text editor. Internet connections were slow, so you avoided graphics and other objects that took too long to download. My, how things have changed.
At the time, I create “Webster” (www.webster.cs.ucr.edu). That website became quite well known in the assembly language programming community as I hosted a copy of my course notes “The Art of Assembly Language Programming” on that site. In the early 2000’s No Starch Press approached me about publishing the book. At that point, it was a bit too large, so a lot of material was cut. That material became the bulk of “Write Great Code, Volume 1: Understanding the Machine.” Volume 2 (“Thinking Low-Level, Writing High-Level”) followed shortly, with a promise of a soon-to-arrive Volume 3 on software engineering.
About that time (2004-2005), however, I started working with General Atomics on new software for their Triga™ Nuclear Reactor digital consoles. For the next 10-12 years I was kept extremely busy working on that software (and traveling all over the world to install and deploy it). Volume 3 fell by the wayside.
I didn’t completely forgo work on my books. Around 2010 I did a second edition of “The Art of Assembly Language.” However, it wasn’t until around 2017-2018 that I had time to work on the Write Great Code series. Unfortunately, by then, computer technology had progressed to the point that Volumes 1 and 2 were in desperate need of an update. So I cranked out the second editions of the first two volumes (which finally appeared in 2019. Volume 3 turned out to be a whole lot larger than I initially expected; it got broken up into three volumes on it’s own: Volume 3: Engineering Software covering models, methodologies, and system documentation, Volume 4: Great Design, covering software analysis and design, and Volume 5: Great Coding that covers the actual construction process (this is all in addition to Volume 6: Testing, Debugging, and Quality Assurance, which was always planned for in the series).
Volume 3 finally hit the shelves in late 2020.
As I write this, I actually have four separate books in the editorial process:
First of all, it was time to do something about “The Art of Assembly Language.” The original version of this book first appeared in 1989 (as a set of notes for a course I was teaching at Cal Poly Pomona). That book was geared towards the 8-/16-bit 8088 microprocessor in the original IBM PC. The first published edition (No Starch, 2003) covered the 32-bit variants of the x86 using the High-Level Assembler. Within 10 years, 64-bit variants of the x86 were becoming popular. However, porting HLA to support 64 bit code was a huge undertaking (it took about four man-years to get HLA working in the first place, plus many years of support thereafter). At the time, my attitude was “learn 32-bit code; after that 64-bits is nearly trivial.” This was an okay attitude until new operating systems (especially Apple’s) stopped running 32-bit code altogether. Though HLA still ran on Windows (at least, as of Windows 10), the writing was on the wall, it was time to update “The Art of Assembly Language.” Unfortunately, the issue with updating HLA still remained. So, with a sad heart, I chose to abandon HLA and return to using Microsoft’s MASM assembler (the assembler used by the original version of the book back in the 8088 days). After considerable effort and rewriting, “The Art of 64-bit Assembly Language” was written. As I write this, it is in the middle of editing and technical review. It should head into production towards the middle of 2021.
The original class notes I wrote for “The Art of Assembly Language Programming” yielded a bit more than “The Art of Assembly” (No Starch Press) and “Write Great Code” (also No Starch Press). There was a ton of really advanced stuff that never made it beyond the electronic version appearing on Webster. At least, not until now. I’ve taken that material, undated it to 64 bits and modern versions of Windows, and have written “The Art of 64-bit Assembly Language, Volume 2.” I’ve completed the first draft of this book and it’s sitting in the editing queue at No Starch waiting for the production of Volume 1 to complete.
Since the very first days I began programming for a living (way back in 1977, actually), I’ve been working with embedded systems and programming hardware. Though I’ve taught lots of hardware classes at the University level, I’ve never written a hardware-related book. Until now. I just finished the first draft of “The Book of I2C” which is an in-depth treatment of the Inter-IC bus (also known as the I2C, or I-squared-C, bus). Anyone who has connected up hardware to an Arduino or Raspberry Pi has probably had to deal with this bus. Soon (figure 2022), No Starch will have a great reference for programmers dealing with I2C.
“Write Great Code, Volume 4: Great Design” is in the middle of the rough draft (about ⅓ done). I’ll have more to say about WGC4 as I get further into it. You can probably expect it around the middle to end of 2022.
Well, this is a long post so I’ll stop here.
Cheers,
Randy Hyde