Feihong Hsu

Who

I am a freelance Django developer with more than a decade of Python experience and a strong foundation in JavaScript programming. Besides fullstack web development, my specialties are web scraping and geospatial programming. I'm excited by the new async/await syntax in Python 3.5. My hobbies include reading comics, learning Chinese, drawing, and dragon boat racing.

Experience

Freelance, June 2013 to present

I have helped a number of clients with their Python and JavaScript web development needs. On the odd occasion I've also done iOS work in Objective-C.

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.

Talks

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.

Scraping from the Web: An Overview That Does Not Contain Too Much Cussing, February 2013

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.

Open Source Projects

Mobile App Tutorial

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.

CHIRP Radio Command Center

Web interface for running command line programs for managing the music collection of a nonprofit radio station.

muffin-playground

A small module containing convenience classes to make it easier to create simple asyncio-based web applications.

quip

A minimal web-based user interface framework for Python command-line applications.

Education