Objective

Software engineer or researcher with a passionate team of hackers that respect users' freedoms, strive to innovate, embrace challenge, and seek to make a positive social and cultural impact.

Summary

I am a self-driven and passionate hacker with over twenty years' experience in many areas of software development and computer science. I am an activist for user freedom with a focus on user privacy and security. I seek to collaborate with and learn from an innovative team of hackers that are equally passionate about their work and will challenge my wide range of skills and interests. I focus primarily on compiler construction and the creation of declarative domain-specific languages and abstractions to simplify development and improve the correctness of complex systems. Some of my personal interests beyond compiler construction include programming language history and theory, formal methods, logic and type theory, cryptography, philosophy and ethics, and writing.

The focus of my research in recent years has been pursuant to addressing problems of practical user freedom—to make various aspects of freedom in computing accessible to more users in concrete and tangible ways that are meaningful to them beyond abstract principle and philosophy.

A prospective employer must be willing to use and write free software, and be positive toward software freedom and the free software movement.

Experience

Ryan Specialty (formerly LoVullo Associates, Inc.)
March 2009–Present
Principal software engineer. Designs, develops, and maintains compilers for domain-specific languages (DSLs); application frameworks; server software; and web applications for an Excess and Surplus Lines Insurance Agency. Most work is pursuant to developing complex online systems to provide comparative insurance quotes from thousands of conditional inputs and providing a suite of development tools and DSLs to support those systems. Responsible for developer training and knowledge transfer through design discussions, documentation, peer programming, and code review. Involved in every aspect of the development process and many decisions regarding the technical direction of the organization.
A number of projects written for my employer have been released as free software.
  • Rust
  • JavaScript (ECMAScript)
  • TypeScript
  • XSLT
  • Shell (POSIX, Bash)
  • PHP
  • Texinfo
  • TeX (Plain, LaTeX2e)
  • HTML
  • CSS
Freelance Web Developer
March 2006–March 2009
Worked as a freelance web developer primarily through RentACoder.

Projects

Listed here are both my own projects and those to which I have made notable contributions. I have many miscellaneous projects and scripts that are not listed here; see my Projects page for a full list.

TAME
2012–Present
Author
This system was developed at LoVullo Associates and Ryan Specialty to handle the complexity of comparative insurance rating systems. It is a domain-specific language (DSL) that is itself a metalanguage through the use of templates, encouraging the creation of specialized sub-DSLs. TAME processes only numerical input and output, with conditional logic driven by higher-order predicates. Calculations and predicates are written declaratively without regard for order of execution. The system is used to define tens of thousands of calculations and predicates across thousands of inputs.
TAME consists of a macro processor (implementing a metalanguage), compilers for various targets (JavaScript, HTML documentation and debugging environment, LaTeX, dependency graph output, and others), linkers, and supporting tools. The input grammar is embedded within XML, and the project was originally written in XSLT. The project is undergoing a rewrite in Rust (TAMER).
  • Rust
  • XSLT 2–3
  • JavaScript (ECMAScript 2016)
  • AWK
  • Sed
  • Shell (Bash)
  • PHP
  • Autotools (Autoconf, Automake)
GNU ease.js
November 2010–2017
Author
A Classical Object-Oriented framework for JavaScript, intended to eliminate boilerplate code and “ease” the transition into JavaScript from other Object-Oriented languages. Features include simple and intuitive class definitions; classical inheritance; abstract classes and methods; interfaces; access modifiers; static and constant members; and traits as mixins. Became a GNU project in December of 2013.
GNU ease.js was created as a personal project to simplify development of a project at LoVullo Associates, and supports ECMAScript 3 browsers (as far back is IE 5.5). Implementation details and rationale are documented extensively in the manual and comprehensive test cases. See also my paper Classifical Object-Oriented Programming with ECMAScript. Copyright has been assigned to the Free Software Foundation. I no longer maintain this project, and recommend TypeScript in its place, which provides most of ease.js' features and is a compiler rather than a framework.
  • JavaScript (ECMAScript 3, ECMAScript 5)
  • Shell (POSIX, Bash)
  • Autotools (Autoconf, Automake)
  • Texinfo
  • AWK
  • Sed
  • LibreJS-Compatible
Liza Data Collection Framework
2010–Present
Author
Data collection and processing framework developed at LoVullo Associates and Ryan Specialty to handle the collection and processing of thousands of complex conditional inputs for online comparative rating systems. Programs are defined using a declarative DSL which compiles into JavaScript. The client is a web application which shares code with the server using Node.js. It also contains its own tools for debugging and introspection.
This project integrates tightly with TAME for its classification system and depenedency analysis.
  • Rust
  • XSLT 2–3
  • JavaScript (ECMAScript 2016)
  • Node.js
  • Shell (Bash)
  • Autotools (Autoconf, Automake)
Ulambda
2017–2018
Author
A self-hosting Scheme compiling into JavaScript. The project is incomplete, but it does successfully bootstrap a very limited Scheme-like Lisp.
  • JavaScript
  • Scheme
  • Node.js
GNU Guix
October 2016–Present
Contributor
Improvements to guix environment container support; package contributions.
  • Guile Scheme
  • Shell
GNU Screen
November 2013–July 2015
Contributor
Refactoring and cleanup of window message system and related code; creation of supporting abstractions; introduced unit tests.
This began as a cooperative effort between myself and Amadeusz Sławiński to resurrect the stalled development of GNU Screen. Amadeusz is now a co-maintainer of the project and my changes have been merged upstream.
  • C (ANSI C, C11)
  • Gnulib (Test Headers)

Articles, Talks, and Papers

I am an avid technical writer and activist; my writings are available on my personal website. This section highlights the most notable. Direct links are provided in the online version of this résumé.

The TAME Programming Language Living Document
May 2021–Present
This document is an attempt to formally consider certain parts of TAME as it undergoes redesign and reimplementation as part of the TAMER project. It is considered a living document—it is not likely to ever be a finished work.
Adopting Free Software Ideals
March 2021
My talk at LibrePlanet 2021 about practical ethics and ideals as it relates to user freedom.
Computational Symbiosis: Methods That Meld Mind and Machine
March 2019
My talk at LibrePlanet 2019 exploring how to empower users to do their own computing without developers. Explores core concepts of the Unix philosophy.
GHCQ’s “Exceptional Access”, End-To-End Encryption, Decentralization, and Reproducible Builds
Feb 2019
Refutation of the GHCQ's “Principles for a More Informed Exceptional Access Debate”.
The Ethics Void
March 2018
My talk at LibrePlanet 2018 focusing on the lack of ethical consideration in software and technology.
The Surreptitious Assault On Privacy, Security, and Freedom
March 2017
My talk at LibrePlanet 2017 surveying some of the most pressing privacy and security concerns of today, with nearly 130 references.
Restore Online Freedom!
March 2016
My talk at LibrePlanet 2016 about privacy, surveillance, and freedom on the Web.
Gitlab, Gitorious, and Free Software
May 2015
Guest post written at the request of GitLab B.V. CEO Sytse Sijbrandij to both explain the controversy surrounding GitLab's acquisition of Gitorious, and to celebrate our joint effort to license all of GibLab EE's JavaScript code—and any code that generates it—as free software.
National Uproar: A Comprehensive Overview of the NSA Leaks and Revelations
June 2013
An extensive article with over sixty references written just after the Guardian released the Verizon Order for the collection of telephone metadata, acquired by the now-known Edward Snowden. Maintained first or second ranking on Google for the search term “NSA leak summary” for days, and to this day is still within the top fifteen search results.
A Git Horror Story: Repository Integrity With Signed Commits
May 2012
An in-depth article on Git commit signing written shortly after support was added to Git. It maintained the top rank on HackerNews for the entire business day, largely introducing the Git commit signing concept to the community. Widely cited, notably by Metasploit, Whonix, Nmap, Atlassian, and the CryptoCall project thesis. References provided in online résumé.
Classical Object-Oriented Programming with ECMAScript
February 2012–April 2012
A paper exploring methods of implementing classical object-oriented programming in ECMAScript 3. This paper describes common patterns; addresses performance concerns; explores alternatives, problems, and exploitations; and begins discussing the the implementation used by GNU ease.js. Paper is incomplete.

These are from my early teenage years:

PC Magazine Mention—iBrowser
June 2004
Mention in PC Magazine at the age of fourteen for a project named iBrowser, a voice recognition web browser. Created with a remote friend. Personally handled voice recognition, popup blocker, and most other aspects of development.
Planet Source Code Superior Coding Contest Winner
February 2003
Received Planet Source Code's Superior Coding Contest Award for the voice recognition tutorial "Talk To Your Computer" at the age of thirteen.

Affiliations

GNU Project
December 2013–Present
I serve on the GNU Advisory Committie (GAC); was previously one of the GNU software evaluators that review software offered to GNU; and used to exercise various administrative duties (GNUisance). I participate in general activism pursuant to the goals of GNU, including addressing the issue of non-free JavaScript. Notably, I worked with Sytse Sijbrandij (GitLab B.V. CEO) to freely license all GitLab EE JavaScript, and worked on the GNU ethical repository criteria. Much of my free time was historically dedicated toward GNU volunteer work.
Free Software Foundation
October 2007–Present
Associate member (#5804) of the Free Software Foundation (FSF) and a strong supporter of the free software movement. Actively involved in the free software community. I have had the pleasure of meeting with and working with the FSF staff on a number of occasions. I am also on the JavaScript Developers Task Force, part of the FSF's Free JavaScript campaign.
Electronic Frontier Foundation
August 2017–Present
Member of the Electronic Frontier Foundation (EFF). I closely follow and support many of their causes.
GNU/Linux Inside!