Senior Software Developer
This is my Resume.
Projects & Things
the virtual tabletop role-playing game
P&T is a digital "tabletop" role-playing game, implemented in Rust for the backend and Typescript/React for the frontend.
Functional Programming in Python
O'Reilly Video Series
In 2015, I wrote and recorded an educational video training course about functional programming with the Python programming language. It covers a basic introduction to functional programming, how to use FP in Python, and several libraries that can help. Total edited runtime is 2 hours 54 minutes.
pure I/O in Python
I created and maintain the Effect library for Python. Effect is a library that facilitates "effect isolation", which means separating I/O code from pure functions in a codebase to enable various benefits, like improved testability and separation of concerns.I originally created Effect to facilitate my work on Otter at Rackspace.
asynchronous networking for Python
I was a long-time contributor to Twisted, an open source asynchronous networking framework. I have collaborated with the team to design, implement, and review changes to many parts of the code base. I've also managed releases of the software, developed build automation tools, and maintained the twistedmatrix.com hosting infrastructure.
I've given a few talks. The only one that I can still find online is a talk I gave at Strange Loop in 2015 about the Effect library. Side-effects are a public API
See my GitHub profile for more projects I've worked on.
Juice Analytics - Senior Software Developer, Platform
Remote March 2018 - April 2023
I worked on the Juicebox platform, which allows in-house developers and third-party users to develop data storytelling apps using any data set. I was heavily involved in productizing our platform into a no-code story builder. My work was thoroughly full-stack: a Typescript/React/Relay frontend and a Python backend. Technologies: GraphQL, Django, PostgreSQL, Redshift, BigQuery, AWS and Google Cloud.
Skedge.me - Lead Engineer, Platform
Remote January 2016 - July 2016
I worked on Skedge.me, a calendaring and scheduling application for retailers. I worked on the core Haskell codebase, and also improved the build system with Haskell Stack and Shake. I also shared devops responsibilities, and implemented large refactorings of the staging and production deployment automation, which involved Ansible, NixOS, Docker, and AWS.
Rackspace - Software Developer 5, Auto Scale
Remote May 2013 - December 2015
I worked on Rackspace Auto Scale (Otter), an open source auto-scaling product for the OpenStack-based Rackspace cloud. It's implemented in Python with Twisted, and uses pure functional programming techniques using my Effect library.
Canonical Ltd - Software Developer, Landscape
Remote February 2012 - May 2013 (and March 2006 - August 2009)
I worked on Landscape, a consumer service for managing large-scale deployments of Ubuntu. During my time there, I worked on design and implementation of an audit log system, major API design improvements, and OpenStack cloud management.
38 Studios - Programmer, Platform
Providence, RI July 2011 - February 2012
I worked on the 38 Studios Platform, which is an account and data service that hosts and provides APIs for accounts, achievements, access controls, and so on. My work on the platform largely involved Scala and Python. I also worked on front-end web JS apps that used the platform, such as account.amalur.com.
id Software - Systems Programmer, Quake Live
Dallas, TX January 2010 - July 2011
I worked on Quake Live, a first-person shooter game for the web. I worked on matchmaking, performance improvements through metrics gathering & optimization, social features, and dealing with integrating the plethora of technologies involved.
I've been doing professional software development since 2001. If you'd like to know more about my history, please contact me.
OneSignal - Senior Engineer
Remote April 2023 - present
I recently took a job at OneSignal on their monetization team. More info coming.
[Chris] has been a valuable part of my team at Rackspace for several years now. His best attribute is his ability to bring sophisticated ideas like Haskell’s monads to the level of writing code for a real-world product that works in production. He's an effective remote worker, even when his team is mostly not remote. His code reviewing skills are exemplary and he's never hesitated to dive into mysterous or tricky issues in production.
—Ken Wronkiewicz (Manager, Rackspace Auto Scale)