Resume
James R. Bancroft
- jim.bancroft@gmail.com
- Somerville, MA
Objective
To learn.
Profile
- Special focus on developing web-scale software
- 6 years of experience programming web applications
- 7 years of experience in data analysis
- 8 years of education in software development
Interests
- Programming Languages: Ruby, JavaScript, CoffeeScript, Java, C/C++
- Distributed Technologies: Web-scale Software Development, DevOps, Big Data
- Databases: MySQL, MongoDB
- Operating Systems: *nix, Mac OSX, iOS
Work Experience
Wistia, Inc. Somerville, MA
September 2010 - October 2013
Senior Software Developer
- First full time Rails developer hired by the company (5th full time employee including founders)
- Started and oversaw an internal training program whereby non-technical employees could learn how to code
- Designed, implemented, and maintained an analytics architecture based on an early prototype
- The architecture scaled from 100 million to 1.6 billion videos loaded over a 2 year span
- ~1 TB total data in MySQL when I left
- ~450 concurrent jobs running processing incoming data at any given time
- Pricing studies showed this system to be one of the most highly valued features by our customers
- Recruited the 2nd and 3rd full time developers at the company
- As of October 2013, led the design, construction and documentation of 3 out of 6 APIs published by the company
- Data API - the first API we published, giving basic access to information about videos in your account
- Stats API - an extension to the data API that provides better access to our analytics
- Upload API - allows customers to programmatically upload video into their Wistia account
- Wrote significant parts of the company's billing system
- Built the backend that powers the company's Video SEO feature
- Designed and wrote most of the Learning Center which is a standalone Rails application built on our other APIs
- Built several internal tools for reporting typical SaaS metrics
Revolutionary Systems South Plainfield, NJ
October 2007 - June 2010
Web Developer
- Worked on a project to rewrite an existing web CMS written in Java into Ruby on Rails (with expanded functionality)
- Organized the code in such a way that optional features could be isolated from the core CMS, so that they could be included/excluded/modified based on individual clients' needs
- Leveraged previous experience with open source web content management systems to introduce new and improved features into the project
- Built a process-visualization application for clients to use on corporate intranets
- Spearheaded an initiative to adopt Agile Software Development practices into the project team
- Developed a suite of automated tests that helped to detect regressions and bugs
- Helped introduce habit of participating in Daily Stand-up Meetings
- Introduced the notion of iterative development and helped organize the project to follow a predictable cycle of releases
- Introduced the following software/libraries into the code base:
- Maven for managing builds
- Flex/ActionScript front-end running on the client-side
- FlexUnit for client-side automated testing
- BlazeDS for sending domain objects between the client and a J2EE server
- Spring for inversion of control and auto wiring collaborators on the server side
- Hibernate for use as an ORM
- JUnit for automated testing of server side code
- Hudson for continuous integration
- JIRA for ticket tracking
- Designed most of the high level architecture of the application
- Participated in all major phases of the Software Development Lifecycle
- Developed several websites to give small business clients a web presence
- Created a web CMS in Java to allow clients to customize the content of their site after delivery
- Utilized the jQuery JavaScript framework to create several user interface enhancements
- Adapted a drag and drop sortable to allow dynamic nesting of elements
- Created a table interface that allowed arbitrary sorting and basic filtering functionality
- Used AJAX techniques to do partial page updates to/from the server
- Used JBoss and WebLogic Application Servers with MySQL and Oracle Databases
- Developed a basic blogging application in JRuby on Rails
- Included support for syntax highlighting of code examples
- Collected usage statistics using Google Analytics
Systems Documentation, Inc. South Plainfield, NJ
January 2007 - October 2007
Software Developer
- Developed a database-driven web application to deliver training materials to warfighters
- Researched various web frameworks such as Joomla and DotNetNuke to expedite development to meet an early initial deadline
- After analyzing several different XML documentation standards that were required for certain content, set up a content repository for DITA files
- Integrated the output of a third party XML content repository to be displayed within the framework of a DotNetNuke website - this effort required setting up IIS to Tomcat redirection because the aforementioned third party output assumed that a particular servlet was available if it was being run from a web server
Frontier Technology, Inc. Beverly, MA
May 2003 - August 2006
Software Developement Intern
- Validated and maintained a test plan for a set of tools used in data analysis to help with sensor calibration. Brought several useful techniques to the attention of the rest of the team, since many of them were not primarily programmers
- Instituted the use of source control through CVS to minimize confusion between project stakeholders
- Helped set up a Bugzilla site for tracking bugs in the project
- Developed an InstallShield installer for the existing set of tools
- Documented the process of creating and packaging a new release on the integration machine so that any team member could deliver an update in short order
- Developed a new set of software tools used in data analysis/calibration of surveillance satellite sensors from May, 2004 to August, 2006 (designed to replace the existing code base)
- The existing set of tools was written in an obscure proprietary language that was slow, had little community support, and required source code to be distributed – the new application was developed in C++ using MFC
- Identified areas of intense processing, isolating such code into worker threads, and developed a messaging framework to allow asynchronous updates to the GUI
Education
Rensselaer Polytechnic Institute Troy, NY
Graduated December 2006
Bachelor of Science, Computer Science
Minors: Community and Health Psychology, Management and Technology