Objective

Full-time software engineer with a passionate team of hackers that respect users' freedoms, strive to innovate, and embrace challenge. Looking to at some point transition into an educator and/or research role in any of my areas of expertise.

Summary

I am a self-driven and passionate hacker with over twenty years' experience in various areas of software development. I am a free software activist with a focus on user privacy and security; a volunteer and maintainer for the GNU Project; and both author and contributor to various free software projects. I seek an innovative team of hackers that are passionate about their work and will challenge my wide range of skills. A prospective employer must be willing to use and write free software, and be positive toward software freedom and the free software movement. I am also interested in academic/research settings as both a hacker and as an educator.

Experience

Ryan Specialty Group (formerly LoVullo Associates, Inc.)
March 2009–Present
Principal software developer. Designs, develops, and maintains web applications; application frameworks; server software; and compilers for domain-specific languages (DSLs) for an Excess and Surplus Lines Insurance Agency. Most work involves developing complex online raters to provide comparative insurance quotes; integrating and automating various systems; 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.
  • Ant
  • Autotools (Autoconf, Automake)
  • AWK (Gawk)
  • CSS 3
  • Docker
  • GitLab (self-hosted)
  • Git
  • GNU ease.js
  • GNU Emacs
  • GNU/Linux
  • Graphana
  • HTML 5
  • Java
  • JavaScript (ECMAScript 3+)
  • M4
  • Memcached
  • MongoDB
  • MSSQL
  • Neo4j
  • Node.js
  • PHP (4–7)
  • Prometheus
  • RabbitMQ
  • Rust
  • Sed
  • Shell (POSIX, Bash)
  • SQL Anywhere
  • Symfony 2+
  • Texinfo
  • TeX (Plain, LaTeX2e)
  • Vim
  • XSLT (1–3)
Freelance Web Developer
March 2006–March 2009
Worked as a freelance web developer primarily through vWorker (previously RentACoder) with a 10/10 rating, ranked higher than 99% of all other developers.

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.

GNU ease.js
November 2010–Present
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.
  • 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 to handle hundreds of complex conditional inputs for even more complex comparative rating systems. It contains a powerful type and validation system and controls inputs via predicates over a complex graph of classifications. Programs are defined using a declarative DSL which compiles into JavaScript, drastically simplifying development and maintenance. The client is a web application which integrates and shares code with a RESTful server. It also contains its own tools for debugging and introspection.
This project integrates tightly with TAME for its classification system.
  • JavaScript (ECMAScript 2016)
  • Node.js
  • XSLT 2–3
  • Shell (Bash)
  • Autotools (Autoconf, Automake)
  • Rust
TAME
2012–Present
Author
This system was developed at LoVullo Associates to handle the complexity of comparative insurance rating systems. It is a domain-specific language (DSL) that itself encourages, through the use of templates, the creation of sub-DSLs. TAME processes only numerical input and output, driven by higher-order predicates. Calculations and predicates are written declaratively without regard for order of execution. The system has powerful dependency resolution and data flow analysis capabilities.
TAME consists of a macro processor (implementing a metalanguage), numerous compilers for various targets (JavaScript, HTML documentation and debugging environment, LaTeX, dependency graph output, and others), linkers, and supporting tools. The input grammar is XML, and the majority of the project (including the macro processor, compilers, and linkers) is written in XSLT.
  • XSLT 2
  • JavaScript (ECMAScript 2016)
  • AWK
  • Sed
  • Shell (Bash)
  • PHP
  • Autotools (Autoconf, Automake)
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)
  • GDB
  • GNU Make
  • Gnulib (Test Headers)

Articles, Talks, and Publications

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.
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.
PC Magazine Mention—iBrowser
June 2004
Mention in PC Magazine for a project named iBrowser, the world's first voice recognition web browser. Created with a remote friend at the age of fourteen. 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 am the author and maintainer of GNU ease.js; one of the GNU software evaluators that review software offered to GNU; exercise various administrative duties; and participate in general discussions regarding the GNU Project as a whole. 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 is 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.
Master Chong's World Class Tae Kwon Do
February 2010–February 2012
Student at Master Chong's World Class Tae Kwon Do. While not a technical affiliation, it was an enjoyable and rewarding experience, and was an important part of my life. Volunteered when possible and attended class most days of the week. I unfortunately had to stop attending classes due to a hip injury and subsequent birth of my first child. I hope to return one day.

Skills, Studies, and Interests

Each item below is ordered by experience, descending. Languages actively used are those that I most often write projects in, either personally or at work. Infrequent languages are those that I have used to write or modify software, but do not have intimate knowledge of. Date, if present, indicates last year used.

Languages—Actively Used
  • (X)HTML
    • XHTML 1.1
    • HTML 5
  • CSS
    • 2
    • 3
  • PHP
    • 4–7
  • JavaScript
    • ECMAScript 3+
  • Shell
    • POSIX
    • Bash
  • C
    • ANSI
    • C89
    • C11
  • TeX
    • Plain
    • LaTeX2e
  • AWK
    • POSIX
    • Gawk
  • Lisp
    • Elisp
    • RnRS Scheme
    • Guile Scheme
    • Racket
    • Chez Scheme
  • XSLT
    • 1–3
  • Texinfo
  • SQL
    • MySQL
    • SQLAnywhere
    • MSSQL
  • Rust
  • Lua
  • M4
Languages—Infrequent
  • C++(2005)
  • Scala(2012)
  • Java(2014)
  • Clojure(2014)
  • x86{,_64} ASM(2013)
  • Haskell(2014)
  • Python(2006)
  • Ruby(2014)
  • Perl(2009)
  • Troff(2011)
  • MOS 6502 ASM(2013)

There are a few languages that I no longer use because they are either non-free or focus on non-free operating systems.

Languages—Defunct
  • ASP(2004)
  • Visual Basic(2006)
    • 6
    • .NET
  • BASIC(2005)
    • QBASIC

Studies differ from interests in that the former are actively or have been in the past researched; whereas the latter are occasionally visited, but otherwise pending formal study.

Studies—Computer Science
  • Compilers
  • Type Theory
  • Programming Languages
    • Theory
    • History
  • Security
    • Domain-Specific
    • Implicit In Other Skills/Studies
  • Cryptography
    • Implementation
    • Algorithms
  • Combinatory Logic
    • Point-Free Programming
    • Concatenative and Stack-Based Languages
    • Church-Turing
  • Logic
    • Proof Theory
    • Propositional
    • Predicate
    • Higher-order
    • Modal
  • Linear Algebra
  • Graph Theory
Studies—Legal and Political
  • Software Licensing
    • GNU General Public License and variants
    • Various licenses
  • Copyright
    • Law
    • Fair Use
    • Copyleft
  • Privacy
    • Cryptography
    • Law
  • Surveillance
    • NSA
    • GHCQ
    • Five Eyes
    • FISA
    • Domestic
    • Snowden
    • Court Cases
  • Patents
    • Court Cases
    • Reform
Studies—Miscellaneous
  • History of Computing
    • Unix / Multics / Lisp Machines
    • MIT
    • Bell Labs
    • Hacking
    • Historical Figures
    • Machines
  • Typesetting
  • English Writing
    • Predominantly American
GNU/Linux Inside!