This Markdown file is my résumé. It's generated by a Node script, using HTML+CSS and Puppeteer to print a web page as a PDF.
npm run build
will generate the actual résumé atbuild/resume.pdf
.
- {{phone}}
- adam@nels.onl
- adam.nels.onl
- github.com/ar-nelson
-
Web
- 10+ years professional experience
- Modern HTML+CSS+JS
- Full-stack (Node, Rails, AEM)
- React, Angular, Typescript
-
JVM
- 10+ years professional experience
- Java, Scala, Groovy, Kotlin
- Akka, Play framework
- JVM bytecode hacking
-
Functional Programming
- 8 years experience
- Professional: Scala, functional JS via fp-ts
- Academic: SML, HOL4, Haskell
- Hobbyist: Haskell, Scheme, dozens of minor languages
- Designed and implemented own functional languages
-
Linux Administration
- 10+ years experience with Linux as primary OS
- Shell scripting
- Docker, Ansible
-
Misc
- Test-driven development
- Agile methods
- Participant in open-source community
-
Simspace
Senior Software Engineer
2021
- Worked on a massive React SPA for a cybersecurity training application
- Wrote Typescript in a purely-functional style, using fp-ts to bring Haskell features, like monads, into Typescript
-
Maark
Senior Web Engineer
2020-2021
- Worked with a team to build a shared library of vanilla JS and React components, Sass stylesheets, and Webpack configurations used across all sites and projects for a single client
- Developed React single-page applications with a GraphQL API backend
- Some full-stack development, including writing Java Spring code for an Adobe Experience Manager backend
-
Cigna
Software Developer
2018-2019
- As Tech Lead of a small team of four developers, played a major role in planning and developing an Angular 6 single-page application from scratch and integrating with a complex network of legacy data services
-
University of Massachusetts
Graduate Research Assistant
2014-2017
- Modeled the specification of the Mu Micro Virtual Machine, a cross-platform compile target for new programming languages similar to the JVM, in a logic programming system to prove its correctness
- Traveled to Canberra, Australia to learn logic programming in person from the maintainer of the open-source HOL4 theorem prover
-
Edifecs
Associate Software Engineer
2012-2016
- Modernized a Java/Groovy codebase by rewriting it in Scala and replacing a homebrew messaging library with Akka
- Designed a test suite for a complex networked application involving coordinating and messaging among multiple JVM processes
- Wrote and remotely maintained an ExtJS single-page web application as the UI for an intranet system used throughout the company
-
University of Massachusetts - 2014-2017
Master of Science, Computer Science (Programming Languages)
-
University of Washington - 2011-2014
Bachelor of Science, Computer Science
-
Bridgewater College - 2009-2011
Dual major in Computer Science and Physics
-
Project Kraken (2022)
A server-client multiplayer game engine written from scratch in C and SDL. The game in question is a block-building platformer game, similar to Terraria. I built this game engine over the course of a few months on a sabbatical; it's still in progress, but simple multiplayer sessions already work.
Ongoing project with no presence on GitHub yet; source available on request.
-
Schemepunk¹ (2020-2021)
A portable standard library for R7RS Scheme. It is compatible with 7 Scheme dialects, and implements or polyfills 27 modules, including data structures, console pretty-printing, and a Datalog engine.
While building this library, I participated in the SRFI mailing lists, a standardization process for Scheme libraries that has been ongoing since the 90s. I have authored two standards documents: SRFI 197² and SRFI 214³.
-
Tangled Scheme (2020-present)
A new compiler and interpreter for the R7RS Scheme language, including a linter, debugger, and Language Server. Tangled prioritizes developer friendliness above all else, and prints detailed error messages in the style of Elm or Rust.
Ongoing project with no presence on GitHub yet; source available on request.
-
Osmosis (2020-present)
A peer-to-peer data synchronization library for native apps. Keeps mobile and desktop copies of an app in sync whenever they connect to the same network. Uses encryption and a custom JSON CRDT. A prototype⁴ is currently written in Node.js, but I plan to rewrite it in C.
While developing this library, I published several sublibraries⁵⁶⁷ as small standalone Node packages.
-
Jaspr⁸ (2017)
A new programming language implemented on top of Node.js. A Clojure-esque Lisp with immutable JSON as its core data structure. Designed with an async-by-default approach to concurrency.