Freelance, June 2013 to present
EveryBlock, September 2011 to Februrary 2013
I worked on a large Django site with a strong geographic focus. We had a PostgreSQL backend and used Celery for tasks. In particular I focused on scraping and presentation of external datasets in various formats including web pages, structured files, APIs, and even PDFs. I also helped create an internal system for the timely detection of scraping errors.
Leapfrog Online, May 2008 to September 2011
I worked on a large Pylons app for managing ad campaigns, which had a complex GUI written in ExtJS and jQuery. Later I switched to developing a large Django app for executing cable promotions. My unique contribution was introducing frontend tests to the development process, using QUnit and PunkyBrowster.
Morningstar, August 2005 to January 2008
I worked on an ASP.NET app to extract data from a SQL Server database and display it as XML to end users. I also created a Python command line program to generate hundreds of T-SQL queries, ushering in the official use of Python at the company.
Using Tasks in Your Asyncio Web App, September 2016
I cover how to implement different types of tasks in an asyncio-based web application, including how to start them, stop them, and send incremental data to a web frontend using websockets. I also spend a little time reviewing asyncio concepts.
Using Realm with Swift, March 2015
Realm is a mobile database for iOS and Android. On iOS, it's meant to be a replacement for Core Data, offering a similar API but with better performance and a smaller footprint.
Asynchronous I/O in Python 3, July 2013
An overview of PEP 3156 and basic usage of the reference implementation, codenamed Tulip. This is now known as asyncio, and is currently in the Python 3 standard library.
I discuss how we implemented various scrapers at EveryBlock. I give an overview of the various tools we employed. I also give some advice for managing a collection of constantly-failing scraper programs.
Ultimate Language Shootout IV: CoffeeScript, June 2013
Introduction to CoffeeScript language for Ultimate Language Shootout IV. I offer some comparisons with Python and demonstrate how to debug at the source level inside Chrome dev tools.
Secrets of the Framework Creators, March 2008
A PyCon tutorial that covers advanced language features that commonly appear in the codebases of popular Python frameworks. We go over the syntax and usage of frame hacks, magic methods, decorators, and metaclasses. There are examples and exercises for tutorial participants.
App Inventor tutorial made for the ChickTech Mobile App Workshop. Shows high school students how to create basic Android apps that make use of the camera, GPS, networking, QR code scanning. There is even a bonus chapter on setting up a basic web app on PythonAnywhere.
Web interface for running command line programs for managing the music collection of a nonprofit radio station.
A small module containing convenience classes to make it easier to create simple asyncio-based web applications.
A minimal web-based user interface framework for Python command-line applications.