R. Matthew Emerson

1023 109th Ave. SE.
Bellevue, Washington 98004
USA

Experienced and adaptable software developer in areas including user interface programming on Apple platforms, compilers, security & cryptography, Unix system programming, and more.

I love working at the intersection of technology and the arts.

I have successfully and productively worked from my home office for several years, with occasional travel. This success is in large part due to well-developed written communication skills. I am not opposed to in-office work, however.

For the the right opportunity, I would be willing to relocate.

Selected Professional Experience

Principal Engineer, Software Development Engineering (Apps) Western Digital, 2019-present

Member of a team working on the ArmorLock SSD and security platform. Client applications for unlocking and managing the drive via custom USB HID device. Assist with board bringup and firmware development.

Write software for Apple platforms (mainly macOS, but some iOS too) using Swift. This includes internal tools as well as released apps.

Selected applications

These apps communicate with hardware devices using IOKit and USB or Bluetooth frameworks.

Reverse engineer and reimplement C++ virtual file system encryption library in Rust.

Some low-level programming in C, e.g., a custom USB HID device for the Nordic nrf52 series, and minor maintenance on a custom embedded JVM.

swift macos iokit ios swiftui usb hid rust

Consulting Software Developer thoughtstuff LLC, 2017-2019

Anything whatever concerning Clozure Common Lisp; Common Lisp programming; macOS user interface programming.

Senior Software Design Engineer Concur, 2016-2017

Concur is a provider of integrated travel and expense solutions, delivered using the software-as-a-service model.

I was a member of a team developing new foundational services (e.g., identity management, authentication, and so forth) on which Concur's business applications are being built.

These services are web services with RESTful style interfaces. Technologies used include Clojure, various SQL and NoSQL databases, GitHub, Python (for API tests), and the usual panoply of other assorted supporting tech. Services typically ran on AWS-hosted Linux servers.

Additionally, I promoted the interactive and incremental style of development traditionally used by Lisp and Lisp family languages, Clojure being a Lisp descendant.

clojure git mysql

Senior Software EngineerClozure Associates, 2007-2016

Clozure Associates is a Common Lisp consulting company, and also has supported the development of Clozure Common Lisp, an open-source Common Lisp implementation.

A large part of my work was to enhance and maintain Clozure CL on the various operating systems (macOS, Linux, FreeBSD, Solaris, Windows) and processor architectures (x86, ARM, PowerPC) that it runs on.

Clozure CL is mostly written in Common Lisp, but there is an important part (called the lisp kernel) that is written in C and a fair amount of processor-specific assembly language. The lisp kernel provides the run-time environment for running lisp code. It uses quite a lot of low-level functionality exposed by the operating system: address space management, signal/exception handling, thread management, and so forth.

I designed and implemented the 32-bit x86 port of the Clozure CL Lisp compiler and runtime, based on the existing x86-64 port.

  • Updated the x86 assember and disassembler to support 32-bit x86.
  • Added 32-bit x86 support to the compiler back end. Wrote new code generation primitives.
  • Wrote assembly language code to support foreign function calls, bignums, and so forth.
  • Adapted the garbage collector to support the data representation of 32-bit x86 Lisp objects and to support the dyanamic register-partitioning scheme that the 32-bit x86 port uses.

Installed and managed Buildbot (a continuous integration system) for the Clozure CL project. Configured and customized it using Python.

Contributed to numerous client projects.

Configured and managed numerous project infrastructure services such as mail (including mailing lists), various web sites, Trac (for bug tracking), Subversion, and so forth, both for Clozure CL itself and for client projects. Clozure CL sources are now on GitHub, but the legacy Trac and Subversion repository are still online.

Performed release engineering for the (very) roughly bi-annual releases of Clozure CL.

Common Lisp C assembly OS X Mach Cocoa Linux FreeBSD Solaris Windows m4 make gdb Subversion git Trac postfix Mailman buildbot apache IRC

Technical Specialist PrincipalRSIS / NASA Glenn Research Center, 2000-2007

Member of the NASA Desktop Standards and Basic Interoperability Group, and the NASA Agency Security Configuration Standards Group.

Served as an expert in the areas of Unix, Mac OS X, TCP/IP networking, and security.

Contributed to security configuration standards for several operating systems and applications.

Internet Service Provider entrepreneurpre year 2000

Responsible for overall management of pioneering northeast Ohio ISP. Hired and trained staff. Designed, built, and operated Cisco-based network spanning seven Ohio counties. Directed and worked with technical teams which built and maintained servers and networks supporting over 5000 dial-up users, hundreds of web sites, and dozens of dedicated access clients.

management wan cisco uucp ip ppp serial-port

Selected Talks and Articles

This Old Lisp, keynote talk given at the 2018 European Lisp Symposium, Marbella, Spain (slides, transcript, slides, and video)

The Design and Use of Clozure CL's Objective-C Bridge (slides, video). Given at the 2013 European Common Lisp Meeting, Madrid.

Threads and GC Implementation in Clozure CL (one-pager, slides). Given at the 2009 International Lisp Conference, Cambridge, Mass.

How Clozure CL implements closures

CCL on x8632: more registers, please

Published Software

ArmorLock

Unlock and manage ArmorLock SSDs (iOS and macOS)

PRO-DOCK Utility

Manage PRO-DOCK 4 Thunderbolt docking station via a custom USB HID device.

Opusmodus

Lead developer for the Cocoa-based user interface for Opusmodus, a music composition application for the Macintosh. Written using Clozure CL.

core-audio midi musicxml autolayout

Clozure CL (Mac App Store version)

A version of Clozure CL and its Cocoa-based IDE, packaged for the Mac App Store.

mac-app-store itunesconnect

Picture Window

A slideshow application, written to demonstrate that it is possible to develop a Mac OS X application using Clozure CL, and publish it on the Mac App Store. The source code for this application is available on GitHub.

Benchmark

Aircraft performance testing analysis and modeling. Modernization of classic Mac OS application. Uses Cocoa and Core Data. Written using Objective-C.

xcode Objective-C coredata lapack

Education

Ohio State University

Graduate studies in computer science.

University of Houston

B.A. in French, cum laude; graduate studies in computer science.

Other

Languages

Competent speaker of the French language.

FAA Private Pilot

About 350 piloting hours, mostly in a 1963 Mooney.

Pontifications

In nearly every case, native applications best respect and express the spirit of a platform, and are most likely to produce beautiful software that people love to use.

When exploring new ideas, accelerate the benefit of hindsight by building prototypes and then quickly iterating.