Lammers’ book profiled what might now be called the original rockstar programmers: guys like Andy Hertzfeld, Charles Simonyi, Dan Bricklin, and Jonathan Sacks.
What’s striking is that unlike the rockstar entrepreneurs of today (on display in PaW’s equally zoological companion book from the 21st century, Founders at Work: Stories of Startups’ Early Days), the programmers interviewed back in the mid-80s are humble, curious and focused on the code, perhaps even surprised that anyone would care to interview them about their work. In Founders, you can’t open a random page without encountering yet another insufferable ego (with the exception of a few notable interviews with del.icio.us founder Joshua Schacter and recently minted millionaire HOTorNOT founderJames Hong); yet in Programmers at Work, the wonder shines through. There aren’t any Zed Shaws lurking in those pages.
Much of Programmers at Work holds up well even after 22 years. By today’s standards, a few of Lammers’ questions seem rather quaint (”Do you write a lot of comments in your programs?”), but then you’ll run into something interesting, like Simonyi taking a potshot at the “cult of simplicity” and how in the long run of computer science and other symbolic sciences, he believes that embracing complexity over simplicity will be what leads to the biggest breakthroughs. Leave it to the space-traveling creator of Hungarian notation to comment on that. At least Lammers didn’t ask Simonyi about his commenting style.
While The Soul Of A New Machine showed a deep slice of real coders and engineers at work and inspired almost through tacit observation, Programmers at Work captured the breadth of the development opportunities available, in the programmers’ own words, and by showing their own work products in a much more explicit and expository form.
February 10th, 2008 — apple ii games history simulation software
The first non-trivial source code I ever read was a Basic listing of an Apple II game called Tuesday Night Football. TNF pitted you against a computer coach in a strategic, text-based duel of American football play calling. We huddled around the green Apple II CRT, trying to outwit the wily computer coach. We became convinced it cheated. We set out to rectify the situation, and the source code was the key.
A Brief History of Being Cheated at Football and Other Games of Chance
The offensive coach picked the play, for example “Short Pass”, or my personal favorite, the high-risk, high-reward “Gadget” play, inserted the disk into the red “sportscaster”, and the defensive player looked at the back of the disk and rotated it until the specific defensive alignment was chosen, for example, “Prevent Defense”. Then you’d flip the switch to start the record player and lister the result: “Pass over the middle…intercepted!…he’s going to go all the way…TOUCHDOWN!” Or one I can still remember today with its pregnant pause and sudden reversal “Prevent defense, three man rush, trap up the middle for ten…uh oh…penalty.”
There were about 70 combinations of plays and defenses, and one Christmas my older brother, then in grad school as a T.A for stats courses, calculated the expected value of each defensive and offensive play selection and routinely beat me. This was typical of the competitive torment I endured at the hands of someone with an understanding of probability and statistics which dwarfed my second grade math skills. Once he crushed me in Milton Bradley’s Game of Life by carefully observing the tendency of the spinning wheel’s non-random distribution. As he rolled up on the Day of Reckoning, he opted for the rarely used attempt at becoming a MILLIONAIRE TYCOON. From the instructions (warning: PDF):
Try to become a MILLIONAIRE TYCOON. If you have little or no money, place all that you have (your car if you’re broke) on ONE number on the number strip. Spin again. If you’re sic number comes up, you have become a MILLIONAIRE TYCOON, the WINNER and the game is over. If you lose, the bank takes your money, and you sit out the rest of the game at BANKUPT.
So he lays it all down on #3, spins and bam, 3 comes up and the frustrating hour of spinning and trying to stuff little pink and blue pegs into those cars goes down the drain. The one in ten chance might as well have been a one in a million chance. That’s still as close to a lottery winner as I’ve ever been.
Subprime crisis, Milton Bradley style. One minute you’ve got a car, six kids stacked up in the back and not a dime to your name, and the next minute you’re a winner.
Fixing What Ailed Us
Fast forward about eight or nine years and I come across the listing for Tuesday Night Football from a copy that a friend apparently cracked. Our relationship with the game was love/hate all the way: because while it made for an entertaining and addictive game, some bug in the code caused way too many fumbles to occur for our tastes. If I recall correctly, each play had about a 5% probability of a fumble; and either a logic bug or a problem with the pseudorandom number generator caused every fumble to be lost by the human coach, while the computer only occasionally lost a fumble. This was an easy fix to make, but what was notable was that in just a few pages of code, a plausible football game could be created. I remember seeing the listing on green and white fanfold paper and thinking, I could do that. When I later got my own Apple IIc, I modified the code to create a more balanced game. And by more balanced, I mean one that probably tilted more in my favor.
Searching for Tuesday Night Football
I set out last night to see if I could find the source code for Tuesday Night Football to confirm whether my recollections were accurate. Were we just complainers who couldn’t handle getting beat fair and square? Or were we right, that the fumble issue was a bug and not a feature? Although I found a disk image that I believe contains the program, and a host of Apple II emulators that might actually run it, I haven’t been able to locate the actual TNF source or even get the original game to run successfully in an emulator.
So Dear Lazyweb, if you’re out there, and you’re an Apple II fanatic who has the Basic source code for Tuesday Night Football, I would love to get a look at it again for research purposes.
update… More digging led me to the author of the original Tuesday Night Football, Charlie Anderson, and some artifacts related to the original version. It appears that after a brief life being sold through Apple dealers with mimeographed manuals and a disk stuffed in a plastic bag, Mr. Anderson was offered the sum of $1000 against 10% net royalties to assign the copyright of the game to Automated Simulations, Inc., which rechristened it as Tuesday Morning Quarterback. What are the chances that the source survives?
I intended to write tonight about the new catchphrase which I predict will sweep the nation with a stickiness that FTW can only dream of—Wheel suck!—but Roger Ehrenberg’s description of geeks vs. businessfolk derailed me.
Ehrenberg dissects Microsoft’s unsolicited takeover bid of Yahoo. (Full disclosure: as a card-carrying Idiot Retail Investor, I made a trade recently that correctly called the takeover bid but I totally botched the execution on the profit-making side. More on this good news/bad news joke later.)
Ehrenberg cites Michael Lewis to compare the geek culture of Yahoo! to the insular baseball clubhouse of skilled craftsmen whose finesse-based talent is not readily apparent to the casual observer, leading to a somewhat exclusive club wary of those not in the show. In contrast, Microsoft is like the football locker room, where muscle mass and physical presence alone asserts dominance, yielding self-confidence and hubris not found in the cliquish Yahoo! ranks, demonstrated by an ability to work with customers and listen to needs and find the problems to solve.
And therein lies the “train wreck” Ehrenberg predicts—a culture clash that inevitably plays out like one of my favorite shows of the 70s—Superstars. In the wintry off-season, Superstars became the best reason for a kid to watch ABC TV on Sunday afternoon in the 70s. Athletes from different sports competed in a decathalon of events. Forbidden to participate in their own specialties, the athletes could choose from such events as rowing, swimming, bowling, weightlifting and several other sports.
The results weren’t pretty for the baseball players. Maybe it hurt that invariably, the role model for the athletic baseball player ended up being some slow infielder like Ron “Penguin” Cey or a past-his-prime 40-year-old Lou Brock. In 28 seasons, football players won the competition 15 times (I count four-time winner Renaldo Nehemiah as a football player even though he won three seasons as a 110 Hurdler before his NFL career began), and only in 1991 did Toronto Blue Jay .259-hitter Kelly Gruber finally represent for the baseball players.
Does this mean that the Yahoo! culture is doomed, much like Ron Cey coming in last in the 100 yard dash in 1978? Or does it signal that Microsoft’s ability to put its business muscle to use will dominate, like OJ’s triumphant performance in 1975?
I tend to go along with Ehrenberg’s conclusion and predict the more dire outcome–it’s going to end up like Joe Frazier nearly drowning in the swimming competition. Frazier, after admitting he didn’t know how to swim, was asked why he entered the event:
How was I to know I couldn’t unless I tried it?
Given the dearth of winning strategies on Ballmer’s watch during the past eight years of MSFT’s 40%+ stock price slide, that quote might well serve as the retrospective logic and epitaph for this most recent bid.
February 2nd, 2008 — debugging development motivation review tsoanm
Can literature influence a career?
Tracey Kidder’s The Soul Of A New Machine, published in 1983, follows the engineers who designed and built the Data General Eagle, a 32-bit minicomputer competing not only with the DEC VAX for market share, but with Data General’s own Eclipse project for internal resources and mindshare.
Kidder’s book won the 1982 Pulitzer Prize for general non-fiction. I first read it sometime around 1985 or 1986, trying to figure out what I wanted to be when I grew up. This past winter, I picked it up again, rediscovering all the reasons I loved the book. Back in the mid-80s, I hadn’t programmed much—a few class projects, some home projects, a summer spent mucking around with 65C02 assembly language writing a simple graphical game. What the book captures so well—and what makes software development such a stimulating pursuit—is the satisfaction of making something from nothing, and the engrossing challenge of debugging your creation.
The story follows two groups—the Hardy Boys, Tom West’s hardware engineers who designed and built the Eagle—and the Microkids, Carl Alsing’s software developers charged with writing the 75-bit microcode implementing the Eagle’s instruction set. In one of the chapters, Kidder sits through a marathon debugging session where the microkids and Hardy Boys try to discover the source of flakiness causing the automated tests to fail. Speculation rages as to whether it is a problem with the Instruction Processor (the IP) or the System Cache; a case can be made for either. Step by step they hypothesize, experiment and evaluate results to track down the ultimate source–the need to insert a NAND gate delay the arrival of a signal thrown by the Sys Cache that was causing the timing issue.
Some problems are easy to find and hard to fix; some are hard to find and easy to fix; some go both ways. They have seen and will continue to encounter permutations of all three. This one was hard to find. It happens to be easy, almost trivial, to repair. Now Holberger and Veres know where the failure occurs. They move fast. Seen working at such a moment, they might remind you of a couple of airline pilots, in the cockpit of their big jet, preparing for takeoff—heroes of technique, flicking switches with both hands, reading dials, and talking to the tower all at once.
Still undecided on a major a year or two later, I found myself writing microcode for Doug Jones’ Computer Architecture class and the deal was sealed—I would finish up my computer science degree and try to find a job in the field of software.
The Soul of a New Machine is one of two literary books—Zen and the Art of Motorcycle Maintenance: An Inquiry Into Values is the other—that are essential reading for a developer wanting to get the right mindset for development, debugging and pursuing quality. It’s not that there aren’t great books out there that are just as essential covering the technical side of development or providing a specific methodology for software development. It’s that these two books focus specifically on the mindset, motivations and philosophy necessary to solve problems and find harmony with work. In these books lie the important values associated with valuable work. Soul, zen, values—these are the kinds of spiritual and philosophical terms you rarely find in technical books.
The truth knocks on the door and we say ’Go away, I’m looking for the truth’ and so it goes away. Puzzling.
—Robert Pirsig, Zen and the Art of Motorcycle Maintenance
You come away from TSOANM with the essence of the computer and software business at its best: the deep satisfaction of creation and the challenge of solving puzzles. These same attributes are found in novel writing, when you track and integrate complexity arising from multiple aspects operating at different levels: character , plot, theme, motif, language, pace. The most beautiful code in the world, the most elegant solution to a complex problem—neither are far afield from James Joyce’s Ulysses?
The Nature of Gothic
As the book winds down and the Eagle nears completion, Kidder finally gets to the heart of the matter—what it is that motivates these guys.
“In The Nature Of Gothic, John Ruskin decries the tendency of the industrial age to fragment work into tasks so trivial that they are fit to be performed only by the equivalent of slave labor. Writing in the nineteenth century, Ruskin was one of the first, with Marx, to have raised this now-familiar complaint. In the Gothic cathedrals of Europe, Ruskin believed, you can see the glorious fruits of free labor, given freely. What is usually meant by the term craftsmanship is the production of things of high quality; Ruskin makes the crucial point that a thing may also be judged according to the conditions in which it was built.”
This expository paragraph springs jarringly from Kidder’s narrative, and he elaborates on the specific culture of Data General—an environment where management guides the craftsmen to success at the same time it allows them the freedom to invent. While you can’t coerce the creation of a cathedral without attracting people willing to work for a higher purpose, you can affect the quality and the values in the work by giving the craftsmen the latitude to pursue their craft. Both purpose and latitude are necessary to create something great, and from the result alone can you judge whether these conditions existed during the work’s creation. In the result of the labor, the soul can be found.
Another distinguished critic has agreed with Gide — that old lady in the anecdote who was accused by her nieces of being illogical. For some time she could not be brought to understand what logic was, and when she grasped its true nature she was not so much angry as contemptuous. ‘Logic! Good gracious! What rubbish!’ she exclaimed. ‘How can I tell what I think till I see what I say?’ Her nieces, educated young women, thought she was passée; she was really more up to date than they were.
And it literally happens like that. If you’re building design-first, you’re saying, “The system will do XYZ - I’ll put that here.” But just because you know it’ll do XYZ, you don’t necessarily know how or where, and deciding ahead of time imposes an arbitrary and unnecessary structure on your code. So then you have a file called XyzFile, which is supposed to do XYZ, and then you have other code elsewhere in the system which actually does XYZ, and it’s in some other file, because the design you imagined will always be different from the design which emerges. It’s like coding in Java. There’s the structure of your actual program, and the structure that Java requires you to accommodate. That second structure is just unnecessary mental overhead, and the bigger your system gets, the more wasteful that overhead is. You’ll have a structure that emerges naturally, whether you want to or not. It’s as inevitable as gravity. You might as well just let the macro follow the micro, like it’s supposed to, and get the good design which emerges naturally as a byproduct of that process.
Forster uses the anecdote to point out how the meaning of the work emerges from the act of writing, much in the same way that Bowkett illustrates how good design, if good design exists at all, naturally emerges from the act of writing the code.
And perhaps in this connection exists a new mantra for agile programming: how can we know the software’s design until we see how it’s coded?
January 25th, 2008 — BRK.B BWLD PETS stock contest
One Asian and European mini-crash, a monster fed cut, and one stimulus package later, here’s the carnage for my 2008 contest picks: down -11.05%, and in second place. Of the collective picks in the contest, only one stock–that blue chip of widows and orphans, PetMed Express Inc (PETS)–is up a stunning 3.14%. On my own picks, my best two–Berkshire Hathaway (BRK.B) and Buffalo Wild Wings (BWLD)–are down just a couple of percent.
January 8th, 2008 — BRK.B investing PHO stock contest stocks water
Here were my 2008 stock picks for this year’s family stock contest. We take the closing price on 12/31/2007, so the current streak of eight straight losing days for the NASDAQ put us all in a big hole.
Stock
Starting Price
YTD
Berkshire Hatha Class B Ord Shs
4736.00
-6.78%
Mindray Medical International Ltd
42.97
-8.03%
PowerShares Water Resource Portfolio
21.40
-6.45%
Buffalo Wild Wings Inc
23.22
-7.97%
Mueller Water Products Series A Ord Shs
9.52
-10.82%
Central European Distribution Corp
58.08
-5.35%
Cognizant Technology Solutions Corp
33.94
-9.81%
Grant Prideco Inc
55.51
-1.44%
YTD: down 7.08%, and the family pickers are down 6.18%.
I picked these with a little less analysis than I normally do before making a trade, and perhaps relied a little too much on the Motley Fool community recommendations as a screening tool to find eight I liked. I had briefly considered ISRG, but passed on it as too pricey (turns out it is in fact down almost 16% YTD). I picked PHO based on Paul Kedrosky’s love of water (and predictions that “blue is the new green” for 2008, meaning that environmental talk will turn from global warming to the implications for water.
BRK.B appears to be a safe port in down years. The rest are just small to midcap stocks that I think have the potential to appreciate significantly if the market does turn around.