William H. Maddox III
Cupertino, California
wmaddox3rd AT gmail DOT com
www.language-engines.com
Sr. Software Engineer
Over a decade of professional experience in the development of compilers, software tools, and
programming at the software-hardware interface on both production and pre-production platforms.
Skills and Expertise
- C, C++, Java, Common Lisp, Scheme (extensive programming experience)
- HTML, Javascript, Prolog, Pascal, Ada, Standard ML, Smalltalk (working knowledge)
- Compilers: parsing, semantic analysis, code generation, optimization
- Static program analysis and verification tools
- Dynamic binary translation and VM-based language runtimes
- Industry-standard PC (x86) platform architecture
- Hardware-level (device driver/kernel) programming and debugging
- Hardware lab procedures and use of test equipment, e.g., PCI and USB bus analyzers
- Implementation of interactive programming environments
(“on-the-fly” analysis)
- Programming language extensibility and generative programming
Professional Experience
Adobe Systems,
San Jose, CA
(12/2009-present)
Sr. Computer Scientist - SW Dev.
Virtual machine development for Actionscript (extended Javascript
with bytecodes and types).
- Co-developer of AVM4 runtime for the Flash Player Next project.
- Currently principal maintainer of the Actionscript VM in the Adobe
Flash Runtime.
Cadence Design Systems,
San Jose, CA
(9/2008-1/2009)
Architect
Member of a four-person team building Newspeak, a Smalltalk-derived language
and platform for collaborative networked applications.
(Project terminated and position eliminated in restructuring.)
- Slimmed down the Squeak virtual machine for Newspeak and prepared it for external release.
- Performed preliminary design of VM-level object serialization mechanism to
allow bootstrapping from an empty Squeak VM without a base image.
Google,
Mountain View, CA
(4/2007-9/2008)
Software Engineer
As member of C/C++ compiler team, contributed to ongoing GCC community
compiler development efforts, including gimple-tuples and LTO (link-time
optimizer) branches. Also performed compatibility testing of application
codebase against new compiler releases.
- Implemented serialization of types and global declarations for LTO.
- Converted optimization passes to new tuples-based IR.
- Corrected issues in Google codebase revealed by new compiler releases.
Transmeta Corporation,
Santa Clara, CA
(11/2000-3/2007)
Member of the Technical Staff
Implemented enhancements and fixes to Code Morphing Software (CMS) for Crusoe
and Efficeon processors. Implemented validation and optimization tools.
- Developed CMS workaround for USB transfer glitches that had become a major
customer issue.
- Implemented virtualized (CMS-emulated) northbridge configuration and legacy
VGA interface for Crusoe-derived system-on-a-chip.
- Adapted CMS power management code for the new SOC platform.
- Implemented thermal diode calibration mechanism for Efficeon CMS.
- Diagnosed CMS failures during Efficeon bringup and validation.
- Identified a race condition in the Linux kernel pagefault handler as
the actual cause of system failures originally attributed to CMS.
- Extended static pipeline hazard checking tool to check dynamic translations
generated by CMS, closing a significant gap in testing coverage.
- Implemented core infrastructure for link-time “whole program” optimizer;
retained responsibility for core architecture for duration of project.
Sun Microsystems,
Cupertino, CA
(6/1997-10/2000)
Staff Engineer
Technical lead for the JDK reference compiler (‘javac’) in the Java Software
division.
- Transitioned compiler to new purchased codebase, including acceptance
testing, preparing early-access release, and adapting for full command-line
compatibility with previous compiler.
- Coordinated with compiler vendor; relayed bug reports and integrated code
drops.
- Directed work of additional half-time engineer working on the compiler.
- Presented compiler roadmap and fielded community feedback at annual JDK
Tools and Libraries birds-of-a-feather session at JavaOne.
Member of the Technical Staff
Member of the ‘javac’ engineering team.
- Evaluated, prioritized, and resolved compiler bug reports. Provided
feedback to users and licensees.
- Corrected numerous failures of reference compiler to conform to published
language specification, allowing company to strengthen conformance testing
of licensee products.
- Coordinated closely with Java specification lead during preparation of
JLS 2e to assure resolution of errors and omissions in the first edition
exposed by bug reports against the compiler.
- Co-authored white paper on the eve of annual JavaOne trade event to counter
competitive attack.
- Advised JDK project management team in rotating role of engineering liaison
(“Lead Engineer”) during development of JDK 1.2.2.
Additional Relevant Experience
Graduate Student Researcher, UC Berkeley
- Designed and implemented incremental “on-the-fly” static semantic
analyzer for language-based programming environments. System translated
declarative specification of constraints into an executable analyzer.
Dissertation available online.
- Developed extensible language and compiler permitting user-definition of
additional language constructs while retaining robust error reporting and
static typechecking.
Report available online.
Research Programmer, Carnegie-Mellon University
- Designed and implemented code generator for an Ada compiler.
- Developed attribute grammar evaluator generator for static semantic
analysis in a transformation-based programming environment.
Education
- Doctor of Philosphy, Computer Science, University of California, Berkeley
- Master of Science, Computer Science, University of California, Berkeley
- Bachelor of Science, Applied Mathematics, Carnegie-Mellon University, Pittsburgh
Other
- Member Association for Computing Machinery
- Member IEEE Computer Society
- Awarded AT&T Bell Laboratories Scholarship
- Avid collector of vintage minicomputers from the 1960s and 1970s