Technical Lead for Android, Back End, and DevOps2015 - PRESENTOnyxCorp
- 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 TCP socket servers with Golang for custom binary messaging protocols, tuned for high-latency, low-bandwidth networks. These servers maintain complex client state and scale horizontally to support tens of thousands of concurrent users.
- Containerized Golang and Node.js services and migrated to a distributed data storage to maintain high availability, and for ease of scaling, deployment, and monitoring.
- Implemented DevOps practices across Golang projects to run integration tests, build docker images, and publish automatically to Kubernetes via Argo CD.
- Implemented encryption for mobile data at rest and in motion using secure local storage for Android, and end-to-end encryption with forwarding secrecy across multiple products, including key management, APIs, and protocols.
- Created a Dropwizard-based SMTP gateway to seamlessly encrypt and decrypt PGP email for inter-operation with external email clients.
- Implemented a C++ Envoy plugin for L4 sticky load balancing based on the content of custom protocol messages.
- Helped design and patent a system of key splitting that developed into a major product feature. Implemented the client and server for this system and documented it for inclusion in future products.
- Published internal specs, blog articles, and hosted webinars to coordinate implementation efforts across teams and disseminate knowledge.
Consultant2014 - PRESENTCyberdeck Consulting Corp (Self-employed)
Technologies: Writing & Editing, Prototyping, Geofencing, WordPress, PHP, HTML, Ruby, Android SDK
- Served as a ghostwriter to small companies and provided content to help drive traffic to their site via SEO.
- Developed small proof-of-concept prototypes for clients, including telephony integration, content management, and geofenced advertising.
- Subcontracted for a research agency to develop interactive reports for their clients.
Consultant2014 - 2015Manitoba Telecom Services (via Protegra)
Technologies: Git, Jakarta EE, Windows, Android, Java, Node.js, Android SDK
- 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
- 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.