[ ABOUT ]
The Formative Years
I have been programming computers for more than 35 years. My first exposure to computing was in elementary school where I took a computer course for kids at the local community college. I distinctly remember typing out simple BASIC programs on punch cards and feeding them to some sort of mainframe (most likely an IBM 360). Also, given that there were quite a few tech companies in the area, parents would sometimes organize ad-hoc tours or simply take a small group of us into the office off-hours to mess around. Because of that, I got to see all sorts of neat stuff--various mainframes, minicomputers, terminals, tape drives, band printers, and so forth. It was cool.
My first personal computer was an Ohio Scientific Superboard II system built from a kit in 1978. It had 8K of RAM and stored programs on cassette tapes. Later on, I upgraded to an Apple 2. I spent most of my time figuring out how various parts of the computer worked, programming video games, and dissecting parts of the operating system. I learned a lot about computers back then--especially with regard to assembly language programming, low-level hardware control, and reverse engineering. I still rely on those skills now.
From 1986-1987, I ran a popular dial-up BBS in the Denver area that specialized in public domain software for the Apple 2 and Amiga computers.
In college, I studied mathematics, statistics, and physics. After graduation, I went on to receive a masters degree in math where I specialized in numerical analysis. Although computing remained important, I was always more interested in practical applications than topics associated with theoretical aspects of computer science. Later on, I went on to receive a Ph.D. in computer science, but this was only after I got the opportunity to program the 1024 processor Connection Machine 5 supercomputer at Los Alamos National Laboratory. This machine was just sadistic enough to suit my tastes. At that time, these machines were rather new and unproven---thus, there weren't really any rules on how to program them.
The Connection Machine 5
Curiously, my Ph.D. dissertation had almost nothing to do with my initial interest in parallel computing. Instead, it was related to the Swig utility that I wrote to help add scripting language interfaces to scientific software. Today, this is mainstream practice, but in 1998 it was still a radical idea--many people had a difficult time seeing how a slow interpreted scripting language like Python, Perl, or Tcl would be of any benefit in applications that were all about high performance and serious number crunching.
Most of my professional work has taken place in a research environment, both at national labs and in academia. In 1990, I was hired as a summer intern at Los Alamos National Laboratory. For the next seven years, I worked part-time in the Condensed Matter Physics group in the Theoretical Division. I was the primary software developer for the SPaSM project--a software package for carrying out large-scale molecular dynamics simulations of materials.
In 1998, I was hired as a tenure-track assistant professor in the Computer Science Department at the University of Chicago. In this job, I achieved a certain amount of success (for instance, I even received a NSF Career Award grant). However, I'll freely admit that I never really clicked with certain aspects of the academic world. In 2005, the University and I parted ways after I didn't make tenure.
Since 2005, I have been working as an independent software developer, author, and teacher. Most of my time is split between developing software, writing, looking into interesting things, and teaching classes.
I can be contacted by sending email to "dave" at "dabeaz.com". [ Follow on Twitter ]