To take a senior software and interface architecture role, and Python and/or JavaScript programming role, on a small, talented development team working on interesting and challenging projects, in San Francisco, California; New York City, New York; or Berlin, Germany. I am primarily interested in contract or contract-to-hire positions right now.
Languages:
Fluent in:
- Python 2.1-2.6 & 3.0 (Werkzeug, Pylons, TurboGears 2, SQLAlchemy, Routes, Paste, Genshi, Mako, 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 (jQTouch, jQuery-ui, validate, autocomplete, qUnit, hint and onfontresize plugins, template.js)
- XSLT 1.0
- regular expressions (Perl, Python and POSIX)
- SQL (Postgresql 7/8, SQLite 3 & MySQL)
Rusty (from lack of use):
- Shell scripting, primarily Bash
- Perl 5 (CGI, DBM, PerlOO, PerlGTK)
- C & C++
- TEX & LATEX
- PHP 5.0
Familiar with:
- Ruby 1.8 & Rails 2.0
- Lisp (emacs & Common Lisp)
- BASIC
- AppleScript
- XSLT 2.0
- Java 1.6/6
- Flash
- Curses
Formats:
- HTML 5, (D)HTML 4.01/XHTML 1.0, CSS 1 & 2
- SVG 1.1
- YAML 1.1
- iCalendar/vCalendar/vObject
- XML
- RSS 1 & 2
- Atom
- OS X plist
- VRML '97
- GNU Gettext .po files
- bencode
- JSON
Software:
- Development: Mercurial, Bazaar, Codeville, Subversion, Virtualbox, VMWare 4, 5 & 6, Emacs, TextMate, GNU utilities (gcc, readline, getopt, make, gettext, gdb, etc.)
- Internet: Apache 2, lighttpd, Firefox/Mozilla, Safari/WebKit 1, 2 & 3, Konqueror, Internet Explorer 5, 5.5, 6, & 7, Google Maps API, Flickr API, Facebook API, ssh, BitTorrent (protocol & mainline client)
- Desktop: Xorg/X-Windows, Gnome, GTK
- Graphics: GIMP, Inkscape (formerly Sodipodi), Fontforge (formerly PfaEdit), Google SketchUp, Sawfish (including themes), Fontographer, Photoshop, PageMaker
Operating systems:
- Linux (kernel 2.0-2.6)
- Debian 2.0-3.1, Debian package system & format
- Ubuntu 4.10-9.04
- MacOS (6.x-9.x, OS X 10.2-10.6)
- generic UNIX/POSIX systems
August 2008 - November 2009
Lead Developer, Sycle LLC. Sycle is 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/
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:
- PottyMouth • http://devsuki.com/pottymouth/
A tool to transform completely unstructured and untrusted text to valid, nice-looking, completely safe XHTML.
Author: Matt Chisholm
- Spydentify! • http://spydentify.com
A collaborative web game/communtity where users identify mysterious images.
Author: Matt Chisholm
- 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/
A distributed next-generation version control system that allows for very easy branching and merging.
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.
Author: Matt Chisholm
-
SYNTEX • http://www.theory.org/~matt/syntex/syntex_manual/
A Perl preprocessor for LATEX to draw syntactic trees based on parenthesized strings.
Author: Matt Chisholm
-
bfe, pbfe, qfe, libquat and related projects • http://www.theory.org/software/
A suite of software tools written in C++ to visualize arbitrary dynamical systems in two, three and four dimensions.
Authors: Brian Martin & Jeremy Avnet
- 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: D, OCaml, PostScript and ProLog.
- Other Interests: typography, writing, photography, travel, graphic design, architecture & design, geography, physics.
References will be provided upon request.