Fullstack Software Developer

Senior developer specializing in web apps built with Rails and Stimulus, and mobile apps with Ionic and Vue.

Experience

I am a fullstack software developer with over 21 years of experience building mobile and web applications.

For the web, I believe Rails is not just a development framework but also a development philosophy teaching principles like MVC, DRY, KISS, and separation of concerns. I’ve carried those same principles into everything I build regardless of language.

For mobile, I began developing apps back in 2003 on the first generation of smartphones, long before iOS or Android existed. Since then I've helped corporate clients, nonprofit organizations, and UN agencies develop mobile apps to gather data, engage their community, and empower citizens.

The same mobile design principles I learned in those early days like utilizing limited screen space and handling unreliable connections still apply today, and continue to help me build world class mobile and web applications.


Skills

  • Angular
  • CSS
  • Heroku
  • HTML
  • Firebase
  • Ionic
  • Java
  • Javascript
  • Node
  • Nuxt
  • Postgres
  • Ruby on Rails
  • SQL
  • TypeScript
  • Vue
  • AWS
  • Vitepress
  • Supabase
  • REST
  • GraphQL
  • JSON
  • XML

Past Clients

Some of the incredible organizations I've had the opportunity to work with over the years.

Flipgive
Mission
Wayfinder
Ushahidi
UNOCHA
WorldBank

Recent Projects

Some recent projects I'm proud to have helped bring to life. Wanna see more? Checkout all my past projects.

GitDigest

Receive scheduled summaries for your issues, milestones and pull requests.

githubdeveloperdevelopment
TabMarks

New tab extension for Chrome that makes it fast and easy to find and search through your bookmarks and history.

chromeextension
Rails Blueprint

A starter blueprint for fast tracking Rails development.

railsdevelopment
TenFour

Emergency checkin system making it easy to triage communication so teams can stay up to date during a crisis.

androidcrisisdisasterioniciospwa
RailsGems

Share Gems You Love. Discover new gems, and share the gems you love.

railsrailsgems
Saskatoon AED Locations

An iOS and Android prototype to showcase the city's open data initiative, displaying AED locations across Saskatoon.

androidcivicioniciosopendataopensource

Here are some of my popular repos on Github.

turbo-ios-base

Turbo-iOS base project that's entirely driven from your backend Rails app.

swift124 stars14 forks
rails-webpacker-vue-bootstrap

Rails 6 project sharing some strategies for using Rails 6 with Webpacker, Vue, and Bootstrap.

ruby9 stars1 fork
rails-blueprint

A starter blueprint for fast tracking Rails development

35 stars3 forks
rails-gems

Share the gems you love

railsruby-on-railsrubygemsruby8 stars3 forks
github-commit-to-trello-card

GitHub Action to attach GitHub commits and pull requests as a comment in a Trello card

javascript18 stars24 forks
frontline-sms-reminders

FrontlineSMS Reminders Plugin

java5 stars3 forks

Core Principles

The following principles guide me in everything that I develop, whether it's my own initiative or for clients.

Design With Constraints

Contrary to common belief, constraints can be good for design helping keep things focussed and avoiding scope creep. It's especially important on mobile considering the small screen size, limited processing power, and unreliable internet connection.

Don't Repeat Yourself

Ruby on Rails isn't just a framework, it's a philosophy on how to develop great software. Being a Rails developer, the DRY principle is now baked into my DNA and something I incorporate into all software that I develop, including mobile and web.

Keep It Consistent

Consistency is so important, within an application as a whole but also with the target platform. Following target conventions are so important, the app should should be instantly familiar to a user, they shouldn't have to learn how to use.

Self Documentating Code

Self-documented and well-formatted code isn't just cleaner and easier to understand, it's pure poetry! It can also improve the overall design of the program, help reduce bugs, and make it easier for others to maintain.

Don't Reinvent The Wheel

There are so many well established frameworks, plugins and modules out there, it seems crazy not to utilize them when possible. Too often developers reinvent the wheel, when so much time and pain could be avoided by reusing existing components.

Follow UI Guidelines

Apple and Google have invested millions to establish industry UI Guidelines and UX Best Practises, it's important we follow and embrace these guidelines to ensure the things that we design and build should already be familar to our users.

Keep It Simple

Although it's one of the earliest things you learn as a software developer, too often we forgot the KISS principle and over complicate things. If you're having to jump through several hoops to make something work, you're probably doing it wrong.

Should Work Offline

Although we live in a ultra-connected world, it's still incredibly important today to ensure that apps work gracefully offline, caching data locally to ensure they are fast and responsive when internet connection are unavailable.


Words of Praise

Kind words from some the incredible people I've had the opportunity to work with.


Contact Me

Interested in a past project? Wanting to collaborate? Let's connect, I'd love to hear from you!