Projects

Everything I have built

29 projects, from the ones thousands of people use to the games I wrote while working out what a canvas element was. I am Mohd Mahmodi, a software engineer. This is the complete list rather than the flattering one.

Web apps

8

Things that run in a browser. All of these are live right now.

drpl.co

drpl.co

  • JavaScript
  • WebRTC
  • Node.js

I wanted to send a file between my Windows machine and my iPhone without installing anything or signing into a service, so I built the thing I was missing. Open drpl.co on both devices while they are on the same network and each one appears on the other. Pick a file, send it, done. You only ever see devices with the page open on your own network, and the transfer runs peer to peer over WebRTC, so the file never lands on a server of mine.

splitflap.org

splitflap.org

  • JavaScript
  • Node.js
  • WebSockets

A split flap display that runs in a browser, the kind that used to hang in train stations and airports. Open the board on a TV, scan the QR code with your phone, and the phone becomes the wireless remote. It is four files: a Node.js server, the board page, the phone companion, and a standalone design tool. No build step and no frameworks, plus a weather.gov integration so it can run as a live forecast board.

erasebg.dev

erasebg.dev

  • WebAssembly
  • ONNX
  • JavaScript

Most background removers upload your photo to a server and charge you credits for the privilege. This one runs the model inside your own browser through WebAssembly, on your CPU or GPU. The image never leaves the tab, so there is nothing to upload and no cap on how many you process. Speed depends on your hardware rather than on a queue somewhere.

Whispr

Whispr

  • Python
  • Whisper
  • JavaScript

An open source transcription studio built on the Whisper model, running locally instead of through an API. Upload a video or an audio file and it writes the transcript out for you. Because the model runs on your own machine, nothing you transcribe is sent anywhere, which matters when the recording is a meeting or a lecture you do not own. The interface is plain HTML and JavaScript with a Python server doing the work.

Infiniboard

Infiniboard

  • Node.js
  • Express
  • Socket.IO

A real time collaborative whiteboard on a canvas that expands forever in every direction. Several people can draw on the same board at once and see each other's strokes as they happen. I built it mainly to work out how live shared state stays in sync without the board drifting apart between clients. Node.js and Express on the back, with Socket.IO carrying the updates.

YouTube Transcript

YouTube Transcript

  • JavaScript
  • Python

Pulls the transcript out of any YouTube video that has captions and lets you actually work with it. Timestamps are clickable so you can jump to the moment something was said, and the text is editable inline when the captions get a word wrong. It groups long transcripts into readable sections and lazy loads them so a three hour video does not lock up the page. Export as plain text or with timestamps, or copy the whole thing to the clipboard.

GitHub Tracker

GitHub Tracker

  • JavaScript
  • MongoDB
  • Vercel

A view counter you can drop into a GitHub README as a badge. It counts profile and repository views in real time, and the colour, label and badge style are all configurable so it matches whatever else is in your readme. Storage runs on MongoDB Atlas and the endpoint is serverless on Vercel, so it stays up without me maintaining a box for it.

One Hundred Million Checkboxes

One Hundred Million Checkboxes

  • JavaScript
  • Real-time

A grid of one hundred million checkboxes that everyone visiting could tick together, live. The interesting part was never the checkboxes, it was holding that much shared state in sync across every open tab without the page dying. It needed careful virtualisation so the browser only ever rendered what was actually on screen. The site is retired now, but the code is still open if you want to see how it held up.

iOS apps

3

Written in Swift and shipped through the App Store.

Music Player Offline

Music Player Offline

  • Swift
  • iOS

I wanted to play my own music files on my own phone without an account and without ads, could not find it, and made it instead. It has been on the App Store since December 2025. It reads the audio already on your device and uploads nothing, tracks nothing, and needs no sign in. Version 2 added gapless playback, background play, a sleep timer, pinned albums, and library labels you can switch between albums, shows and books, so it works for podcasts and audiobooks as well as music.

Phone as Webcam

Phone as Webcam

  • Swift
  • C++
  • Windows

The best camera most people own is already in their pocket, so this turns an iPhone into a 4K60 webcam for a Windows PC. A cable pairs itself, or one QR scan puts it on WiFi, staying on your network and encrypted end to end. Every lens is exposed, wide, ultra wide, telephoto and front, and you can switch between them mid call without dropping out. Resolution, frame rate, zoom and exposure are all driven from the desktop app, and it registers with both of Windows' camera systems so OBS and Zoom can use it at the same time. Swift on the phone, native C++ on the PC, and it works with the internet off.

Waiting for App Store review
Swipe to Delete

Swipe to Delete

  • Swift
  • iOS

A camera roll cleaner that shows you one photo at a time and lets you keep it or bin it with a swipe. The idea is to turn clearing out thousands of photos into a few minutes of nothing rather than an afternoon of work. Built in Swift, currently waiting on review.

Waiting for App Store review

Extensions

6

Small tools for the browser and the editor.

Live Server++

Live Server++

  • TypeScript
  • VS Code

A VS Code extension that reloads the page as you type, before you have saved anything. CSS changes are hot swapped without a full refresh, so scroll position and application state survive the edit. I built it to learn how the extension API works and what publishing to the Marketplace actually involves. It sits at version 1.1.1 with a five star rating and around 4,500 installs.

Snipping Tool

Snipping Tool

  • JavaScript
  • Chrome

Screenshots on Windows and macOS both leave a file behind, which means months of junk images collecting in a folder you never open. This is a Windows style snipping overlay for Chrome that skips the file entirely. Hit the shortcut, drag a region, and the image goes straight to your clipboard, ready to paste into Canva or Slides or anywhere else. Nothing is written to disk, so there is nothing to clean up later.

VideoSpeed Pro

VideoSpeed Pro

  • JavaScript
  • Chrome

A speed control that appears on any video anywhere on the web, not just the handful of sites that ship one. It works on Prime Video, YouTube and the rest regardless of the player, and it runs from 0.25x up well past the 2x ceiling most sites cap you at. That upper range is the part people keep telling me they use, for podcasts and for lectures where the speaker talks slowly. It is finished and just needs publishing.

Finished, not yet published
Universal Image Downloader

Universal Image Downloader

  • JavaScript
  • Chrome

Right click any image on a page and save it in the format you actually want, rather than whatever the site decided to serve. It handles JPEG, PNG, WEBP, GIF, BMP and SVG straight from the context menu. It is on the Chrome Web Store with around 400 users.

QR Code Generator

QR Code Generator

  • JavaScript
  • Chrome

One click turns the page you are on into a QR code you can scan. I built it before Chrome shipped the feature itself, and I still prefer mine, so I use it most days. It is the fastest way I know to get a site you are building on your desktop open on your phone for testing. Five stars on the Chrome Web Store with about 50 users.

AdBlock Pro

AdBlock Pro

  • JavaScript
  • Chrome

An open source ad blocker I built a while ago to learn how publishing to the Chrome Web Store works end to end. It picked up around a thousand users and sits at 3.7 stars. It has not been updated recently because Chrome's move to Manifest V3 changed how blocking rules have to work, so treat this one as a snapshot rather than something I maintain.

Packages and tools

2

Things other developers install.

ModernNotify.js

ModernNotify.js

  • JavaScript
  • npm
  • MIT

A notification library for the web with no dependencies at all. Toasts, alerts and inline messages, with themes, animations, progress bars and action buttons. I built it mostly to learn the whole path of publishing a package properly, from designing the API to getting it onto npm so anyone can pull it in with a single install. MIT licensed, currently at version 1.1.0.

NVIDIA Broadcast Rollback

NVIDIA Broadcast Rollback

  • Batch
  • Windows

NVIDIA Broadcast v2.x blue screens a lot of machines with a HYPERVISOR_ERROR, either when the installer finishes or when the app first launches. Turning off Hyper-V, VBS and every other virtualisation feature in Windows does not fix it, which is where most threads on the problem dead end. This script installs v1.4.0.39, the last version that was stable, and then stops Windows quietly updating it back. It is one click, and enough people have told me it got their setup working again that it is probably the most directly useful thing on this page.

Machine learning

2

Models I train and run on my own hardware rather than calling an API.

A 10M parameter language model

A 10M parameter language model

  • PyTorch
  • CUDA

Ten million parameters, trained from scratch on my own machine. I did not build it because the world needed another small language model. I built it because reading about attention and watching a loss curve actually move are two different kinds of understanding, and I wanted the second one. Everything from the tokeniser to the training loop is mine, which is the only reason it was worth doing.

Write up coming
An AI voice model

An AI voice model

  • PyTorch
  • ONNX

A speech model I train and run locally. The whole point is that the audio never leaves the machine it was recorded on, which rules out every hosted API by definition. Still in progress.

In progress

In progress

2

Started, not finished.

isthishalal.org

isthishalal.org

  • JavaScript
  • PWA
  • Swift

Scan the barcode on a packaged food and find out whether it is halal. The web version works and has been in use, but I am rebuilding it from the ground up because the first one grew faster than its structure could take. An iPhone app is in development alongside it.

Being rebuilt
mkbook.dev

mkbook.dev

  • CSS
  • JavaScript

Write markdown, get a documentation site that looks like somebody designed it. Most docs generators either want a build pipeline and a config file before you see anything, or they produce something you would not want to show a user. This is my attempt at the middle of those two. Still in progress.

Where I started

6

Small projects from when I was learning web development. They are here because leaving them out would give a slightly dishonest picture of how I got from there to the rest of this page.

Perfect Circle

Perfect Circle

  • JavaScript
  • Canvas

Drag your mouse and try to draw a circle. It scores how close you got and then says something unkind about it. Inspired by neal.fun, and built while I was working out what you could actually do with a canvas element.

Tetrixel

Tetrixel

  • JavaScript

Tetris in a browser, tuned to work properly on a phone rather than being a desktop game you can technically load on mobile. Getting the touch controls to feel right took longer than the game logic did. Another learning project from the same period.

Pac-Man Clone

Pac-Man Clone

  • JavaScript

Exactly what it sounds like, a Pac-Man clone built while I was learning. Writing the ghost movement taught me the most, because four characters that each chase you differently is a real state machine rather than an exercise. The maze rendering was the easy half.

Language Guessr

Language Guessr

  • JavaScript

My take on GeoGuessr, except you get audio instead of a street view. A clip plays in some language and you guess which country it came from. Harder than it sounds, and it made me realise how few of the world's languages I can place on a continent.

Book Calculator

Book Calculator

  • JavaScript

Tell it your reading speed and how long you read for, and it works out how many books you would get through in a month or a year. The number is usually more encouraging than people expect, which was the point. It shows a carousel of covers next to the estimate so the goal feels like something rather than a figure.

Barcode Scanner

Barcode Scanner

  • JavaScript
  • PWA

Scan a product barcode and compare its price across several online shops. This was one of the first sites I ever built and my first progressive web app, so it is also where I learned what a service worker is for. Built on Quagga.js, and it installs to a phone home screen like an app.