Chris is a software engineer and technology consultant in Southern Maine. With over nine years of experience in software development, web application design and system management, he has the skills to help you with all your web and technology needs.
Whether you need a web site designed, a backup solution created for your office, help choosing a provider for your corporate email, or just need advice choosing the right technology for your business, Chris can help. Click the email link above to get started, get a quote and get your business' technology needs addressed today.
Delorme Publishing, Inc
July 2013 to Present
December 2009 to July 2013
Software Engineer/Release Engineer
Worked on a small team of three server engineers, nine engineers total on an international free text messaging solution. This system provides both free real text messaging to millions of consumer clients but is also sold to businesses to text-enable landline phones. The product spans Android, iOS, Windows Mobile and a Web client. The server is implemented in .NET 4.0 and and Microsoft SQL Server, with some Linux components for SMS abilities.
From version 2.0 and beyond designed and maintained the external facing API. Written in MVC 3.5, this API is a RESTful service that allows for both server to server and client to server access to complete various tasks such as manage accounts, send and receive messages and send audio and picture messages. The API also supported a push mechanism via HTTP Post.
Rewrote our Web Client, private Client API and operations consoles into MVC. These applications were written in ASP .NET, WCF and Silverlight. Reworking all of them allowed a lot of older code that was no longer in line with our current system to be removed or optimized, and having all of the code on the same technology sped up development time and made both code maintenance and live server easier.
Created and manage the automation and integration tools used by the entire development team. This system uses Jenkins to monitor GitHub and provide various builds, from check-in validation of code validation, development builds that released code and deployed full server stacks, QA builds that branched and merged code and handled automated deployment and Operations releases that managed tagging and releasing files to a read-only file system. To support integration testing and development this also includes running a full production stack of our server that runs six instances of our codebase and making sure they are running smoothly for client development.
Monitor and maintain the production environments. Along with five other coworkers, I was part of the on-call team. This required knowing how the system works from front to back, both at a code and os level. Whenever system issues arise, we need to be able to quickly diagnose the problem from our log and system logs and monitoring and resolve the issue promptly to prevent downtime for users and customers. This involves monitoring .NET code, Windows Server 2008, CentOS, Microsoft SQL Server and various system monitoring tools, such as Cacti and NAGIOS
Linedata Services, Inc
August 2007 to September 2009
Worked as one of a team of engineers on a scalable, client/server solution that managed trades, orders, and executions for traders, portfolio managers, etc. Partnered with this product was a compliance product that would look at the orders from the trading system and run various rules against them to check for compliance with both regulations and user-created rules. these products are written in C++ and .NET, with VB used to import client rulesets and supporting databases across three platforms
Implemented user-based permission, removing permissions from the database. This required hooking into a Microsoft snap-in, and implementing permissioning as fit the location via disabling buttons, disabling buttons, or removing menu items depending on permissions. Also, implemented batch caching for the permissions on the client to minimize engine calls.
Redesigned and reimplemented complex database hierarchies. This involved rewriting a directed graph between different objects represented in our database and fixing the SQL to properly maintain a denormalized version of these graphs for performance concerns. As a result of this, hundreds of stored procedures that referenced the old table structure needed to be updated and, in some cases, optimized.
The engines on the middle tier were upgraded to managed code. As a result of this, I preformed a complete rewrite of instant messaging functionality. This involved creating new .NET subscription services for it and created a C++/CLI interface into the legacy client code so that the unmanaged C++ dialogs and windows could access the new managed services.