David Williams
Objective
To make great software that people really like using, and in the
process to build a great company that people like working for.
Areas of specialty
I have worked in many areas: web technology, handheld computing,
user interface, object oriented design, programming tools,
languages, multi-media, database technologies, etc. My key
skills and interests include:
-
Mobile gadgets and platforms: PDA, phones, smart phones,
DangerOS, PalmOS, EPOC, RIM, PocketPC/WinCE, BREW.
-
Building Web technology: browsers, [X]HTML, JavaScript, etc..
-
Programming Systems and Language design (OO, 3GL, and Visual).
-
User Interface Design (aesthetics, usability) and Technology
(X/Motif, Windows, MacOS, AWT/JFC, PalmOS).
-
Digital Audio, MIDI, etc..
-
Database (OODBMS and RDBMS: ObjectStore, Oracle, HP ALLBASE).
-
UNIX/Linux, DOS/Windows(3.1, 95, NT), MacOS, C/C++, Java.
Work experience
Sentilla Corporation.
Redwood City, CA, September 2007-Present.
Head of Engineering, July 2008-Present
-
Responsible for all software and hardware development, QA and
release activities at Sentilla.
-
Leading development of Sentilla's next generation hardware and
software platforms.
-
Developed product specification for Sentilla's range of ready
to run application products. Researched and specified vendor
provided hardware and software components; organized the team
to best capitalize on Sentilla's core competences and to
deliver industry leading products in a timely fashion.
Senior Engineer, September 2007-July 2008
-
Co-developed the underlying JVM running on a 48K, 16 bit,
ultra low power micro-processor.
-
Developed the core java.* class libraries.
-
Led the effort to achieve Java CLDC certification, working
with Sun to develop a testing regime for this field of
computing.
-
Ported the JVM to 32 bit ARM based hardware platform.
Danger, Inc.
Palo Alto, CA, September 2002-September 2007.
Director, Browser Engineering.
-
Manager and lead engineer responsible for Danger's web, WAP
and scripting technologies.
-
Led engineering team designing and developing the 2.0 Danger
web browser. The Danger 2.0 web browser uses a client / server
architecture. The client side is implemented in Java and runs
on a 50 MHz ARM powered hiptop. The
server side is a farm of Linux machines running a multi server
content transcoder implemented in C++. The browser provides
good performance and all the modern features users expect in a
web browser - rich HTML/XHTML, color and style support,
JavaScript, security, and tight integration with the Danger OS
and hardware.
-
Designed and developed many server side components, including
the HTML byte code emitter, headless proxy rendering
engine, ...
-
Designed and developed the device side DOM, event, drawing,
selection, scaling and zooming subsystems; Java and
JavaScript language bindings. Designed many subsystems to
provide a manageable balance between features and
performance. Worked with the rest of the team to develop the
JavaScript language engine and Browser application features.
-
Using a combination of C and ARM assembly, enhanced the Danger
JVM and tool system to include support for floating point,
java.lang.Math, 64 bit integers, and wide instructions.
-
Developed many non-Browser features in the Danger platform,
including: spell check and global find.
-
Managed and helped maintain the deployed Danger 1.0 legacy web
browser (a crufty old code base), while the new browser was
written from scratch.
-
Implemented the WMLScript language module, WTIA telephony, and
other features of the Danger WAP browser.
-
Worked closely with Systems Engineering and NOC teams to
provide users with a reliable, high performance browsing
experience.
AvantGo, Inc.
San Mateo, CA, May 1998-September 2002.
Chief Engineer.
-
In my four plus years at AvantGo, I was the principle designer, and
lead developer for the bulk of AvantGo's handheld
technology. In addition, I managed 20 engineers and 2 first
level managers, and lead the release of the AvantGo 5.0
product - AvantGo's most sophisticated undertaking. I finished
up as Chief Engineer for the company, with overall
responsibility for technical decisions on all products.
Manager, Browser Engineering, July 2001-June 2002.
Manager, Web Technology Team, July 2000-June 2001.
-
Principle designer, engineer, and later project manager for
AvantGo 5.0 browser. AvantGo 5.0 is the most advanced handheld
browser available with support for all modern standards such
as Dynamic HTML 4.01 / XHTML 1.0, CSS I/II, DOM Level I/II,
and JavaScript 1.4. AvantGo 5.0 uses a distributed
client/server model, with the server running on Win32 and
Unix, and the client running on PalmOS, WinCE, Win32, RIM,
Symbian EPOC, and Linux.
-
Designed a very low footprint, cross platform database system
for handhelds with support for C/C++/JavaScript
APIs. Developed an implementation on Palm, then lead
development on 4 other platforms. This project provided the
base technology for the
On-device database access and
XML data sync for web-based applications
of AvantGo's
M-Business Anywhere Application Edition
product.
-
Designed and developed a tool which takes interface
definitions in IDL and generates bindings, header files, and
stubs for C/C++ and dynamically bound languages (JavaScript/Java).
-
Designed and developed with QA an automated test harness to exercise
the browser's parser, DOM and layout engine and test for failures
and other regressions.
-
Manager of 20 person browser engineering team, including 2
first level managers.
-
Designed, and lead development of the AvantGo 5 release party.
Architect, Handheld Web Products, May 1999-June 2000.
-
Designed and developed the AvantGo 5 HTML engine - a low
footprint, high performance, web browser engine supporting
Dynamic HTML 4.01 / XHTML 1.0, CSS I/II, DOM Level I/II, with C/C++
APIs and dynamic bindings for script languages like
JavaScript.
-
To provide a rich feature set within the constraints of
handheld devices, many innovative technologies where
developed, including: sophisticated memory managers, soft copy
on write virtual memory, a powerful cross platform graphics
sub-system, server side proxy layout, multi-language API
binding system, and more.
-
Developed multi platform development framework with support for
PalmOS, Symbian EPOC, RIM, PocketPC/WinCE, Win32, and Linux/Unix.
-
This core engine became the basis of AvantGo's
enterprise
and
consumer
products from AvantGo 5 forward. The high portability of the
code base, and the development methodology established, has
allowed AvantGo to support all the significant handheld OS
platforms with relative ease.
Senior Engineer, May 1998-April 1999.
-
Senior Engineer developing AvantGo browser 1.X through 3.X for PalmOS.
Designed and developed many browser features including
find, HTML
SCRIBBLE
(digital ink) tag,
Symbol scanner
support, color support, C/C++ plugins mechanism,
and on device
DOM
interface.
Improved font support, and added support for user installable
font families. Improved HTML layout engine, adding new tags
and improving performance.
-
Developed new multi-segment linker for
PalmOS
(multilink),
enabling applications > 64k in size. Enhanced
existing PalmOS tools: gcc, build-prc, and ppmtoTbmp, etc.
-
Sole engineer developing Navigator
3.0 Gold for Unix (Gold added an integrated HTML page editor to the
standard Navigator). Designed and developed HTML page editor user interface,
render engine enhancements, platform specific save/publish libraries, editor
engine, etc. Co-developed cross-platform editor core (from 2.02, through
3.0 and 4.0). Ported to 14 Unix platforms, established organization wide
C++ development environment on those platforms. Also, developed many enhancements
for 3.0 Netscape Navigator browser client, including tool tips, documentation
strings, etc.
-
Lead engineer for Communicator
4.0 Composer
(HTML Page Editor) and Messenger
HTML Compose (HTML Mail Editor). Co-designed and developed new 4.0 user
interface framework, Composer and Message Compose (HTML & Plain Text)
user interfaces. Enhanced core editor engine, render engine. Developed
many enhancements for Navigator browser, including color pickers, file
picker, etc. Acted as senior consultant to team members for design issues,
development tools, etc. Developed many development tools, including: easy
to use performance profiler integrated into Navigator, and a tool (gtscc)
for automatic rescoping of program elements through dependency analysis
and controlled recompilation. Ported Communicator and Navigator to MkLinux/Linux-ppc
(for fun).
-
Member of team developing
Grendel, a
Java based mail client for Netscape's Java based 'Javagator' web
client.
-
Technical lead for client cross platform technology team,
with responsibility for Navigator/Mozilla's HTML layout,
imaging, and general cross platform portability.
-
Helped drive establishment of mozilla.org,
responsible for 'freeing' the cross platform (and a lot of the X user interface)
code in Navigator.
-
Wrote a C++
Portability Guide to provide guidelines to new mozilla.org
contributors.
Kaleida Labs, Inc. Mountain View, CA, July 1994-Dec 1995.
Staff Engineer.
-
Senior engineer developing the ScriptX
multimedia programming language. ScriptX combines a dynamic, object oriented
language, and VM, with a rich multimedia class library. ScriptX titles run with
100% portability on Windows(3.1,95), MacOS (68k, PowerPC), OS/2.
Winner 1996 New Media magazine Hyper
Award for multimedia tools. Co-designed, and developed a new persistent
object storage system for ScriptX. Designed and developed high performance,
low footprint storage sub-system with excellent dynamic load performance
from CD-ROM, and net-based servers.
-
Worked with ScriptX developer Calliope to develop the highly regarded Crazy
for Ragtime title.
-
Supported marketing team at trade shows and demos.
Lucid Inc. Menlo Park, CA, May 1991-June 1994.
Senior Scientist.
-
Lead user interface engineer for Lucid's award winning Energize Programming
System. Energize uses a distributed object oriented, client/server architecture,
and provides a powerful, integrated, incremental development environment
for C/C++ programmers. Winner of the 1992 Software Development Magazine
JOLT Product
Excellence Award in Languages & Development Environments. Design
responsibility for all user interface components. Developed and maintained
X/Motif based tools, including highly regarded graphical browser. Developed
and maintained large components of Energize's leading edge object oriented
kernel.
-
Architect for internationalization of Energize, developed I18N libraries
on three platforms.
-
Designed and developed installation system for product.
-
Represented company at technical seminars, panels, trade shows, customer
site visits.
-
Worked with marketing to develop marketing materials and strategies for
Energize.
-
Presented in 30 minute demonstration video for Energize.
Senior Software Engineer, Scientific Instrument Division,Palo Alto,CA,
July 89-May 91.
-
Member of lab team developing a new laboratory information management system
(LIMS). Specified, designed, and implemented a smart object archival system,
easy to use database creation tool, and several system support modules.
Designed and persistent object library layered on Oracle RDBMS.
-
Developed many tools to improve team productivity, including improved Oracle
SQL 'C' pre-processor, source control management tools, and documentation
tools.
-
Led team to investigate next generation user interface for the system.
Senior Technical Support Engineer, Australian Software Organisation,
Mar 88-June 89.
-
Team leader for group supporting HP SQL tools (4GL, QUERY, report writer,
etc..).
-
Developed tool for automatic generation of applications from database schema.
-
Developed training materials, edited newsletter, customer consulting, managed
Beta Sites.
-
Investigated next generation visual programming, and SQL tools.
-
This position involved extensive work in US, Canada, Germany, UK, and Australia.
Technical Support Specialist, Computer System Division, Cupertino, CA,
June 87-Feb 88.
-
Provided technical, and sales support to US and Canadian HP divisions,
field sales and support teams.
-
Trained engineers, support teams and customers in HP ALLBASE/4GL.
Software Development Engineer, Australian Software
Organisation, Feb 85-June 87.
-
Member of lab team developing
HP Allbase/4GL
- a visual programming tool, and language for developing
cross-platform RDBMS applications. Development work included
user interface, language parsing, virtual machine (byte code)
development.
-
Invented, designed and implemented a new high-speed tape
archival tool for UNIX:
ftio(1)
- still (!) included as part of the standard HP UNIX shipment.
-
System manager for network of 6 HP 9000 UNIX, and HP 3000 machines.
-
Developed Austpac/X.25 PAD control and monitoring software.
-
Developed software suite for automated performance testing,
data reduction, presentation.
Other Interesting Hacks
-
multilink
- the multi-segment linker for PalmOS applications.
Multilink was the first tool to enable applications > 64k on PalmOS.
-
par
- the PalmOS database Swiss army knife.
-
Victor 3.5
- 100,000 users can't be wrong :-)
-
MacOS extensions enhancing PowerBook, and Mac Classic machines.
-
SunOS TCP/IP based multi-timbral audio compositor/server,
MIDI-player client.
-
Simple MIDI-player program for HP workstations.
-
MIDI librarian, and data stream processor OS extension for Atari ST.
-
Developed very fast DAG layout algorithm, later incorporated
into Energize.
-
Numerous utilities for Apple II (long time ago).
Patents
-
United States Patent 7,337,173
Compiler having global element optimization
-
United States Patent 6,341,316
System, method, and computer program product for synchronizing
content between a server and a client based on state
information
-
United States Patent 6,421,717
System, method, and computer program product for customizing
channels, content, and data for mobile devices
-
United States Patent 6,553,412
System, method, and computer program product for web content
aggregation and development, and web content delivery to
clients
-
United States Patent 6,779,042
System, method, and computer program product for enabling
on-device servers, offline forms, and dynamic ad tracking on
mobile devices
-
United States Patent 6,839,744
System, method, and computer program product for administering
channels, content, and data for mobile devices
-
United States Patent 7,000,032
System, method, and computer program product for syncing to
mobile devices
-
United States Patent 7,263,547
System, method, and computer program product for customizing
channels, content, and data for mobile devices
-
Patent Application 20060136571
System, method, and computer program product for executing
scripts on mobile devices
Education
Monash University, Melbourne,
Australia. 1980-1984
Electrical and Computer Systems
Engineering, Degree of Bachelor of Engineering.
Activities and interests
My spare time is a mix of technology, arts and the outdoors. I enjoy listening
to and playing music, hacking software and electronics, motor racing, running,
hiking and skiing.
References
Are available upon request.
© 1995-2008 David Williams
<djw@djw.org>