Skip to content

Projects

Things I have built

Products for clients and teams, tools for health and learning, and experiments with AI, robots and simulations.

  • Search 63 calculators, or describe the case and let the assistant pick

    63 clinical calculators, cancer staging and an assistant that shows its working.

    • Preact
    • TypeScript
    • Vite
    • Cloudflare Workers
    • +3 more
  • Ten lessons that unlock in order, with stars and mastery

    A friendly web app that teaches children the Japanese abacus, one bead at a time.

    • React
    • Vite
    • Tailwind CSS
    • TypeScript
    • +5 more
  • The drone climbs off its pad beside the solar farm

    A simulated drone that flies a full inspection of an 80-table solar farm and lands itself.

    • Python
    • Webots
  • Pick a song to type along with, filtered by level and genre

    Learn to type along to song lyrics, a piano mode and AI-written practice text.

    • React
    • Tailwind CSS
    • Node.js
    • Express
    • +2 more
  • The drone closes in on the rover it spotted with its camera

    A simulated drone that finds and chases a moving rover using only its camera.

    • Python
    • Webots
    • Stable-Baselines3
    • Gymnasium
    • +1 more
  • The avatar copies the face in the webcam, shown in the corner

    Cartoon avatars in the browser that copy your face, lip sync to your voice and swing their hair.

    • PixiJS
    • MediaPipe
    • TypeScript
    • Vite
    • +3 more
  • Every part of life in one place: trips, family, work and health

    A group chat with an assistant that keeps track of tasks, decisions and follow-ups.

    • Next.js
    • React
    • TypeScript
    • Tailwind CSS
    • +3 more
  • Each textbook section becomes a path of lessons to unlock

    Turns a textbook into short lessons, quizzes and streaks, like a language app for any subject.

    • React
    • Vite
    • Tailwind CSS
    • Firebase
    • +1 more
  • The landing page on a phone

    A phone assistant that reads, recognizes and warns for people with low vision.

    • Flutter
    • TensorFlow Lite
    • YOLO
    • Google ML Kit
    • +4 more
  • Admins track sessions, revenue and popular subjects

    Peer tutoring for university students, with student, tutor and admin views.

    • React
    • Vite
    • Tailwind CSS
    • React Router
    • +2 more
  • Tap the color bands and read the resistor value

    A pocket electronics toolbox for students in the lab.

    • React
    • Vite
    • Tailwind CSS
    • React Router
    • +1 more
  • The chance of a shared birthday passes 50% at 23 people

    Watch random rooms prove that 23 people are enough for a likely shared birthday.

    • React
    • Vite
    • Tailwind CSS
    • Recharts
    • +1 more
  • Describe a math animation in plain language and get a rendered video.

    • Python
    • Gemini
    • Manim
    • MCP
    • +1 more
  • 87% of held-out clips classified correctly across five conditions

    Tells asthma, COPD, pneumonia and healthy lungs apart from short breathing recordings.

    • Python
    • PyTorch
    • TensorFlow Hub
    • YAMNet
    • +3 more
  • A doctor opens shared records, and each visit is written to the blockchain

    Patient-controlled health records, encrypted in the browser with a blockchain for permissions.

    • React
    • Vite
    • TypeScript
    • Node.js
    • +4 more
  • Playing the AI, with legal moves highlighted for the selected piece

    A chessboard drawer and a chess game against an AI, using only Python's standard library.

    • Python
    • Tkinter
    • Turtle Graphics
  • Keys, hosts and customer data swapped for numbered placeholders

    Strips secrets and personal data from your clipboard before you paste into a chat.

    • Python
    • PowerShell
    • Raycast
    • Ollama
    • +1 more
  • A YouTube-style player with an A to B loop on a Video Overview

    A YouTube-style player and keyboard shortcuts for NotebookLM Video Overviews.

    • TypeScript
    • esbuild
    • Chrome Extensions (Manifest V3)
    • Shadow DOM
  • Live captions over a video that has no subtitles

    Live captions for any video playing in a Chrome tab, with a transcript you can export.

    • JavaScript
    • Chrome Extensions (Manifest V3)
    • Web Speech API
    • Web Audio API
  • A plain TODO.md on the left becomes a live Kanban board on the right

    A VS Code extension that turns a Markdown TODO file into a live Kanban board.

    • TypeScript
    • VS Code Extension API
    • esbuild
    • Vitest
  • Owner dashboard with revenue, occupancy and recent activity

    Hotel management for Ethiopian hotels, with a Telegram assistant for staff and guests.

    • Node.js
    • Express
    • PostgreSQL
    • Prisma
    • +11 more
  • The public site where families find tutoring and college counselling

    Tutoring and college counselling, with a dashboard for every person involved.

    • React
    • Vite
    • Tailwind CSS
    • Node.js
    • +10 more
  • Clinical AI for notes, dictation and cited answers in five languages

    Clinical answers from Ethiopia's national guidelines, with a citation on every claim.

    • Next.js
    • React
    • Tailwind CSS
    • Prisma
    • +6 more
  • Home puts the student card, services and campus life on one screen

    A prototype student app with a digital ID card you can tap on an NFC reader.

    • React Native
    • Expo
    • TypeScript
    • Tailwind CSS
    • +3 more
  • A video-led home page for a student residence in Dubai

    A marketing site and staff portal for a student residence in Dubai.

    • Next.js
    • React
    • Tailwind CSS
    • Framer Motion
    • +4 more
  • The lab as a 3D model, with climate on one side and power and the gate camera on the other

    A 3D digital twin of a university lab, wired to its sensors through Home Assistant.

    • React
    • Vite
    • Three.js
    • React Three Fiber
    • +4 more
  • 225 companies, filtered by field, emirate, district, distance and free zone status

    A company directory for students job hunting in the UAE, ranked by whether you can actually get there.

    • React
    • Vite
    • TypeScript
    • Tailwind CSS
    • +3 more
  • A paste with keys in it locks the send button until you deal with them

    A Chrome extension that stops you pasting secrets into a chatbot.

    • JavaScript
    • Chrome extensions
  • Cutzrope: cut the ropes and drop the coffee bean into the jebena

    Three browser games written from scratch, without a game engine.

    • JavaScript
    • Canvas 2D
    • PixiJS
    • Vite
    • +1 more
  • Lessons grouped by what you would actually want to say first

    Learn American Sign Language the way a language app teaches words, with your webcam as the marker.

    • Next.js
    • React
    • TypeScript
    • Tailwind CSS
    • +4 more
  • A sentence signed, with each word marked as a real sign or fingerspelled

    English text in, a signing figure out, and an honest account of how far that gets you.

    • Python
    • FastAPI
    • MediaPipe
    • pose-format
    • +1 more