Technical Lead for Android, Back End, and DevOps2015 - PRESENTMBLSFT (via Toptal)
Technologies: Android SDK, Go, Kubernetes, Node.js, Protocol Buffers, SMTP, TCP Sockets
- Joined as the sole developer, reporting directly to the CTO and inheriting a suite of secure communication and productivity apps that were in rough shape. Prepared server and client apps for production readiness and successfully launched that year.
- Implemented custom binary protocols tuned for high-latency, low-bandwidth networks, and owned entire stacks from back-end socket servers to Android clients.
- Implemented continuous integration and deployment across many projects to run integration tests, publish automatically to Kubernetes via Argo CD, and deploy to Android devices via Google Play.
- Containerized several internal services and migrated to distributed data storage to maintain high availability, and for ease of scaling, deployment, and monitoring.
- Implemented key management schemes, APIs and encryption protocols to protect data at rest, data in motion, and to maintain forward secrecy.
- Created a Dropwizard-based SMTP proxy service to seamlessly encrypt and decrypt PGP email for interoperation with external email clients.
- Published internal specs to coordinate implementation efforts across teams and gave internal webinars to disseminate knowledge.
- Implemented a C++ Envoy plugin for L4 sticky load balancing based on the content of custom protocol messages.
Consultant2014 - 2015Manitoba Telecom Services (via Protegra)
Technologies: Android SDK, Node.js
- Built an Android app for a local telecom to show customers their data usage, bills, and notifications, to enable bill payments, and more.
- Implemented several asynchronous REST calls using Retrofit, including multi-level caching of results, an offline mode, and sophisticated error handling.
- Used Node.js to mock client web services for testing purposes.
- Wrote a detailed developers guide for hand-off to the application maintenance team.
- Executed and wrote test cases for a variety of Android phones and coordinated fixes with QA.
Consultant2011 - 2014Manitoba Blue Cross (via Protegra)
- Mentored many new staff on the effective use of Hibernate, Spring, and Java.
- Helped design and develop a JSON REST web service to provide data from an ODS.
- Built batch processes to perform billing, exporting to legacy systems, and letter printing.
- Aided in the creation and extension of common utility libraries for internal use by dozens of projects and developers.
- Created and delivered presentations on functional programming, best practices, design patterns, and test-driven development.
Programmer, Analyst2006 - 2011Winnipeg Transit
Technologies: Ruby on Rails, J2EE, Scala, Hibernate, JMS, Swing
- Added new features to a Swing application to allow transit controllers to monitor real-time locations of GPS-enabled buses, create and view incident reports, and communicate with bus operators.
- Designed, implemented, and supported an Oracle-based ODS containing transit service information, supplemented by an in-memory store of real-time data.
- Architected and helped with the implementation of a Rails-based website redesign to deliver real-time service information to customers.
- Helped create an integration REST web service using Java and Cocoon. Developed a Ruby gem for consuming the service from internal Rails apps.
- Introduced continuous integration with Jenkins, artifact management with Nexus, simplified building and deployment with Maven, and version control with Git.
- Pushed for the introduction of Ruby on Rails to the organization and succeeded. Trained existing Java developers for the transition.