Dubman.com/narratives

UC Berkeley

Silicon Valley felt like the promised land in the spring of 1985 as my mother and I wound past verdant orchards on a pilgrimage to visit Apple on Bandley Drive in Cupertino, just as Steve Jobs was leaving to found NeXT. We also toured Stanford, which reminded me of a posh country club, but I was aghast to find out they hadn’t even opened Computer Science as an undergraduate major yet, which just seemed absurd to me. (They did so the following year.) I felt a stronger draw to Berkeley anyway, which I’d known from its core contributions to UNIX, the legacy of which lives on in Linux, iOS and macOS.

What decade is this?

In this era, the height of the Reagan era in the US, Berkeley still looked, felt and sounded as if the Sixties had never ended, preserved in patchouli-scented amber. You could have an interactive, multisensory nostalgia trip just strolling down Telegraph Avenue, but it went far deeper than that. It seemed as if the idealistic spirit of that era was somehow embodied there for posterity, like a San Francisco sourdough starter in the fridge that was ready to rise when needed. This was a bit of a culture shock coming from a small private prep school Back East, in a good way.

Life lessons

Looking back, maybe half of the enormous value I derived from my Berkeley experience was from the official classes, labs, books, lectures and problem sets. The other half came from everything else: the social milieu, new friends from faraway places, all night group study sessions, chance conversations, learning to navigate a vast bureaucracy, and building a new life a new city as a young adult.

Having skipped 4th grade, I was only 17 when I left for college. I then had the luxury (which didn’t feel so luxurious!) of five years of intense coursework, while continuing to advance my tech career on the side. This seemed like a good trade. I’m sure I got a ton more out of that last year at Berkeley than I would have in 4th grade.

Coursework

I was like a kid in a candy store with the UC Berkeley course catalog. The CS program felt like such familiar territory at this point that I decided to branch out and go deeper in math, to make the most out of this incredible opportunity. I actively sought out the most challenging honors math and physics and CS classes on offer, such as H-104, the honors upper division math analysis course with a professor (Marina Ratner) who had once flunked 18 out of 20 students because they didn’t meet her exacting standards. She was brilliant, and I wasn’t going to let that scare me! I got overzealous and took several such courses at once, which made them harder still, resulting in major stress.

I wisely figured math fundamentals and CS theory would contribute more lasting value towards a multi-decade tech career versus a deep dive into state-of-the-art 1980s digital electronics, graphics and database technology, which seemed certain to be supplanted quickly. I just studied those independently instead of wasting precious university class time on those topics.

I enrolled in a CS seminar with an amazing slate of guest lecturers I got to meet, including Steve Wozniak and Alan Kay. Beyond the typical coursework in analysis of algorithms, data structures, discrete math and all that, I studied graph theory and combinatorics, cellular automata, and numerical analysis, plus a generous helping of the humanities and liberal arts. I met few science and engineering majors in my music, history and Russian lit classes, and few liberal arts majors in those science and engineering classes.

Wrestling the Dragon book

The hardest CS class was compiler design, which used Lex, YACC, and the famous “Dragon Book” by Aho, Sethi and Ullman. The professor was Van Jacobson, while he was in the process of saving the entire Internet from collapsing under load. This class did not yield my best grade, but it was my best Computer Science experience as an undergraduate. It was in that class that I truly found my groove, collaborating on a three-person team with Viktor and Madhav, breaking big problems into smaller ones while eating apple pears, debugging, code reviewing and pair programming in C. We worked night after night in the basement of Evans Hall, several floors below the folks writing POSTGRES at the same time, in a grid of Sun workstations called “The Web”, several years before the actual web became a thing. Richard “rms” Stallman was often tapping away in Emacs, coding GNU (pre-Linux) one row over, where he couldn’t see we were all using vi. My experience on this self-directed team of 3 would inform the software engineering course I taught at Yale over a decade later.

I completed my degree in Applied Math with a Computer Science theory emphasis, even though part of me felt compelled the whole time to just jump out of school and straight into the software industry without finishing the degree, like the founders of Apple and Microsoft, because things were moving so fast and I wanted in on the action.

I studied hard, but my grades were far from straight As, because I was always more interested in maximizing my education than my GPA. I didn’t pay attention to my GPA at the time, don’t remember it now, and nobody ever asked for it, and if they did, I would just laugh. At the time, I couldn’t imagine postponing the jump to industry to go to grad school anyway. The one person I knew with a 4.0 seemed miserable, and I felt sorry for him.

Apple’s Project 2000 contest

One highlight came in the end of 1987 when freshman Boyd Waters and I did some major brainstorming and submitted a written entry to Apple’s “Project 2000” contest to design the personal computer of the future. This was during the era when Steve Jobs was at NeXT, and Apple’s product vision was a bit muddled, so they were scouting for ideas.

Our paper explored a wireless touchscreen multimedia notebook concept very similar in form and function to the iPad that Apple would release not 12, but 22 years later, building on Alan Kay’s famed vision of the Dynabook. Of course, it’s far easier to envision than to build. We got through the first gate, but the contest ended up being won by a team of seven that included Stephen Wolfram, a luminary I wasn’t ashamed to lose to. I wish I could track down a copy of the paper we submitted, as our idea was quite similar and it would make fascinating reading today.

The Happy Birthday machine

Another friend, Eric, later became famous for creating the Inktomi search engine and the CAP theorem. Eric had interned for Apple, and had made some super cool digital art that drew his girlfriend’s name in script with LEDs. He was briefly at least a billionaire… couldn’t happen to a nicer guy.

It was Eric’s art project that inspired me to design and build my own wire-wrap board from discrete electronics and TTL chips that synthesized the Happy Birthday song for my dad, note by note, and fit in the palm of his hand. I knew how to wire up an off-the-shelf CPU but it was more fun to do it from first principles. The Happy Birthday machine was like a self-contained, purpose-built tiny computer with a power supply and timers and multiplexers and oscillators and a speaker and a little hard-coded program. My dad was the one who had introduced me to electronics, computers and programming when I was a little kid, and I am filled with love as I reflect on this little machine I made just for him.

My first open source project bears fruit

For an extra challenge during a C programming class in the fall of 1986 that was mostly review, I wrote a version of the classic strategy game Othello (also known as Reversi), with an automated opponent good enough to beat the author on the higher levels. (I’m not sure what that says about me!)

I had internet access via my Berkeley UNIX account. Once I had the game working really well, I posted the source to what was then known as net.sources.games (back before the Great Renaming of 1987.) Here it is, preserved on Google Groups: Othello Game in C with Lookahead.

To my surprise and delight, on November 24, 1986, two days after I posted the source, a reply appeared from Ed Falk, an engineer at Sun Microsystems. It was a GUI version of the same game for Sun workstations, common at Berkeley. He wrote, “The original program was quite well written and very easy to hack. Congratulations.” He added, “By the way, that was the first program I EVER got off the net that compiled and ran the first time.”

This was my first taste of the power of open source development. A professional I never met fixed two minor bugs, refactored it, added graphics features and a makefile. I’m sure it helped that the code was richly commented. To some extent that came from my years of experience as a teacher. Most of the code I came across in my early professional career written by others was a lot less approachable.

College jobs: Teaching, a startup, then Microsoft

For the first two summers of college I was still teaching math, programming and computer graphics classes back in Chicago, at the Latin School, the high school I had just graduated from, where I’d been working as an instructor since age 15.

During my third year, 1988, I worked at a startup on the first color desktop publishing app, for the groundbreaking Amiga platform.

I spent the summer of my fourth year, 1989, in Redmond for a Microsoft internship, writing code that shipped in the initial release of Word for Windows.

In 1990, thanks to campus recruiting, I got an excellent full-time offer for a dream job - developing apps for the Mac that my own mother would use every day.

Word for Windows 1.0 screenshot

North to Northwest

After graduation, at age 22, I drove with my cat, Cauchy, from Berkeley to Seattle, to launch the next phase of my tech career, at a time when Microsoft was small, Starbucks and cellphones were rare, real estate was cheap, and Amazon and the web did not exist. In hindsight, that turned out to be a smart choice in more ways than one. I was sad to leave friends behind, though in the ensuing years, surprisingly many ended up in Seattle themselves.