Jamie Flournoy

Tech Blog:http://www.pervasivecode.com/blog/
Resume:http://www.white-mountain.org/jamie/resume/resume.html
E-Mail:jamie@pervasivecode.com
Location:San Francisco, CA — not interested in relocation
Citizenship:US Citizen

Goals:

I'd like an opportunity to work on a small team on a high volume consumer application, where I can act in a variety of technical roles and fill in the gaps in other team members' skill sets. I'd be happiest continuing to work with Ruby on Rails.

Why You Should Hire Me:

I'm a pragmatist, always willing to adjust what I'm using and what I'm doing to the situation, regardless of dogma or fads in technologies and processes. I have the experience to help a team decide what to use and what processes to follow, in order to be most productive. I've proven that I can lead teams of up to 30 developers, or work as just another engineer in the trenches. I'm willing to help a team out by doing the dirty work that makes the team more efficient or the code healthier, but which is less fun than bringing a new feature to life. My skills are broad enough to allow me to act as a competent DBA, sysadmin, UI designer, project manager, requirements analyst, or sales engineer when the team needs someone to do a few hours of that type of work.

Skills Summary:

Experience:

Senior Developer, Serious Business. November 2009-Present. San Francisco, CA.

Responsibilities: Enhance an internal high-volume event analytics application, to help the CEO and game designers make decisions based on A/B testing of changes to games. Support game developers in integrating with this system and operations staff in keeping the system healthy during severe Facebook web service outages. Troubleshoot and fix an app server crashing under high load. Migrate the back-end from a traditional MySQL database to a nonrelational MongoDB database in order to allow easier ad hoc event logging and reporting. Technologies include Ruby, Rails, HTML, CSS, JavaScript, jQuery, MySQL, Git, Scribe, Starling, MongoDB, Unicorn, Facebook API, Capistrano, Mac OS X, CentOS, Safari Web Inspector, Firebug, Phusion Passenger.

Lead Developer / acting CTO, Thentic. May 2009-November 2009. San Francisco, CA.

Responsibilities: Confer with the CEO to guide business, product, staffing, and technology strategy. Collaborate with the product manager to direct feature and visual design. Solo implementation of new features and visual design improvements. Migrate from circa-2007 Ruby on Rails techniques used by previous outsourced technical parner, to current cutting-edge techniques: from WEBrick to Passenger, from fixtures to factories and mocks, from Test::Unit to Shoulda and Cucumber, from ad-hoc route and controller design to RESTful organization, from Prototype to jQuery, and from Subversion to Git. Technologies include Rails, HTML, CSS, JavaScript, Prototype, jQuery, MySQL, Git, Subversion, Phusion Passenger, Cucumber, Capistrano, Mac OS X, CentOS, Firebug, Safari Web Inspector, Firefox, Safari, IE 6, Pivotal Tracker, Hoptoad, Google Maps, FCKEditor.

Senior Software Developer, Planet Metrics. December 2008-May 2009. San Bruno, CA.

Responsibilities: Development of first production version of a web based supply chain application to help companies rapidly estimate their carbon footprint. Refinement of a set of data visualization tools (using HTML, AJAX, ExtJS, Flash, and a Java Applet) to help customers explore their data. This was a very rich and sophisticated user interface integrating these different technologies together, which required thorough cross browser testing and debugging. The product also used a proprietary scientific data set and scientific calculation engine. I developed and delivered a Git training class and migrated the team from Subversion to Git, including altering the CruiseControl and Capistrano configuration to use GitHub instead of Subversion. The team practiced the Extreme Programming methodology including Test Driven Development and Pair Programming, and integrated other agile process and lean software development practices such as periodic Kaizen meetings and burndown charts to help keep the process on track. Technologies included Ruby on Rails, HAML, SASS, HTML, CSS, JavaScript, ExtJS, jQuery, Prototype, XML, Capistrano, nginx, Apache, Phusion Passenger, MySQL, RubyMine, Subversion, Git, Cucumber, RSpec, Mocha, CentOS, Mac OS X, Selenium, Webrat, CruiseControl, Firebug, Firefox, Safari, Parallels, IE 6, Opera, and Pivotal Tracker. Partners included EngineYard, Rackspace, and GitHub.

Founder / Lead Programmer, WhatYouAte. December 2006-Present. San Francisco, CA.

Responsibilities: Everything from concept to code: business strategy, financial modeling, competitive analysis, brand development, logo development, creative positioning, graphic comps, project planning, HTML and CSS template development and cross-browser testing, information architecture, use case development, object modeling, database design, system administration, version control administration, deployment planning, scale-out architecture research, implementation. Technologies include Ruby on Rails, HTML, CSS, JavaScript, jQuery, PostgreSQL, Subversion, Git, Autotest, Mocha, Shoulda, TextMate, Firebug, YSlow, Charles, Mac OS X, and Ubuntu Linux.

Consultant, HumTum. January 2008-June 2008. San Francisco, CA

Responsibilities: Contract software development and system administration for matrimonial and dating site. Advise on marketing e-mail strategy, hosting partner, development process, and software architecture improvements for scalability. Fix existing bugs in application developed by a third party. Optimize page load time for dialup users. Set up VPSs at hosting company and install HumTum application in production and QA environments. Recommend and set up issue tracker and migrate existing bugs into new system. Interview long-term developer and collaborate with him on technology strategy. Technologies included Ruby on Rails, MySQL, CentOS 5.1, SELinux (Security-Enhanced Linux), NFS v4, Rsync, Redmine, Phusion Passenger, Xen hypervisor, VMware, Mongrel, Charles Proxy, YSlow, Firebug, Asset Packager, and the Prototype Javascript framework.

Principal, Pervasive Code. January 2006-December 2006. San Francisco, CA

Responsibilities: Freelance software development for mobile applications. Ported RIM Blackberry Java application to PalmOS (J2ME, MIDP 2.0, CLDC 1.1 on IBM WEME runtime). Extracted common classes and created a separate library build with unit tests to ensure proper functionality before deploying the code into a resource and UI constrained device. Altered that J2ME application to target lower-end MIDP 1.0 phones. Developed prototype RSS reader in C to help estimate effort required to reimplement J2ME application as a native PalmOS application. Reimplemented J2ME application as native PalmOS application using Handheld Basic (HB++).

Senior Associate, Technology, SEC Ventures. January 2004-January 2006. San Francisco, CA

Responsibilities: Help to transition a retail financial services application prototype into a production-ready system, and to lead the transition from a rapid prototyping development process into a mature software development process. Fix bugs, refactor code, add unit tests, improve build system and SCM methodology, implement new features. Help to define technical requirements and the format of design design deliverables. Write the job description and create a web developer skills quiz for new developers. Train new developers. Collaborate with partners to resolve issues related to web services integration. Lead two major refactoring efforts aimed at breaking up a complex, brittle application into separately managed and tested code modules. Pick up a third major refactoring effort that was partially completed by a colleague and finish it. Perform a formal evaluation of available commercial and open-source issue trackers, make a recommendation, and write a custom migration program to migrate all issues, comments, users, and attachments to the new system. Technologies include Tomcat 5 (Servlet 2.3 and JSP 2.0), J2SE 1.4, Hibernate, JavaScript, Perl, DBI, Jelly, CSS, HTML, XML, Struts, Tiles, Ant, CruiseControl, JUnit, Apache, Subversion, MySQL, Red Hat Linux 9, and Mac OS X.

Senior Architect / Project Manager, Planitax. November 2001-January 2004. San Francisco, CA

Responsibilities: Define and implement software development processes, standards, and deliverables for several commercial enterprise software products through the full product life cycle (including 2 major releases of one product). Direct an offshore software development team and review their work. Direct and supervise local production support and professional services engineering work. Define technical system requirements and application architecture, and evaluate possible components for inclusion in this architecture. Mentor local and offshore developers. Travel to the offshore developers' offices during the design phase to communicate requirements and to jointly create the product design. Collaborate with the Product Manager and with Professional Services staff to create functional specifications deliverables. Brainstorm new collaboration techniques to improve efficiency and communication with the offshore team. Lead performance testing efforts and pinpoint application bottlenecks. Manage internal IT environment and IT outsourcing contracts for email, hosting, connectivity, and desktop support.

Manage transition of development efforts from offshore team to in-house development staff. Manage migration of production environment from one managed hosting provider to another (twice). Manage T1 transition from one ISP to another (twice) including troubleshooting and physically repairing miswired T1 line. Design computer security enviroment including Active Directory deployment, VPN, antivirus, and firewalls (packet-filtering and application-level on Cisco and Check Point platforms). Define job descriptions and create hard skills quizzes and phone screening questionnaires for engineering positions.

Independent Contractor. May 2001-November 2001. San Francisco, CA

Responsibilities: Port a Flash based game to PalmOS using the J2ME (Java 2 Micro Edition) CLDC / KVM. Evaluate different embedded Java platforms (Waba, IBM J9, Kada, JBed, J2ME) for general application development, and for game development specifically.

Senior Technical Architect, Sapient. February 2001-April 2001. San Francisco, CA

Responsibilities: Assist with sales pursuits involving Fortune 1000 companies as prospective clients. Research past Sapient project documentation in order to refine proposals. Create and edit proposals and sales presentations. Specify team skill sets and resource requirements and level of effort estimates. Define project approach, main tracks of work, detailed activities and deliverables.

Senior Developer, Viant. October 2000. Mountain View, CA

Responsibilities: Lead a two-person development "swat team" assisting a client with a high-profile development project which was behind schedule. Suggest architectural changes to improve performance. Work with client's DBA to improve application performance. Technologies included Java 2, Tomcat, Ant, Oracle 8i & InterMedia, Perforce, JBuilder, and XML.

Technical Architect, Viant. June 2000-September 2000. San Francisco, CA

Responsibilities: Define the high-level logical architecture for a client. Research very recent product releases, technical white papers, and technical articles relevant to this architecture in order to take advantage of important cutting edge technology with a proper understanding of the risks and trade-offs involved. Specify a development hardware and software environment and oversee its setup by a system administrator and a database administrator. Configure WebLogic Application Server 5.1 on Solaris 2.8 for development. Work with the Lead Technologist to define a set of prototype goals in order to mitigate architectural risks. Learn StarTeam administration, set up project repository, write installation and configuration documentation, and provide brief training to two project teams.

Lead Technologist, Viant. February 2000-May 2000. San Francisco, CA

Responsibilities: Carry forward technical architecture defined in previous assignment into implementation. Collaborate with Lead Tech from the project's Experience phase to assess the scope of work and develop a project plan for the Launch phase. Determine project cost and duration, and required roles for the Launch team. Complete web page template research begun initiated in the Experience phase to assess suitability to this project. Recommend a complete set of tools and technologies for use with this project and collaborate with the client to reach a final tool and technology set. Produce a list of products and pricing for all tools and technologies needed for this project. Review and revise Java API design for system components developed offshore.

Work with a startup client to define high level system requirements and assess potential technology partners. Interact frequently with the CEO, CTO, and President of the client company. Act as primary organizer and contact person for this work. Define technical criteria and create an overall analysis framework for technology partners. Refine criteria and drive to a final recommendation.

Technical Architect, Viant. October 1999-February 2000. San Francisco, CA

Responsibilities: Define technical architecture for a multimillion dollar web development project for a Fortune 1000 company. Define coding standards and gain consensus from developers. Evaluate the expertise level of developers and structure mentoring and growth opportunities for developers according to their abilities and needs. Define logical application architecture and present implementation guidelines to developers. Define build and release process. Refine build system from previous project to support more modular reusable components. Integrate reusable modules from previous project into current architecture. Oversee development of additional build environment convenience scripts for developers. Define QA process based on existing Viant intellectual capital, and select appropriate QA tools. Oversee evaluation of commercial object-relational mapping tools and review product recommendation. Define a set of coding standards, detailed application model with best practices tips, general Java best practices and coding tips, and publish these assets companywide. Review source code, object models and implementations across teams within the project to assure adherence to coding standards, good OO design practices, and communication of reuse opportunities between developers. Direct research in an Experience phase project into new technologies for web page templates. Collaborate with the client to define a physical architecture for the pre-production and production systems, including participation in meetings with their vendors. Collaborate with the client on all of these decisions to ensure that their operational and process requirements are incorporated into the development process.

Senior Developer, Viant Technology Center. March 1999-October 1999. San Francisco, CA

Responsibilities: Software engineering and web application development research. Develop a multitier web application incorporating very large scale object caching, a custom object-relational mapping subsystem, and integrate it with an existing business system. Full lifecycle development involving requirements gathering, HTML UI mockup, UML object modeling and roundtrip design using Together/J, and development of a GNU Make based build system for NT and Unix. Define a model for reusable source-code assets and publish all work in that form. Install and configure IBM WebSphere Application Server on Windows NT. Meet with vendors and analyze new tools and products for possible companywide partnerships. Publish meeting notes, whitepapers, and points of view to the rest of the company. Present published assets in person to Viant offices around the country.

Independent Consulting. January 1999-February 1999. Arlington, VA.

Responsibilities: Solaris and Linux system administration. Disk space management, backup administration, shell scripting, startup script configuration. Installation of secure shell (SSH) software. Installation and configuration of Java Web Server and JDK. Scripting of customer Web server access log rotation and analysis system. Installation and configuration of TCP wrapper security software. Installation of redir port redirection software for X windows connectivity through IP masquerading firewall.

Senior Software Engineer, NetResponse/iXL. September 1998-December 1998. Vienna, VA.

Responsibilities: Development cost estimation, sales, and technical strategy consulting. Linux, Solaris, FreeBSD, and Windows NT system administration. Leadership of a high-profile, large scale web site troubleshooting assignment involving Solaris, Java, Java Web Server, Oracle (7 and 8), Verity, Perl, and LiveWire. Solo development of an application-specific automated load testing tool in Java, and deployment of a dedicated network monitoring appliance to support this application. Java Server Pages research, and development of NR's first JSP-based client project.

Senior Consultant, Westlake Solutions, Inc. December 1996-August 1998. Washington, DC.

Responsibilities: Project management, proposal writing, client consultation and needs analysis. HTML, JavaScript, Perl, and Java programming of mostly-dynamic web sites. Custom development of content management and threaded discussion systems. Unix, Windows NT, and MacOS system administration and TCP/IP network engineering including router and firewall configuration. Installation and configuration of HTTP, FTP, SMTP, chat, discussion, database, and other server products on Unix and Windows NT. Installation and configuration of Perl, Java, Emacs, and other development and system management tools on Unix and Windows NT. Perl "stumper" support for Westlake Solutions Perl trainers. Project planning, resource management, and billing. Internal personnel management. Specification and purchasing of hardware and software to support internal requirements. General professional and technical leadership and guidance as the most technical and fourth most senior member of a staff which grew to roughly 25 employees by the time of my departure.

Graphic Designer / Internet Specialist, Westlake Solutions, Inc. March 1996-December 1996. Washington, DC.

Responsibilities: Creating mostly-static web sites: HTML editing, page layout, graphic design, Unix virtual server configuration, domain registration, name server configuration, proposals to potential customers, documentation, customer technical support. Perl CGI scripting. Also general graphic design work for print advertisements.

Education:

Coursework toward BS in Electrical Engineering, Four semesters of study completed. Sept. 1990-May 1991, June 1992-Dec. 1992. The George Washington University, Washington, DC. Coursework: Engineering Chemistry, Engineering Physics, Single Variable Calculus, Fortran, Pascal, Multivariable Calculus, Statics, 68000 Assembly Language.

Non-Degree Studies in Computer Science, Three courses completed. Sept. 1991-May 1992. Virginia Commonwealth University, Richmond, VA. Coursework: Data Structures in Pascal, Discrete Mathematics, Advanced Single-Variable Calculus.