Michael Easter Address: Charlottetown, Prince Edward Island, Canada Email: codetojoy at gmail Mobile: per request Twitter: https://twitter.com/codetojoy ******************** * Profile Software developer, writer, speaker, with 30 years of experience in all phases of development. Over 18 years experience with Java and JVM technologies including front-end, server, build processes, and network/IoT devices. Passionate about the craft of software and empowering teams to deliver robust solutions to customers. ******************** * Education University of Waterloo: M.Math. in Computer Science University of Prince Edward Island: B.Sc. in Mathematics (minor Computer Science) ******************** * Online Resources Stack Overflow (24k reputation): https://stackoverflow.com/users/12704/michael-easter GitHub: https://github.com/codetojoy LinkedIn: https://www.linkedin.com/in/michael-easter-24231316/ Speaking, Writing, Organizing: https://github.com/codetojoy/cv/blob/main/Tech_Community_Involvement.md ******************** * Skills AI: Claude by Anthropic, certificate for Claude Code in Action: https://verify.skilljar.com/c/v83uimivyd6x Concepts: agile methodologies (Scrum, XP), unit-testing/TDD, integration testing, Continuous Integration, REST, concurrency, MVC, IoT Languages: Java, Groovy, TypeScript/JavaScript, Python, SQL. Familiar with C#, Dart, Go, Kotlin, Rust, Scala Frameworks: Java EE (JAX-RS, JAXB, JDBC, JMS, JSP, RMI, Web Services), Spring, Hibernate, Play Framework, Ebean, Node.js, Android, jQuery, Knockout JS Testing Frameworks: JUnit, Mockito, Cobertura, DbUnit, Spock, FIT Dev Tools: Gradle, Maven, Jenkins, Artifactory, Ant, Bash, Eclipse, IntelliJ, Git, Subversion, Docker, GitLab, IBM RAD (Rational Application Developer) Production Systems: PostgreSQL, AWS, MySQL, Tomcat, Oracle, IBM WebSphere Application Server, WebLogic ******************** * References Available on request ******************** * Experience Study Sabbatical, Charlottetown, PE - April 2023 - present - Study break to upskill for the new world of AI. Senior Software Engineer, SpryPoint, Charlottetown, PE - Apr 2023 - Apr 2026 - Full-stack contributor across front-end, back-end, database, cloud, and DevOps. - Delivered features via Scrum while driving platform-wide improvements in reliability, performance, and team capability. - Feature Delivery - Designed APIs consumed by adjacent product teams - Added new device-type to IoT subsystem, including substantial documentation of legacy code - Shipped new form-subsystem features, with thorough documentation of previously undocumented areas - Platform & Performance - **Observability:** Designed subsystems to identify slow API endpoints, security/quality anomalies, and database concerns (e.g., index bloat) - **Proactive monitoring:** Routinely surfaced issues from production logs and filed early-warning tickets ahead of customers or DevOps - **Performance:** Measurable gains via virtual threads, Caffeine caching, and database optimizations - **Developer velocity:** Introduced a mock-data subsystem which unblocked teams waiting on upstream APIs - Trusted advisor to team lead, staff engineers, and DevOps - Mentorship & Team Growth - Mentored on unit testing, architectural design, personal "test-bench" projects, and AI-tool adoption — **unit-test count grew 8× during tenure** - Launched an onboarding program; encouraged peers to present topics ("bring many to 1.5× rather than be 10× alone") - Authored 50+ daily tips in the team wiki - Ongoing legacy-code refactoring - Demonstrated Playwright and REST Assured for automated regression testing - Co-organizer a local developer meetup ([PEI Developers](https://peiitalliance.com/pei-devs), co-sponsored by SpryPoint) - Contributed financially to employer-sponsored open source (e.g., Play Framework) - Active member of the internal technical book club - Technologies: Java (Play Framework) · Vanilla JavaScript · PostgreSQL · Jenkins · AWS Study Sabbatical, Charlottetown, PE - June 2020 - April 2023 - Study break to learn new technologies via Udemy courses and/or technical books. - Summary of projects: https://github.com/codetojoy/cv/blob/main/Sabbatical.List.md Solution Architect, Veterans Affairs Canada, Charlottetown, PE - Aug 2019 - June 2020 - On the architecture & infrastructure team, I designed solutions for new projects, evangelized new direction within the organization (e.g. microservices, cloud), and assisted legacy projects with best-practices (e.g. build hygiene). - Architecture: - Designed architecture for V 2.0 of internal webapp (mental-health evaluator) using microservices and REST API. - Designed initial architecture for internal webapp (benefits management), leveraging other departmental microservices. - Investigated solutions for migrating unsupported Confluence Wiki to other platforms. - Participated on cloud-migration team in preparation to employ cloud solutions. This included identifying select projects, and feature analysis of various cloud platforms, both in private sector in within the Government of Canada. - Best practices: - Introduced Scrum-style stand-up meetings to facilitate accountability via a flat leadership model. - Demonstrated proper build hygiene (using Gradle, TeamCity), investigated new tools (IntelliJ Idea), and introduced unit-testing (JUnit, Mockito). - Refactored critical, legacy codebase to showcase multi-step, careful refactoring (unit-tests, introducing interfaces) and the mitigation of bad design (over-use of static fields). - Prepared internal presentations on direction of architecture and infrastructure: e.g. microservices and Dev Ops. Programmer Analyst, Veterans Affairs Canada, Charlottetown, PE - Sep 2018 - Aug 2019 - On-going development for next-generation internal webapp (mental-health evaluator) using iterative development via the Scrum framework. - Received training and certification as Scrum Master. - Developed build process that uses Maven and does not rely on IDE configuration (RAD). - Introduced: unit testing, build hygiene, inline performance warning logs for slow transactions, Scrum framework, modern concurrency patterns (e.g. Java’s ExecutorService). - Tools: Apache Struts2, Maven, IBM RAD, IBM WebSphere, Java, Web Experience Toolkit (WET) framework, SQL Developer, Oracle RDBMS, GitLab, Git. Freelance Software Developer, Charlottetown, PE - Apr 2016 - Aug 2018 - 2nd-Gen SaaS/IoT Project - Assisting digital signage firm (part-time) with next-generation SaaS project with networked/IoT display devices. - Developed efficient build process using Artifactory, with deploy of web/server via Jenkins Pipelines. - Extensive modification of Windows display device: removal of legacy installer, interface with Electron app, Java RMI performance and stability. - Facilitated migration to GitHub from legacy source-control. Provided on-site training for unit-testing (JUnit, Mockito) and Git. - Tools: Artifactory, Gradle, Groovy, Java, Java RMI, Jenkins, Node.js, Spring, Webpack. Software Developer, ScreenScape Networks, Charlottetown, PE Mar 2012 - Apr 2016 - Mar 2012 - Apr 2016 - multiple projects (below) - 2nd-Gen SaaS/IoT Project - Full-stack member of small team on SaaS project (client, server, and IoT device). - Extensive server work: new REST endpoints with Spring/Hibernate, DB schema changes. Implemented concurrency lock around legacy image scaling tool. - Worked closely with CTO on both Windows (and Android, to lesser degree) device, including install/provision, config/monitoring, and in-field version update. - Developed many utilities, tools. e.g. One Groovy app parsed/verified Adobe Flash XML and built an executable jar which contained assets and an ENV-aware database loader. Used by both content designers and Ops team. - Introduced team to unit-testing (JUnit, Mockito) and integration testing (DbUnit) as agile techniques. Built prototype Docker image for Jenkins, MySQL. - Tools: Android, Apache Flex, AWS, DbUnit, Gradle, Groovy, Hibernate, Java, JUnit, JWrapper, Mockito, MySQL, Spring, Subversion, Tomcat, Eclipse. - Legacy SaaS project - Collaborated on first-generation SaaS project (client and server). - Scrum-based sprints, working closely with domain experts and Operations. - Development included: client (Flex), server (Java/Spring/Hibernate), database utilities, other DevOps. - Introduced Groovy for DevOps utilities, pair-programming as agile techniques. Refined build/deploy processes in Jenkins. - Tools: Apache Flex (client), Ant, Groovy, Java, MySQL, Hibernate, Spring, Subversion, Tomcat, Eclipse. Senior Software Consultant, CGI, Stratford PE – Jun 2010 - Mar 2012 - Collaborated on enterprise, Java web application. Architecture: JDBC on WebLogic cluster with Oracle DB. - Introduced agile principles, JUnit, and Groovy (for troubleshooting). - Tools: Java, Eclipse, Ant, jQuery, JMS, Subversion, Oracle, SQL, Toad. Senior Software Engineer, Advantage Consulting, St. Louis, Missouri - Oct 2006 - Jun 2010 - Worked full-time for client sites (below) and performed extra-curricular activities, including writing articles and maintaining 3-day training class on Groovy/Grails. - Nov 2007 - Jun 2010 - project: medical device application (return assignment) - Member of Scrum team developing Java client-server app on PC, connected to medical instrument. Worked closely with domain experts on Sprint planning. - Migrated OODB to PostgreSQL, using Spring, Hibernate. Introduced Groovy, enabling team to write fast queries against OODB, using production code. - Tools: Java, Groovy, PostgreSQL, Spring, Hibernate, JUnit, DbUnit, FIT. - Apr 2007 - Nov 2007 - project: accounting system - Assisted client with requirements/design. - Tools: Java, Java Swing, IntelliJ. - Oct 2006 - Apr 2007 - project: medical device application (initial assignment) - Same project/tasks as described above. My contract was not renewed due to budget constraints, but was later invited (by name) to return. Various Roles, SirsiDynix (formerly Data Research Associates) St. Louis, Missouri – 1999 - 2006 - Various roles, described below. - role: Senior Software Engineer - Feb 2004 - Oct 2006 - Contributed to development effort in incremental releases of portlet web app, based on Apache Jetspeed. (See Project 2 below). - Wrote custom persistence layer (Hibernate) to store portlet config in Oracle. - role: Technical Lead - May 2000 - Feb 2004 - project: Portlet Web App - Tech lead for 2 initial releases of federated portlet web app. - Oversaw project from spec-to-release. Supervised team of 2 junior developers. - Tools: Apache Jetspeed, Struts 1.x, Hibernate, Lucene (as prototype), Oracle, Tomcat, Eclipse, XLST. - project: Online Public Access Catalogue - Tech lead for 2 major releases of existing, popular web app. App written in C++, multi-threaded, multi-lingual UX, followed MVC architecture. - Oversaw project from spec-to-release. Worked closely with domain expert, server-side developers. Supervised team of 2 junior developers. - role: Software Engineer - Feb 1999 - May 2000 - Collaborated on next-generation Integrated Library System. Client-server architecture. Toolset: C++, CORBA, ObjectStore (OODB). Software Consultant, Unicon International, Columbus, Ohio – Oct 1996 - Feb 1999 - Coordinated design/prototype data warehouse for telecom firm. Client-server architecture. Data stored in Oracle (data repository) and Hyperion Essbase (data mart). Integrated VB/Excel client; Unix servers(C++, Perl). - Participated in real-time network switch for large telecom firm. The system consisted of DEC Alphas connected by LAN over ATM. - Tools: Motif, C++. Software Consultant, Lindenberg and Associates, St. Louis, Missouri - Jan 1996 - Oct 1996 - Involved in developing office-productivity applications for investment firm. - Activities included: gathering requirements, coding, usability-lab testing for UX. - Tools: UIM/X, Motif, C++, Sun’s ToolTalk. Programmer/Analyst, National Research Council, Ottawa, ON - 1993 - 1995 - Ported real-time Collision-Detection library from robotic app to CNC industrial machine tool. - Tools: ANSI C (DOS), C++ (Irix), Motif, OpenGL. ******************** version info: 0.9.15 07-FEB-2023