Summary
I’m a software consultant with **+ years of experience working for both small, medium and larger companies. I specialize in backend Java development, and more specifically micro-services related topics (monolith refactoring, cloud modernization/migration, etc.): coaching and technical guidance, design and implementation, IT projects rescue, assistance for application support processes, “Kubernetes things”, etc.
Technical Architect/Manager (Contractor), NTT Data, Toronto
June 2019 – February 2020
Worked as hands-on development manager on Loblaw cloud modernization projects:
Take on Scrum Master role during early project stages, in addition to other responsibilities
Manage development teams (onshore and offshore)
Maintain active client involvement (Leadership Teams, Business Users, Enterprise Architects)
Assist with overall project deliverables (module dependencies, tasks distribution across onshore and offshore teams, planning of ongoing foundational activities, etc.)
Prepare and communicate design documentation, as well as REST API specifications
Create proof of concepts (POC) and hands-on technical presentations
Provide technical guidance, establish standards and common practices
Perform code reviews and fixes, drive live pair programming and TDD sessions
Proactive team “servant” (requirements gathering, design, coding, testing, infrastructure setup, etc.)
Shoppers Drug Mart – On-cloud microservices modernization project (Ongoing, GCP + PCF)
This project consists into migrating a legacy J2EE application to the cloud (PCF over GCP): Java Swing client with a legacy J2EE backend (EJB on WebLogic). The program is a suite of Spring Boot microservices interacting with a composite Angular UI and external systems: The application is an integration layer between pharmacy systems and Shoppers Drug Mart stores (Drug data related).
Lead 2 teams of 15+ members in collaboration with the project and delivery managers
Establish and document standard practices (Revision Control with GitFlow, CICD, general REST practices, error handling, layers integration, coding standards, static code analysis tools, etc.)
Write Swagger OpenAPI specifications for REST APIs (contract first approach)
Assist during UAT efforts with bug fixes, testing, CICD pipeline improvements
Hands-on code refactoring to promote a craftmanship culture, as well as demonstrating few concepts accordingly to value/trade-offs (DDD, API model code generation, AOP, etc.)
Loblaw – On-cloud microservices modernization project (cancelled in early stages, GCP + OpenShift)
This project was ultimately going to provide an integration platform between head office systems (SAP ECC, SAP PLM, etc.) and Loblaw store applications (POS, Scales, Signage and labels, etc.).
Act as Lead Architect/Technical Manager (7 team members initially, ~35 planned)
Prepare architecture documentation artifacts and presentation decks towards official project kickoff
Technologies and infrastructure: Micro-services, Cloud (PCF over GCP, OpenShift over GCP), Azure, Azure AD, SSO, Spring ecosystem (Spring Boot, Spring Cloud Services, Spring Cloud Data Flow, Spring Data JPA, Spring Security, Spring Core, Spring JDBC template, etc.), AOP, Mapstruct, Flyway, Swagger, CQRS, Junit, Archunit, Assertj, TDD, Docker, Eclipse/STS, IntelliJ IDEA, Maven, Git, Bitbucket Cloud, Jenkins Cloud, RabbitMQ, MySQL, SonarQube, Informix, JIRA Cloud, Confluence Cloud, Scrum, etc.
Solution/Technical Architect (Remote contractor), Validus Research, (Toronto/Waterloo)
July 2016 – May 2019
I served as hands-on Solution/Technical Architect on the extraction of monolith modules to micro-services (Microsoft Azure, Amazon AWS migration). Prior to that I helped enhancing and maintaining the main reinsurance platform modules (back-end of web applications and “job schedulers”).
Portfolio module re-implementation into micro-services – Solution Technical Architect/Team Lead
Phase 1: Integration of a new data warehouse solution
I assisted the database architect with integrating existing services with a new data warehouse (analytics and reporting). This allowed decoupling and offloading data aggregation concerns to the database, as well as custom reporting without direct access to application databases.
Add Kerberos support for SQL Server JDBC authentication and a custom connection pool for dealing with Kerberos tickets expiry (SSIS integration), CGLIB proxies to patch third-party libraries on the fly due to licensing concerns
Fault-tolerant portfolio simulation integration with the data warehouse solution
Phase 2: Incremental refactoring of a monolith into micro services
I lead a small team (~9 members) on the re-engineering of a portfolio module into micro services deployed on Kubernetes (initially Azure AKS, and later AWS EKS).
Plan development activities and tasks allocation
Establish and document best practices (REST, Spring Boot, persistence, fault tolerance, tracing, high availability, centralized logging, service discovery, data correlation, GitFlow, etc.)
Setup clusters in the Microsoft Azure cloud computing platform (Kubernetes - AKS)
Standardize Helm charts for deployments (in-house charts and publicly available charts): load-balancer, SSL certificates provisioning, parameterized microservices deployments
Work with DevOps teams to automate manual steps into reproducible Terraform scripts
Implement REST micro-services pertaining to portfolio management and simulations
Write Avro Schemas describing events (integration with Kafka): External systems communication was sometimes best achieved via asynchronous messages in some cases
Reinsurance cession workflow re-implementation – Senior Developer
This project consisted into redesigning existing business logic around previous cession workflows implementations (second or third attempt over the years at Validus).
Add template engine based on Apache Freemarker for email reports
Relentless refactoring for improving code quality and test coverage on a monolith system
Design and program REST APIs for applications integration
Re-implement back-end services of the new cession workflow
Technologies and infrastructure: Spring Boot micro-services, Cloud (Azure, AWS), Kubernetes (AKS, EKS), Docker (ACS, ECS), Helm, Istio, OpenID (KeyCloak, Azure AD), Core Java (Java 7, Java 8), RAML, REST, JAX-RS (Jersey), J2EE, Kafka, Avro Schema design, JDBC, SQL, SQL Server Management Studio, Hibernate, H2, SQL Server, JMX, SPNEGO, Kerberos, JSF, JSP, JSTL, Freemarker, Guava, Spring ecosystem, Junit, JMockit, Eclipse, IntelliJ, Vscode, Mockito, SVN, Git, GitHub Enterprise, Maven, Gradle, Azure DevOps, Atlassian products (Jira, Fisheye, Crucible, Confluence, etc.)
Senior Java Developer (Contractor), K2 Digital Inc. (Toronto)
May 2016 – July 2016
I was onboarded to accelerate the project delivery of a retirement planning tool: https://sentry.ca/en/feature/sentry-real-income.html. The program is deployed on AWS and assists advisors with suggestions around optimal asset allocations towards retirement goals with an in-house model.
Implement portfolio allocation features with the help of a mathematician (in-house model).
Wrap up reporting features (REST APIs), as it was an area where I could contribute immediately with minimal supervision while learning other parts of the application.
Standardize application logging practices with Logback, also introduce MDC for correlation
Enhance application design and documentation:
Document the REST API responses at a high level
Promote contract first approach for REST services using RAML files or JSON schema
Improve the REST Web Services with common patterns for error handling, data validation, requests traceability and automatic metadata injection in JSON responses
Technologies and infrastructure: Java 8, JSON, Jackson, Logback, Spring MVC, AOP, JOOQ, JUnit, Mockito, MariaDB/MySQL, H2, GitHub, Eclipse, Maven, Jenkins, JIRA, Tomcat, Linux, AWS, etc.
Solution Architect / Senior Developer (Contractor), AppCentrica Inc. (Toronto)
July 2015 – May 2016
Acted as co-Solution Architect, Team Lead and Senior Developer on Toyota Canada projects.
Aeroplan Management System - Solution Architect/Team Lead
Lead a small team on the design and implementation of a new loyalty program in partnership with AIMIA/Aeroplan within an SOA environment. The end result is a Web Application allowing dealers and customer representatives to grant Aeroplan Miles for Toyota purchases (Vehicle Sales, Parts and Services, Test Drives).
Work closely with project management and IT teams (new development efforts, IT counselling related to feature requests).
Document code and testing standards.
Design and implement batch processing as part of the data exchange/processing between Toyota Canada and third-party systems for miles transactions.
Implement billing services for invoice processing, transaction reports and integration with the Toyota Mainframe accounting system.
Evaluate technical solutions and suggest process enhancements.
Assist the QA team during testing (troubleshooting, test cases preparation, integration points, application deployment coordination in UAT/SIT, etc.).
Act as the main point of contact for application support:
Document application support steps and troubleshooting procedures
Fix bugs identified during QA testing or in Production environments
Reduce incrementally and significantly daily application monitoring and troubleshooting (From one hour spent daily on support to only few minutes):
Initial manual log inspection and data correlation from several micro-services
Half automated processes via text editor macros (Fetch logs, verify and validate data transactions, generate metrics and graphs, send emails, etc.)
Replace text editor macros by a custom log sent in a daily feed (manual processes remain for “special emergencies” caused by critical bugs)
Prepared RFCs and coordinated all major releases deployments, including hot fixes
Designed and improved SQL reports: loyalty program statistics, suspicious activities
STAR schema upgrade - Senior Developer
Upgraded J2EE microservices to a newer version of the STAR schema (http://www.starstandard.org/), as part of the Toyota Website redesign project. This effort impacts pretty much all Toyota Canada internal programs, as well as few external facing applications.
Reviewed, discussed and proposed implementation approaches for reducing maintenance costs.
Performed code changes with integration testing via JMeter and SoapUI
Externalized Toyota STAR schema extensions into Maven managed projects, deployed as WebSphere Shared Libraries.
Technologies and infrastructure: Enterprise Architect, SOA, XML Spy, Basalmiq mockups, Java, JavaEE, JSP, SQL Server, DB2, Squirrel, SQL Server Management Studio, JPA, JDBC, Spring ecosystem (Spring Core, Spring Batch, Spring MVC, Spring Integration, Spring JDBC template, etc.), Junit, Mockito, Selenium, JMeter, SoapUI, Web Services (SOAP, REST), SOA, JQuery, Twitter Bootstrap, Git, CVS, SFTP, Hudson, Maven, WebSphere (7.x, 8.x), IBM RAD (7.x, 8.x), SharePoint, UNIX, MQ Series, etc.
Senior Software Developer, Brovada (Toronto)
March 2015 – June 2015
Java Developer in the insurance industry on a broker/carrier integration platform.
Work on the WARP protocol support enhancements for better integration with Broker Management Systems such as TAM and EPIC.
Create a proof of concept in Clojure for the build and package manager of Brovada applications. This is a port of UNIX shell scripts to Clojure for OS interoperability based on problems found and lessons learned from my previous experiences (cross-platform package builder/manager).
Contribute to the documentation of business workflows and developer environment setup.
Technologies and infrastructure: Tomcat, J2EE, Servlet, Core Java, Spring, JPA, Hibernate, Wicket, JPA, Spring Data JPA, XML, WebServices, JSON, SOAP, JQuery, AngularJS, Twitter Bootstrap, MySQL, Oracle, SQL Server, Maven, Jenkins, Ant, Linux, SVN, JIRA, Agile, Windows, Linux, etc.
Senior Java Developer, Contractor (Remote), Softcom Technologies Corporation (Toronto)
February 2014 – June 2015
I redesigned the Look and Feel of the front-end mainly with Core Java and Java Swing. It involved a significant amount of refactoring to the continuously growing codebase.
Technologies and infrastructure: JBoss 4.x, J2EE, Servlet, Core Java, Spring Framework ecosystem (IOC, Remoting, AOP, etc.), Java Swing, Applet, Servlet, JSP, JPA, Hazelcast, EclipseLink, NetBeans, PostgreSQL, SOLR, Git, Linux, Jenkins, etc.
Team lead / Senior Software Developer (Contractor), Mackenzie Investments (Toronto)
September 2012 – August 2014
I acted as Team Lead and Technical Architect (for internal resources and external consultants) and Senior Developer on Java, Spring, Hibernate, Groovy, Grails based applications:
Work with system architects and main project stakeholders in regard to technical direction, planning, system design documentation (TOGAF), etc.
Prepare technical design and provide guidance to the development team (JSON REST services, Profile Management, auditing, general problems).
Perform code reviews and drive pair programming sessions as needed
Help with the infrastructure setup (WAS, WAS Thin client, Jenkins jobs, etc.)
Main projects
Mackenzie public website redesign: https://www.mackenzieinvestments.com
My main responsibility was coaching and helping the IT department with the reimplementation of the new public facing portal using the Grails framework and other technologies.
Design/implementation of build/deployment processes
Design and implement the persistence layer (Hibernate), as well as workflows (Spring Webflow)
Design foundation of JSON services for authentication and user profile management features
Introduce system auditing features via AOP for separation of concerns (Spring with Aspectj)
Single sign-on integration with IBM WebSEAL/TAM
Technologies and infrastructure: J2EE, Grails, Java, Groovy, Spring Core, Spring WebFlow, Spring Security, AspectJ, Hibernate, JAX-WS, JSON, REST, Oracle, LDAP, Tomcat, WebSphere, Ant, Gradle, SVN, Maven, Jenkins, UNIX, WebSEAL, JIRA, JNDI, Confluence, AIX, Jenkins, Eclipse, IntelliJ, Servlets, Responsive Design, Bootstrap, JQuery, HTML5, Agile, MVC, JUnit, JMockit, Selenium, etc.
Investments Proposal tool (Two phases): https://mpwp.mackenzieinvestments.com
I lead a small team on a new investment proposal tool written with Grails. The team was a mix of internal resources and external vendors. Some of the interesting challenges on that project included:
Complex business processes with sub-flows (Spring Webflow).
Handling nulls last sorting globally while dealing with Hibernate bugs (SQL AST rewriting)
Dynamic PDF report generation with PhantomJS (generation of table of contents on the fly)
Technologies and infrastructure: TOGAF, Java, J2EE, XML, Groovy, Grails, Spring Core, Spring Webflow, Hibernate, iText, PDFBox, HighCharts, Eclipse, IntelliJ, JavaScript (JQuery and various plugins, Bootstrap, AngularJS), JSON, NodeJS, JNDI, WebSphere, Oracle, PostgreSQL, Tomcat, PhantomJS, UNIX, Windows, HTML5, OpenText CMS, JUnit, Spock, Geb, Maven, Gradle, etc.
Senior Software Engineer, Algorithmics, an IBM company (Toronto)
July 2010 – August 2012
As a member of the Batch and Configuration Tools team, I was the Principal developer of the Algorithmics “Core Services” (Security and Distributed Computing), in addition to working on other libraries/products. The IBM/Algorithmics Platform is used by the suite of IBM/Algorithmics products (Algo One), as well as customers (via Web Services calls).
Mentored new or less experienced developers.
Contributed enhancements to the installer of the suite of Algorithmics Products.
Improved a Flex application that configures the on-boarding of financial products (data-marts).
Enhanced a reporting application that helps modelling collateral exposure accordingly to a pre-defined set of risk measures and factors, for use by aggregation/simulation engines.
Implemented features in Web services for managing distributed jobs (Grid computing: Data Synapse, HPC, etc.) with Apache Axis.
Integrated centralized asynchronous messaging support via JMS and STOMP with ActiveMQ. Most of existing services were synchronous (RMI, SOAP, XML-RPC).
Worked on a GWT/GXT application to help modelling financial products after ETL processes Maintained and enhanced all tools/services of the Algorithmics core platform: Java Web Start and Web applications (Tomcat), Configuration, Utilities, Logging, Security (JAAS with Single Sign-On), Distributed computing (Sun Microsystems JINI now Apache River, but customized), Web Services (SOAP, RPC, RMI), Monitoring (JMX), Naming and Lookup Services, etc.
Technologies and infrastructure: Core Java, JINI, JNDI, LDAP, JMS, JMX, Web Services (SOAP, with Apache Axis, RMI, XML-RPC), XML (JAXB, SAX, etc.), JAAS, Swing, GWT/GXT, J2EE, Flex, Shell Scripting, JUnit, Apache Ant, Eclipse, Tomcat, SFTP, Spring Security, IntelliJ, Linux, Unix, Oracle, DB2, SQL Server, Windows, Shell Scripting, a bit of C#, SVN, ActiveMQ, etc.
Software Developer (Senior), Softcom Technologies Corporation (Toronto)
November 2009 – June 2010
Worked as part of a 5-member team on a client-server reporting system used by call centres to monitor performance using KPIs and generate dashboard reports (in-house OLAP). The front-end communicates with the server side via Web Services (Spring Remoting).
Promoted the use of static analytic tools such as FindBugs to reduce software defects.
Implemented a Java Look and Feel for the appearance of the front-end.
Implemented a calendar component similar to Outlook for tasks scheduling (recurring events, custom scripting, Web Services, unlimited undo, custom event markers, drag and drop, etc.).
Technologies and infrastructure: JBoss, J2EE, Servlet, Core Java, Spring core, Spring Remoting, Java Swing, Hazelcast, Applet, Servlet, JSP, JPA, Hibernate, Quartz, NetBeans, Eclipse, PostgreSQL, SQL Server, Git, SVN, JUnit, etc.
Software Engineer (Contractor), Bluesocket via Nurey Networks Inc. (Toronto)
September 2008 – October 2009
Served as principal engineer on Bluesocket (now Adtran) WLAN management platform (http://www.adtran.com). It’s an embedded Linux appliance with a Web console for managing and monitoring wireless controllers and access points. The program is a J2EE application using Struts as Web framework and deployed under JBoss.
Migrate the continuous integration engine from Cruise Control to Hudson for flexibility. The build process included both Software applications, as well as a custom Linux distribution based on Fedora (with some in-house kernel modules and other customizations)
Join the sales team during client’s visits, participated in clients support calls
Create new monitoring reports using iReport and Jasper Reports (Statistics and metrics).
Improve SNMP support used to communicate with wireless access points
Enhance supported security mechanisms (authentication, authorization and auditing) by adding improvements (LDAP), as well as new features (Radius support) via JAAS Login modules
Solve database migration issues originating from the application built-in release manager. For couple of years there were intermittent and unsolved problems during upgrades, resulting into database corruptions
Redesign a service dispatching log messages via syslog using the Java EE connector architecture (JCA) and JMS, instead of creating arbitrary threads within the JavaEE container
Enhance existing heat maps with algorithms related to proximity of access points (optimize wireless access points setup and area/range coverage): this requires initial data calibration
Improve the performance and stability up to 20%, using profilers and static analysis tools
Address memory leaks (bad coding practices and unbounded queues in thread pools)
Increase concurrency with a balance of immutable objects and object pooling
Among other things, remove excessive synchronization in method calls (smaller critical sections, singletons with double-checked locking idiom vs “enums” at few places, synchronized data structures in local methods, etc.).
Migrate the J2EE server and some of the code from JBoss 4.0.x to JBoss 5.1.0.GA
Engineer a clustering solution for high availability, load balancing and failover support based on JGroups and the existing JBoss infrastructure
Technologies and infrastructure: Core Java, JMX, JMS, J2EE, EJB 3.x, JNDI, JAAS, Servlet, Encryption, JCA connectors, Spring, JFreeChart, JasperReports, IReport, JBoss (4.x, 5.x), Apache, Hibernate, Struts, JSP, SNMP, XML-RPC, Apache, Apache Velocity, PrototypeJS, Lucene, Quartz, JIRA, Trac, Apache Ant, Jenkins, NetBeans, Eclipse, Concurrency, Linux, OSX, Shell scripting, JQuery, PrototypeJS, JQuery, Git, Subversion, etc.
Programmer Analyst (Contractor), Direction of University Laval Library (Quebec)
May 2003 – June 2008
Designed and implemented Java based applications for document management, search engines, desktop programs for workflow automation and text processing (XML and semi-structured). The resulting applications were often Web applications (Tomcat) or Java Swing Desktop programs.
Push for the migration from Shared folders to CVS (and then Subversion)
Introduce Apache Maven and Apache Ant in many projects to automate builds.
Create Windows software installers using NSIS, Izpack, Jsmooth.
Develop small ETL tools and applications to avoid manual workflows.
Build a python tool that monitors printer queues in order to make the content available later in PDF format (PDFs can be downloaded for small fees).
Maintain and enhance a custom Content Management Solution (JackRabbit, JSF, etc.).
Write an XML Docbook filter to export MS Word documents (OpenOffice Uno API, XSLT, SAX, Dom4j, XPath, RPC, etc.). Documents were converted from MS Word to XML Docbook, and then from Docbook to HTML.
Work on in-house search engines such as https://ariane25.bibl.ulaval.ca/ariane/wicket/accueil
with several technologies (Lucene, SOLR, JBoss, Wicket, Spring, etc.). It's used by all the University Laval resources as well as some external users.
Design an application for a digital online photo album (artistic reviews). The result was a custom static website generator (XSL transformations and common Java libraries).
Implemented XML-RPC, SOAP and REST services for use by external applications.
Originally designed and implemented the first working prototype of the Érudit portal (http://www.erudit.org/) with Apache Cocoon. I was first maintaining a Swing application publishing the Website static HTML articles after XSL transformations. Later on, Érudit wanted a more interactive website with on the fly XML transformations, search engine support (IxiaSoft TextML server), as well as integration with existing separate applications/workflows.
Technologies and infrastructure: Core Java, Java Swing, Java Webstart, Spring (MVC, Core, Apache Axis, JdbcTemplate, Hibernate, etc.), Quartz, JPA, Hibernate, J2EE, Servlets, JSP, JSTL, Struts, JSF, Wicket, Apache Cocoon, Lucene, SOLR, XML-RPC, Jakarta libraries, Apache JackRabbit, XML, XSL, WebDAV, MySQL, Oracle, Quartz, Python, SVN, Apache Ant, Maven, Linux, Windows, etc.
Java teaching assistant (MBA-BAA courses), University Laval (Quebec)
October – December 2004
Offered Java technical support and performed system administration tasks under Debian GNU/Linux: Antivirus (Clamav), FTP (Proftpd), Firewall (Shorewall), CVS/SVN, Tomcat with JSVC, MySQL, Backups.
Developed a basic Java Web application hosting solution for student’s assignments (Custom control panel to manage and deploy applications, scripting to manage accounts): Spring, Hibernate, Commons Jelly, XSLT, MySQL, Apache POI, Apache Ant API, Eclipse, etc.
Some of my open Source Projects
Apache Ant Git tasks (https://github.com/rimerosolutions/ant-git-tasks), a set of Git tasks for Apache Ant. Apache Ant is used for the project build with Apache Ivy as dependency manager.
Maven Wrapper (https://github.com/rimerosolutions/maven-wrapper), A maven plugin that automates the download and setup of Maven installations (Concept similar to the Grails or Gradle wrapper). This is interesting on build/continuous integration servers.
JerkBot (http://sand-irc.sourceforge.net/), a command-based IRC Bot built on top of OSGI (Apache Felix) for plugins. The typical usage is a simple interactive knowledge database. This was a personal exercise for exploring the future architecture of XPontus XML editor architecture (Mentioned later).
VFSJFileChooser (http://vfsjfilechooser.sourceforge.net/), a Java Swing file dialog for browsing seamlessly local/remote files, ~ 6000 downloads years ago (stopped counting). It was separated from Xpontus (mentioned below) to serve more generic use-cases.
XPontus XML Editor (http://xpontus.sourceforge.net/), a Java Swing based XML editor, ~ 50 000+ downloads many years ago (stopped tracking popularity). It’s a modular application with pluggable components (JPF). I tried to make a cleaner commercial version in late 2008 based on OSGI but there was too much at risk on my end (time to market).
Skills
Java: Comfortable with many libraries. The technologies that I work with are usually driven by the corporate culture, conventions and other factors (infrastructure, technical staff, etc.)
Persistence frameworks and helpers: JPA, Hibernate, EclipseLink, TopLink, Spring libraries.
Web Services: SOAP, REST, XML-RPC, RMI.
Messaging: Javamail, JMX notifications, Kafka, ActiveMQ, JMS, SNMP.
Web related: JavaScript (jQuery and plugins, AngularJS, etc.), Twitter Bootstrap, CSS, HTML. I’m not doing much front-end development anymore.
XML: XSLT, XSLFO, few APIs for XML processing (JAXB, Dom4j, Xstream, STAX, etc.).
Java servers: Familiar mainly with WebSphere, Apache Tomcat, JBoss, Jetty, Resin.
IDE: Eclipse, IntelliJ, NetBeans, JDeveloper, Emacs (with LSP - language server support).
Databases familiarity: SQL Server, MySQL, Oracle, PostgreSQL, occasionally others.
Build tools: Apache Maven, Gradle, Apache Ant (with or without Ivy).
Continuous Integration/Delivery: Hudson/Jenkins, VSTS.
Collaboration tools: VSTS, Atlassian tools, Confluence, Mantis, ClearQuest, etc.
Build artifacts repositories familiarity: Nexus, Artifactory, Apache Archiva.
Testing: JUnit, Mockito, JMockit, Spock, Cucumber, JMeter, SoapUI, Postman, etc.
Revision Control Systems familiarity: Git, SVN, CVS.
Operating Systems familiarity: Linux, Mac OS X, Windows, FreeBSD, Solaris, AIX.
Education
MBA, Information Technology, University Laval, Quebec.
Bachelor, Information Systems, University of Moncton, New Brunswick.