Ryan Hills
COMMERCIAL PILOT & VIBE-CODER

Flying jets by day. Shipping code on layovers.

A native iOS habit tracker built around Noah Kagan's "Law of 100" — the idea that you commit to 100 reps of something (100 videos, 100 cold emails, 100 workouts) before you let yourself judge the results. Each challenge is a 10×10 grid: tap a cell to log a rep and watch the percentage climb. It runs fully offline with no account and no backend — all data stays on the device — and adds momentum tracking, streaks, a "finish-by" projection, milestone nudges at 25/50/75, backdating, quantity logging, and a JSON export/import backup. Spec'd, designed, and built with Claude in VSCode as a real React Native app rather than a web wrapper.

Tech Stack
Expo React Native TypeScript expo-router AsyncStorage Reanimated EAS Update Claude
Try It On Your Phone
  1. Install Expo Go (free) from the App Store or Google Play using the button below.
  2. Open the QR code link below on a screen you can scan.
  3. iPhone: open the built-in Camera app, point it at the QR code, and tap the "Open in Expo Go" banner that appears.
  4. Android: open Expo Go, tap "Scan QR code," and scan it.
  5. The app loads inside Expo Go — start a challenge and tap a cell to log your first rep. No laptop or shared Wi-Fi needed.

Note: the app runs inside Expo Go for testing, so it uses Expo Go's icon rather than its own. Your data is saved on your device.

A browser game where you whack cartoon Donald Trumps as they pop out of the ground, racking up as many hits as you can in 60 seconds. It is a single HTML file with no framework and no backend, so it loads instantly and runs anywhere, including on a phone. The characters pop on a difficulty curve that speeds up as the clock runs down, each hit fires a synthesized smack sound built with the Web Audio API, and your best score is saved on the device. Spec'd, designed, and built with Claude in a single session, then deployed to Vercel.

Tech Stack
HTML5 CSS3 Vanilla JS Web Audio API localStorage Vercel Claude
Play the game

An offline-first iPhone workout tracker I built to replace RepCount. It is a Progressive Web App with no framework and no backend, so it installs to the home screen and runs fully offline, with every bit of data kept on the device. It follows the 2-2-2 training method with automatic progression, a rest timer, progress charts, and a quick-log option for travel days. Spec'd, designed, and built with Claude across several sessions.

Tech Stack
HTML5 CSS3 Vanilla JS PWA Service Worker localStorage Chart.js Netlify Claude
View the project

A personal portfolio site built in the style of a 1980s phosphor-green CRT terminal. Designed as a single HTML file with no build step or frameworks — just HTML, CSS, and a little vanilla JavaScript. The animated background is adapted from Brendan Jowett's open-source network canvas, recoloured to phosphor green and repopulated with code glyphs instead of plain dots. The whole thing was spec'd, designed, and built collaboratively with Claude (Anthropic) across a single session.

Tech Stack
HTML5 CSS3 Vanilla JS JetBrains Mono Canvas API Formspree Netlify Claude
ryanh:~$ send_message --init
ABOUT ME

ryanh:~$ cat about.txt
  • Airline Captain — Embraer E-195
  • Australian expat living in Sweden
  • Building AI-first side projects between flights
  • Former professional photographer
  • Learning to vibe-code with Claude, Bolt & Lovable
  • Interests: Aviation, Reading, Movies, Photography, Motorsports, Poker