Abe Fettig

Hello, I'm Abe Fettig, and I build web applications. This is my professional resume.

What I do

I design and build apps that run in web browsers, with interfaces built in HTML, CSS, and Javascript. I've been doing this since 1999, more than ten years. Along the way I've acquired an extensive collection of real-world bugs, workarounds, and performance tricks that help me push the limits of what a cross-browser web app can do.

For my own projects I generally use the Python programming language. I have a strong working knowledge of the Django web development framework, and the Twisted framework for building networked applications. I'm also experienced in implementing and debugging the standard formats and protocols used for internet communications, including HTTP, SMTP, POP3, IMAP, MIME, RSS, and Atom.

I like working with technology, but I care more about people. I look at my technical knowledge as just a means to build products that people will enjoy using. My goal is to make applications that delight users instead of frustrate them. And when I'm working on a project with other people, I try to treat them with kindness and respect.


From 2006 to 2010 I was employed as a software engineer for Google. At Google I worked on Google Sites, a product that lets any person or team create and publish a good-looking, organized website using only a web browser. Much of my work was on the Sites WYSIWYG HTML editor, which is implemented in Javascript. I also made some contributions to shared Javascript libraries used inside Google, including an interesting piece of code (now open sourced) which can be used to generate a set of CSS rules that make an iframe appear to inherit the styles of its containing element.

From 2004 to 2006 I worked at JotSpot, a startup that built and sold the JotSpot wiki product (JotSpot was acquired by Google in November 2006). At JotSpot I worked on a number of projects, including rewriting our templates to be based on structural markup and CSS layouts, improving our suite of Wiki-based applications, and developing a plugin system for extending the wiki.

While at JotSpot I developed a new product, JotSpot Live, a web application that allowed multiple users to take notes collaboratively in real time. JotSpot Live used the JotSpot wiki server to store page data and a Twisted web server to push changes to the browser using XMLHttpRequest long-polling. (Soon after the release of JotSpot Live, JotSpot's Alex Russell coined the term "Comet" to describe this kind of technique.)

During the year before JotSpot was acquired, I took over development of the JotSpot WYSIWYG editor, which included contributing speed and usability improvements to the open source Dojo RichText widget. I was able to greatly improve the JotSpot editing experience, making in-page Ajax editing fast, stable, and seamless. At the 2006 Ajax Experience Boston conference I gave a talk entitled "Where to Use WYSIWYG", in which I shared some of what I'd learned about browser-based editing.

Between 2002 and 2006 I developed Hep Message Server, which I released as open source software. Hep was a communications server that offered storage transfer of email and RSS messages while also proxying between RSS, POP3, IMAP, SMTP, NNTP, and weblog APIs. This allowed users to do things like read their RSS feeds using their email client over IMAP. Hep was implemented using Python and the Twisted framework. Along with Hep I also released a library called Yarn, which provided a standard Python API for reading and writing messages using many different formats and protocols. I gave a talk on Yarn at PyCon 2005 in Washington, DC.

In 2005 my book on working with network protocols in Twisted, Twisted Network Programming Essentials, was published by O'Reilly.

From 2002 to 2005 I worked as a programmer at Diversified Business Communications in Portland, Maine. During that time I was responsible for designing and building several major new pieces of software, including a system for syncing data between internal databases and the web, a company intranet, and a data warehouse that merged customer data from several different sources and made it available for reporting and analysis.

From 1999 to 2002 I worked as a contractor doing custom software development, including a number of web-based applications backed by SQL databases.

In 1999, while attending Southern Maine Technical College, a friend and I developed Happymail, a prototype web-based email system. Unlike other web email products at the time, Happymail used Javascript and hidden frames to send data between the client and server, so it didn't require a full page refresh every time you wanted to check your mail or open a message. (Since then, of course, Ajax techniques have become widely adopted, but at the time we'd never seen anything like this done before.)

Hire me

I'm available for hire on a contract, hourly basis (depending on my current projects and schedule). If you have an interesting project that you'd like to hire me to work on, I'd love to talk about it. You can reach me by email at abe@fettig.net.