Technical Lead for Android, Back End, and DevOps
2015 - PRESENTMBLSFT (via Toptal)- 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.
Technologies: Core Java (J2EE), API Design, Continuous Delivery (CD), Git, CoffeeScript, Kotlin, Jira, Technical Writing, SSL, Protocol Design, TCP, Underscore.js, Functional Programming, Gulp.js, Dropwizard, FoundationDB, Android, SQL, Linux, JavaScript, Cryptography, Java, Test-driven Development (TDD), Socket Programming, TCP/IP, SMTP, Protocol Buffers, Node.js, Kubernetes, Go, Android SDKConsultant
2014 - 2015Manitoba Telecom Services (via Protegra)- 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.
Technologies: Core Java (J2EE), Git, Windows, Android, Java, Node.js, Android SDKConsultant
2011 - 2014Manitoba Blue Cross (via Protegra)- Mentored many new staff on the effective use of Hibernate, Spring, and Java.
- Designed and implemented rich JavaScript-driven interfaces with the help of analysts for editing and viewing complex insurance information.
- 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.
Technologies: Core Java (J2EE), API Design, Git, Spring MVC, Windows, HTML, SQL, JavaScript, Web Development, Java, Test-driven Development (TDD), SpringProgrammer, Analyst
2006 - 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.
Technologies: API Design, Git, CSS, GIS, Jetty, Oracle, Windows, Apache, SCSS, Functional Programming, HTML, Ruby, Linux, JavaScript, Web Development, Java, Swing, JMS, Scala, Core Java (J2EE), Ruby on Rails (RoR)