David Strickman Fox
February 12, 1959
My background is in user interface technology, and my
talent is implementation. For many tasks (such as making the computer
hardware work properly), the best user interface is no user interface:
it should just work. To paraphrase Einstein, the number of questions
the user must answer should be as few as possible, but no fewer.
Publications and Conference Papers
- Experience Report: Using Functional Programming to Manage a Linux Distribution
Clifford Beshers, David Fox, Jeremy Shaw, ACM SIGPLAN International
Conference on Functional Programming 2007.
- Composing Magic Lenses,
David Fox, ACM SIGCHI '98. Discusses how to implement
Magic Lenses that can be placed on top of one another to yield
useful and interesting results. The method developed uses a
variation on class inheritance called Dynamic Inheritance.
- Pad: An Alternative Approach to the Computer
Interface,
Ken Perlin, David Fox, ACM Siggraph 93.
- The RightPages Image-Based Electronic Library for
Alerting and Browsing, Guy A. Story, Lawrence O'Gorman, David Fox,
Louise Levy Schaper, H. V. Jagadish, IEEE Computer, September 1992.
(Also see the RedSage project.)
- U.S. Patent #5,350,303,
Method for Accessing Information in a Computer, Filed 10/91.
David S. Fox, Hosagrahar V. Jagadish, Lawrence O'Gorman, Guy A. Story.
Covers the idea of displaying
page images while using the hidden results of OCR.
- Anti-aliased Ray Tracing with Covers, David Thomas,
Arun N. Netravali, David Fox,
Computer Graphics Forum
8(1989).
Professional Experience
- 2001 - 2007: Software Engineer Linspire, Inc.
- The company is developing an operating system based on open source
technologies to provide an alternative to Microsoft operating
system products. The revenue model is subscription and service based.
- I am the team lead for hardware compatibility. Team responsibilities
include
- updating and integrating kernel support for new hardware,
along with ancillary software for hardware functionality,
- developing and supporting the Linspire hardware detector, and other software
which configures and monitors hardware such as network management,
hotplug management, etc.
- Gathering and analyzing hardware
and general operating system information from our user's machines
- Developing database plus web client tools to make this hardware information
useful to various departments in the company
- Since the Linspire engineering team is small, I have been intimately involved
with all non-web engineering issues.
- I wrote our first warehouse program, which reprocesses all the
software products in the Linspire warehouse (an extended
version of the Debian Linux distribution) with menu entries that conform
to our specifications and other modifications.
- We are currently writing a set of development tools to provide to the
developer community. This includes
- An autobuilder, which allows the building of packages in a controlled build
environment targetting different distributions on a single machine. It is integrated
with various source code management systems, such as CVS, TLA, APT, Subversion, and eventually
Mercurial, Darcs, etc.
- A repository manager, which allows packages to be uploaded to a Debian style
repository.
- ISO remastering
- Build and install package version dependency handling
- 2000: Software Engineer exobox, Inc.
- A startup company developing software for a Smalltalk
based Internet Appliance system.
- Smalltalk development using the Squeak environment
- Developed a new Linux distribution for an embedded system with 16
megabytes of disk and 32 megabytes of RAM. The main innovations
close attention to minimizing the requirements of each package
and dividing many of the standard packages into smaller sub-packages
to break dependency loops.
- Worked on Linux kernel support for USB and flash memory devices
- Worked on Linux boot loader support for flash memory devices
- Reverse engineered a number of Internet Appliance platforms both
of competitors and partners.
- 1998 - 1999: UCSD Department of Cognitive Science -
Post Doctoral Position
- Continued research on multi-scale user interface systems with
professor Jim Hollan.
- Ported Bederson's Pad++ system from Tk to Scheme.
- Development of automatic foreign function interface generator
for the Bigloo Scheme compiler.
- 1989 - 1993: AT&T Bell Laboratories, Murray Hill -
Member of Technical Staff
- Research and development of a digital library system called
the RightPages, the first system to allow access to both
the graphics and text of scanned print documents.
- Hyper-linking of table of content entries to article pages.
- Used optical character recognition to allow full text search.
- E-mail alerting based on user interest profile when new documents
arrived.
- Document analysis using a geometric grammars describing the
document layout.
- 1985 - 1988: AT&T Bell Laboratories, Murray Hill -
Senior Technical Associate
- Became a full employee of Bell Labs.
- Worked on graphics algorithms with Arun
Netravali,
now President of Lucent Bell Labs. Several fast anti-aliasing
algorithm projects, one publication
- Tested development versions of Bjarne Stroustrup's new extensions to
C, now known as C++.
- Encryption and graphics research with Don P. Mitchell (developer of
ClearType at Microsoft Research.)
- 1984: Powerbase Systems, New York City - Programmer/Analyst
- An an early `user friendly' database written (unfortunately) in
BASIC.
- Wrote software development tools in C and BASIC
- 1983 - 1984: AT&T Bell Laboratories, Murray Hill, New Jersey -
Consultant
- Worked with Interactive Video Research Group, part of the
Computer Systems Research Group (aka area 1138, later 1125.)
- Worked on some computer graphics and interactive videodisk projects
- Wrote an assembler for Ikonas graphics engine microcode.
- Wrote a Chyron emulator, which is something related to character
generation for live video.
- Investigated fractal surface generation, a hot topic at the time.
- 1982-83: Brown University, Providence, Rhode Island -
Research and Teaching Assistant
- wrote a syntax directed editor and interpreter for Pascal
- Teaching Assistant for Andy van
Dam's Graduate Computer Graphics
course
- Languages: Pascal, C
- Systems: BSD Unix on VAX 11/780, Three Rivers' PERQ,
and Sun Workstations.
- 1978-79: Applied Data Research, Princeton, New Jersey -
Programmer
- Porting the EMPIRE financial modeling system to run on a
Honeywell 6000.
- Wrote a character based business graphics software package for
EMPIRE, handled issues of axis labelling, range normalization,
scatter plots for multiple data sets, etc.
- Probably Fortran.
- 1977: Princeton Gamma Tech,
Princeton, New Jersey -
Programmer
- Programming for an X-ray spectrum analyzer system.
- Alpha Microsystems assembly language.
- ongoing: Fox Enterprises Inc. real estate, Piscataway, New Jersey - Vice President
Education
- 2000 - present: UCSD Department of Cognitive Science -
Visiting Scholar
- 1991-98: Ph.D., New York University Department of Computer
Science, Media Research Lab.
- Worked with Ken Perlin
on multi-scale user interfaces
- Dissertation title: Tabula Rasa: A
Multi-scale User Interface System.
- Implemented Tabula Rasa (in Scheme)
- Taught Introduction to Computer Science section for one
semester, also lectures on C++ and Unix
- LISP, Scheme, CLOS, PERL computer languages
- Began working with the Linux operating system
- Created DISMAL (Dis Mode Ain't Lotus), a spreadsheet calculator
for Richard Stallman's GNU Emacs
editor, soon to be part of the
official GNU Emacs distribution.
- 1987-89: M.S. Columbia University Department of Computer Science.
- 1978-83: B.Sc. Brown University Department of Computer Science.
- Teaching Assistant for graduate level computer graphics course
taught by Andries van Dam
- 1972-77: Member R.E.S.I.S.T.O.R.S. Computer Club
- Computer club featured in Ted Nelson's seminal book `Computer
Lib / Dream Machines,'
- Member from 8th through 12th grade.
- Fortran, Snobol-4 (Spitbol), PL/I, JCL on an IBM 360/91 mainframe
(using punched cards!)
- PDP-8 and PDP-11 assembly language
- Fortran, SAIL (Stanford Artificial Intelligance Language), and PDP-10
assembly language
- 3-D computer graphics on an Evans and Sutherland LDS-1 (line drawing
system with a hardware matrix multiplier) attached to the PDP-10.
References
Compile time options are bugs.