Programmer, languages and tools specialist
tel:+1-647-468-8948 mailto:firstname.lastname@example.org 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.
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
- 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
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.
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
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
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
How to Tell If You've Accidentally Written A Language (And What To Do About It) at clojure/west 2015. (slides)
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.
Jeanine Miller Adkisson, Johannes Westlund, and Hidehiko Masuhara. 2019. A Shell-like Model for General Purpose Programming. In Companion of the 3rd International Conference on Art, Science, and Engineering of Programming (Programming ’19), April 1–4, 2019, Genova, Italy
Jeanine Miller Adkisson. Magritte: A Language for Pipe-Based Programming. Master Thesis at Tokyo Institute of Technology (東京工業大学). Submitted Aug 2019. Tokyo, Japan.
Languages: English, Japanese, some Spanish
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)
- 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.
- Parsy: (python) Parser combinators for Python 3, taking advantage of bidirectional generators for an API similar to Haskell's do-syntax
- Ry: (bash) the simplest possible virtual environments for Ruby
- Feminism and trans-feminism
- Music! I make electronic music (http://jneen-collective.bandcamp.com/) and I used to play drums for Mya Byrne.