I grew up in Beachwood, OH, a suburb of Cleveland, privileged with a mother who ensured that I had lots of books at my reading level and supported my hobbies. My dad used to asked us kids to find square roots of four-digit numbers at the dinner table. I wasn't a particularly early reader but started making up for it voraciously and was reading unabridged classics like 20,000 Leagues Under the Sea by age ten.
My first computer was mechanical, received as a gift in 1969 when I was eight or nine years old. It was a DigiComp I, with one three bit register and no storage and needed assembly from plastic and metal parts. I learned some boolean logic from reading the manual and running the programs, but one of the plastic parts broke before my reading level allowed me understand how the programs worked. To me, the programs for this 3 bit computer were either trivial or inscrutable.
Like many of my peers, I was into the space program, knew the various rocket names, and had plastic and cardboard rocket models. I built (from kits) and launched model rockets off and on from ages 9-16.
I stopped reading classic novels and read all the good science fiction I could find, especially Heinlein, Asimov, Blish, and Bova. I was a big Tolkien fan too, which was weird in Las Vegas in the late '70's.
New the Readers Digest Treasury for Young Readers, which had an article by Martin Gardner (p. 176) that described how to build an exhaustive decision tree evaluation machine for a 3x3 chess game called "hexpawn" (see photo). It was presented as a "learning computer" because you played random moves and kept only successful paths. You were supposed to acquire one matchbox for each of 24 possible states reached after one move for each side (2 plies). You also needed colored beads to put in the matchboxes for each move in that state. I made a simpler but equivalent record-keeping implementation on paper that opened my eyes to what a computer could be.
At age 11, I read theThe only book about computers in the Las Vegas public library in 1974 was full of block diagrams and descriptions of specific systems. It was too vague to help me in any practical way.
I first saw real computers at age 13. My Dad, an early computer enthusiast, bought the first true programmable calculator, the HP65, when it first came out. It could store 100 keystrokes and had ten registers. He never had much time for programming but I learned all about it and wrote a casino-rules blackjack program to help with his card counting hobby. After that, I never stopped writing software for fun.
Around age 15 my Dad bought an IBM 5100, which was a 55 pound "luggable" computer that came with BASIC and APL and used magnetic tape cartridges. It had MSI (as opposed to LSI or VLSI) logic, was build in Boca Raton, and was the precursor to the IBM PC. He hired a programmer but I got to use it too. I was in heaven, learning both languages and typing in long code listings from magazines, having to adapt them to its somewhat unusual version of BASIC.
At the same time, I started hanging around my high school computer room, which had two model 33 Teletypes with 110 baud acoustic couplers that could be connected to the school district's mainframe or to the UNLV mainframe (via questionable accounts socially hacked by my peers who had UNLV professor parents). There was no computer class but we played computer games at lunch and I wrote BASIC programs to help with math and chemistry homework.
That summer we started sneaking onto the UNLV computer building and were eventually adopted by the staff as unofficial T.A.'s. I took a UNLV FORTRAN class where we had to submit our first assignment (only) on punched cards. The staff let me use the special APL graphics terminal with a 300 baud acoustic modem and I got heavily into APL.
Meanwhile, my dad's $75/hour IBM 5100 programmer delivered an unusable mess with lousy performance because it read from the tape drive after each action. I gave it a try and provided a program that loaded all the data at runtime and had a much more efficient workflow. My software ran that part of his accounting for the next five years. This success got me permission to hang out at the IBM office and learn RPG II on a System/34 computer.
I also played around with a Kim-1 6502-based microcomputer board but I didn't learn much assembler and the cassette tape drive interface failed soon after I got it.
I competed on the debate team throughout high school. My partner and I became one of the top two teams in Nevada. From debate I learned a lot about the complexity of real-world issues, which has greatly informed how I see the world. Debate should be a required class.
I entered a combined college program designed for three years at Occidental and two years at Caltech. Oxy had just acquired a Prime 400 minicomputer with 9600 baud CRT terminals. I had a great time with my friends writing game programs like chess and a much enhanced version of the classic Star Trek teletype game that ran in real time and used VT220 character graphics to show the short and long range sensor grids.
During my first summer break I worked for Business Computer Consultants in Las Vegas. My supervisor was an accountant who knew some programming and he specified each screen for me to implement on the now familiar IBM 5110, an upgraded 5100 with dual 8" floppies (120 lb for the unit)
Back at Oxy I became a T.A. and technician, wiring up new terminals and fixing broken ones, and was a sysop for the schools IBM 360.
One evening a student I'd never met needed help using a statistical program I'd never used before, nor had I taken stats. I couldn't figure out his problem quicky enough and he got a kind-of despairing look on his face and left. I don't remember seeing him after that and he transferred to Columbia the next year, I didn't hear about him again until 2004 when he was the keynote speaker at the Democratic national convention. After a few minutes Claire, who had classes with him, yelled "Oh My God! That's Barry!". You can hear her tell it at 3:20 into this NPR clip. After awhile I remembered that, 23 years previously, I'd failed to provide effective computer support to Barack Obama.
In 1981 I got a part-time intern job at JPL conducting radiation dose analysis (Monte Carlo simulations) for the Galileo mission to Jupiter, which was really cool for a former space geek. My team had 3D models encoded in rows of numbers. Because I had access to the same type of graphics terminal I used in high school, I wrote 3D visualization software for the models, which helped considerably.
I learned assembly language around this time and did an independent study class where I wrote the start of an APL interpreter in assembly language on the Prime minicomputer.
In 1982 I moved to Caltech and tested into a graduate-level computer graphics course taught by Jim Blinn, one of the pioneers of computer graphics, having been a student of Ivan Sutherlands and the University of Utah. We had a room full of really excellent 68000-based HP 9826 microcomputers with 4-bit 600x320 graphics, 4MB RAM, and 5MB hard drives. Each student coded a complete graphics pipeline down to the pixel level.
I also designed and wired a stereo level display build on a 6800-based board with an analog-to-digital input chip and an LED display that showed left and right stereo channels or four frequency channels.
In my second years at Caltech I completed a VLSI class. I also took Blinn's advanced graphics course and wrote a chip design tool that I used to design an 4-bit multiplier chip. I had to write a lot of 68000 hand-coded assembler to make it fast enough. I loved the Motorola 68000 and hated the Intel instruction set with a passion until I later got interested in 80286 chip architecture.
Still at JPL, I moved to a group that calculated the intertial properties of each of Galileo's individual parts. This was needed because half of its 2500 kg rotated at 3 rpm. I got to go into the clean room a number of times to inspect and weigh parts. I was responsible for all of the cabling and shared an office with two old-time JPL mechanical engineers in a rickety old building that had once been a spacecraft assembly bay but had been retrofitted with two floors of offices.
I stayed at JPL after graduating in 1984, enjoying the beach and music in LA, hiking in the mountains, often bike commuting seven miles up into the hills, down into the Arroyo Seco, and back up to the lab.
Also in 1984 I acquired a newly-released IBM AT, which was the first widely available 1 MFLOP computer (when overdriven to 8Mhz by swapping out the 6Mhz crystal). I ported my college graphics pipeline to the PC and spent many evenings writing programs of all kinds, learning C in the process.
I extended the graphics pipeline to allow digitizer tablet input for describing cable routing and tracking a complex cable's individual wire components (10% of the weight was cabling). I had to write a buffered serial chip (UART) program to make it work reliably.
As Galileo wound down I also became system manager for the group's new network of microVaxes and CAD terminals and did some spacecraft configuration design too. I hacked together, in the days before GUI's, a superior secretarial word processing system by integrating WordPerfect, the new Microsoft mouse, and fonts installed on the new HP LaserJet+.printer.
In 1987 I moved to Ithaca NY to marry Claire, who was getting her master's at Cornell. We loved Ithaca and enjoyed the somewhat post-hippie granola environment compared to LA of that time. Over the next wonderful 26 years we learned from each other, raised two very excellent children, and became long distance cyclists on our tandem.
I worked for Ithaca Software on their HOOPS 3D graphics application development toolkit, using many different hardware platforms and GUIs, and traveling to customer sites for custom implementations.
I moved to Bellevue and Microsoft in 1989 when my wife graduated. My new Microsoft team was just starting to design a kernel mode multimedia subsystem for a totally new 80386sx-based PC to be built by IBM as a consumer device. Before too long, the overall collaboration with IBM ended and that hardware project died.
My team w
as tasked with specing the hardware and software for the new industry standard Multimedia PC (MPC) specification for Windows PCs. We collaborated with lots of outside companies and as part of the new Interactive Multimedia Association. I wrote the Media Control Interface (MCI), and the CDROM and lasar video disc drivers. For the first time there was a standard PC with 640x400x8 graphics, a CDROM, a mouse, and a sound card. This was a really fun time for me when all of my colleagues were young, none of us had kids, Microsoft was just starting to make a splash in the world, and we all knew we were doing something new and special.After we built the MPC software we added a content team and supported their creation of the Encarta CDROM encyclopedia and other cool stuff. The hybrid team also built a new prototypes for sophisticated authoring systems that didn't go anywhere.
In 1994, after helping prototype what became the Windows Clockwork pipelined multimedia component, I joined a new 3D graphics and multimedia team that was tasked with writing Hollywood-level 3D software for new powerful set top boxes that were going serve up content for home customers on their TVs. The joke was that Microsoft wanted a nickel every time somebody ordered a pizza. This was all based on cable protocols without any regard for the Internet or the just-emerging World Wide Web.
After a few months of home-grown design, Microsoft bought Softimage, a Montreal-based Hollywood-level special effect software company. My team wrote an IRIS GL emulator that let us run Softimage 3D's one million lines of Unix-based code uder Windows Open GL nearly without modification.
In 1996 I joined Splash! Studios, a new game company run by my old multimedia friend Patrick Ford. We shipped a first-of-its-kind live-action kids' game with good acting, original songs, 3D rendered backgrounds and the head Power Ranger as the lead. It was good-quality family entertainment. Unfortunately, the company shut down for business reasons less than a year after I got there.
I moved to Visio and worked on almost every part of it at one time or another, shipping three major releases up through Microsoft's acquisition of the company. I became the lead of a small test tools team that supported our transition to becoming an Office product. I also ran 250-computer test lab. I loved our new corporate headquarters built out near the Pike Place market and became a regular bike commuter on the I-90 trail from my house, sixteen miles away in Bellevue.
Around 2000 I became increasingly interested in math, especially math history, and I read a lot and worked through problems in topology, differential equations, and other textbooks. By 2003 I'd had seven years volunteering as a mentor in the Bellevue School District. I left software and earned my teaching degree from Antioch University, getting certified to teach high school math or physics.
I taught computer classes at Seattle's Cleveland High School for one year. I often learned Dreamweaver features just a few days ahead of my class but posted walk-throughs of each new lesson before every class. I was also a school-wide computer and A.V. tech (building a simple multi-user case tracker in Access). I taught a computer hardware class. Our "hardware" was a large unused wood shop filled with cast-off obsolete donated computers. We organized all the stuff and they learned how to bring them back to life, install Windows, and network them together along with some printers. It was a lot of fun because there were just a few students and there wasn't much of a specific lesson plan - we mostly learned by doing what was needed.
I' d hoped to to teach math in Seattle but wound up as a math teacher at Woodinville High School for the next five years, creating lots of cool content. I loved working with the students and my math department teachers. Several classrooms were covered in very cool student-created murals depicting famous mathematicians and their areas of interest. I was able to sometimes incorporate math history and broader math applications into lessons.
During school vacations I learned LAMP programming, worked on a bunch of small programming projects, and learned a lot about the Semantic Web. I switched all my personal computing over to Linux in order to get good at the platform.
I joined Intentional Software in 2012 because of its commitment to semantic modelling. I worked on a graph layout projection, a really fun spacecraft control software project with JPL, and on Intentional's partnership with David Allen's "Getting Things Done" paradigm. I wrote drawing features for a Whiteboard precursor and then I was a program manager for awhile on Whiteboard and on a fun kidpix-like program. Since 2016 I've worked on the developer support team and for the last year have focused on building design tools.
Note: Logos and images are included on this page under Fair User provisions. No association with any of the associated entities is implied.