Create a gist now

Instantly share code, notes, and snippets.

@jneen /resume.md Secret
Last active Jan 31, 2017

Jeanine Adkisson

Programmer, languages and tools specialist

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

What I'm looking for

Oslo, Glasgow, or nearby with visa 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.

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

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 new
  • 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

Metta Mentors / ExperiMentors

Jun. 2011 - Aug. 2011, Jun. 2012 - Aug. 2012

  • Designed and facilitated workshops for 3-7 live-in participants for 10 weeks
  • Ran house meetings and facilitated the creation of shared agreements and processes
  • Mediated and resolved conflicts between participants and other house members
  • Designed and implemented the application and interview process
  • Welcomed and oriented international participants

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)

Education

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

Skills

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

  • Technical things I'm good at browser mumbo jumbo (html/css/js/jquery), rails, type systems, parsing, semantic analysis

  • Leadership skills

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

Open source code I am proud of

  • tulip (lua, ocaml, 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.
  • Rouge: (ruby) A syntax highlighter for Ruby, whose output is compatible with Pygments stylesheets. Includes lexers for over 70 languages.
  • 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