Curriculum Vitae

Tech Skills


  • Rust
  • Clojure/Script
  • Javascript
  • Java
  • Python
  • C/C++
  • OCaml

Web Frameworks


Software/Hardware Consultant

  • Bespoke Binary
  • Portland, OR, USA
  • Feb 2017 -- Present
    • ansible
    • clojure
    • clojurescript
    • re-frame
    • compojure
    • rust
    • async-rust
    • tokio
  • Provided CTO consulting services to a client developing a new light-industrial 3D printer with a novel application of extrusion screw technology typically used in large plastics.
  • Designed and sub-contracted manufacture of a custom circuit board to facilitate interfacing the control software and the machine hardware.
  • Evaluated and selected suitable open source 3D printer software for powering the trajectory planning.
  • Implemented in Rust a custom trajectory planning and machine control program.

Software Crafter

  • 8th Light Inc.
  • Chicago, IL, USA
  • Oct 2015 -- Feb 2017
    • angular-js
    • clojure
    • clojurescript
    • compojure
    • javascript
    • react
    • ruby
    • ruby‐on‐rails
    • sass
  • Ramped up quickly with a small team to rapidly deliver significant business logic changes and improvements on a legacy Ruby on Rails application.
  • Improved the testing infrastructure across a large service‐oriented architecture by introducing unit and integration testing patterns for the Clojure micro-services.
  • Built out external data service integrations for a large Clojure web app, building simple and elegant methods for interacting with legacy SOAP APIs and parsing XML documents.

Software Development Apprentice

  • 8th Light Inc.
  • Chicago, IL, USA
  • Apr 2015 -- Oct 2015
    • agile
    • clojure
    • http
    • ruby
    • rack
    • java
    • jruby
    • tdd

I spent the first few months of my apprenticeship improving my discipline in basic practices like writing code test first and creating clean, well‐factored code in both object-oriented and functional style. Some examples of these projects include:

After the first few months I was put on a client project, working to rebuild a PHP prototype provided by the client as a Ruby on Rails web application. I worked closely with a small team, and with the client. We delivered valuable features on a weekly iteration schedule, giving accurate estimates and presenting feature complete demos to the client every iteration. While doing this, we used our deepening knowledge of the client's domain to continuously improve the quality of the code base.

Software Developer

  • BRER Technical Inc.
  • Bellingham, WA, USA
  • Jul 2013 -- Jan 2014
    • c#
    • sqlite
    • winforms
    • latex
    • stringtemplate

As one of the most senior developers on the project, I was heavily involved in designing the architecture of a custom system for recording business information. The core purpose of the application was to facilitate the creation of customer reports, a process which could take up to six months when done by hand. With the new system, the data would all be collected on site at the customer, and then require only small additions to complete the report.

I personally reworked the report generating subsystem from creating hand‐coded pdf's to using dynamic generation of LaTeX files to produce professional looking final reports.

Software Developer

  • Provel Inc.
  • Bellingham, WA, USA
  • Aug 2012 -- Jul 2013
    • c++
    • boost
    • cmake
    • signal‐processing

At Provel I was part of a distributed team including two other software developers and several hardware and firmware experts.

I was responsible for investigating the feasibility of using data gathered from an onboard MEMS accelerometer and gyroscope to help determine changes in position and orientation of the device with sub‐meter accuracy over periods of a few minutes.

Ultimately I determined that significantly more resources would be needed to solve the problem to the accuracy required, and the project moved in a different direction.

Software Devolpment Intern

  • Sage Bionetworks
  • Seattle, WA, USA
  • May 2012 -- Dec 2012
    • java
    • spring
    • aop
    • amazon‐web‐services
    • gwt

I worked closely with a team of ten other developers, helping to iterate on an existing multi‐tiered web service. Besides contributing to the day‐to‐day bug‐fixing and code maintenance, I spent the majority of my internship working on two projects that I owned.

First, I completed an existing stub implementation of object versioning in our system. This went from the database persistence layer all the way through to a GWT user interface for the feature.

Second, I started an effort to introduce more comprehensive logging into the core services, collating logs from across the entire cloud deployment. The purpose of the logging was two‐fold: to help in error diagnosis and recovery and to provide business information about the usage of the system.

Frontend Developer

  • Hesselgrave Tours Ltd.
  • Bellingham, WA, USA
  • Oct 2011 -- Jul 2012
    • php
    • mysql
    • coldfusion
    • perl
    • javascript

Migrated a 10,000+ lines ColdFusion web application to PHP in two months using a hand-crafted pseudo-transpiler, starting from knowing effectively nothing about PHP, and absolutely nothing about ColdFusion.

iOS Developer

  • Western Washington University
  • Bellingham, WA, USA
  • Apr 2011 -- Sep 2011
    • objective‐c
    • cocoa
    • cocoa‐touch
    • xml
    • svn

I worked on a team with three other student employees, under the supervision of a professor. One of my colleaguse and I were personally responsible for maintaining and extending an existing iOS study-aid app that displayed configurable virtual flashcards.

Because of the workload of the professor, I essentially took a leadership role, helping to direct my fellow student's efforts. I took the initiative to clean up much of the code. My main contribution to the project was to fully revamp the animation effects being used in the application to help highlight changes and provide a good visual experience.


Test‐Driven Development for Embedded C

  • Wingman Software
  • Chicago, IL, USA
  • 2016-01-13 -- 2016-01-16
    • c
    • c++
    • tdd

Completed a three day training on how to use TDD coding practices in embedded code projects using standards compliant C.


Software Writer's Retreat

  • Recurse Center
  • New York City, NY, USA
  • Oct 2014 -- Dec 2014

I attended the Fall 2 batch of the Recurse Center in 2014. While there I:

  • taught myself OCaml and wrote a mini‐shell and mini‐VCS in it
  • learned about image processing, and implemented several classical algorithms for it in Clojure
  • implemented a simple postfix expression language in both Clojure and OCaml
  • improved on an existing hardware project for letting Recurse Center alumni into the space
  • paired with many other Recursers on their projects and generally had a really excellent experience

B.Sc. in Computer Science

  • Western Washington University
  • Bellingham, WA, USA
  • Sep 2008 -- Jul 2014

I took the standard classes in data structures, algorithms, unix development, networking, concurrency and databases. In addition, I taught myself to use Git and brought it's use into every class, CS and otherwise.

Languages used: Python, Ada, C, C++, Scheme/Racket, Erlang, Java, Javascript, Objective-C, Clojure, Common Lisp, Emacslisp, Haskell, R, NASM, Unicon, bash scripting, Windows batch scripting

Other interesting accomplishments:

  • Implemented many fundamental data structures and algorithms in Ada, gaining a deep understanding and appreciation for it's strong type system
  • Created a small working Unix shell in C developing a deep understanding of Unix programming and the capabilities of a shell
  • Implemented a simple remote file access protocol in C
  • Found a FOSS project to run a JVM on the pre-release Lego Mindstorms EV3 robotics kits and set it up, allowing the advanced robotics class to program their robots in a real programming language.

1991 Words