My Mission
Simplify, Automate, Eliminate
Have a manual, repetitive, tedious task? I look to eliminate or simplify these tasks by introducing automation, whether it's a script or full web app. Read how I saved my team over 200 hours each year by automating deployments.
Future-Proof
When designing and implementing systems, I think about the bigger picture. I ask myself, what ways could this be extended in the future? My goal is to build extendable, generalized systems so change in the future is easier.
Knowledge Sharing
As they say, knowledge is power. I believe documenting processes, systems, and anything in between, is critical for long-term success. In the past, I've created clear and concise documentation in PDF form and on Confluence. Additionally, I have led knowledge sharing sessions.
Continuous Learning
The only thing constant is change. I strive to continuously learn on and off the job. From learning the OWASP Top Ten to cloud computing platforms to a vendor application on the job. Learning never stops and staying up to date leads to better solutions.
Experience
BMO Financial Group
Senior Developer
eForms and eSignature Center Of Excellence (EECOE)
Key Responsibilities
- Lead projects to ensure correct solution design and implementation
- Design and implement databases, backend workflows, APIs, and frontend interfaces
- Develop and maintain unique workflows in Quadient, to accomplish project-specific tasks
- Develop and maintain dynamic eForms in Quadient according to business requirements
Key Accomplishments
- Designed and implemented a tactical backend application to sync info for thousands of daily transactions from a vendor API and transfer transaction documents to long term storage
- Designed and implemented key backend database and JavaScript APIs for an application that supports over 1000 transactions per day
- Developed innovative web apps for my team to use, saving time and enabling us to do more
- Created and documented a set of standards for developers to follow
- Created a Quadient code checker to look for standard violations and automatically raise issues
Awards
Business Systems Analyst
eForms and eSignature Center Of Excellence (EECOE)
Key Responsibilities
- Develop and maintain dynamic eForms in Quadient according to business requirements
- Manage existing highly dynamic web forms
- Document department systems and processes
Key Accomplishments
- Created and maintained dynamic eForms in Quadient Inspire Designer
- Collected, documented, and implemented business requirements for small projects
- Refactored Quadient code to be more efficient and standardized
Systems Operation Centre Analyst
System Operations Centre (SOC)
Key Responsibilities
- Provide Tier I, enterprise-wide, system and application support on a 24/7 shift schedule
- Utilize the ITIL process to investigate, update, escalate, and resolve production incidents
Key Accomplishments
- Resolved production incidents on Windows and Unix-based servers
- Simplified the escalation process by writing a PowerShell script to automatically generate Tier II escalation emails
- Created a script to scape and analyze escalation web-data and generate a report to be provided to business teams
- Provided informal training on PowerShell to members on my team
Platform Integration Developer
Faculty of Science
Key Responsibilities
- Create and maintain Group Policy Objects (GPOs) to manage workstation and user settings
- Create and maintain Active Directory objects (Security Groups, Users, Computers)
- Update Windows servers with monthly security patches
Key Accomplishments
- Created, updated, and removed GPOs from production environments
- Created a script to automatically generate a report on GPOs in a domain
- Implemented Windows server monthly security patches
Ontario Tech University
Undergraduate Teaching Assistant
Faculty of Science
Key Responsibilities
- TA for "CSCI 1060U - Programming Workshops I"; a first-year Computer Science programming course focusing on C++
- Run lab sessions, assist students with core concepts, and mark assessments
Key Accomplishments
- Ran two 3 hour lab sessions per week
- Assisted students with course concepts and lab assignments
Linux Support
Faculty of Science
Key Responsibilities
- Assist students with the setup and management of Linux on their personal laptops
Key Accomplishments
- Provided support installing Xubuntu in a dual-boot configuration
- Setup software and tools on Windows/Linux required for courses
Skills
Problem Solving
At the core of everything I do, problem solving allows me to design and implement solutions using available tools.
Programming & Scripting
Over 10 years programming experience in Java, JavaScript, TypeScript, SQL, PowerShell, C, C++, and Python.
Databases
Experience designing databases and writing queries for databases, for small (thousands of transactions) to medium-sized (millions of transactions) applications.
Web Development
Core understanding of HTML5 and CSS3, with knowledge and experience in React, Angular, and jQuery. Backend experience with Node.js and MongoDB.
Document Design
Designing and maintaining highly dynamic documents in Quadient Inspire Designer and Adobe LiveCycle.
Miscellaneous
- Methodologies: Agile Software Development, Waterfall
- Software: Confluence, Jira, Git, Quadient Inspire Suite
- Operating Systems: Windows, Linux, Mac OS
Education
Ontario Tech University
Bachelor of Science (Honours), Computer Science
With Highest Distinction
Thesis: Automatically Repairing Concurrency Bugs in Java with ARC2.
Core Courses
- Systems: Operating Systems, Computer Networks, Databases, Computer Architecture
- Software: Software Quality Assurance, Software Design, Massively Parallel Programming, Web & Mobile Development
- Theoretical: Algorithms, Big Data, Compilers, Statistics, Graphics, Calculus, Physics
Extracurricular Activities
- Financial Controller for Community Connect Club
-
Event Volunteer
- Recruitment Events: Open House, the Ontario Universities' Fair (OUF), and High School Science Day
- Science Rendezvous Volunteer
- Ontario Tech Ambassador & Orientation Leader
Projects
Project Alpha (2020; codename)
Work Project at BMO Financial Group as Senior Developer
In the early days of the pandemic, we had to quickly adapt - like everyone else. I was tasked with building a backend application capable of connecting with a vendor API to sync information, identify/link customers, download files, and send downloaded files to long-term storage. I architected a solution that integrated with internal systems and the vendor API; then, I implemented the solution using workflows in Quadient Inspire Scaler.
The project continues to handle tens of thousands of transactions per month, with millions of files per year.
Key Accomplishments
- Collected requirements, performed research, and turned the results into a solution
- Collaborated with other teams and vendor
- Architected and developed backend workflows and database
- Delivered all components on time, with no major issues
EECOE Web Apps (2018 to present)
Work Project at BMO Financial Group as Senior Developer
After joining the EECOE and throughout the years afterwards, I took the initiative to take a serious look at department processes and figure out how we could do better. It started by creating a web app to interface with our backend APIs instead of using SoapUI. Eventually, it grew to over 10 web apps all serving different purposes; complete with a login system, backend APIs and workflows, and a database for managing data.
The web apps collectively Simplify, Automate, or Eliminate processes altogether. They are used extensively by the team - in 2022: over 11,000 page views, over 20,000 forms generated, and around 1,600 code packages deployed.
Key Accomplishments
- Architected all web apps, backend APIs and workflows, database, and login system (using Active Directory)
- Automated code package deployments in lower environments, saving 200 hours per year
- Designed a search app to search over 200,000 files and folders in under 1 second
- Empowered Business Analysts and managers to generate the latest eForms from any environment
- Designed an app that automatically checks code quality within a vendor application and raises/closes issues
ARC2: Automatic Repair of Concurrency 2 (2019)
Undergraduate Thesis
ARC2 is a Java program designed to take a buggy Java program - which contains data races and/or deadlocks - and a suite of JUnit test cases. Using a genetic algorithm and the test cases, ARC2 will attempt to automatically find a fix for the concurrency bugs.
Links
Asset Tracker (2023)
Personal Project
A simple web app to track assets and transactions in financial accounts. Built using Google Cloud Platform (Firestore, Hosting) for the backend; React for the frontend.
Links
Text Editor (2021)
Personal Project
A web-based text editor with syntax highlighting, formatting, and hex/base64 conversion capabilities. Made with Angular and Material Design; hosted by Google Cloud Hosting.
Links