Sr. Software Engineer
10+ years professional experience in the development of compilers, software tools, and
programming at the software-hardware interface on both production and pre-production platforms.
10+ years development of desktop applications and platforms.
Skills and Expertise
- C, C++, Java, Common Lisp, Scheme (extensive programming experience)
- HTML, Python, Javascript, Prolog, Pascal, Ada, Standard ML, Smalltalk (working knowledge)
- UI toolkit and event-driven programming
- Multi-platform development (Windows, MacOS, Linux)
- 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 bytecode representation and optional static typing).
- Maintenance, feature development, and optimization of the Actionscript 3 virtual machine.
- Principal maintainer of the Actionscript VM in the Adobe Flash Runtime from 2015 to product
end-of-life. Projects included security hardening of the JIT and memory allocator and ports to additional platforms.
Maintenance and feature development for Adobe Media Encoder.
- Projects included an overhaul and continued maintenance of a media encoding server, integration of new codecs into the
desktop product, and diagnosing performance issues.
Maintenance and feature development for (Photoshop) Neural Filters.
- Projects included a ground-up re-engineering of the graph construction API and serialization machinery
for the graph-based image processing library that serves as the C++ core of the product.
Development of server infrastructure for generative AI products/services including Adobe Firefly.
- Contributed to development of a server based on infrastructure repurposed from Neural Filters (C++).
- Developed Python bindings for the re-engineered graph-construction API.
- Contributed to development of a new server infrastructure for generative AI services (Python).
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.)
- Trimmed down the Squeak virtual machine for use with Newspeak and prepared our
version for external open-source release.
- Performed preliminary design of a 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 the C/C++ compiler team, contributed to ongoing GCC community
compiler development efforts, including gimple-tuples and LTO (link-time
optimizer).
- 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 a CMS workaround for USB transfer glitches in audio streams that had
become a major customer issue.
- Implemented a virtualized (CMS-emulated) northbridge configuration and legacy
VGA interface (HW control registers) for a 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 a static pipeline hazard checking tool to check dynamic translations
generated by CMS, closing a significant gap in testing coverage.
- Implemented core infrastructure for a link-time “whole program” optimizer
and retained responsibility for core architecture for the duration of the 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 the 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 an additional half-time engineer working on the compiler.
- Presented compiler roadmap and fielded community feedback at the 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 the reference compiler to conform to published
language specification, allowing company to strengthen conformance testing
of licensee products.
- Coordinated closely with the 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 a white paper on the eve of annual JavaOne trade event to counter
a competitive attack.
- Advised JDK project management team in the 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 an incremental “on-the-fly” static semantic
analyzer for language-based programming environments. System translated
declarative specifications in a DSL of my own design into an executable analyzer.
Dissertation available online.
- Developed an 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 a code generator for an Ada compiler.
- Developed an 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
- Completed Adobe internal machine learning course (via Coursera)
- Avid collector of vintage minicomputers from the 1960s and 1970s