- [email me]
- 22 Taylor Hill Road
Montague, MA 01351
- Well-rounded developer with twenty years experience building software applications and websites for a variety of businesses and organizations.
- Skilled at analyzing needs and determining requirements for projects of all complexity levels and implementing solutions tailored to the client's wants, involving them in every step of the process.
- Expert knowledge of web-development languages (Ruby on Rails, JS/Node, PHP, Perl), C/C++, C# and .NET, HTML, XML, JSON, database design and implementation, SQL, game development, and Linux server administration.
- Experienced with server administration tools such as chef, docker and sensu, and platforms such as AWS
I've worked on a lot of side-projects over the years, here's a partial list.
- I've built a number of bots on Twitter. Many of them are built in chatterbot, a ruby library that I maintain. Some of my personal favorite bots include botgle, wayback_exe, and EarthRoverBot
- I built gopherpedia, a gopher interface to wikipedia. I built a ruby gopher server as well as a PHP/JS web proxy to gopher for this project.
- namey -- a random name generator with a REST API and ruby gem
Montreal, QC. July 2006 - Present
Member of team maintaining and advancing custom CMS which powers websites for musicians and several other niche industries. We host over 30,000 websites. The system is written in Ruby on Rails. Our team is distributed over several time-zones, and we all work remotely.
When hired, I was the second developer on the team, and we had under 1,000 websites running on a very simple ColdFusion CMS running on a Windows server infrastructure. My early projects involved improving our asset generate system to run asynchronously, moving from Windows/IIS to Apache on Linux, moving user assets to S3, and implementing a number of services on EC2. I also worked a lot of performance improvements in our code and in slow MySQL queries.
I was largely responsible for a rewrite of our codebase in Rails. The original code was very brittle and moving allowed us to make a lot of improvements and build a stable foundation for the future. Moving to Rails allowed us to write a testable, stable codebase. We also changed server providers as part of this process, so my work involved moving user data and assets, writing a migration system, and implementing chef to build a collection of new servers.
As we've grown, I have implemented application caching, varnish, and a number of other systems.
- HTTPS for 40,000 domains using Lets Encrypt
- Built a background job service using RabbitMQ and Sneakers
- Custom Asset Generation for templates
- Integration with 3rd party services such as Soundcloud
- Paypal and Stripe integration for user stores
- Recurring Stripe payments
- MP3 encoding
- Custom stats using our own platform or Google Analytics
- API Interface with Zimbra and Rackspace Email for mail/webmail
- Server setup using chef, and ongoing maintenance
- Facebook and Twitter integration
- Custom DNS service built on Rails and PowerDNS
- Implementation of a postfix server for mailing lists
- HTML and CSS
- Ruby on Rails
- Apache and nginx
- Amazon EC2 and S3
Worcester, MA. April 2005 - June 2006
Programmed several websites and open source tools enabling video producers to publish, promote, and distribute their content.
VideoBomb: Main programmer for a community site to bring people together and share popular videos on the web. I did the majority of object modeling and database design for the site and wrote the bulk of the code, using Ruby on Rails as the framework and MySQL as the database. I wrote code to generate RSS feeds, designed and developed an algorithm to determine how videos reach the front page of the site, wrote the tagging system, and built a large amount of the rest of the site. I also implemented an interface with the Democracy channel guide, and wrote code to allow videos to be added from the Democracy video player.
Broadcast Machine: Developed an open source software package for videocasting, creating video channels, and distributing content. I took over the project from another developer that wasn't able to proceed beyond the early stages of development and implemented a large amount of the functionality. Wrote code to automatically generate RSS feeds which contain publishing information, licensing rights, length of the video, etc. I worked to ensure that Broadcast Machine worked on as many platforms as possible while being very simple to install and manage. I communicated with users of the software to resolve bugs, implement requested features, and help with installation questions. Broadcast Machine is written in PHP and can use MySQL or a flat-file system as a database. My code for this project runs on as many different webservers/platforms as possible, and is designed to be very easy for the user. My work also involved:
- Implementing transparent MySQL/flat-file support
- Writing support for custom, user-generated themes
- Writing unit tests to ensure high code quality
- Developing an XML-RPC interface for 3rd party applications
Old Saybrook, CT. 2003 - 2005
Softpower writes business management software for the outdoor power equipment industry. I was the lead programmer on a project to completely rewrite the flagship software product, which handles point-of-sale, inventory management, purchasing, work orders/repairs, etc. I designed all aspects of the system, including a SQL Server database, an object model in C#, and a Windows user interface. I met with dealers and users of the old software to determine a list of requirements, get input on design, and get feedback on beta versions of the software. I implemented a web service interface between dealers and manufacturers to handle registration of new hardware, warranty claim submission, parts inquiries, and purchase orders. Other work included:
- Barcode support - reading in UPC labels, custom manufacturer labels, etc, to speed data entry for users. Also implemented support for label printers so that dealers could print their own barcodes and use them to sell/manage equipment.
- Reporting system using Access and Crystal Reports, which allowed for creation of custom reports by dealers
- Designed and implemented the database, object model, user interface
- Wrote a patch system to make it easy for dealers to manage periodic database updates
- Wrote a basic installer which would check for prerequisites, install them, manage the database installation, etc.
Worcester, MA. January - December 2002
I designed and implemented a C++ application for the Palm OS used by drivers at trucking companies, which provides real-time GPS location data sent via SMS messaging. I wrote code to allow drivers to track time spent driving according to federal requirements, track trip data, starting/ending odometers, manifests, tolls/expenses, etc. I also wrote a more general tractor/trailer logistics system for a GPS/SMS unit called the Trim Trac. This system is written is C# and uses SQL Server, and integrates with a Java application which processes incoming/outgoing SMS messages. Other aspects of my work included:
- Report generation/Data processing using MS Access and Crystal Reports
- Synchronization of data from Palms to SQL Server
- Integration of all data in SQL Server
- Website using C#/ASP.NET for real-time tracking and configuration of units
- A C#/MapPoint desktop application for tracking vehicles
Boston, MA. April 2000 - January 2002
Technical lead for http://www.wgbh.org/ during two complete rebuilds of the website. I helped to determine needs, communicated with people throughout the organization to define goals for the website, served as liaison to the programming firm that built the site, and participated in the coding of individual elements of the site. Helped to specify a design for a content management system used to generate content for the website, and developed several portions of the CMS. Built a search engine which indexes content from the site to return results to users, as well as allowing the editorial staff to rank some results higher when needed. I integrated the website with several external sources of data, including TV schedules, the pledge system/member database, and external news sites. I also supported the editorial and design staff that produces all of the content for the site, as well as building special websites on a regular basis, such as a database of local candidates and voting districts for Massachusetts during the 2000 election, which was the only database of its sort at the time.
Chatham, NY. October 1998 - April 2000
Troy, NY. December 1997 - October 1998
Worked on the websites PowerAdz.com and CarCast.com. Developed programs that involve generating HTML for websites using information stored in databases, which is put together using a customized template system. Worked primarily in ColdFusion and Microsoft SQL/Microsoft Access.
March 1999 - March 2003
IMUNA is the non-profit corporation that oversees two Model UN Conferences along with several other educational projects. My role was to improve our Internet presence and to work on the Classroom To Conference project. The position also involved choosing the leadership of both conferences each year, approving their budgets, and participating in the long-term decision making process for IMUNA.
- Website building/programming
- Database design/implementation
- Server administration
- Backend programming
- HTML, CSS, XML, JSON
- Ruby/Ruby on Rails
- C/C++, C# and .NET
- Java, Perl, Tcl
- MySQL, MS SQL, Oracle
- SQL, PL/SQL
- UNIX (Linux, Solaris, others)
- Apache/nginx/MySQL servers
- Rensselaer Polytechnic Institute, Troy, New York
- Bachelor of Science, Computer Science, Minor in Electronic Art. Graduated May 1997.