My exposure to PCC began the day I ran off a listing of the Small-C compiler, strapped it to the back of my motorcycle (which must have been a BMW if memory serves) and ran it over to the local office of Dr. Dobbs. This was an unsolicited and unexpected visit, so you can appreciate the look of puzzlement when I said "Here's a compiler for a subset of the C language. Sorry all I have is hard copy. Want to run it?"
"Sure," they said, "just give us a day or so to look at the code to make sure it does what you say it does. Er, a compiler you say? C to 8080 ASM code? You wrote this? Sure you don't have it on mag tape or something?"
At the time, I was working a couple blocks away at SRI (aka Stanford Research Institute) as a fledgling roboticist.
Not content with programming in Bliss-11 all day, I spent the nights trying to make my Polymorphic 8080 (with 48K RAM!) a more powerful machine by teaching it C. This powerhouse ran at 1.8 mHz and had a single sided disk drive capable of around 80K bytes. The notion of making a compiler for it was a learning experience, to be sure, and recounted in the article that ultimately accompanied the software listing.
Fear might have reached deeper into Dr. Dobb's heart if they realized this was only my 2nd C program -- the first being "hello world". It had taken me several days to read the big white "C" manual across the street at Kepler's Book Store. At $20.00, it was too expensive to buy, so I had to commit it to memory before trying to program in this interesting new language. I sort of cruised through some of the harder bits (structures), and figured I could map my Bliss-11
knowledge onto what remained to construct an integer-only subset of the language. Anyone who experienced version 1.0 of Small-C (which came damn close to being "C-minor") will remember that pointers had some interesting "properties" and that the expression "5( );" makes perfect sense if you want it badly enough.
Well, to shorten this tale, the code was published. Requests for copies other than hard-copy came in over the next few weeks, and I must have spent $200 for return postage to people who asked nicely (or said they were a school). Boy, giving stuff away gets expensive fast! I'll have to learn that lesson one of these days...
Over the next few months, I spoke quite a lot over the Arpanet with folks who were extending it and wanted another version. The Robotic work was overwhelming my time, and J.E. Hendrix volunteered to do a cleanup pass over the code. Over the next few months and years, Mr. Hendrix was extremely gracious about doing all the work in making updates while continuing to give me credit for the original code. He ultimately sent me a copy of his book on the subject -- which I have still. As a sign of the times, an award given to me for contributions to the C language had to be presented in absentia -- I was working 100 hour weeks getting an arc-welding robot into shape for a demo.
Then, as happens, someone put my life on fast-forward. I continued to work in Robotics at SRI till 1987, then moved to Borland, where I worked for the next 12 years, programming in -- what else -- C and C++. And lest anyone be foolish enough to think my C background would make me a contributor to the languages group, I found an opening in the database group. I knew 8080's cold by then (and had even designed and built a bit-slice processor based on AMD 2903's) but had no idea how these new fangled PC thingee's worked -- or databases either if it came to that. But if I could write (some might say "wrong") a C compiler without knowing C, why should I need to know PC's or databases to contribute?
For those who are interested, my Borland experience was:
I left Borland in '99 and spent 2 years working at a .com startup, only to have it vanish in a puff of smoke over a single weekend. If it matters in any cosmic book anywhere, the software was complete, and all the hard technical hurtles had been crossed.
- One of 4 engineers to build the Reflex flat-file database.
- Architect for Paradox for Windows -- running a dead-heat race
against the ex-Borlanders at Microsoft writing Access
(the difference being that they got compensated in actual
currency and could afford to advertise).
- One of the architects for JBuilder 1.0 and 2.0 (Java IDE)
I am now back inside the Borland building complex working for another startup.
I guess that if one were to summarize my professional career to date, one would say that it has been an unbroken chain of fun and (usually) successful products. I still consider writing code to be extremely rewarding, and I spend most of my time doing it.
I guess I am also somewhat of a novelty in the Silicon Valley in that I have been involved since the early days of personal computers, have rubbed elbows with quite a few folks, have a long string of "successful products", but never struck the Silicon gold mine. As they say, "Life is what happens to you when you are making other plans". I am a living data point that you can work hard and "succeed" in Silicon Valley and still be in debt and living in a very modest home.
But at the same time, as I look over all my work since 1975, the only things that standout are the faces of the people with whom I worked. Yes, I've worked more all-nighters and weekends than I can remember -- but none of them seem to have made it to long term memory (aka hysterical amnesia). But I can picture every single person I've worked with, remember the things we talked about, and part of me thinks I could go back and visit with them anytime I wanted.
The technology changes during my professional career have been staggering, and by necessity, I have had to follow along. Would I have opted out for a cabin in Montana if I had struck it rich? That's a question I can't answer -- yet, or perhaps ever. If I had it to do over again today and could either give away Small-C again or try to launch a software company from the idea (remember, this was B.G. -- Before Gates) -- which would I do?
Of course I'd do it all over again, just the way it played out. It has been fun.