I am not currently seeking employment.
Languages:
Fluent in:
- Python 2.1-2.7 & 3.0-3.4 (Werkzeug, Flask, Pylons, TurboGears 2, SQLAlchemy, mongoengine, Routes, Paste, Genshi, Jinja2, Mako, formencode, CleverCSS, PIL, SVGFig, PyX, psycopg, psyco, cProfile, nltk, PLY, iCalendar, nosetest, fonttools, roboFab, virtualenv, easy_install/PyPi/eggs, pygtk, wxPython, py2exe, lamson)
- JavaScript (ECMAScript & MS JScript, W3C & IE DOM, XMLHTTPRequest ("AJAX"))
- jQuery 1.3-1.5 (jQuery-ui, validate, autocomplete, qUnit, hint, flot, and onfontresize plugins, template.js)
- Angular.js 1.0-1.2
- regular expressions (Perl, Python and POSIX)
- SQL
- Bash shell
- Makefile
Rusty (from lack of recent use):
- Perl 5 (CGI, DBM, PerlOO, PerlGTK)
- C & C++
- TEX & LATEX
- PHP 5.0
- AppleScript
- XSLT 1.0
Basic familiarity with:
- ObjectiveC and Xcode 4
- Ruby 1.8, Rails 2.0, Sinatra
- Lisp (emacs & Common Lisp)
- XSLT 2.0
- Java 1.6/6
- BASIC
- Backbone.js
Formats:
- HTML 5, (D)HTML 4.01/XHTML 1.0, CSS 1 & 2
- SVG 1.1
- HTML <canvas> API
- YAML 1.1
- iCalendar/vCalendar/vObject
- RSS 1 & 2
- Atom
- VRML '97
- GNU Gettext .po files
- bencode
- JSON (& JSONP)
Software:
- Development: Git, Mercurial, Bazaar, Codeville, Subversion, Virtualbox, VMWare 4, 5 & 6, TextMate, SublimeText 2 & 3, Emacs, various GNU utilities
- Database: MongoDB 1.8, Postgresql 7—9, SQLite 3 & MySQL 4 & 5
- Internet: nginx, Apache 2, lighttpd, RabbitMQ, Firefox/Mozilla, Safari/WebKit 1, 2 & 3, Konqueror, Internet Explorer 5, 5.5, 6, & 7, Google Maps API, Flickr API, ssh, BitTorrent (protocol & mainline client)
- Graphics: GIMP, Inkscape, Fontforge, Google SketchUp
Operating systems:
- MacOS (6.x-9.x, OS X 10.2-10.10)
- Linux (kernel 2.0-2.6)
- Debian 2.0-3.1, Debian package system & format
- Ubuntu 4.10-10.04
- generic UNIX/POSIX systems
October 2012 - March 2015
Co-founder, CTO, and later Chief Architect at GoodsCloud.com, now NewStore.com. GoodsCloud is an e-commerce tool that facilitates cross-organization and flexible processes such as drop-shipping, merging on- and offline shopping, mobile shopping, and many other processes.
- Initial requirements gathering and customer development with business process experts
- Database design and implmentation in PostgreSQL
- Application architecture design; REST-ful API in Python on Linux, JavaScript/Angular.js front-end
- Enterprise Service Bus and Service-Oriented Architecture using RabbitMQ
- Grew the team from one to nine programmers, ranging from novice to expert
- Worked with the team and with business to develop coding, deployment, QA and planning guidelines and processes
September 2011 - October 2012
Head of Web Development Team, txtr.com GmbH. txtr provides B2B electronic book software.
- Took over management of a team of Python developers, including:
- interviewing and hiring two new developers
- re-integrating two developers from another project back into the team
- overseeing transfer of institutional knowledge from departing developers
- Took over management of a legacy Jython & Django web application, including:
- adapting to changing business requirements and implementing new features
- developing and implementing a comprehensive plan for progressive improvements to the codebase
- upgrades to core libraries
- performance auditing and significant improvements
- complete site redesign
- merging two production forks of the codebase
- repairing problematic test suite
- migrating off of Jython to cPython
Director: Florin Duriou, VP of Engineering
April 2010 - October 2010
Lead Software Engineer, Digg.com, Inc. Digg is a place for people to discover and share content on the web.
- Digg Ad Server: responsible for design and implementation of:
- Rich web application (jQuery & HTML 5) for managing campaign, ad, and billing information
- SQL schema for managing campaign, ad, and billing information
- Reporting interface to display ad traffic and accounting numbers using HTML <canvas>
- Pylons application for serving advertisements on Digg.com
- Integration with preexisting LDAP, Zookeeper, Hadoop & Cassandra services
Director: Anton Kast, VP of Research
August 2008 - November 2009
Lead Developer, Sycle LLC. Sycle was a small software company providing medical practice management software to the hearing aid industry.
- Database migration and integration project:
- pulled data from several different legacy corporate databases and datastores
- understood legacy insurance industry business logic
- designed modern, normalized schema and ORM implementation
- reverse-engineered and enforced primary, unique and foreign keys
- Pure static user interface for corporate insurance billing users ("pure static" means SSIs were the only server-side HTML generation tool available):
- implement RIA interaction using jQuery
- design ORM-like XML API to read and write complex objects on the server over XMLHTTPRequest
- complex UI widgets generated from templates using JavaScript
- layout using adapted version of the 960 Grid System and CleverCSS
- automatic application configuration based on host and path name
- ensure IE 7+, Gecko & WebKit compatibility
- Bringing existing team in line with best practices:
- don't repeat yourself (DRY) programming
- model-view-controller (MVC) architecture
- create/read/update/delete (CRUD) architecture
- distributed version control
- normalized database design
- coding guidelines
- user-interface implementation patterns
- web application deployment
August 2003 - September 2005, May 2006 - April 2008
Co-Founder and Lead Developer, Mo-Tsuki, LLC, San Francisco
Duties included:
- Design:
- co-conception and design of social event-sharing "Web 2.0" application
- worked closely with 3-4 person team
- studied on-line communities with an eye to encouraging a trustworthy, high-quality/signal, low-noise/abuse, and comfortable user experience
- developed strategies for how to share permissioned data in a multi-user environment
- Implementation:
- complex DHTML and JavaScript interface including various AJAX functionality
- natural-language time and date parser, in Python
- modular templating layer using XSL (libxslt) transforms on XML to generate DHTML, CSS, JavaScript, RSS, and iCalendar
- design of application services in Python and interface with a back-end Postgresql database
- account creation, verification, and management system
- creation and maintenance of unit and end-to-end test suites
- auditing application for security holes
- responding to bug reports and user feedback from the project's small but devoted user-base
See http://mosuki.com/ (defunct)
October 2004 - May 2006
Co-lead Developer and User-Interface Lead, BitTorrent Inc., San Francisco
Duties included:
- worked closely with a 3-6 person team of programmers
- improvements to BitTorrent 4.0, 4.2, 4.4:
- complete interface redesign to bring BitTorrent up to par with competing clients
- complete interface reimplementation in GTK
- robust auto-update system capable of detecting, downloading, and installing new versions of the program across three different operating systems
- i18N of interface strings
- full re-design and re-implementation cycle for BitTorrent 4.20 - 5.0 releases:
- collaborating with back-end developers on application-wide restructuring to add many features and fix long-standing, deep design flaws
- collaborating with graphic designers on second interface redesign
- complete interface reimplementation in wxWidgets
- RSS feed and plug-in infrastructure (project canceled)
- managing ~40 releases of new versions of the client, ~30 through auto-update system
- tracking, responding to, and fixing a large number of bug reports from BitTorrent's ~4 million user base
- restructuring command-line interface and curses / headless interfaces for better usability and to accomodate new features
- following on-line forums and blogs to keep abreast of what features BitTorrent users wanted
- adding / removing settings and preferences, both explicit and implicit, to improve user experience
- managing l10n volunteers and paid team to localize interface into over 50 languages
Director: Ross Cohen, CTO
April 2003 - August 2003
Developer, Not Another Corporation, Inc., San Francisco
Duties included:
- Development on a standalone Python medical management application, to handle patient/ appointment/ doctor/ diagnosis/ prescription records, using wxWidgets (then wxWindows) and MySQL.
- Development of a parser/syntax highlighter/indenter and emacs mode for PAL (Paradox Application Language, an archaic database access language).
Director: Norman J. Harman, Lead Programmer
April 2000 - September 2000, June 2001 - September 2001
Research Assistant to the Linguistics Department at UC Santa Cruz
Duties included:
- Analysis of linguistic data in Turkish, and improvements on a finite-state automaton meant to model Turkish morphology (word structure).
- Maintenance and development on keCi, keCi+, and iCek, implementations of the FSA model of Turkish, written in Kernighan & Ritchie C.
- Design of a course in programming to solve linguistic problems.
Director: Jorge Hankamer, Professor of Linguistics and Dean of Humanities
June 1999 - October 1999
Lead Developer on the Form-It project, AtreNet web solutions, Santa Cruz
Duties included:
- Managing a team of two programmers and two web designers working on the project.
- Design and implementation of a Perl CGI with the following features:
- Generate and execute Perl code to process a submitted HTML form.
- Receive data submitted from HTML forms, report the data and perform statistical analysis on it.
- Manage a SQL database of registered users, forms, and individual submissions.
- Generate arbitrary HTML based on configuration files.
Director: Tushar Atre, CEO
June 1998 - April 2000
Developer and System Administrator, CATS Instructional Computing, UC Santa Cruz
Duties included:
- General IRIX web-server and SMB/Samba file-server maintenance and upkeep.
- Development and documentation of a Perl/CGI program to allow users to schedule time on multiple computers in a computer lab.
- Development and documentation of a Perl/CGI Placement Exam for the Spanish Department.
- Writing tutorial web pages for UCSC faculty for various commercial software.
- Small Perl and/or JavaScript solutions for course web pages.
- Working with a team of students to support the faculty lab users.
Director: Robin Ove, FITC Director
- December 1999 - Present
Contributor to Theory.org, an art and science web collective. http://www.theory.org
- May 1998 - August 2000
Co-sysadmin on the Porter Student Webserver, a student-maintained RedHat Linux webserver hosting student art projects. http://www.porter.ucsc.edu/ (now defunct)
- September 1997 - June 2000
Online Editor & Production Manager at The Fish Rap Live!, an independent, student-run print newspaper published bi-weekly at UC Santa Cruz. http://www.fishraplive.com/ (now defunct)
Selected independent projects:
- Fragments • http://glyphobet.github.com/fragments/
A tool to use concepts from version control to replace many uses of templating languages.
Author: Matt Chisholm
- Mathematician's dice • http://glyphobet.net/store/dice
Novelty dice made with the six most important numbers in mathematics. What began as a Kickstarter project became a full-time job for part of 2011.
Inventor: Matt Chisholm
- PottyMouth • http://glyphobet.net/pottymouth/
A tool to transform completely unstructured and untrusted text to valid, nice-looking, completely safe XHTML.
Author: Matt Chisholm
- FlakeNot • http://flakenot.com
A web and email application that keeps track of events on your calendar.
Authors: Matt Chisholm & Ross Cohen
- The Neighborhood Project • http://hood.theory.org/
A map of city neighborhoods based on the collective opinions of internet users.
Authors: Matt Chisholm & Ross Cohen
- Codeville • http://codeville.org/ (now defunct)
A distributed, next-generation version control system that allows for very easy branching and merging. (Begun in 2004; Predated Git, Mercurial, & Bazaar)
Author: Ross Cohen
- Alphabet Soup • http://www.theory.org/artprojects/alphabetsoup/main.html
A Python and python-imaging based art project exploring the boundaries of typography. Now bundled as a plug-in with the Inkscape drawing program.
Author: Matt Chisholm
You can see various other projects and contributions on BitBucket, GitHub, and Launchpad.
- Programming interests: typography & fonts, user-interface design, vector graphics, theming, geocoding, linguistics, artificial intelligence, file-system design, mathematics, dynamical systems and chaos theory, on-line communities, peer-to-peer systems.
- I would like to learn: Node.js, Mongrel2, Redis, D, OCaml, PostScript and ProLog.
- Other Interests: typography, writing, photography, travel, graphic design, architecture & design, geography, physics.
References will be provided upon request.