David Vandevoorde
Resume Although this page can serve as a resume, a more compact and somewhat more formal version is available in Adobe Acrobat (PDF) or PostScript format (on request). (This latter version also mentions various awards and achievements that I won't mention on-line.)
Contact 1039 Continentals Way #206
Belmont, CA 94002-3112
U.S.A.
daveed@vandevoorde.com
Recent Work
  • EDG engineer (current)
  • The Edison Design Group (EDG) is a remarkable company. With only three people (I'm now one of them ;-) they have created what is widely regarded as the most thorough and highest quality C++ front end available today. Many major hardware and software vendors licence this front end to integrate it in compilers and source analysis tools. Though the C++ front end is currently our largest and most famous product, we also sell a Java front end which is growing in popularity (the Java run-time is provided by Dinkumware).

    I first learned about EDG while I was a student trying to do some fancy things with templates. At the time, no decent C++ compiler was available for Linux, and so I was forced to use operating systems that I do not enjoy as much. Through some contacts I had with members of the C++ committee (ANSI J16) I heard that this EDG company might be willing to send me a demonstration copy of their front end (which could handle C++ templates better than any other). So we got to exchange some e-mails. A few months later John Spicer (EDG engineer and the world expert on templates and name lookup issues in C++) gave a talk for a special interest group in New York City. So, a friend and I drove three hours south to attend that talk and we finally got to meet Steve Adamczyk (president, owner, but also an EDG engineer and the world expert in overloading and access issues in C++) and John Spicer. Later we would meet at J16 meetings, and once they even came up to Troy, NY (see further) to give a talk at the school I attended.

    Several years later, Michael Anderson (the third EDG engineer at the time) decided to retire from EDG and I was asked to join. Although my job at HP was very rewarding, I felt this was a "one of a kind" opportunity and accepted the position---no regrets since then!

    The work environment is different: we all work from home (Steve and John are in New Jersey, I'm still in the San Francisco bary Area), and we discuss technical (and social ;-) issues by phone and e-mail. Being "on the inside" I now see where that legendary quality comes from... awesome engineering.
     

  • Tech Lead HP aC++ compiler
  •  
    A couple of years ago, Hewlett-Packard acquired Taligent's C++ front-end technology. I joined the company in late 1996, and through various circumstances ended up being the new architect for the compiler. In the mean time we were one of the first compilers with support for partial specialization and member templates (EDG beat us to the latter though.) aC++ is also still one of the only C++ compilers to perform maximal semantic checking at template parsing time.
    I was the company's ANSI J16 (i.e., the C++ standardization committee) representative. I started attending the J16 meetings while still a student, and highly recommend the experience!
    In practice, I did not code that much in my position, but instead spend much time communicating with customers, study and discuss new ideas for the aC++ compiler, and try to make sure everyone knew what was going on. Though different, that too was a very rewarding job.

    My decision to leave HP for EDG was in no way motivated by the conditions at HP. In fact, I often say that EDG was one of the very few companies that could have convinced me to leave HP for another technical position. The working environment at the Language Labs was truly awesome, and I still visit the aC++ team regularly.
     
  • C++ Solutions
  •  
    I was one of the lucky reviewers of Bjarne Stroustrup's The C++ Programming Language (third edition). After reviewing was over, Addison-Wesley asked if I would be interested in writing some web-pages with sample solutions to exercises Bjarne proposes in his book. When I sent in some first samples, it became clear I was piling up enough material for a book. It appeared on bookstore shelves in the summer of 1998.
    It's surprising how much work goes into a book, even beyond the writing itself. And yet, my book had a preset thread to follow; so the amount of research I had to do was limited. Even so, it's been an exhilarating project... I wouldn't mind taking on another one of these.
    Projects
  • Xroma
  •  
    I'm a co-inventor of Expression Templates (the other inventor, who also coined the term, is Todd Veldhuizen---we didn't know about each other until much later.) Expression templates are a C++ technique that, among other things, allows one to overload operators for arraywise expressions without incurring the overhead of extraneous temporaries or complex dynamic evaluation schemes. In effect, you "teach the compiler" new transformations.
    Although C++ templates are uniquely powerful in this way, it is not exactly convenient to write template metaprograms. So after I had written an approximate valarray implementation (for J16 mostly), I started designing a C++ companion language I called Lepton (because there were Photon and Proton C++ compilers at that time ;-). However, I quickly found I needed hooks into an actual C++ compiler, but was scared away by the complexity of such beasts.
    Soon after joining HP, I reworked the idea of Lepton and came up with a new programming language/system: Xroma. In its original incarnation Xroma focused on so-called Active Libraries: libraries that have an active effect not only at run-time, but also at translation time. A presentation of Xroma and active libraries at the Seminar on Generic Programming in Dagstuhl (Germany) received much good feedback.
    Recently, Christophe "Descubes" joined the Xroma movement (cough) and we separated the system (Xroma), from the language (renamed: Xrome).

     
  • comp.lang.c++.moderated
  •  
    This is an electronic forum for the discussion of issues relating to the C++ programming language. The group was created by some friends and myself to bring a forum that would be less encumbered by abusive postings than comp.lang.c++ was at the time. Each article submitted to the group gets reviewed by a moderator for form and contents (but not accuracy; if the topic is appropriate and the wording unlikely to be offensive, the article is accepted.)
    The RPI Computer Science department is nice enough to host the moderation server, and so for a while I was responsible for the little setup (the other moderators are scattered across North America and Europe.) In theory, I'm still responsible, but lately I have been much less active and I owe John Potter major thanks for revamping the scripts and keeping things working as we went through increased loads, large-scale external abuse and a platform migration. With all his work, the moderation system has become quite fancy indeed.
    Interests My technical interests are rather broad. Currently, I'm mostly interested in fields relating to computer software.
    I continue to dabble in algorithms; it used to be mostly numerical computing, but nowadays I also look at other things. I wrote an article about an amusing problem for Dr. Dobb's once (April 1998 issue): how to find the largest rectangular subarray of all ones in a 2D array of 0s and 1s?
    With my professional and leisure projects above, I guess it's also clear that I'm having fun with programming language design. Generally, I tend to put emphasis on run-time performance. So high-performance computing appeals somehow more to me than, say, Java applets.
    Finally, I had a chance to teach computer architecture while I was studying at the Rensselaer Polytechnic Institute, and I must say that teaching is a very rewarding activity.

    In the nontechnical areas, I try to play some guitar and occasionally some golf.  I'm also a devoted Christian, and like to study not only the Bible, but also various historical findings that surround it.

    Education
  • Brussels Free University
  •  
    I spent five years at the engineering school ending up with a degree that is about equivalent to an American M.S.E.E. (Master's in electrical engineering.) I enjoyed my time there, even though I remember it mostly as lots of hard work. A nice feature of university education in Belgium (in my opinion) is that it tries to ensure you cover many bases of your field. So even though you choose, say, chemistry as your major, you will be required to be a decent mathematician, a reasonable programmer, a bit of an electronics person, etc. In fact, once you have chosen a major, there is relatively little flexibility as to which courses you take: most are mandatory.
    My thesis work (1991) here was a lot of fun. I worked with Patrick Vankeirsbilck (who wrote an object oriented fluid dynamics solver while he was at the von Karman Institute for Fluid Dynamics). My main work consisted in writing 3D visualization tools for the structures he was producing. A good opportunity for me to tune my knowledge of C++, GL (the precursor of OpenGL), InterViews, and computer graphics in general. It also motivated the choice of my work at RPI (numerical computing.)
  • Rensselaer Polytechnic Institute
  •  
    Originally I just meant to spend a year getting a M.S. in computer science here, but Franklin Luk (my advisor) easily convinced me to stay for the Ph.D. program. So after a total of 9 semesters I finally left school (for now ;-). The years at RPI were amazing: it's a very solid school (focusing mostly on science and engineering) and the computer science department is large enough to be significant, yet small enough to allow students to mingle with all faculty.
    With Frank, I worked mostly on signal processing algorithms. My thesis centered on a very fast algorithm to decompose a certain type of structured matrices commonly occuring in signal processing applications. A nice benefit here was that I got to travel to conferences and see a bit of the world (e.g. I lived in Hong Kong for a little over half a year; visiting the Chinese Univerisity of Hong Kong.)
    The computer science department of RPI is also home to David Musser, who is one of the fathers of the C++ standard library/STL (along with Alexander Stepanov.) Strangely enough, we were largely unaware of each other's work on C++ until somewhat after I arrived at RPI. Since then we have been exchanging some ideas. David was also one of the organizers of the Dagstuhl Seminar I mentioned earlier on.

    19990103: [an error occurred while processing this directive]