Michael Easter
Software developer, writer, speaker, with 20+ years of experience in all phases of development.
Over 16 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.
Contact
- Address: Charlottetown, Prince Edward Island, Canada
- Email: codetojoy at gmail
- Mobile: by request
- Twitter: @codetojoy
Education
- University of Waterloo: M.Math. in Computer Science
- University of Prince Edward Island: B.Sc. in Mathematics (minor Computer Science)
Online Resources
Skills
- Concepts: agile methodologies (certified Scrum Master, 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: Jakarta EE (JAX-RS, JAXB, JDBC, JMS, JSP, RMI, Web Services), Spring, Hibernate, Node.js, Android, jQuery
- Testing Frameworks: JUnit, Mockito, Cobertura, DbUnit, Spock, FIT
- Dev Tools: Gradle, Maven, Jenkins, Artifactory, Ant, Bash, Eclipse, IntelliJ, Git, Docker, GitLab, IBM Rational Application Developer (RAD)
- Production Systems: MySQL, Tomcat, Oracle, IBM WebSphere Application Server, WebLogic
References
Experience
Study Sabbatical, Charlottetown, PE
- June 2020 - present
- Study break to learn new technologies via Udemy courses and/or technical books.
- Summary of projects here
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
- Second-Gen SaaS/IoT Project
- Assisting digital signage firm (part-time) with next-generation SaaS project with 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
- Multiple projects (below)
- Second-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 Windows and Android devices, 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.
- Feb 2004 - Oct 2006
- role: Senior Software Engineer
- 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.
- May 2000 - Feb 2004
- role: Technical Lead
- 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.
- Feb 1999 - May 2000
- role: Software Engineer
- Collaborated on next-generation Integrated Library System. Client-server architecture. Toolset: C++, CORBA, ObjectStore (OODB).
Software Consultant, Unicon International, Columbus, Ohio
- 1996 - 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