Lead Engineer2019 - PRESENTSmart Serve
- Served as the lead engineer for an Angular/TypeScript and Java/Spring Boot application built with JHipster that manages user accounts and issues tokens for training and certification for alcohol licensing.
- Managed deployment, bug fixes, maintenance, and support for an application that has over 1 million user accounts.
- Held weekly meetings with clients to prioritize work and update on progress.
- Migrated the application's SSO integration with Absorb LMS training platform to a newer version.
- Performed a dependency analysis in order to determine an upgrade strategy of libraries to stay on top of CVEs that were scanned as part of the CI process.
- Migrated Jenkins server's Jenkinsfile pipelines to Atlassian's Bitbucket pipelines for publishing images to private Dockerhub account.
Solutions Architect2014 - 2019Benefits by Design
Technologies: Java, Spring Boot, PostgreSQL, React, Angular, Ruby on Rails, Node, OpenID Connect, OAuth2
- Reduced the setup time for development environments from over 8 hours to 15 minutes by Mavenizing manually-managed dependencies, removing JBoss application server customizations and using an embedded Tomcat via Spring Boot, putting any custom third party .jar files in Nexus, and providing default development configurations that "just work."
- Automated a formerly manual release workflow with maven gitflow plugin.
- Dockerized the entire company stack so that developers could run locally without having to run against a shared database instance with "somewhat sanitized" production data.
- Introduced and rolled out Flyway as a SQL schema management and automation solution for an otherwise manual and error-prone process.
- Reduced debug startup time from 15 minutes to under 30 seconds by building a demo-data service that inserted records through code and allowed developers to have a fast and minimal local database.
- Introduced Spring Config Server so that configuration changes would be consistent across projects, git-revisioned, as well as backed up and encrypted on Github.
- Planned, executed and rolled out a Java 8 to Java 11 upgrade for all Java applications and services including OpenJDK distribution selection and validation (Zulu).
- Eliminated memory leaks affecting the application by using VisualVM to view memory usage and narrow in on the offending code.
- Removed dependence on Java Webstart (now deprecated in Java 11) for distributing and updating Java Swing EJB client by distributing a jar-launcher that would automatically update the Java Swing client at startup using Maven Wrapper, Nexus, and some bash to tie it together making it stable and self-updating for over 3 years and counting without issue.
- Created an Angular, Spring Boot, Elasticsearch, PostgreSQL application for the dynamic management of documents that would be made available to different users in different applications allowing filters and rules to be added for customizing document offerings using QueryDSL for typesafe SQL queries.
- Used Express Http Proxy to send requests from hot-reloading Angular to Java API in development mode.
- Implemented Swagger UI for documenting and testing API endpoints.
- Managed SQL schema revisions using Liquibase.
- Build a new AngularJS, Spring Boot, PostgreSQL app for spin-off company "WorkplaceEvolution" offering PaymentEvolution's payroll employees the chance to easily enroll in Green Shield Canada's "Health Assist" benefits.
- Designed and implemented SSO into WorkplaceEvolution app from payroll's employee application "PayChequer."
- Built "in force" enrollment tool for plan members in AngularJS with wizards and validation and integrated it into an existing Heroku-hosted Ruby on Rails backend.
- Architected a customer-facing"quote" enrollment tool with React/Redux with pagination, validation, and entity normalization on existing Rails/Java backend introducing an anti-corruption layer to sanitize legacy models to more relevant ones using MapStruct and adding fullstack e-signature integration with OneSpan to sign-off on enrollment documents.
- Led tech for development.
- Architected and coordinated a two-way integration between a benefits company and a payroll company that allowed mutual API access, data synchronization, and SSO with OAuth2 and OpenID Connect by extracting users and authentication to respective OpenID Connect Providers (Keycloak and IdentityServer).
- Re-engineered CI and DevOps pipelines from manually configured Cruise Control server.
- Integrated OpenID Connect and OAuth2 security across all applications and languages: Ruby On Rails, Angular, React, Spring Boot, Swing.
- Presented alternative solutions regarding GDPR compliance issues with managing partners.
- Used Jenkins X to drastically simplify deployment of the official Keycloak Helm chart to GKE with GitOps-managed custom realm configurations and themes for long-lived staging and production environments using managed PostgreSQL Cloud SQL instances and preview environments with ephemeral PostgreSQL Helm charts.
Software Developer2018 - 2018Aharya
Technologies: Google App Engine, Java, Spring Boot, Microservices Architecture, Angular, Bootstrap
- Updated, fixed, and ported a Dockerized (but broken) Angular, Spring Boot and MySQL microservices stack to Google App Engine (GCP).
Interim CTO2016 - 2016Finaeo
Technologies: Java, Spring, AngularJS, Microservices Architecture
- Served as the interim CTO for fintech startup.
- Recruited the development team, contributed to early schema design, code reviews, DevOps on AWS and developer training.
- Met with financial institutions to discuss technical aspects of collaborative business opportunities.
Software Developer and Board Member2011 - 2016Kutoa
- Oversaw technical direction of Heroku-hosted Ruby on Rails development, hiring, and marketing for this unique NGO startup.
- Built a leaderboard for most active members with Redis key-value store.
- Built a responsive impact network tree with masonry.js and RoR to demonstrate how user involvement multiplies.
Solutions Architect2014 - 2015Payment Evolution
Technologies: C#, .NET, OpenID Connect, OAuth2
- Introduced "IdentityServer" (an OpenID Connect Provider and OAuth2 Authorization Server) with C# .NET Web API as a proof of concept for future partner integration patterns using Identity and Access Management (IAM).
- Consulted on technical direction for early partner integrations.
Software Developer2014 - 2014Innovative Canadians for Change
- Integrated OpenMRS Metadata Sharing Module into OpenMRS-based Kibera Medical Record Initiative (KMRI) platform for use with KMRI concept dictionary and medical forms.
Lead Developer2014 - 2014Reformulary
Technologies: Java, Spring Boot, PostgreSQL, AngularJS, Node
- Refreshed a healthcare project intending to help people make smart prescription drug choices using early JHipster with AngularJS, Bootstrap, Spring Boot, PostgreSQL.
- Implemented SSO with SunLife to direct plan members to recommended generic drug choice.
Web Developer2014 - 2014Domain7
Technologies: Ruby on Rails, AngularJS
- Built creditunionsarehelpinghere.com with Rails and AngularJS.
Team Lead2014 - 2014CIBC
Technologies: Java, Spring
- Led one of four teams responsible for building eBanking for CIBC in Java/Spring.
- Responsible for three sub-teams of 20 developers.
- Investigated and implemented solutions for request throttling, load balancing (F5), and report generation with iText and Jasper Reports.
Software Developer2008 - 2012Intelliware Development
Technologies: Java, Spring, jQuery
- Team Lead and developer for healthcare projects.
- Java development for Canada's largest pharmacy including Swing Client and HL7 messaging in server.
- Worked with Canada Health Infoway to provide open source HL7 v3 libraries for Java and .NET called "Message Builder" to increase standardized health messaging adoption. Libraries were generated directly from specifications.
- Developed Java, Spring, JSP, JQuery web test harness "TL7" for testing HL7 messages as health software providers adopt HL7.
- Built "Message Remixer" web application with Java, Spring, JSP, JQuery for managing and creating customizations of HL7 specifcations in provinces per request by Canada Health Infoway.
Software Developer2005 - 2007Embarcadero
Technologies: Java, C++, SQL
- Built cross-platform DB-management products in Java/C++ for optimizing SQL queries, generating DDL for specific SQL dialects from existing schemas (DBArtisan), and performance monitoring (Performance Center).
Software Developer2001 - 2002Research In Motion (BlackBerry)
- Designed and prototyped early-attempts at mobile apps.
- Implemented crypto RFCs in Java for crypto libraries.
Web Developer2000 - 2000BMO Nesbitt Burns
Technologies: HTML, JSP, CSS, Websphere
- Produced HTML, CSS standards for investments website.