dan-halbert (42K)

Dan Halbert (Daniel C. Halbert)


See my LinkedIn profile for more detailed resume information.




2017-present: Adafruit Industries LLC. CircuitPython and related software.

2009-2017: MIT Lincoln Laboratory (subcontracting via Solidus Technical Solutions) . Face recognition. Speech recognition. Text processing. Graph databases. Federated enterprise databases. Ontologies. Web and message-based enterprise services.

2007-2009: EveryZing, Inc., now Ramp (BBN spinoff). Audio/video search using speech recognition technology. Systems development. Cloud computing.

1995-2007: BBN Technologies. Personalized Internet Newspaper. Architecture and systems design for speech recognition. Speech recognition technology and its applications: in-car, telephony, media transcription and search.

1993-1995: Ascom Nexion. Object-oriented work. Network management software.

1985-1993: Digital Equipment Corporation. Eastern Research Lab, Cambridge Research Lab. Object-oriented programming. Trellis/Owl programming language and environment. Pen-based computing.

1980-1984: Xerox Corporation. PARC and Office Systems Division. Smalltalk, Xerox Star, programming by example. (while a graduate student)

1979: Lawrence Livermore National Laboratory. S-1 computer project. (summer)

1975-1978: Bolt, Beranek, and Newman. BCPL compiler and other work. (while an undergraduate)


University of California, Berkeley: 1984, PhD in Computer Science. 1981, MS in Computer Science.
Dissertation research on programming by example (see below).
Co-invented the overlapping register windows mechanism used in the Berkeley RISC I processor chip, and later in the Sun Microsystems SPARC family of processors.

MIT: 1978, SB in Computer Science. Bachelor's Thesis: A Lisp Debugger for Display Terminals (PDF) (source code, from the saildart.org archive)

Programming by Example: SmallStar

My graduate work was in programming by example, also called programming by demonstration. In particular, I was interested in end-user programming and programming in the user interface.

My 1984 PhD thesis, Programming by Example (PDF) (HTML), describes PBE in a simulation of the Xerox Star office system. The system I built was called SmallStar, and was written in Smalltalk. I have the original source code and am very slowly trying to revive it.

While at Xerox, I made a 13-minute video demonstrating SmallStar and programming by example . Watch it here (reproduced by permission). Its quality reflects the video recording technology available at the time.

SmallStar is also described in Chapter 5 of the 1993 MIT Press book Watch What I Do: Programming by Demonstration, edited by Allen Cypher, and co-edited by me and several other people. The entire book is available online.

The Unix more command

I am the original author of the UNIX more command (ca. 1978). Here's a short history of how it came to be written.


Joel C. Acevedo-Aviles, William M. Campbell, Daniel C. Halbert, and Kara Greenfield. "VizLinc: Integrating information extraction, search, graph analysis, and geo-location for the visual exploration of large data sets". Proceedings of the ACM SIGKDD Workshop on Interactive Data Exploration and Analytics, August 2014.

Charlie K. Dagli, Kevin J. Brady, and Daniel C. Halbert. "Face recognition despite missing information". 2011 IEEE International Conference on Technologies for Homeland Security (HST), November, 2011, Waltham, MA, pp. 475-480.

Daniel C. Halbert. "SmallStar: Programming by demonstration in the desktop metaphor". Chapter 5 in Watch What I Do: Programming by Demonstration, edited by Allen Cypher, co-edited by Daniel C. Halbert, David Kurlander, Henry Lieberman, David Maulsby, Brad A. Myers, and Alan Turransky. MIT Press, Cambridge, Massachusetts, 1993. ISBN 0-262-03213-9.

Patrick D. O'Brien, Daniel C. Halbert, and Michael F. Kilian. "The Trellis programming environment". In Proceedings of the ACM Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA), October, 1987, Orlando, Florida, pp. 91-102. Published as SIGPLAN Notices 22(12), December, 1987, ACM Press.

Daniel C. Halbert and Patrick D. O'Brien. "Using types and inheritance in object-oriented programming". IEEE Software 4(5), September 1987, pp. 71-79. [Revised version of ECOOP '87 paper, below.]

Daniel C. Halbert and Patrick D. O'Brien. "Using types and inheritance in object-oriented languages". In Proceedings of the European Conference on Object-Oriented Programming (ECOOP), June, 1987, Paris, pp. 23-34. Published as Bigre + Globule no. 54, IRISA.

Daniel C. Halbert. Programming by Example (PDF) (HTML). Ph.D. dissertation, University of California, Berkeley, 1984. Also published as Xerox Corporation, Office Systems Division, technical report OSD-T8402.

Professional Activities

Colloquium speaker at Washington University (St. Louis, Missouri) Computer Science Department, November, 1993. Topic: Programming by example and intension and extension in user interfaces.

Publicity Chair, HOPL-II (ACM SIGPLAN Second History of Programming Languages Conference), Cambridge, Massachusetts, April 1993.

Member of panel on pen computing, ACM Computer Science Conference, Indianapolis, February 1993.

Treasurer, ASPLOS-II (ACM Conference on Architectural Support for Programming Languages and Operating Systems), Boston, April 1989.

Member of program committee, OOPSLA '88 (ACM Conference on Object-Oriented Programming Systems, Languages, and Applications), San Diego, California, September 1988.

Member of panel on classes vs. prototypes in object-oriented programming, OOPSLA '88.

Member of panel on the learnability of object-oriented programming systems, OOPSLA '86, Portland, Oregon, September-October 1986.