Relevant Experience:
September 2009-March 2011
Shopkick
Member of Technical Staff
- As the second engineer and a senior memeber of the engineering team, architected and built many core backend systems based on pylons, thrift, and python.
- Architected and built a flexible internal analytics system to handle millions of events using scribe, hadoop, and infinidb.
- Implemented various features for both the Causeworld and Shopkick iphone clients.
- Designed and implemented build and deployment systems.
August 2008-August 2009
Ooyala, Inc.
Senior Software Engineer/Team Lead
- Led a team of 6 engineers in a ground-up rewrite of Ooyala's video player, joining the project after an initial high-level design was sketched out. The finished rewrite totalled 100,000+ lines of actionscript, and is a significant quality improvement over the previous version, with a significantly more flexible architecture. Was the lead architect and developer for the core data model and core video playback modules. Significantly improved playback quality and load time of the player when compared to the previous version. (Blog post)
- Led adoption of unit testing and code reviews as standard engineering practices on the player/backlot team. Starting with a team with experience levels ranging from no familiarity at all with unit tests or code reviews, to engineers that were actively writing unit tests and had done code reviews, convinced the entire team that both practices were worthwhile. I led formal trainings, built supporting infrastructure, and did lots of one-on-one mentoring with all of the team members to develop the tools and skills they needed to be effective with testing and reviewing. The team went from a handful of tests to upwards of 1800 tests in a matter of months. A significant portion of all changelists that are submitted are reviewed by at least one team member. Code quality has increased substantially, leading to far fewer bugs and even fewer regressions.
- Promoted and facilitated refinement of the existing software release process to reduce the number of late night debugging sessions, lowering stress levels within the engineering team.
- Launched the Channel Set feature with another engineer, starting from a prototype. (Blog post)
August 2006-July 2008
Google, Inc.
Software Engineer
- As a member of the core team responsible for the development of GWS, the custom C++ webserver that runs web search, I reviewed roughly 500 changelists to the GWS codebase from mostly outside teams for architecture, correctness, style, unit testing, and latency. Submitters for these changelists were often adding major new features, and were located all around the globe.
- As a major driver in the measurement and improvement of user-perceived latency for web search, established a set of best practices and a process for evaluating new features for areas where latency improvements could be made, to allow innovation within websearch without increasing latency.
- Prototyped and performed extensive analysis of several highly experimental techniques for improving user perceived latency.
- Promoted and implemented better measurement tools and metrics, which gave developers and decision-makers a better understanding of how latency is affected by specific changes.
- Suggested and championed a number of process changes within the team to improve stability, security, and developer productivity.
- Led and contributed to ongoing refactoring efforts in C++, javascript, and html.
- Participated in the regular rotations for build cop and release engineering.
January 2005-August 2006
Notewise.com
Lead Developer/Founder
- Helped design and build a state-of-the-art personal knowledge management system, allowing individuals to store their everyday knowledge in a comprehensive manner. The project allows people to flexibly model their knowledge in the same manner as it is structured in their head, and permits them to quickly retrieve it at any point in the future.
- Led development of the user interface for two initial Java Swing versions. Performed extensive customization of custom swing widgets, and implemented JNI hooks to allow access to global key bindings on all three major platforms.
- Assisted in deployment and user interviews for a month-long 20-user trial.
- Ported the entire application to a web-based AJAX version, using mod_perl/Catalyst on the server, and javascript on the client. Designed several metaobject abstraction frameworks to simplify data interaction on both the browser and the server.
- Developed a library to draw arbitrary lines in realtime using javascript in browsers that don't support Canvas or SVG.
- Interacted extensively with the open source community for various projects, including contributing bug fixes and enhancements.
March 2003-August 2006
Scotty Allen Consulting
Boulder, CO
Founder/Consultant
November 1999-July 2001
HQ Global Workplaces
New York City, NY
Lead System Administrator
March 1999-November 1999
Intelligenesis Corporation
New York City, NY
System and Network Administrator
Education:
May 2006
Bachelor of Science - Computer Science
Magna Cum Laude
University of Colorado
Boulder, CO
December 1998
Associate of Arts Degree
Simon's Rock College
Great Barrington, MA
Skills:
Networking & Systems:
Linux(Gentoo, Redhat, Ubuntu & Debian), OS X, DNS (BIND), Postgresql, Mysql, Apache, mod_rewrite, RAID
Coding:
Python, Ruby, C++, Java, HTML, Javascript, Actionscript, Flex, CSS, Bash Shell Scripting, SQL, Perl, mod_perl, C, Catalyst, Rails, PHP, CVS, SVN, make & configure, vi/vim, eclipse, SOAP, REST, AJAX, Test driven development