Relevant Experience:
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-Present
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
Projects included:
- C-Loans.com - At the time, the largest commercial loans portal on the internet
- Designed and implemented a new database schema and object model for C-Loans.com, the largest commercial loans portal on the internet. Trained and supervised other contractors during the development and migration process.
- Designed and developed the "lender vault," unifying existing disjointed functionality, and allowing commercial lenders to search and purchase loan leads, serving as a major new source of income for the company.
- Wrote an extensive Perl module for parsing and cleaning address and contact data, and integrated it with existing software.
- The Humane Society of Boulder Valley
- Designed and implemented a web-based sign-up and management system for training classes, which allows individuals to sign up and pay for classes via the web. Implemented with the Catalyst MVC framework running under mod_perl.
- A web services provider
- Designed and implemented a large scale, distributed custom data mining application using object-oriented Perl and Mysql, with the capacity to process millions of queries per day on millions of records.
- Britton Interactive - a premium web design firm
- Implemented the backend persistence and business logic for specific features on rizemovie.com and madeasfamilyreunionmovie.com, the official websites for two general release films by Lion's Gate Entertainment.
- An online spam filtering company
- Designed and implemented a cross-platform(Unix and Windows) Perl-based email SMTP proxy which interfaced with an existing custom spam filtering system.
- Iconic Networks - provider of iprive.com, an online privacy site
- Implemented and performed extensive customization on a third-part PHP-based web billing and provisioning system. Supervised multiple subcontractors.
- Assisted multiple clients with implementing best practices for version control, testing, documentation, and bug tracking using open source solutions such as cvs, subversion, Mantis, Trac, and wikis.
- Performed remote system administration of Linux servers including server setup, hardening, maintenance, troubleshooting, and migration. Wrote various Perl scripts to automate routine administration tasks. Coordinated with clients via email, instant messenger, and phone to ensure maximum server availability.
November 1999-July 2001
HQ Global Workplaces
New York City, NY
Lead System Administrator
- Was ultimately responsible for the resolution of all problems on a 400+ location WAN, serving 10,000+ client machines and 2500 employees, and providing client email and web services, and corporate email, web, and data center infrastructure. Responsible for project management and served as a technical mentor for several other administrators.
- Managed the New York data center including 30 Linux, NT, and Cisco systems. Systems included primary and secondary DNS servers, web services, email servers (MS Exchange and others), internal file servers, routers, switches, and NT domain controllers.
- Planned, implemented, and maintained a Lotus Notes to Microsoft Exchange connector, routing both internal and internet mail between two existing email systems from a corporate merger. The implementation included the development of workarounds and the writing of Perl scripts to solve undocumented software bugs.
- Served as a member of a 24/7 on-duty team that was an escalation point for all WAN and server outages. Worked with network-monitoring personnel, field personnel, and telecommunications vendors to resolve T-1 outages, routing issues, and LAN and cabling discrepancies.
- Designed and wrote a web-enabled database using Perl and Postgresql to store all relevant WAN information, for use by engineers, field technicians, vendors, and helpdesk staff.
- Designed and implemented a customized network monitoring solution, based around the network monitoring package Nagios, to provide coordinated network outage alerts to 5 different sets of engineering and management teams, with alerts customized to each group's needs and skill levels. Integrated network monitoring platform with existing WAN information and trouble ticket systems.
March 1999-November 1999
Intelligenesis Corporation
New York City, NY
System and Network Administrator
- Was responsible for the development and support of all central IT infrastructure, including email, web (internal and external), DNS, code repository, and development server farm.
- Supervised the movement of all IT infrastructure during the move of the New York office (the corporate headquarters) to a larger space.
- Designed and supervised the assembly of the New York server room to house 25 quad-processor development servers and 10 infrastructure servers. Interacted with building engineers, air conditioning contractors, cabling contractors, and equipment vendors.
- Supervised the technical aspects of transitioning DNS, mail, and web services from outside providers to internal servers.
- Worked with developers to solve problems encountered during system testing, including researching memory and filesystem limits in Windows NT and Sun JVM.
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