Projects

Memo
A Discord bot for moderation, logging, tickets and anti-raid. It is verified by Discord and runs in more than 16,000 servers.
The source code is private.
- Moderation Moderation commands for server staff.
- Logging Logs server messages for moderators.
- Tickets A ticket system for member support.
- Anti-raid Protects servers from raids.
Python · Disnake · SQLite
input/secondary.basl
for (int i = 0; i < 10; i = i + 1) {
print(i);
}
function int factorial(int n) {
if (n <= 1) return 1;
return n * factorial(n - 1);
}Bassil
A programming language I am writing in C++ with no external libraries. It has a hand-written lexer and parser, and compiles to an executable or to bytecode.
- Lexer Turns source code into tokens.
- Parser Builds the syntax tree from those tokens.
- Error hints Suggests the closest match when you make a typo.
- Native output Compiles to an executable or to bytecode.
C++ · CMake

Ditdah.uk
A Morse code practice site that works with VBand USB adapters. It supports paddle and straight keys and decodes what you send in real time.
- Key modes Paddle or straight key.
- Live decoding Shows the text as you key it.
- Speed and tone Adjustable WPM and sidetone pitch.
- VBand support Works with VBand USB adapters.
Svelte · TypeScript · Web Audio

Boardkey
A keyboard game in the browser. An on-screen keyboard follows what you type, with key sounds, music, themes and hidden easter eggs.
- Key sounds A sound for every key press.
- Live keyboard Shows what you type on screen.
- Fonts and themes Switch fonts and themes.
- Easter eggs Certain words trigger hidden extras.
SvelteKit · TypeScript · Web Audio

BattleDex
A card collecting game for Discord. Military aircraft cards spawn in chat and the first person to type the right name catches them.
- Spawns Cards appear in chat with a Catch button.
- Catch The first correct name wins the card.
- Collection Inventories, rarities and gifting.
- Card designer A Tkinter and Pillow tool I wrote to make the cards.
Python · Disnake · SQLite · Pillow

RAFAC.INFO
A free learning resource for RAF Air Cadets, built by cadets. Learning paths, revision notes and training material, designed for phones first.
- Learning paths Structured routes through cadet training.
- Revision notes Short summaries for quick revision.
- Mobile first Designed for phones and iPads.
- Free Free for every cadet.
Svelte · Go · Tailwind · SQLite

PyNotify
A Python library for Windows desktop notifications: toasts with buttons, balloon tips, scheduled alerts and sounds. Published on PyPI as pynotifywin.
- Toasts Notifications with action buttons.
- Balloon tips Classic Windows tray balloons.
- Scheduling Shows a notification after a delay.
- Custom styles Your own notification types and colours.
Python · Tkinter · Win32
- JewlShell A shell with built-in SSH, HTTP requests and text editors. Work in progress.
- Nerdy Search A start page styled after Opera GX that forwards searches to Google.
- AutoCompressor Minecraft plugin that auto-compresses items, with custom names and types.
- NB-Craft Paper plugin for Minecraft 1.21 with custom item stats, rarities and a boss fight.
- Windows SystemInf Reads hardware information through WMI and shows it in a Win32 window.
- File Driller Command-line tool for batch renaming files with a prefix, separator and extension filter.
- Bassil (first version) The original version of Bassil: a lexer, error reporting and Windows file associations.
- Python mini projects Small scripts, including a file sorter and a spell checker.
- This website The source code for this portfolio.