Colin Woodbury

Self Introduction

I am a full-stack developer and avid contributor to Open Source since 2012. I am the author of Aura. As a former teacher, I am skilled at public speaking and give conference presentations in both English and Japanese.

Skills

Programming Languages

  • Low-Level: Rust, Go, C
  • Functional: Haskell, Common Lisp, Clojure, Scala
  • Scripting: Emacs Lisp, Python
  • Web: HTML, CSS, Web Assembly

Web Technologies

  • Terraform
  • GraphQL
  • Amazon Web Services, Digital Ocean
  • Elastic Search, Kibana
  • Docker
  • Let's Encrypt

Other Technologies and Tools

  • Linux
  • Git, Github, Gitlab
  • SQL (SQLite, MySQL, MariaDB, Postgres)
  • Apache Spark
  • Emacs
  • LaTeX
  • Geographic Information Systems

Experience

Software Development

CADDi - Rust Developer

2022 September - Present

Freelance Software (Rust, Go)

2020 May - 2022 June

Private contracting work in a variety of fields and technologies.

Kadena - Blockchain Software Development (Haskell)

2018 August - 2020 May

Core developer of the Kadena Public Blockchain.

General
  • Contributed extensively to the Chainweb and Pact projects using Haskell.
  • Designed and implemented Chainweb's Difficulty Adjustment algorithm.
  • Pioneered Chainweb's mining algorithm and wrote its client, chainweb-miner.
  • Wrote a Wallet application for the terminal using ncurses.
System Administration
  • Worked as the main system administrator for Kadena web servers.
  • Managed our servers on AWS with Terraform and NixOS.
Documentation and Support
  • Wrote extensive documentation in both Japanese and English.
  • Instructed users on configuring our software and helped them debug.
  • Represented the company as a speaker at conferences in Japan, the USA, and Canada.

Azavea - Open Source Software Developer (Scala)

2016 May - 2017 December

Open-source developer on the GeoTrellis project. Author of VectorPipe.

General
  • Researched, designed, and implemented GIS algorithms.
  • Performed extensive integration tests with Apache Spark.
  • Implemented Mapbox VectorTile codecs in Haskell and Scala.
System Administration
  • Extensive use of Docker and Terraform to manage production systems on AWS.
Documentation and Support

Adenda Media - Lead Software Developer (Scala)

2014 May - 2016 April

Full-stack Scala developer.

General
  • Maintained and enhanced a Play + MySQL backend.
  • Extended a Twitter Bootstrap-based web application.
  • Implemented a content recommendation system using Apache Spark's MLlib.
System Administration
  • Managed our primary web servers on Digital Ocean.
Documentation
  • Extensive documentation efforts in LaTeX.

English Teaching

2010 August - 2013 July

English Teacher (ALT) for the Sasebo Board of Education

  • Taught English to over a thousand Elementary and Middle School students.
  • Created lesson plans, supported Japanese colleagues, and helped grade tests.
  • Ran an English Club for students who wanted extra practice.
  • Coached students who went on to win a city-wide speech contest two years in a row.

Education

Simon Fraser University - Post Bacc. Diploma, Computing Science

2013 September - 2016 April

An accelerated undergraduate Diploma program for university graduates.

  • Served as Vice President (2014-2015) and as President (2015-2016) of the Computing Science Student Society.
  • Oversaw the creation of the CSSS Website.
  • Served as the president of the SFU Choir for two years.
  • Achieved the Dean's Honour Roll two years in a row.

Requirements completed 2016 April. Diploma awarded 2020 May.

Saga University, Japan - SPACE Program

2008 September - 2009 August

A one-year exchange program for international students.

  • Member of the Tea Ceremony Club.
  • Winner of the year-end Japanese speech contest for Best Speech and Most Humorous Speech.

University of Manitoba - BA, Asian Studies

2006 September - 2010 April

A four-year degree, majoring in Asian History and Languages.

  • Minored in Computer Science.
  • Achieved the Dean's Honour Roll.

Open Source Projects

YearProjectRoleLanguageDescription
2024nonemptyAuthorCommon LispNon-empty collections for Common Lisp
filepathsAuthorCommon LispModern, consistent filepath manipulation
sly-overlayAuthorEmacs LispEvaluation overlays for Common Lisp in Emacs
2023transducersAuthorEmacs LispErgonomic, efficient data processing
fn-macroAuthorCommon LispA lambda shorthand for Common Lisp
faurAuthorClojureFast data mirror for the AUR (Clojure port)
FalldownAuthorFennelA classic TI-83 game revived
SnakeAuthorFennelA simple implementation of Snake.
nonempty-collectionsAuthorRustCorrect-by-construction non-empty collections
transducersAuthorFennelErgonomic, efficient data processing
transducersAuthorCommon LispErgonomic, efficient data processing
2022faur-supervisorAuthorElixirData refresh and watchdog for a faur server
faurAuthorRustFast data mirror for the AUR
disownAuthorRustDrop ownership via a method
r2d2-alpmAuthorRustR2D2 resource pools for ALPM connections
2021Love Letter TrackerAuthorRust/WASMKnowledge tracking tool for Love Letter
validatedAuthorRustThe cumulative sibling of Result and Either
streakAuthorEmacs LispA minor mode for tracking "streaks"
2020linyaAuthorRustSimple Concurrent Progress Bars
totpAuthorGoTime-based One-Time Password library
totp-liteAuthorRustTime-based One-Time Password library
creditAuthorRustTool for measuring Github contributions
cargo-aurAuthorRustTool to release Rust projects on Arch Linux
versionsAuthorRustRust port of my versions library
kanjiAuthorRustRust port and update of my kanji library
activeAuthorGoTool to keep Github CI Actions up-to-date
skylighting-lucidAuthorHaskellLucid support for skylighting
org-modeAuthorHaskellParser for Emacs Org Mode files
chainweb-dataCore DevHaskellData ingestion tool for Chainweb
2019ChainwebCore DevHaskellMulti-chain Proof-of-Work Blockchain
bag-of-holdingAuthorHaskellAn ncurses terminal wallet for Chainweb
bounded-queueAuthorHaskellBounded queue data structure library
chainweb-minerAuthorHaskellA mining client for Chainweb
streaming-eventsAuthorHaskellClient-side consumption of EventStream
2018MapAlgebraAuthorHaskellEfficient, polymorphic Map Algebra
fosskers.caAuthorPurescriptMy personal website
streaming-pcapAuthorHaskellStream packets via libpcap
servant-xmlAuthorHaskellServant support for XML Content-Type
streaming-attoparsecMaintainerHaskellAttoparsec integration for streaming
streaming-bytestringMaintainerHaskellEffectful sequences of bytes
2017VectorPipeAuthorScalaVectorTile processing through GeoTrellis
draenorAuthorHaskellConvert OSM PBF files into ORC format
axeAuthorHaskellSplit large OSM XML files
streaming-osmAuthorHaskellStream OpenStreetMap protobuf data
scalaz-and-catsAuthorScalaBenchmarks for Scalaz and Cats
scala-benchmarksAuthorScalaBenchmarks for common Scala idioms
2016GeoTrellisCore DevScalaGeographic data batch processing suite
pipes-randomAuthorHaskellProducers for handling randomness
vectortilesAuthorHaskellGIS Vector Tiles, as defined by Mapbox
2015MyShroomCore DevScalaAI-based image recognition of mushrooms
crypto-classicalAuthorHaskellSamples of classical encrytion schemes
microlens-aesonAuthorHaskellLaw-abiding lenses for Aeson
opengl-linalgAuthorCOpenGL-friendly Linear Algebra
TetrisAuthorCA 3D Tetris game using OpenGL
versionsAuthorHaskellTypes and parsers for software versions
2014elm-touchAuthorElmExtended Touch library for Elm
2048 GameAuthorElmThe 2048 game in Elm (play)
2013HispAuthorHaskellA simple Lisp
2012AuraAuthorHaskellPackage Manager for Arch Linux
kanjiAuthorHaskellAnalyse Japanese Kanji
2011SudokuAuthorPythonA sudoku solver
tgrepAuthorPythonA search tool for Reddit's log files

Certification

CertificationLevelYear
Goethe-Zertifikat German Language ProficiencyB12015
Japanese Kanji Proficiency Test22024
Japanese Language Proficiency TestN12012

Talks and Presentations

TopicDateVenueLocationLanguage
Fortran and Doom Emacs2022 FebDoomConfOnlineEnglish
Terminal Progress Bars in Rust2021 FebVancouver Rust MeetupVancouverEnglish
Haskell in Production2019 JuneLambdaConfBoulderEnglish
Beauty and Correctness in Code2019 MayPolyglot UnconferenceVancouverEnglish
Pact Basics2018 NovNODE TokyoTokyoJapanese
Introduction to Chainweb2018 NovNeutrino MeetupTokyoJapanese
How not to Write Slow Scala2018 JuneLambdaConfBoulderEnglish
Tips on Scala Performance2018 MayPolyglot UnconferenceVancouverEnglish
Extensible Effects2016 AprVancouver Haskell MeetupVancouverEnglish
Applicative Functors2014 AprVancouver Haskell MeetupVancouverEnglish
Thoughts on Japanese Education2012 FebArkas SaseboSaseboJapanese

Hobbies

Climbing

I prefer Lead Climbing, but also do Top Rope and Bouldering both outdoors and indoors.

Competition Record

YearSportCompetitionVenue
2020Top RopeThe FlashCliffhanger
2018BoulderingBC Bouldering ProvincialsNorth Van Hive

Language Learning

I specialize in Japanese, but have also studied German, Italian, and Esperanto.

Music

GroupDatePosition
VVGO: FF7 Opening Bombing Mission2024 MarchElectric Bass
Tokyo Embassy Choir2022 Fall - OngoingVoice
VVGO: Skyword Sword2022 SummerElectric Bass
SFU Choir2019 FallVoice
SFU Choir2013 Fall - 2016 SpringVoice
Haiki PTA Chorus2010 - 2013Voice
Westwood Collegiate Jazz Band2002 Fall - 2006 SpringTenor Sax

Performances