Concord, CA 94519
Education - I have a Bachelor of Arts (with honors) in mathematics with a concentration in computer science from St. Mary's College of California. I won the Br. Alfred Brousseau award for "outstanding scholarship as a mathematics major."
Profile - I am an enthusiastic and friendly extrovert. My most notable traits as a programmer include: an incredible dedication to producing clean, well-documented, well-tested code on time and on budget; a passionate love of programming and especially programming languages; and a commitment to the open source community.
Skill Set - On a scale of one to five, five being the most familiar, I am familiar with the following technologies:
- ActionScript (AS3): 3
- C: 3
- C++: 3
- Dart: 5
- Erlang: 2
- Go (golang): 3
- Haskell: 3
- Java: 3
- Objective-C: 2
- Perl: 4
- PHP: 5
- Python: 5
- Ruby: 4
- Scala: 3
- Scheme: 2
- Shell scripting (sed, awk, sh, make): 3
- x86 Assembler: 2
- FreeBSD (including creating ports): 5
- Linux (Ubuntu, Fedora, etc.): 5
- OS X: 4
- Solaris: 2
- Apache: 4
- CSS: 4
- Django: 4
- Google App Engine (Python, Go, Java): 4
- Google Web Toolkit (GWT): 4
- HTML5: 4
- jQuery: 4
- nginx: 3
- Play Framework: 3
- Pylons: 4
- Rails: 4
- Twisted: 3
- XML (SAX, DOM, etc.): 3
- Zope and Plone: 4
- AWT and Swing: 4
- GTK and GNOME (C, PyGTK): 4
- QT and KDE: 4
- SDL and PyGame: 4
- Tk (Perl, Ruby, Python): 4
- Android: 2
- iOS: 2
- MySQL: 5
- PostgreSQL: 3
Protocols (RFC-level knowledge):
- HTTP: 4
- IPv6: 5
- SDP: 5
- SIP: 5
- CVS (usage and administration): 4
- Git: 4
- Lex and Yacc (C, OCAML, PLY): 3
- Selenium: 4
- Subversion (usage and administration): 4
- Agile software development (Extreme Programming, Scrum): 4
- Asynchronous network programming (stackless Python, gevent, Twisted, node.js, etc.): 5
- Behavior Driven Development (BDD using Cucumber, RSpec, and Webrat): 5
- Client/server programming: 5
- Compiler and interpreter design: 2
- Design patterns: 5
- Facebook APIs (RFacebook, PyFacebook): 4
- Functional programming: 4
- Internationalization (I18N) and localization (L10N) including multi-byte languages, Unicode, and UTF-8: 5
- Kernel programming: 2
- Model view controller (MVC) programming: 5
- Multi-threaded programming: 3
- Object oriented programming (OOP): 5
- Peer-to-peer programming (P2P): 3
- RESTful web services: 4
- RPC mechanisms (CORBA, XML-RPC, RMI, etc.): 3
- Scalable Internet architectures: 3
- YouTube APIs: 4
- Concurrency and Python
- Developer Diaries: The Pull on Python Programmers
- Translating C to English Using Haskell
- Everything Your Professor Failed to Tell You About Functional Programming
- The Inverse Extension Design Pattern
- Prototyping Interpreters using Python Lex-Yacc
- Learning Scala
- Play Framework Essentials
- Dart: Up and Running
- Expert Python Programming
- Python for Unix and Linux System Administration
- Treading on Python Volume 1
- Core Python Programming
- Core PHP Programming
- I maintain a fairly popular technical blog. My Google+ profile currently has 6.5k followers.
- I've spoken at most of the nearby Python and Ruby users groups, including PyCon.
- I was moderator of BayPiggies (the Bay Area Python Interest Group) for 3 years.
- My work with Jeffrey Posnick on "Party Playlist Picker" at Google led to a patent application for realtime YouTube playlist collaboration.
- I was acknowledged in Foundations of Agile Python Development.
- I was acknowledged in RFC 3974 and RFC 4193.
- I am the author of GCipher, an open source encryption GUI and network proxy written in Python using PyGTK.
- I am the author of Aquarium, an open source Web application framework written in Python. Aquarium was mentioned in Oracle and Open Source and was used by IronPort Cisco for many years.
- I was the coauthor of Freetrade, an open source shopping cart system written in PHP and used in several ecommerce sites.
Functional Programming Principles in Scala
École Polytechnique Fédérale de Lausanne
- 5/2013 to 7/2015 - Twitter
Q1 2015 - Q3 2015 (and previously as a 20% contributor)
Staff Education Engineer for Twitter University
- Developed and/or taught various classes for Twitter University with a focus on core software engineering subjects.
- Led "Flight School Basics", the new hire orientation for engineers.
Q2 2013 - Q4 2014 (and afterwards as a 20% contributor)
Staff Software Engineer in Infrastructure and Operations
- Created and taught a class called Best Practices for Software Engineers. This class became part of the new hire orientation process for engineers.
- 5/2011 to 4/2013 - Google
Q2 2013 - Q2 2013 (and previously as a 20% contributor)
Senior Developer Advocate for Dart
- Gave talks about Dart. Gave 7 international talks in 6 countries. Gave 9 talks locally.
- Wrote open source code. Developed doc-code-merge and led development of doc-code-verify to make sure code samples embedded in documentation stay correct. Led a project called dart-html5-samples to port samples from HTML5 Rocks into Dart. The samples are linked to from the welcome page of Dart Editor. Worked with another developer to build a project called Irrduino. The frontend that I built in Dart looks like Farmville, but it actually controls a real sprinkler system. Built Tetris in Dart only a month after Dart was first announced.
- Advocated for Dart using video. Hosted or helped host 7 episodes of Dartisans for Google Developers Live. We've gotten over 11k views for just those 7 episodes. Gave a talk on Dart in Spanish that resulted in 1.8k views and 166 hours of watch time. This took a lot of effort since I am not a native Spanish speaker! Created a screencast on using Dart with GWT that got 1.7k views and 161 hours of watch time. Created a video about Irrduino that resulted in 6k views and 200 hours of watch time. Spoke remotely at 3 DevFests for a total of 300 attendees.
- Wrote blog posts about Dart. Wrote the most popular blog posts on Dart two quarters in a row thanks to my blog posts on TypeScript and dart-html5-samples.
Q2 2011 - Q2 2012 (and afterwards as a 20% contributor)
Senior Developer Advocate for YouTube APIs
- Advocated for YouTube APIs. Spoke about YouTube APIs at 9 international events in 8 countries. Spoke at 15 local events. Won a peer bonus for giving 3 talks in one trip to Egypt. Wrote 5 blog posts for the YouTube API blog. I was the host for 9 episodes of YouTube Developers Live, which resulted in 16k views.
- Jarek Wilkiewicz and I decreased the average customer wait time for the partner support queue by 300% in one quarter. Worked with Jarek Wilkiewicz to gain a total of 10 commitments for various YouTube API launches. In particular, worked with 6 different partners as they integrated with YouTube.com/create. Had 56 partner meetings in which I solved problems, gathered feedback, and garnered integrations.
- Gave two webinars for Google I/O. My webinar Using Ruby on Rails and YouTube APIs for Educational Apps currently has 75k views and was our most successful Google Developers Live video. My webinar YouTube for Your Business currently has 13k views.
- Built Quizzimoto, an open source application that I used as the basis for my talk Using Ruby on Rails and YouTube APIs for Educational Apps talk. Also used it to give a talk at two local Ruby users groups, including a talk at Pivotal Labs.
- Worked with Jeffrey Posnick to build Party Playlist Picker. It's an open source Google App Engine application written in Python that lets users collaboratively edit a YouTube playlist in realtime. My blog post about it has been read by over 3k people. Our Google Developers Live video for it has gotten over 1k views. My team members liked the way I structured the code so much that they used the same structure in their other Python applications.
- Provided technical support for business development in meetings with game publishers. I've met with roughly 15 partners including one of Google's largest advertising partners. This had a direct impact on Google's bottom line.
- Open sourced numerous sample projects written in Python, Ruby, PHP, Dart, and Java (for Android).
- In the last year, I've written 61 technical blog posts on my personal blog. I get 10k page views a month. I have 1k subscribers on Google Reader, but I'm also aggregated into Python Planet which has 4.3k subscribers on Google Reader. I have 5.4k followers on G+ as of September 2012.
- 10/2010 to 3/2011 - Twilio (a web services startup)
- Senior Software Engineer. Lead a project as it moved from prototype to production via refactoring, performance testing, and scalability enhancements. Used Python and Twisted. Built various prototypes using Socket.IO, node.js, js.io, gevent, WebOb, Twisted, zeromq, Flask, Jinja2, Ruby, Rails, and MySQL.
- 6/2009 to 10/2010 - Fandor (a small indie film startup)
- 3/2008 to 6/2009 - 24 Hr. Diner (a three-person startup)
- Senior Software Engineer. Architected and built a general-purpose recommendation system similar to Amazon's system using Linux, nginx, MySQL, and Python.
- 7/2007 to 11/2007 - MultiCosmic (a two-person Facebook startup)
- Senior Software Engineer. Built a Facebook app called Free or Best Offer using Linux, MySQL, Ruby on Rails, and RFacebook.
- 8/2006 to 5/2007 - Foxmarks Inc. (a startup by Mitch Kapor)
- Senior Software Engineer. Built www.foxmarks.com (the corporate website), login.foxmarks.com (the account management application), and my.foxmarks.com (used to view your bookmarks online) using Linux, MySQL, Python, Pylons, and Genshi.
- 1/2004 to 8/2006 - IronPort Systems (a startup acquired by Cisco)
- UI Platform Engineer within the Architecture and Platform Engineering Group. My Web application framework, Aquarium, was officially adopted across the entire organization. Architected the user interface to configure the email gateway appliance, including centralized management and localization to eight languages. (The user interface alone consisted of over a quarter of a million lines of code.) Built a Web server named Glass that could run under stackless Python with coroutines. Was responsible for the common look-and-feel of IronPort applications across the company.
- 8/2001 to 12/2003 - NTT Multimedia Communications Laboratory
- Software Engineer. Worked (sometimes in a team, usually alone) on a wide range of research and development projects using: Perl, Ruby, C, C++, sh, Jython, Tk, QT, KDE, Swing, Zope, Mason, mod_perl, IPv6, HTTP, SSL, XML-RPC, Linux, FreeBSD, XML, PGP, Apache, PostgreSQL, client/server programming, multi-threaded programming, peer-to-peer programming, and I18N.
- 9/2000 to 5/2001 - Echobridge
- Programmer 2. Built Catholic Healthcare West's website using Python, MySQL, SQL Server, Apache, Linux, and Aquarium.
- 6/1999 to 9/2000 - Clear Ink
- Web Engineer 2. Worked on multiple ecommerce sites using PHP, MySQL, Solaris, and NT.
- 1/1998 to 4/1998 - Sun Microsystems
- Resolution Coordinator Intern. Provided technical support over the phone to other members of Sun Microsystems using Solaris.
- 11/1997 to 5/1999 - Saint Mary's College of California
- Group Tutorial Leader. Tutored groups of three to fifteen students who were learning Turbo Pascal, C++, and x86 assembler.
Here are some of my professional videos.
References are available upon request.