I build backend systems that stay correct when things go wrong.

Software engineer with nearly 3 years of experience building payments, integrations, and multi-tenant SaaS with ASP.NET Core, C#, SQL Server, and Azure. At Michetti Information Solutions, I build SchoolCloud, a student information system used by about 40 schools across Alberta, and I designed and shipped its Stripe payments.

POST /webhooks/stripepayment_intent.succeeded
Three requests for the same Stripe event and how each was handled
ReceivedEventSignatureOutcome
14:02:07.118evt_1QmZ8xLk2ValidProcessed
14:02:07.964evt_1QmZ8xLk2ValidDuplicate, skipped
14:02:09.310evt_1QmZ8xLk2InvalidRejected
3 requests1 ledger entry
The same Stripe event can arrive more than once, and anyone can post to a public endpoint. The webhook handlers I built for SchoolCloud check every signature and record each event ID, so only the first valid delivery changes the ledger.

Experience

  1. Oct 2023 – Present

    Software Engineer

    Michetti Information Solutions

    I build and maintain SchoolCloud, a multi-tenant student information system for about 40 schools and education organizations across Alberta and thousands of their students and families. It covers registration, attendance, health, transportation, reporting, and payments, and runs on ASP.NET Core MVC, C#, Entity Framework Core, and SQL Server.

    • Designed and shipped Stripe payments across school instances: PaymentIntents, Checkout, Elements, subscriptions, refunds, receipts, and reconciliation for application, registration, and tuition fees.
    • Made payment processing idempotent with signature-verified webhooks and a deduplicating event store, so a repeated delivery never charges or refunds twice.
    • Built a home-education reimbursement module, from receipt upload to staff approval and payout, that administers about $137K in education credits.
    • Led the Moodle LMS integration, syncing users, courses, grades, assignments, and quiz results through the Moodle Web Services API.
    • Added per-tenant Stripe configuration, grade- and program-aware billing, and role-based access control across finance workflows and the parent and student portals.
  2. Jun 2022 – Apr 2023

    Teaching Assistant

    University of Alberta

    Designed lab assignments and built two tools that cut staff admin work: a self-serve submission web app and an automated booking system. Led weekly labs for 23 students on data parsing, web scraping, and APIs.

  3. May – Aug 2022

    Production Engineering Fellow

    Major League Hacking and Meta

    Selected for a 12-week production engineering fellowship led by Meta engineers. Built and deployed a Flask, MySQL, and Nginx web app with CI/CD, and added Prometheus and Grafana monitoring.

Writing

Recent posts from the blog.

  • 1 min read

    Welcome to my blog

    Why my blog moved from Ghost to this site, how it's built, and what I plan to write about.

See all posts

Skills

Languages
C#, TypeScript, SQL, Python, JavaScript, Java
Backend
.NET, ASP.NET Core MVC, Entity Framework Core, REST APIs, Django, Flask, Celery
Frontend
Razor, HTMX, React, jQuery, HTML, CSS
Data
SQL Server, PostgreSQL, MySQL, SQLite, MongoDB, Redis, Solr
Cloud and DevOps
Microsoft Azure, Azure App Service, Key Vault, Blob Storage, Service Bus, Docker, GitHub Actions, Jenkins, Nginx, Linux
Payments
Stripe PaymentIntents, Checkout, Elements, Subscriptions, Webhooks, Refunds

Education

  • University of Alberta

    BSc Computing Science, Minor in Economics

    With Distinction, 2020 – 2023

  • MacEwan University

    BSc Computer Science, Minor in Economics

    First Class Standing, 2018 – 2020

Certifications

  • Microsoft Certified: Azure Solutions Architect Expert

    Exam AZ-305

  • Microsoft Certified: Azure Developer Associate

    Exam AZ-204

  • Microsoft Certified: Azure Administrator Associate

    Exam AZ-104

  • Microsoft Certified: Azure Fundamentals

    Exam AZ-900

Say hello

The best way to reach me is email, or connect on LinkedIn.