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.
Summary
Experienced leader, engineer and innovator who has played a key role
in the development of dozens of successful products used by 100s of
millions of users.
Leader of engineering teams (development, QA, release, PM) from 3 to 50
strong.
Technical lead or principle developer on a wide gamut of products from
development tools, system software, virtual machines and web browsers
to creative tools, entertainment and education applications.
Holder of 20 US Patents in mobile, content delivery and
development technology.
Keywords
I have worked in many areas: mobile, IoT, web technology;
virtual machine, computer language, and programming platforms;
UI, multi-media, mapping and location based systems.
A few keywords:
-
Language: Java, C/C++, Swift, Objective-C, JavaScript/TypeScript,
Python, Sh, PostScript, Various Assembler.
-
OS: watchOS, iOS, macOS, Android, DangerOS, Un*x/Linux, Palm OS,
EPOC/Symbian, RIM, BREW, Windows.
-
Web: [X]HTML, CSS, SVG, XML, etc.. (implemented and coded)
-
Other: SQLite, Postgres, Oracle, MySQL, OpenGL, Core Graphics,
Core Audio, MapKit, WebKit, SceneKit, JVM.
Work experience
Apple Inc.
Cupertino, CA
September 2018 - Present.
Engineer
-
Building insanely great products!
Descript, Inc.
San Francisco, CA
September 2017 - 2018.
Engineer
-
Descript, Inc. is building a new category of media creation tool
that makes audio & video editing, as easy as editing text.
-
Descript was born out of the same named creative tool I developed at Detour.
A founding employee, worked on expanding the platform reach of Descript from MacOS; to Windows, Linux and Web.
Detour
San Francisco, CA
2015 - 2017.
Engineer
-
Developed Detour's tool for creating creating our augmented reality audio tours - Descript.
-
Detour's Descript provided mapping tools to layout and edit geo-location
based paths, outdoor or indoor; audio tools for multi track sample based
editing and sound design; and word processing capabilities for editing
scripts, testing scratch audio, and ultimately incorporating the audio
word processor capabilities that provided the foundation for Descript, Inc..
-
Co-developed the Detour audio engine for MacOS/iOS, on Core Audio/AV.
-
Worked closely with the Detour creative team to develop the 100s of
location aware outdoor walking, biking and driving audio tours, and
with museum curators to develop indoor location based museum tours
including the award winning SFMOMA guided tours.
-
Detour was acquired by Bose to drive their AR endeavors
Sopwith Software. San Francisco, CA
2013 - 2017.
Principle
-
Sopwith develops Avionics simulation software.
NOOK Media, LLC
(a subsidiary of Barnes & Noble)
Palo Alto, CA, 2011 - 2013.
Director of Software
-
Led application software development for the NOOK™ line
of digital reading products: NOOK Simple Touch,
Glowlight, Color, Tablet, HD and HD+; NOOK for Android, NOOK
for iOS, and NOOK for Windows 8.
-
Hired and managed a team of ~50 engineers and engineering
managers, contractors and consultants in Palo Alto, San
Francisco, New York, Seattle, Thailand and Russia.
-
Led the team through dozens of product releases, averaging 3
new hardware platforms per year and a software release every
two weeks.
-
Reorganized the team from redundant silos per platform/product into a
more modular, cross platform structure;
enabling a greater range of products and
increasing the speed that
features could be released across the
portfolio,
improving product
quality through greater re-use,
and increasing moral across the team.
-
Led software development for NOOK Simple Touch (now NOOK
Glowlight), the first E-Ink based reader with touch, and
NOOK's most long lived (and currently only in-house) hardware
product.
-
Initiated, staffed and over saw many key content initiatives,
including: NOOK Comics, (new) NOOK Newspapers, multi-platform
NOOK for Kids (picture books), fixed format content,
downloadable dictionaries, NOOK for Web.
Moteiv / 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 / IEEE 802.15.4 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, July 2002 - September 2002.
-
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.
Hewlett Packard.
February 1985 - May 1991.
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
-
United States Patent 8,595,308
System, method, and computer program product for server side processing in a mobile device environment
-
United States Patent 9,456,048
System, method, and computer program product for server side processing in a mobile device environment
-
United States Patent 9,953,584
Lighting techniques for display devices
-
United States Patent 10,269,303
Lighting techniques for display devices
-
United States Patent 10,445,052
Platform for producing and delivering media content
-
United States Patent 10,564,817
Techniques for creating and presenting media content
-
United States Patent 10,923,043
Lighting techniques for display devices
-
United States Patent 11,228,864
Generating unexpected location notifications
-
United States Patent 11,262,970
Platform for producing and delivering media content
-
United States Patent 11,294,542
Techniques for creating and presenting media content
Education
Monash University, Melbourne,
Australia. Bachelor of Engineering, Electrical and Computer Systems 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-2022 David Williams
<djw@djw.org>