Full-stack development for teams whose software has to be right.

Healthcare, finance, education, and security clients. A few small products of my own. And a hand in organizing Niagara's tech community.

Client work / selected from 20+

2017-2023 Healthcare HIPAA compliance platform HIPAA-compliant hosting, security controls, and developer tools for digital health companies. First developer of the platform. The infrastructure I built passed SOC 2 and HITRUST audits, and I trained the developers who came after me. Six years, from first commit to the company's acquisition. Founding Developer · RubyRodaGo
2018 Finance Underwriting risk platform Risk scoring, case workflow, and underwriter reporting for insurance and banking, aggregating public records and sanctions watchlists. Greenfield build. I delivered it ahead of schedule and under budget, then handed it off to the client's internal team. Full-Stack Developer · RubyRodaReact
2022 Infrastructure Memory disaggregation appliance Provisioning, telemetry, and a management console for a rack-scale appliance that pools memory across datacenter hosts. One of two developers. I built the entire console against my teammate's Rust systems layer, and it shipped as the demo shown to investors. Full-Stack Developer · RubyRodaReact
2024-present Healthcare Medical imaging workflow system Patient data management, study completion tracking, and physician reporting for a virtual colonoscopy diagnostic platform. A rescue project. I rewrote the system in Rails, expanded it well past the original scope, and brought it to market ahead of schedule. Now trialing at select US locations. Lead Developer · Ruby on RailsGo
2025-present Education Identity management platform Single sign-on for 200,000 members, built on OAuth2 with identities managed in Salesforce. Replaces a .NET system the client was retiring. Lead Developer · ElixirPhoenixLiveView
2025 Security Evidence management integration Service that syncs video, media, and metadata from Genetec into evidence management systems, with audit logging and chain of custody. Sole developer through nearly the full build. At handover it was being fitted for a large agency. Lead Developer · GoPostgreSQL

Work with me

Ongoing Long-term development I join your team as a senior or lead developer and stay. My longest engagement ran six years, from first commit to acquisition.
Greenfield New builds I design and build a system from zero, then hand it off to your team in good shape.
Rescue Rescues & rewrites I take over a codebase in trouble and get it stable, shipped, and to market.
Advisory Reviews & audits Code review, architecture, and compliance-readiness checks when you want an experienced outside opinion.

Whatever the shape, the way I work is the same. Everything ships with tests. I work in your repository and your issue tracker, so the code and its history are always yours. I work inside your team, not beside it: standups, planning, and the same channels your developers use. And I plan for handover from day one. I have trained the developers who replaced me more than once.

Engagements run through Mediadrive, my consultancy, and most of my work arrives by referral. I work remotely from the Niagara Region, Canada, on Eastern time. Most engagements bill weekly; hourly works for smaller pieces of work. I take on a few clients at a time, so email me with what you're building to ask about current availability.

Products / selected from 12

active Mediadrive HostingConsulting Web host and consultancy. Shared and semi-dedicated hosting with Canadian support, and web app development for clients. active Midstack ElixirPhoenix Cloud infrastructure with Canadian data sovereignty. Compute instances, private networks, snapshots, and an API/CLI for infrastructure-as-code workflows. active DNSLint Ruby on RailsAsync Ruby White-label DNS diagnostic tool for hosting providers and MSPs. Lets clients self-serve domain troubleshooting with customizable rules and branding. active nodns.fyi ElixirPhoenix Preview websites on new servers without changing DNS. Test migrations, verify staging environments, and share temporary preview links with automatic TLS. active Suspenders Ruby on RailsGo Command-line toolkit for DirectAdmin server administration. Manage PHP versions, email limits, and domain settings without manual command crafting. active Gemdocs Ruby on RailsDocker Automatic documentation hosting for Ruby gems. Generates and serves YARD docs in real-time when gems are published to RubyGems.

Open source / selected from 70+

Elixir EctoNetwork Ecto types for MACADDR and CIDR/INET PostgreSQL extensions. Elixir PhoenixMTM Many-to-many Ecto associations with HTML checkboxes. Ruby Maxmind Ruby interface to Maxmind's minFraud fraud detection service. Ruby TZWhere Time zone lookup by latitude/longitude coordinates. Lua ruby-lsp.nvim Neovim plugin for Ruby LSP with auto-installation and code lens support. Ruby rbz Package Ruby projects into single-file archives for easy distribution. Lua referral.nvim Neovim plugin to search Ruby code references via the quickfix window. Ruby Scheduled Lightweight task scheduler for Ruby with minimal dependencies.

Community / 2

co-founder Cowork Niagara Home of Niagara's independent workforce. A space for freelancers, remote workers, and entrepreneurs to connect.
organizer Software Niagara Meetups and talks for developers across the Niagara Region.

Talks / 9

2025 When Things Break, We Build: The Story of Gemdocs.org Toronto Ruby
2017 Building a Web Framework DevTricks 2016 Functional CSS DevTricks 2016 MithrilJS DevTricks 2015 Deployments with Git DevTricks 2014 Vim DevTricks
2014 Ansible DevTricks
2014 KnockoutJS DevTricks
2014 Asynchronous Task Queues DevTricks