Overview

I am an experienced polyglot software developer with a focus on web and mobile applications. In recent years my focus has been on developing web applications with Ruby, Rails and JavaScript (including React and Svelte). On mobile I have experience developing cross-platform apps for iOS & Android using Flutter as well as building native iOS apps using Swift. I also have recently been exploring functional programming and have been enjoying Elixir and the Phoenix framework.

I am a continual learner, always seeking to improve myself and my craft. I’m not afraid of finding out that I’m wrong and learning a better way to do things. I honestly enjoy programming and the process of bringing ideas and specifications to life. Writing clean code is a passion of mine and so a primary goal is to always write well designed code that is easy to change and also easy to test. I’m an avid user of automated testing tools and generally practice a test-first approach to development.

Skills

My primary proficiency is software development with a focus in recent years on the Ruby and JavaScript languages, utilizing various frameworks including Rails, React and Svelte. I also have over 20 years of combined experience in other programming languages including Java, C/C++, Swift, Python, PHP and Elixir. I have developed for a myriad of platforms throughout my career including web, mobile, desktop and embedded systems.

In addition I have experience with the following related technologies:

  • Databases: PostgreSQL, MySQL, Redis, MongoDB
  • Linux server administration and application deployment
  • JavaScript Frameworks: React and Svelte
  • Front-end web development: HTML, CSS, Sass, responsive design
  • Automated Testing: Rspec, Capybara
  • Version control systems: Git and Subversion
  • Preferred developer tools: Vim and Tmux

Work Experience

Lead with Purpose, Senior Software Engineer

April 2015 - Present

Lead with Purpose helps businesses to create an engaged team of people that are on the same page. I am the lead developer on their software platform which is a large and complex Rails application that also exposes an API to the front-end which has been built with a combination of JavaScript and Svelte.

I also build native mobile apps for iOS and Android in Flutter. These apps consume the Rails API and provide Lead with Purpose users with a customized mobile experience.

Glass Canvas, Software Developer

March 2017 - March 2018

My role at Glass Canvas has primarily involved the continued development and customization of their custom CMS platform, a Ruby on Rails application built with the Refinery extension. In addition to the Rails work I have also written JavaScript and React code and been involved with ElasticSearch integration.

Provide Chat, Co-founder / Software Developer

January 2009 - 2017

I designed and built the Provide Chat web-based application using a combination of Ruby on Rails and JavaScript (both vanilla JS, Node and React). Provide Chat includes a web-based administration and chat system, a robust API and third-party JavaScript widgets. Additionally I have worked on building mobile applications which authenticate and communicate through the Rails-powered API. I have also experimented with utilizing Elixir to increase performance for the chat-specific portions of the API.

In addition to my duties as lead software developer, I help to manage the company operations and interact with our customers and partners.

iCan Systems Inc., Senior Software Engineer

January 2008 - March 2017

My primary work with iCan Systems involved building their web technology platforms, specifically Smartsettle One, a web application designed for simple, single-issue, two-party negotiations. The application has many use-cases including areas of debt and conflict resolution. I also built the International eNegotiation Exhibition, which has seen the involvement of universities from over 30 different countries, and Dutch eAuction which integrates the Smartsettle negotiation engine into an auction paradigm.

iCan Systems Inc. is a leader in developing software for the emerging eNegotiation industry. Their software implements algorithms which are based in the field of game theory, involving mathematical models for resolving conflict and encouraging cooperation between decision makers.

Lusora Inc., Software Developer

2004 - 2007

Lusora was a leader in developing embedded health and elder patient care technology. I was the primary developer of a Java server platform which was a communications hub for Lusora’s embedded health care devices. The embedded devices would connect to the server and send updates and alerts, then the server platform would also send down commands and updates to the devices. Additionally I built a Java-based web application (using Tomcat/JSP) that would allow the monitoring and management of these embedded devices.

Calltrex, Software Developer

2002 - 2003

At Calltrex I was the lead software developer on a team that developed custom web applications for call centres. I managed asterisk PBX servers and build custom web applications that would tie into the asterisk PBX and provide integrated functionality to call centre agents.

Shopping Sherlock, Software Developer

1998 - 2001

Was the lead software developer on a team responsible for developing e-commerce web-based applications. We built several custom online shopping applications initially using Perl and then migrated over to PHP3. One of our goals was to leverage open source technologies as much as possible and so we developed our applications on Linux, Apache, MySQL and other open source technologies.

Education

Bachelor of Technology, Kwantlen Polytechnic University

2010

Diploma in Computer Information Systems, Kwantlen Polytechnic University

1997-1999

Volunteer Experience

Scouts Canada

Since 2016 I have served as one of the leaders for the 1st Central Surrey Cub Scouts.

Getting in touch