Objective
To work in a small- to medium-sized group on an innovative project in
any or all of my areas of experience and expertise: operating systems,
object-oriented runtimes (virtual machines), server application
development, or language processing (both human and computer).
Work Experience
Senior Software Engineer: Android team, Google.
October, 2005 - present
- Tech lead for the virtual machine team (including core library
implementation)
(Google is very cagey about letting the world know what's happening
on the inside.)
Senior Software Engineer: Firmware team, Danger, Inc.
October, 2002 - September, 2005
Danger designs, develops, and sells a series of products in the
cellphone-pda convergence space. Danger's main product
is sold through T-Mobile under the "Sidekick" brand name; with other
carriers, it is sold as the "hiptop."
- Rewrote the heap and garbage collection code in order to
reduce collection duration and frequency, and so as to support
weak and soft references
- Made the system more standards-compliant (CLDC-1.1 in
particular), by implementing new VM and library features, and by
fixing pre-existing but non-compliant features
- Wrote most of a
stdio implementation from scratch, based on
official specs, manpages, and observed behavior of existing
implementations
- Improved performance of critical pieces of the system, often by
writing the most commonly used code in assembly (ARM/Thumb), including:
- the core VM interpreter
- several primitive graphics operations
- the big-integer arithmetic library
- key parts of the audio encoding and decoding library
- Designed, wrote and improved build-time tools, including:
- a spec-compliant Java classfile/bytecode verifier (written in
Java)
- a converter from Java classfiles into Danger's internal bytecode
format, which includes bytecode translation as well as several
optimizations (written in C++)
- a Unicode table manipulator, which generates optimized tables for the
class
java.lang.Character (written in Java)
- a "virtual machine compiler" to generate optimized interpreter
code for multiple targets, from a single specification (written in Java,
with parsers generated by ANTLR)
- Made major improvements to the device simulation environment
- Contributed to the development of Danger's custom class library
- Wrote font manipulation tools, and designed two font families (one
retroactively)
- Identified (and sometimes fixed) bugs in the ARM/Thumb backend of
gcc
- Took on role of resident Java expert, advising other application and
library developers on how best to use the language
- Wrote a couple of games for the platform (written in Java)
Cofounder and Chief Software Architect: Volvox Technologies.
September, 2001 - August, 2002
Volvox Technologies developed a novel system in the area of
distributed computing in Java, but unfortunately failed to secure
funding.
Cofounder and Chief Software Architect: Xigo, Inc. (formerly, aka BrokerBot)
February, 1998 - May, 2001
Xigo developed and hosted software that allowed investors to get
information in a more timely, more precise, and more pleasant fashion than
any other company offered to the general public.
- Designed and prototyped components including:
- the market data feed simulator
- the stock trading engine
- the Scheme-based compiler/interpreter
- the user database
|
- the Master Control Program
- the custom web page generator
- the front-end web pages
|
- Was architect qua Architect, researching possible development tools
and strategies, setting development standards, and being a good
example; as such, was instrumental in developing Xigo's monthly
development/deployment cycle, based in part on XP principles
- Coordinated development inside the engineering department, making
sure that the right developers developed the right stuff and talked with
the right other people about problems and issues; similarly, acted as an
initial point of contact for other parts of the company; in general, kept
things running smoothly inside the development group
- Developed components that actually made it into production, including:
- the internal system monitor
- the communications infrastructure, including a small (but
spec-compliant) embeddable web server
- the library of cross-component utilities
- Was the designated realist
Architect and Engineer: Electric Communities (later,
aka Communities.Com)
May, 1996 - April, 1998
- Architect of the E compiler.
E was a superset of Java geared towards secure concurrent distributed
programming.
- Took over from previous developer, with the tasks of increasing
efficiency, simplifying the design, and adding new functionality as
demanded by the higher layers of the system
- Worked on a team including remote contractors to simultaneously
develop the compiler and runtime
Designer and Engineer: Vicarious, Inc.
February, 1995 - April, 1996
- Worked on many aspects of a cross-platform CD-ROM-based title engine:
- Designed and implemented the text index and search facility
- Designed and implemented the internal text markup engine
- Enhanced the persistent object storage system
- Created data conversion tools for various text-like formats,
including structured SGML markups and heuristics-driven pseudomarkups
(importing books from word processors and page layout programs)
Designer and Engineer: ScriptX
group, Kaleida Labs, Inc.
March, 1993 - February, 1995
- Designed and implemented the platform-independent thread system
- Designed the collection class hierarchy, and implemented much of it
- Designed and implemented object system enhancements including tag-bit
object support, multiple dispatch, and method-style instance variable
access
- Worked on increasing the elegance of the system; dubbed "the
maintainer of the object model"
Designer and Engineer: Sweetpea group, Kaleida Labs,
Inc.
July, 1992 - May, 1993
- Designed, implemented, and generally worked on several software
components of a hand-held data player, including the text
search-and-retrieval system, the run-time object model (including
low-level data structures), the filesystem interface, the serial drivers,
and the power management system
- Ported the run-time object model from the Macintosh to Sweetpea, and
in the process made the code more platform-independent
Student Administrative Manager:
Student Computer
Consultant Program, Brown University
December, 1988 - May, 1992
- Wrote and maintained software for the Consultant
Program, including an electronic time card system
Designer and Engineer:
Sixth Judicial Circuit,
Pinellas County, Florida
June, 1988 - January, 1991 (intermittently)
- Designed and wrote an automated court calendaring system to replace
the pen-and-ink calendar books used by judicial assistants (approximately
20,000 lines of code)
- Worked closely with the then-future users of the system
Patents Granted
- Daniel R. Bornstein. "Optimizing code using dynamic common expression
elimination during runtime." Patent #AU2097901, published 2001-06-25.
- Daniel E. Rose, Daniel R. Bornstein, and Jeremy J. Bornstein.
"Analyzing input data streams using user criteria." Patent #AU2098301,
published 2001-06-25.
- Leonard G. Raymond, Daniel R. Bornstein, and Jeremy J. Bornstein.
"Notification and alert processing using a plurality of communication media."
Patent #AU4021301, published 2001-04-24.
- Leonard G. Raymond, Neill Kramer, Daniel R. Bornstein, and Jeremy J.
Bornstein. "For financial trading system." Patent #AU7611200, published
2001-04-24.
- Leonard G. Raymond, Neill Kramer, Daniel R. Bornstein, and Jeremy J.
Bornstein. "For user interface for a financial trading system." Patent
#AU7712200, published 2001-04-24.
Relevant Computer Knowledge
- Acronyms
- CDC, CLDC, CSS, EAN, HTML, HTTP, IRC, JSP, LRF, MIDP,
NNTP, SGML, SMTP, TCP/IP,
RMI, UDP, UPC, UTSL, XBM, XML, XSL, XSLT
- Languages
- ANTLR, awk, C, C++, E, Java (application and servlet, intimately
familiar with Java/JVM internals), JavaScript/ECMAScript, Lisp/Scheme,
Pascal, Prolog, Rexx, ScriptX, sed, sh/bash, SQL,
and of course several assembly languages (most recently ARM/Thumb)
- Programs
- Ant, CVS, Emacs, JUnit, Make, Perforce, Tomcat
- Operating Systems
- Unix (most familiar with Linux and Solaris), MacOS X, Windows/Cygwin
Education
Brown University,
Providence, Rhode Island
September, 1988 - May, 1992
- Major in Cognitive Science
(ScB) plus equivalent of Computer
Science (AB)
- Honors: magna cum laude, Phi Beta Kappa,
Sigma Xi
- Relevant coursework
- Independent Study in Computer Science: Wrote the
original server for the Brown Online
Course Announcement, a database engine for tagged text files
containing information about all of Brown's courses; was in production,
basically unmodified, for about 8 years, and is still used today
- Operating Systems: Wrote a complete (if small)
Unix-like operating system which included preemptive multitasking, a
non-trivial filesystem, interrupt-driven I/O, pipes, and signals
- Software Engineering: Wrote a "Robot War" game as
a member of a three-person team; designed and implemented the
PostScript-like robot control language
St. Petersburg High
School, St. Petersburg, Florida
September, 1984 - June, 1988
- Graduated from the International Baccalaureate program with honors
- Senior thesis in computer science earned highest possible score
- National Merit Scholar
Interests, Activities
Music, all aspects, from mere listening to composition and playing
(synthesizer and fretless bass, among other instruments), to dj'ing, to design and
implementation of software
music systems.
Electronic Publishing: I had a
personal web site before
it was hip (and still have one, now that it's post-hip).
Recreational Hacking: I enjoy putting together the
occasional personal software project. The Barcode Server is one of my
favorites. I also wrote the screensavers NerveRot, Barcode, Petri, and Twang,
which ship with
XScreenSaver, and I have
contributed to the Java-Gnome and ANTLR projects. I maintain a site for my own open
software.
Network Collaboration, including collaborative digital
art (as part of the OTIS/SITO project),
and putting together music CDs as part of the
rec.music.industrial CD project.
Various and sundry physical activities, including (but
not limited to) snowboarding and yoga.
Other Information
References and requirements will be provided at an appropriate
point in the job negotiation process.
Note, if you are reading this off-line, then
you may want to visit the web version at
<http://www.milk.com/home/danfuzz/resume/>. Permission is
granted to reproduce this page in its entirely, without modification.
Thank you. Copyright © 1992-2007, Dan Bornstein. All rights
reserved.