Michael Whelan

Michael Whelan

I build products, teams, and side projects.

I started out making games. I ran a small indie studio while at college that hit around 50,000 downloads, and built HTML5 and Unity games in London. Since then I've followed the interesting problems: field-ops software in Dublin, sportsbook platforms at Playtech, fashion tech at Lyst, commercial shipping and customs at Raft, and now biotech as Engineering Manager at Biorce in Barcelona.

Six industries, a lot of different stacks, one way of working: understand the problem properly, plan a roadmap that holds up, and clear blockers before the team runs into them.

When I'm not doing that, I'm building side projects. I've started hundreds and even finished one or two of them.

Projects

Opinion8 banner: share your perspective on any webpage

Opinion8

Live

Upvote, downvote and discuss any page on the web.

The web lost its comment section. Opinion8 is a Chrome extension and companion site that puts a voting and discussion layer on top of any URL, so a page's reputation travels with it. The interesting part was keeping reads fast across millions of URLs while writes stay cheap.

  • React
  • TypeScript
  • Supabase
  • PostgreSQL

London Rent Roulette

In progress

Guess the rent of a real London listing. Five guesses to win.

A small game built out of frustration with the London rental market. You see a real listing and guess the monthly rent; get within £50 in five tries and you win. Listings are scraped and normalised nightly, and the guess distribution turned out to be a decent informal survey of what people think renting costs.

  • React
  • TypeScript
  • Supabase
Our Father door banner: the bronze door with one line of the prayer lit

Sagrada Família — Our Father Door

Live

Find your language on Gaudí's door — a small gift to the city that became home.

Barcelona has become my home, and for this wonderful city I wanted to give something back. The Sagrada Família's Our Father door carries the prayer in fifty languages cast into the bronze, and visitors stand there hunting for their own. I'm not religious — it's not a devotional thing, just something nice to hand someone. Pick a language and the door dims except a pool of light around that text, with the glow measured off the photo so it follows the hand-cut letters rather than a box.

  • JavaScript
  • Canvas
  • SVG
  • No build step
rn-startup-perf banner: a startup timeline waterfall

rn-startup-perf

Live

Find out where a React Native cold start actually spends its time.

Cold start is rarely one slow function — it's bundle bootstrap, provider trees, permissions and a heavy first screen all stacked up. Metro logs won't give you a timeline, so this drops marks and probes into the boot path and prints a console report: which phase owned the seconds, which contexts churned, and what each subtree cost to commit. Zero overhead when it's switched off.

  • React Native
  • Expo
  • TypeScript
  • npm
Nimbus Weather banner: the ring-and-N mark on the app's blue sky gradient

Nimbus

In progress

A weather app that puts UV first and lives on your home screen.

Most weather apps bury the UV Index several screens deep, behind animations nobody asked for. Nimbus puts it next to temperature and rain, and treats the home screen widget as the real interface — if it tells you whether you need sunscreen and a coat before you leave the house, the app has done its job. Android for now: the widget refreshes on a background task, the last forecast is cached so you never land on a spinner, and the sky behind it all follows the real sun cycle wherever you're looking.

  • React Native
  • TypeScript
  • Expo
  • Open-Meteo

AliasMail

In progress

Disposable email forwarding, without the disposable-email stigma.

Throwaway email usually means a second inbox you have to remember to go and check, on a domain half the web already blocks. This forwards instead: mail sent to the alias lands in your real inbox, and the alias expires on a schedule you pick — a day, a week, a month. Good for signups, one-off discount codes and trying a service without handing over the address you actually use. A dashboard shows what's live, what expires when, and kills any of them on the spot.

  • React Native
  • Expo
  • AWS Lambda
  • DynamoDB
  • SES