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.
Dirigo Design and Development
December 2014 to October 2016
Senior Software Engineer
Member of a small team of developers architecting and maintaining Dirigo Edge, an open source content management system. Responsibilities include both writing and designing new features for the system and writing custom code for clients who have needs beyond the out-of-the-box CMS features.
Architected a single-page application for a major photography client. This site, to be launched later this year, will involve the ability to search for images, save images to galleries, create custom galleries for uses, and manage user settings. This site brings the client from a site that manages a small number of clients to a publicly open site that can support thousands of active users, built in Angular and the newest cross platform .NET Core.
Moved Edge from a baseline code used to jumpstart websites to a versioned product. This involved a move to git, now using versions and feature branches, setting up a TeamCity server for build and test automation and moving the team to better use of issue tracking.
Built user timezones into the system. Implemented with MVC attributes, this code automatically inspects all dates and times passing to over from the server and converts them between UTC and the users time zones.
Designed and implemented the back end of a schema system for the CMS. This system allows the storage of arbitrary related data so that multiple pages can be designed off a template and have their data stored, searched, and indexed.
Delorme Publishing, Inc
July 2013 to December 2014
Part of a 6 person team responsible for the management and development of the backend for a satellite communication system. This involves systems code for message routing and delivery to SMS and satellites, managing both internal and external API’s, and synchronizing application data with the billing system.
Maintained and enhanced a web portal for a satellite communicator. This site allows for managing of devices for consumer and enterprise and a real-time updating map that shows the historical locations for all users on an account along with current location, status and the ability to contact each device.
Designed a linking system that enables two users on separate accounts to share data. Technical features include an email invitation system, migrating some data between the accounts and causing other data to be shared only as long as the link remains active. This also implemented different levels of sharing that could allow different data to be visible for a logged in user than is displayed on the public-facing page.
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.