Built

Chrome extension2026BetaLast pushed Oct 1, 2026

MYLD

Every deadline, quiz and assessment in one side panel.

I kept clicking through every course just to see what was due next, so I made a side panel that does it for me. It's on the Chrome Web Store for Laurier students.

  • One list

    MyLearningSpace, Pearson and Achieve together, sorted from overdue to later.

  • Knows what's done

    Completion comes from the platform itself. Your own check-offs stay separate.

  • Catches moved dates

    Re-checks every 30 minutes, flags anything that changed, and reminds you when you want.

  • Stays on your computer

    No server, no analytics, and it only ever reads.

How I built itWhere a deadline goes, drawn as a TTC map
MYLD side panel showing the next deadline, a weekly progress bar and class filters

The nearest deadline at the top, this week's progress underneath, one pill per class.

MYLD side panel showing the next deadline, a weekly progress bar and class filters

Up next

The nearest deadline at the top, this week's progress underneath, one pill per class.

1 / 4

Built with JavaScript · Chrome Manifest V3 · HTML · CSS


Web app2026Last pushed Sep 22, 2026

PortfolioLens

Build a portfolio, see its risk.

Pick some real tickers and see how the mix behaves: how risky it is, where it might go, and how it would have held up through past crashes.

  • Risk at a glance

    Return, volatility, Sharpe ratio and Value at Risk from up to 20 years of prices.

  • Efficient frontier

    Shows where your mix sits against the best possible trade-offs between risk and return.

  • What-ifs

    Monte Carlo projections ten years out, plus replays of 2008, 2020 and 2022.

  • Contagion

    Shock one holding and watch it spread through the correlations, explained in plain English.

How I built itCorrelations as tunnels under King and Bay

Click a holding to shock it

APLE–GOOGL correlation 0.36MSFT–GOOGL correlation 0.55MSFT–NVDA correlation 0.56MSFT–META correlation 0.51GOOGL–NVDA correlation 0.49GOOGL–META correlation 0.53NVDA–META correlation 0.48APLE−15.0%MSFT−1.2%GOOGL−3.5%NVDA−1.1%META−1.2%
Total portfolio impact−4.4%
  1. GOOGL1 hop−3.5%
  2. MSFT2 hops−1.2%
  3. META2 hops−1.2%
  4. NVDA2 hops−1.1%

A −15% shock to APLE spreads most heavily to GOOGL (correlation 0.36, est. −3.5%), MSFT (indirect path, est. −1.2%), META (indirect path, est. −1.2%). Estimated total portfolio drawdown: −4.4%.

PortfolioLens’s own contagion model, ported to run in your browser on the sample portfolio from the screenshots below. Same rules, same numbers as the app.
PortfolioLens dashboard with metric cards, an efficient frontier and a Monte Carlo fan chart

Headline numbers, the efficient frontier, and a fan of simulated paths ten years out.

PortfolioLens dashboard with metric cards, an efficient frontier and a Monte Carlo fan chart

Overview

Headline numbers, the efficient frontier, and a fan of simulated paths ten years out.

1 / 4
portfoliolens-gules.vercel.appOpen full size ↗

Built with Next.js · TypeScript · FastAPI · Python · NumPy · SciPy · NetworkX


In progress

Texting assistant2026Last pushed Oct 10, 2026

SMS Academic Assistant

Connect your school once, then just text.

No app: link your LEARN or Brightspace calendar once, then text one number to ask what's due, set reminders or get a morning rundown.

How it’s goingA week of deadlines on the Union departures board
Two phone screens: a sign-up text, then a thread asking what's due tomorrow at Waterloo

From the design mockup. When a course doesn't post its deadlines to LEARN, it says so instead of guessing.

Two phone screens: a sign-up text, then a thread asking what's due tomorrow at Waterloo

Just text

From the design mockup. When a course doesn't post its deadlines to LEARN, it says so instead of guessing.

1 / 2

Built with Python · FastAPI · PostgreSQL · Twilio · Gemini


Web app2026Last pushed Sep 30, 2026

DealHound

The cheapest listing isn't always the best deal.

Search for a product once and compare new, refurbished and used listings by what each would really cost after shipping, tax, seller risk and warranty.

How I built itA search nothing can hold up

Every source runs in parallel under its own six-second deadline, with an abort signal so a hung request is actually cancelled rather than left running. Each source's listings are checked against a schema before they reach the page, and one that throws, times out or sends back junk is reported as failed while the others keep streaming in as Server-Sent Events.

Built with Next.js · TypeScript · Server-Sent Events · Zod


↑↓ to move↵ to openesc to close