|
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. |
|
|