Feihong Hsu


I am a freelance fullstack web developer with more than a decade of experience and a strong foundation in Python and JavaScript. Besides web development, I also specialize in web scraping and geospatial programming. My hobbies include reading comics, learning Chinese, volunteering, and dragon boat racing. Currently very interested in working with ReasonML.


Freelance, June 2013 to present

I help clients make websites, usually using Python and JavaScript. 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.


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. View slides

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. View slides

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. View video

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. View video

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. View video

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. View tutorial

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. [View repo]

Cool Character Generator

A simple ReasonReact app that randomly generates visually interesting characters from various writing systems such as Hanzi, Devanagari, and Egyptian Hieroglyphs. Demonstrates key concepts like JS interop, polymorphic invariants, and sending actions from stateless child components. Also includes a recipe to deploy ReasonReact apps to the Glitch app creation platform from a default orphan branch. [View repo]

Starter App for React, Babel, and Webpack on Glitch

A starter app for Glitch that uses React, Babel, and Webpack. Includes extra scripts that help with local development and examples of using widgets from the Material-UI React component library. [View repo]

CHIRP Radio Command Center

Web interface for running command line programs for managing the music collection of a nonprofit radio station. Implemented using the asynchronous Tornado web framework. Real-time logging of processing is handled via websockets. [View repo]