Skip to content

Instantly share code, notes, and snippets.

@jneen

jneen/resume.md Secret

Last active January 13, 2020 21:14
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save jneen/4b10c22b670d5e6676e6 to your computer and use it in GitHub Desktop.

Jeanine Adkisson

Programmer, languages and tools specialist

tel:+1-647-468-8948
mailto:jneen@jneen.net
http://jneen.net/
http://twitter.com/jneen_

What I'm looking for

Toronto, with work permit sponsorship.

I am happiest working on compilers, tools, library/framework code, or build systems. I especially enjoy writing compiler frontends and designing tool interfaces for programmers. I am also quite good at it - I've been solving problems like these for about 9 years and have a number of successful libraries and languages under my belt.

In more detail, what I really love doing is almost product design in a way, but for technical users - users who have a certain amount of expertise in something, and are willing to work with and learn a system. What fascinates me is getting at who is using a library, interface, dsl, understanding where they're coming from - what tools they're used to, what they expect, how they formulate a problem - and then making something small, useful, and beautiful that speaks their language.

Relevant Experience

Canadian Digital Service

  • Advised senior management on engineering direction
  • Built a tool to render government PDFs, which most existing tools couldn't handle
  • Designed an abstract system for routing bilingual URLs
  • Improved the accessibility and programmer-usability of form controls
  • Removed the need for users to attach separate documents via an abstract web-form tool

GitLab, Inc.

  • Maintained the Rouge syntax highlighting gem (on average 200 open issues and 100 open pull requests)
  • Unblocked several permission-based features by refactoring to a Policy-based approach
  • Expanded support for comment-by-email to MS Exchange users, as well as for many users whose email systems are not configured in English.
  • Designed and pitched the UX for a comprehensive suite of moderation tools

OpenCounter (1-week consultancy)

  • Paired with an OpenCounter dev on their in-house calculator language to:
    • Implement a type checker with reason-tracking for legible error messages
    • Implement a runtime tracer
    • Thread source location info through the existing parser and type checker for location-aware error messages

CrowdStrike, Inc.

Nov. 2015 - Jun. 2016

  • Designed and implemented a regular-expression / glob syntax for the company's in-house language. Saw the feature through design, organized a review by its internal users, and shipped an implementation.
  • Refactored a hand-written multilingual code generator into a straightforward, traceable template system.
  • Improved compiler code through the use of dynamic variables.

GoodGuide.com

Feb. 2011 - Feb. 2012, Feb. 2013 - Oct. 2015

  • Designed and built critical tools for the science team. Authored an in-house declarative data language, including a constraint-solving type checker, optimizer, and continuation-based sequencer, with a pluggable data layer
  • Fixed long-standing wrong-data bugs by writing a safe concurrent reflow system to update derived data based on fresh data
  • Increased site stability by enabling separate staging, demo, and production environments
  • Solved major process bugs with a switch from mercurial to git, including giving talks and training coworkers
  • Relentlessly fought slog with quality code, established a culture of code review, led refactoring initiatives

Desmos.com

Mar. 2012 - Aug. 2012

  • Boosted MathQuill's rendering performance by an order of magnitude by replacing the hand-coded parsing layer with Parsimmon
  • Worked to get Desmos using the main branch of mathquill by creating a template system for user-defined commands
  • Factored out complex browser input-handling in a cross-browser way, resolving longstanding issues with international keyboards and mobile browsers
  • Rebuilt several ad-hoc build systems using a central Makefile

Causes.com

Feb. 2010 - Dec. 2010

  • Worked on a small team to build wishes.causes.com
  • Transfered the physical servers to a new datacenter
  • Automated the full server build cycle: power-cycle, dhcp, dns, pxe booting, puppet provisioning, and deploy
  • Provisioned a static assets cluster behind a squid reverse-proxy
  • Replaced the single memcached instance with a consistently-hashed cluster
  • Configured and provisioned the A-10 loadbalancers

Talks

Tulip: a Language for Humans at StrangeLoop 2016. (slides)

How to Tell If You've Accidentally Written A Language (And What To Do About It) at clojure/west 2015. (slides)

Variants are not Unions at clojure/conj 2014. (slides, follow-up post)

Parsing With Skeleton Trees Trello Tech Talks, Oct 2016. (slides)

Education

  • University of California, Berkeley. Double major in Mathematics (Pure) and Music. 3.57 UC GPA, 4.0 Mathematics GPA. Graduated: December 2009

  • Tokyo Institute of Technology (東京工業大学). Masters in Mathematical & Computing Sciences.

Research

Skills

  • Languages: English, Japanese, some Spanish

  • I can code in: ruby, javascript (node + browser), bash, python, haskell, ocaml, clojure (but I try to familiarize myself with the semantics and salient features of all languages)

  • Technical things I'm good at refactoring, code maintenance, mentoring junior developers, type systems, parsing, semantic analysis, concurrent programming, unix, rails, browser stuff (though it's a little out of date these days)

  • Leadership skills

    • Organized a housing cooperative, facilitating meetings, generating buy-in for decisions
    • Conflict resolution
    • Public speaking

Open source code I am proud of

  • Rouge: (ruby) A syntax highlighter for Ruby, whose output is compatible with Pygments stylesheets. Includes lexers for over 150 languages.
  • tulip (RPython, C) An untyped functional language that I've been kicking around for about 3 years. The design goals are to balance repl ergonomics with viability as a general purpose language. The current design is centered around open variants using "tagwords", pattern matching, and versatile left-to-right chaining.
  • Parsimmon: (javascript) Originally written as part of MathQuill, Parsimmon is a monadic parser combinator library for javascript.
  • Parsy: (python) Parser combinators for Python 3, taking advantage of bidirectional generators for an API similar to Haskell's do-syntax
  • Mathquill (javascript) gui editable math in the browser.
  • Pjs: (javascript) Classes for Javascript that you'd actually use. Basically it's prototypes with the bad parts taken out.
  • Ry: (bash) the simplest possible virtual environments for Ruby

Non-sequitur interests

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment