David Williams
Objective
To make great technology that people really like using, and in the
process, build a great company that people really like working for.
Areas of specialty
I have worked in many areas: mobile and handheld computing, web
technology, pervasive computing, programming languages and
tools, multi-media, user interface and graphics, database
technologies. My key skills and interests include:
-
Mobile gadgets and platforms: phones, smart phones, PDAs,
DangerOS, PalmOS, Symbian, RIM, Windows Mobile, BREW.
-
Building Web technology: browsers, [X]HTML, JavaScript, etc..
-
Programming Systems and Language design.
-
User Interface Design and Technology (2D/drivers to widgets to apps).
-
Digital Audio, MIDI, etc..
Work experience
Sentilla Corporation.
Redwood City, CA, September 2007 - May 2010.
Head of Engineering, July 2008 - May 2010.
-
Responsible for all software and hardware development, QA and
release activities at Sentilla.
-
Led the development of Sentilla's Pervasive Computing platform - built
on Sentilla's postage stamp sized, Java Powered, wireless, ultra low
power technology for the Internet of Things. Winner of the 2008
Duke's award, Sentilla's "Mini" was introduced by James Gosling at
JavaOne as the world's smallest Java computer.
-
Led development of Sentilla's range of ready to run application
products including Sentilla Energy Manager - an energy management
solution for managing power in data centers. Built on
J2EE/Glassfish, Linux, Python, and Postgres, SEM is delivered as a
ready to run 1U appliance.
-
Developed product specifications; researched vendors and
specified 3rd-party 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 Sentilla JVM running on a 48K, 16 bit, ultra low
power micro-processor (TI MSP-430).
-
Ported the Sentilla JVM to 32 bit ARM based hardware platform.
-
Developed the core java.* class libraries.
-
Led the effort to achieve Java J2ME/CLDC 1.1 certification, working
with Sun to develop a testing regime for this field of
computing.
-
Co-developed a hardware and software manufacturing test harness for
Sentilla's PLCC68 format, Java on ARM, 6LoWPAN wireless single board computer.
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: JVM, networking, graphics libs, 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, tightly integrated with the language VM, GC, etc..
-
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,
including the UI revamp of Lucid Emacs (now XEmacs).
-
Developed GUI tools and libraries, including the graphical
object hierarchy, and call tree browser.
-
Developed 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
-
mespell
- Java J2ME spell check/suggestion library using affix
description, and optimized for a resource limited environment.
-
cassiCal
- a web based iCalendar subscription for aviation
equipment and personnel schedules. Integrates with
Google calendar, iCal, iPhone maps, dialing, etc..
-
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
-
United States Patent 7,840,647
System, method, and computer program product for executing
scripts on mobile devices
-
United States Patent 7,987,420
System, Method, and Computer Program Product for a Scalable, Configurable, Client/Server, Cross-Platform Browser for Mobile Devices
-
Patent Application 20010047394
System, method, and computer program product for executing scripts on mobile devices
-
Patent Application 20020046296
System, method , and computer program product for syncing to mobile devices
-
Patent Application 20020052916
System, Method, and computer program product for customizing channels, content, and data for 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, flying, motor racing, running, hiking and skiing.
© 1995-2011 David Williams
<djw@djw.org>