
About
I am a Canadian Software Developer, Designer, Musician, and Artist from Ottawa, Ontario.
A seasoned Full-Stack Engineer specializing in high-performance frontend web application architecture and pragmatic test-driven development.
I enjoy wearing many hats and typically find myself operating as Tech Lead, Architect, or Solver while roaming in between the worlds of Design, Frontend, and Backend software engineering.
Side Projects
A fun toy app that lets you build and share links to a loadout for the turn-based strategy roleplaying game "The Banner Saga".
Speaking
As a community of developers, we need to place a priority on seeking interdependence instead of independence; in our technology choices, our hiring practices and the way we interact with team members.
Creating a healthy team begins by putting everyone on a level emotional playing field; we are all broken in one way or another and the first step to eliminating unhealthy team environments is figuring out how to admit that honestly.
If we are to move forward together we need to talk about the hard things: how to cultivate empathy, when to speak up, when to stay quiet, how to build trust, and how to handle conflict without imploding.
Browsers: The Final Frontier. The most volatile programming platform the world has ever known. You're a seasoned engineer who has mastered the art of server-side dev. You've conquered .NET, Java, and many more.
You know a little bit about the strange new world of client-side development and you'd like to take your understanding to the next level. Good! Our mission: to explore the implementation details of the Browser, HTML, CSS, and JavaScript; to examine the tools and techniques that will help you boldly go where few have gone before, from Hacker to Front-End Engineer.
Writing
Music composition and production is a large part of my life outside of software development, so much so that I often find myself thinking of ways to draw parallels between the two. One such parallel that has stuck with me over the past 6 months or so is the concept of the missing fundamental.
Thinking of web applications in terms of state machines is not a new idea; in fact, it has become so popular in the past few years that teams are spending increasingly more time breaking down their application into states managed by front-end frameworks.
The phrase "Software Consulting" generally evokes feelings of praise or disdain, or perhaps both depending on the circumstances. As consultants, we are often positioned as experts and typically engaged during times of crisis or uncertainty; so it should come as no surprise that our ability to deliver in the midst of that environment is the primary measure of our effectiveness.
Awards
The MVP Award is given to the person with the most votes across all of the SurveyMonkey Engineering Team Awards categories, as voted on by peers.
Features
Some would say that the browser is the most volatile development platform the world has ever known. If you’re a client-side developer, understanding how browser internals work can help you both make better decisions and appreciate the justifications behind many development best practices. In one of the best talks this year, David Mosher takes you through how browsers parse and render your pages.
Work Experience
Strategic Partner on the Engineering Productivity team. Providing leadership, guidance, and delivery on initiatives designed to improve Developer Experience with a focus on Internal Tools, CI/CD Systems, Knowledge Management, Documentation, Mentorship and Onboarding. NodeJS, React, GraphQL, Ruby, and Python.
Consulting and delivery of working software across a variety of industries using JavaScript, Ruby, Python, AWS, and Heroku.
Consulting with a focus on Rich Client application development using JavaScript, JasmineBDD, BackboneJS, KnockoutJS and Java Web Services.
Built rich prototypes and applications using Backbone.js, Knockout.js, HTML5 localStorage and CSS3. Optimized client-side performance of Enterprise Java applications (Struts2, SpringMVC). Facilitated User Testing sessions to solicit feedback on prototypes.
Developed JavaScript testing patterns using JasmineBDD and trained teams on their use. Implemented JavaScript module patterns using asynchronous script loading.
Education
Computer Systems Technology is a comprehensive 2 year Diploma program covering development, planning, and implementation of web and client software.
I studied Graphic Design during a diploma program that covered traditional and digital page layout, prepress, and design utilizing Adobe and Macromedia application suites.