Projects

Redline BrowserCraft EduOS MedKit
This site Finance tracker Sentiment analysis House price prediction Private work

Hover over an item to look at it, click to open it.

Redline

Discord bot and website, built with Node.js and Discord.js

The Redline website, showing counts of commands, systems, servers and members.

Redline is a Discord bot for moderation and server security. Its main feature is a shared scam database. When a scammer is reported and confirmed by the Redline security team, every other server using Redline gets warned about them too.

It also detects phishing links and handles tickets, verification, levels and an economy, with a web dashboard to set it all up. It's in 199 servers with about 431,000 members between them.

BrowserCraft

Browser game, built with TypeScript, Three.js and Web Workers

BrowserCraft in-game: a birch forest hillside with grass, flowers and a hotbar.

A Minecraft clone that runs in the browser. The world is generated as you explore, on separate worker threads so the game doesn't freeze while new terrain loads.

There's survival mode with mobs, villages, dungeons and mineshafts, plus the Nether, the End and the dragon fight. It also has enchanting, elytra, 13 world types and saved worlds.

EduOS

Hobby operating system, written in C and x86 assembly

  1. boot 16-bit real mode, read the kernel
  2. boot switch to 32-bit protected mode
  3. memory physical and virtual memory, paging
  4. tasks preemptive multitasking
  5. user ring 3 programs, int 0x80 calls
  6. disk FAT16 on an IDE disk image
  7. exec ELF program loader
  8. gui VGA windows, PS/2 mouse
  9. doom running Doom

A 32-bit operating system I wrote from scratch to learn how operating systems work. It has its own bootloader, memory management with paging, multitasking, user-mode programs that talk to the kernel through system calls, a FAT16 filesystem, an ELF loader, and a simple desktop where you can drag windows around. It can run Doom.

The hardest bug

Once the kernel got bigger than 64KB, it stopped booting. The 16-bit bx register in the disk-reading loop was wrapping from 0xFFFF back to 0x0000, so the bootloader overwrote the BIOS interrupt table. I fixed it by moving the es segment forward every 64KB.

MedKit

Python library, published on PyPI

MedKit in a terminal: a health check of the three APIs, a drug lookup for Advil, and a clinical trials search for melanoma.

MedKit puts OpenFDA, PubMed and ClinicalTrials.gov behind one Python interface, with normal and async versions. It handles rate limits, retries and outages from those APIs, and switches to a fallback when ClinicalTrials.gov blocks requests.

It has 100% test coverage, strict mypy type checking and a command-line tool. Install it with pip install medkit-sdk.

Source on GitHub Back

This site

Three.js, Web Audio, no framework

The cave you mine to get around. Steve uses pathfinding to walk to each ore, the torches flicker, the particles come from a fixed pool so nothing gets created while you play, and all the sound effects are generated in code instead of loaded from files.

Finance tracker

Flask, MongoDB, HTML, CSS and JavaScript

Add, edit and remove transactions, set budgets, and see charts and insights about where your money goes. Flask and MongoDB on the backend, plain HTML, CSS and JavaScript on the front.

Sentiment analysis

Python, scikit-learn

Guesses whether a movie review is positive or negative. It turns the text into TF-IDF features and uses logistic regression, trained on 50,000 IMDB reviews. It gets about 87% of them right.

House price prediction

Python, scikit-learn

Predicts California house prices with linear regression and random forest models, using the California Housing dataset. Includes the data cleanup, training, evaluation and charts.

Private work

Bots, databases and web apps for clients

I've also done client work I can't post publicly, like custom bots, databases and web apps. If you want to hear about something specific, ask me on Discord.

Back

Not affiliated with Mojang. Credits