Richard Gorton

rcgorton@verizon.net (H) 508-820-7672 (C) 508-395-8258

161 Temple St. Framingham, MA 01701

homepage: http://gorton-machine.org/rick

resume: http://gorton-machine.org/rick/professional/resume.html

Seeking: Positions enabling me to to create and ship new software products. I enjoy extending my breadth of knowledge and solving complex problems; delivering a new product is always interesting and fun.


Keywords: Compilers, runtimes, Linux, Android (internals), Windows, systems development, virtualization implementation, data-parallel, multi-threading.

Overview

March, 2015 to October, 2016: Sr. Engineer, OpenMobile World Wide

Conceptually similar to Docker Containers, but for Android apps on a Windows host.
Virtualization work to enable Android applications to run on Windows 8.1/10. Implement various Bionic APIs (Android libc) using native Windows mechanisms, performing semantic conversions where applicable. For example, pthreads, sockets/networking, pseudo-devices such as /dev/urandom, wchar_t conversions.
Extended existing ARM v7a Interpreter (VFP instructions)
Wrote a custom tool to automatically inject instrumentation code into an arbitrary Android .apk. The resultant apk logged method entry, parameter values, and return values. The tool was used by Windows and Tizen development teams

April, 2013 to March, 2015: Sr. Engineer, Cognitive Electronics

Lead compiler and runtime developer:
Implement an LLVM target for Cognitive's multi-threaded Data Parallel Architecture (big-data focused).
Assist in definition and refinement of the ISA, including estimation of gains of additional instructions via architectural simulator.
Enable compilation and link of arbitrary C++ and Fortran applications.
Ported libc (newlib, then musl) to the architecture.
Enhanced architectural simulator to support system calls and collect instruction-level performance data.
Use architectural simulator performance data to focus optimization enhancements in LLVM.
Implement test automation to verify compiler correctness
Set up cascaded Jenkins jobs to build compiler and runtime libraries

January - April, 2013: Independent Developer

Created a dynamic whole program path profiler in C++.
Created a low-level API library to support AMD's LWP (LightWeight Profiling) architectural extension, which requires modification of the Linux kernel.
Enhanced valgrind: support LWP, submitted patch

March, 2007 to December, 2012: Sr. Member Technical Staff, AMD

Developer on a dynamic binary optimizer for Windows7 and Linux. We attained 5%-7% reduction in rendering time for PovRay
Architected, developed and released the AMD String Library.
Developer for CodeXL, a unified GPU/CPU Profiler and GPU debugger for OpenCL on Windows7 and Linux.

October, 2001 to March, 2007: Software Engineer, Cisco Systems/Okena

Designed and implemented UNIX user-space buffer overflow protection mechanisms for Linux/x86, Solaris8/SPARC, Solaris9/SPARC.
Implemented in-kernel system call interceptors; designed and implemented call-chain evaluation code.
Maintained rule language compiler and interpreter.

August, 2000 to August, 2001: Member Technical Staff, API NetWorks

Maintained device drivers, system exercisers, and Linux kernel code.
Created a set of Linux kernel patches which boosted kernel performance by 40%.

May, 1992 to July, 2000: Principal Software Engineer, Compaq/DEC

Project lead for dynamic binary optimization: demonstrated at a corporate analysts briefing
Invited speaker at HotChips 11.
Project lead: modify the GNU tools to support the StrongARM 1500.
Enhanced GNU tools on Alpha, resulting in a 5% performance improvement.
Project lead for multiple binary translator products: MIPS/Ultrix, MIPS/Irix, and SPARC/Solaris.

October, 1985 to May, 1992: Sr. Software Engineer, Liant Software

Project leader for PL/I, FORTRAN, BASIC, and Pascal compilers
Improved performance by 200%-400% for a number of UNIX platforms.
Project lead for retargeting six compilers and a debugger to the WE32100 architecture.
Tools developer: maintained in-house development toolchain including source code control system, build system, and other tools used to develop compilers.
Ported Liant’s compilers and debugger to a wide variety of UNIX systems: 680x0, 80x86, SPARC, 88000, WE32100, NS32010.

January, 1985 to September, 1985: Software Engineer, Boston Systems Office

Worked as part of a team writing a new generation of VAX to 68K cross development tools.

Patents, Publications and Advisories

Linux Journal Kernel Korner article: "Kernel Tuning Gives 40% Gains"
HotChips 11: "Wiggins/Redstone: an online program specializer"
Security advisory: discoverer of CERT-2006-1174 (useradd).
US Patents: 7721281, 8024719.
Path Profiling publications: "Dynamic Whole Program Profiling" and "Isometric Paths"

Education: May, 1983: Bachelor of Science: Applied Computer Science, University of Wisconsin Parkside

Other

Board of Directors, Gorton Studios, Inc. Eagan, Minnesota
Endowment founder: Gorton Endowment for the Sciences, The Prairie School, Racine, Wisconsin
Endowment founder: CS2100 Endowment (Computer Science) University of Wisconsin Parkside, Kenosha, Wisconsin
Distinguished Alumni, 2016 University of Wisconsin Parkside, Kenosha, Wisconsin