Skip to main content
Daniel McCoy Stephenson

All projects

164 projects, by category. Each name opens the project’s own page.

Applications

  • accordion

    A self-hosted, Discord-like real-time chat application with multiple channels, WebSocket messaging, message persistence, and both a browser interface and a LibGDX desktop client.

    GitHub
  • Basic Calculator

    A very small calculator: two numbers, then add, subtract, multiply or divide them.

  • Fibonacci Sequence

    A small C++ program that prints as many numbers of the Fibonacci sequence as you ask for.

  • multiplyTwoNumbers

    An LC-3 assembly program that multiplies two registers and stores the result.

  • PrintRange

    Prints every number between two you enter, ascending or descending.

  • SimpleServer

    A small Java multi-client server: clients connect and ask it for the square of a number.

Developer Tools

  • Acronym Maker

    Turns a phrase into its acronym.

  • arcade

    One static host for every browser game on this site: each game is served at <slug>.play.danielstephenson.dev with the cross-origin isolation headers it needs.

  • arcade-deploy

    A GitHub Action that uploads a game's browser bundle to arcade from the game's own CI, with the version taken from version.txt and the server's reason shown on any failure.

  • arcade-social

    Sign-in, high scores, achievements, likes and cloud saves for the arcade games: one standard-library Python process with SQLite, with accounts held by the shared UserAuth service.

  • arcade-watch

    A daily health check for every game on /play: each one is opened in headless Chromium as a desktop browser and as an iPhone, played for a few inputs, and checked for console errors, along with the portal, the API and every alias host.

  • asn1-person-example

    A minimal ASN.1 module compiled with asn1c, showing how to convert a Person record between XML and Unaligned PER with the generated converter.

  • asn1-viz

    3D views of ASN.1 encodings and schemas, drawn from what the asn1c compiler actually does.

  • C project template

    A starting point for a new C project.

  • C++ project template

    A starting point for a new C++ project.

  • claude-attribution-audit

    Audits GitHub posts made under your own identity to find AI-drafted ones missing their attribution, and optionally revises them with confirmation.

  • Collide

    Generates ideas from the collisions of paired keywords — a small tool for getting unstuck at the start of a project rather than the middle of one.

  • create-dev-loop

    A Claude Code skill that explores a repo's build system, conventions, and CI, then generates a tailored autonomous dev-loop skill for it — one slash command away from continuous, repo-aware development.

  • create-minecraft-server

    A Claude Code skill that stands up a Minecraft server end to end on Hetzner Cloud with Open MC Server Infrastructure — config and ops repos, Terraform provisioning, plugins, whitelist, and live verification — and audits itself when Hetzner pricing or OMCSI defaults move.

  • Curabitur

    A simple chat application built to practice socket programming.

  • DPC Conventions

    The standards and conventions followed across the Dans-Plugins projects, with Medieval Factions as the reference implementation every plugin is brought up to.

  • DPC Maven Repository

    Infrastructure as code for repo.dansplugins.com: a self-hosted Sonatype Nexus Maven repository, run with Docker Compose, that the Dans-Plugins builds publish to and resolve from.

  • DPC MCP Server

    An MCP server that serves the DPC Zettelkasten to AI clients — query the knowledge graph and read the commit-pinned citation behind every claim.

  • DPC Zettelkasten

    A linked knowledge base for the Dan's Plugins Community in which every concept note is grounded in a cited source of truth, pinned at a commit SHA so a claim can always be checked against the code that made it true.

  • gardener

    A safety-gated CLI that dispatches Claude Code across a fleet of repos — checking one against your own engineering conventions, or making unattended overnight progress on a whole opt-in list, with a merge allow-list and a local dashboard for live visibility.

  • gardener Orket extension

    Runs gardener's report-only audits through an Orket host, as a headless extension built from the Orket extension template.

  • gardener-attribution-audit

    Retroactively brings GitHub content that gardener has already posted in line with its passive-voice and attribution requirements.

  • gh-backup

    Backs up public GitHub repositories for a given list of users or organizations — insurance for a portfolio spread across five orgs.

  • k8s-ai-operator

    Lets platform operators inspect and apply Kubernetes manifests using natural language, putting a cluster's day-to-day operations behind plain English.

  • list-recurse

    A small Bash script that lists every file in a directory and its subdirectories.

  • Mimicking Animation

    Draws frames of a stick figure walking across the console.

  • Money Calculator

    Works out what you make in a week, a year and so on, before and after taxes.

  • Museum

    A walkable 3D museum of ten years of software: one hall per year since 2016, a pedestal for every public repository sized by its commits, and a wall of each year's contributions.

  • nielsen-krug-pass

    Runs a usability pass on a UI app, evaluated against Nielsen's 10 usability heuristics and Krug's Don't Make Me Think principles.

  • Parpt

    Prioritize software projects using structured metrics, so a backlog of side projects can be ranked on evidence rather than on whichever one is most recently interesting.

  • Patchwork

    A lightweight Python tool for visualizing two-dimensional environments, used to see what the simulation libraries are actually doing.

  • Playtester

    A Python toolkit for AI playtesting: any number of agents play the real game at once, each headless and toward its own goal, by looking at screenshots and pressing keys, and their reports merge into one summary of grouped findings and timings.

  • plugin-fixtures

    Recorded plugin data folders used to check that each new plugin release loads the previous release's saved data intact before it is published.

  • python-release-gates

    Reusable GitHub Actions workflows that check whether a commit of a Python library is fit for a stable release: its own tests, every consumer project with the candidate pinned, and save compatibility with the previous release.

  • release-gates

    Reusable GitHub Actions workflows that prove a Dan's Plugins build is fit to be a stable release before anything is published: each gate boots the candidate on a real Spigot server, checks the version it reports, and loads the data the current stable release wrote — across restarts, on H2, MariaDB, PostgreSQL or JSON stores.

  • replay-player

    One player for every usd-replay/1 simulation replay, built on the Strata engine for the desktop and the browser.

  • roam-usd

    Exports Roam worlds, from your own saves or freshly generated from a seed by Roam's own world generator, to OpenUSD stages of instanced tiles, terrain, creatures and structures that open in usdview and Blender.

  • Safe Kafka

    Scripts for standing up and tearing down a Kafka deployment with Docker Compose, aiming for reliable, repeatable orchestration.

  • send-email-with-python

    Practice at sending email from Python.

  • Showcasing Valgrind usage

    A small demonstration of finding memory leaks with Valgrind.

  • Simple Calculator

    A calculator whose arithmetic lives in a UI-agnostic core, so one engine drives both an SDL2 graphical interface and a text CLI — the same separation the larger projects are built on, at a size you can read in one sitting.

  • usd-asset-gate

    A CI quality gate for OpenUSD assets: runs OpenUSD's own validators plus YAML-configured house rules (units, up axis, budgets, naming) on the .usd files a pull request changed, as a CLI or a GitHub Action, with one PR comment that is updated in place.

  • usd-synth-data

    A procedural synthetic-dataset generator for computer vision: randomized OpenUSD scenes rendered headless with Blender Cycles into COCO-style images with exact boxes, masks and depth, fanned out as Kubernetes Jobs with measured throughput.

  • verify-plugin-persistence

    Proves a Dans-Plugins Minecraft plugin actually persists its data — write, restart and backend migration — on a live Dockerized test server.

Games

  • Atman

    A small first-person game about Advaita Vedanta, the teaching that the self is the absolute and that liberation is a recognition, not a reward.

  • Barony

    A strategy game in which you command armies to capture villages and castles against an AI opponent.

  • Belfry Bats

    A small Halloween game: guide a flock of bats home to the old church's bell tower before dawn.

  • Beyond Nations

    A sandbox nation-simulation RPG where settlements, resources and rival nations evolve around the player.

  • Cauldron

    A cozy Halloween potion-brewing game.

  • Cave

    A short console text adventure from the early days, written to try out creating a text adventure with a save file: a cave, a chest, a hole, and three ways for it to end.

  • Deck of Cards: War

    A deck of cards built with ArrayLists, shuffled and dealt between two players who then play War, written for an AP Computer Science class.

  • Familiar

    Halloween night in a small New England town: trick-or-treat, light lanterns for Samhain, and turn into a cat.

  • FishE

    Explore a fishing village and perform actions in it.

  • Frog Hopper 2D

    A 2D arcade game: guide a frog across lanes of traffic to the pond.

  • Ghost Lights

    Lead lost little ghosts home across a foggy marsh by lantern light.

  • Guess My Word

    A four-letter word game in the terminal: pick from the list, and each guess tells you how many letters sit in the right place.

  • Haunted Hayride

    Ride a hay wagon through a cornfield at night and catch the friendly spooks with your flashlight.

  • Kindling

    A cozy first-person frontier homestead game: restore a ruined cabin for the settler coming to live in it.

  • Night Ferry

    One overnight crossing, hour by hour from 8 pm to 6 am: six passengers, a captain, and a cabin that is booked but empty.

  • Ophidian

    Control an ever-growing ophidian in a virtual environment — a snake game built on the same two-dimensional world library that backs the simulations.

  • Overwinter

    Four people, one weather station, twenty days until a plane.

  • Pumpkin

    Carve a jack-o'-lantern in your browser: cut freehand with a finger or the mouse, or stamp on eyes, a nose and a mouth, then turn the lights out so the candle shines through.

  • Roam

    A single-player 2D sandbox game where you explore a procedurally generated world, gather resources, and interact with your surroundings.

  • Rock Paper Scissors (console)

    Rock, paper, scissors against the computer, in the terminal.

  • Rock Paper Scissors 2D

    A simple graphical Rock Paper Scissors game played against the computer.

  • SDL Sketches

    Three small SDL programs from 2020 in one place: steer a square, grow and shrink one, and watch one bounce and change colour.

  • Simple Dice Throw

    Throw a six-sided die once, or a hundred times and see how often each face came up.

  • SimpleFight

    A console fight, one of the first programs in the portfolio (2016): you and your enemy trade punches of 1 to 10 damage a round until one of you drops below 1 health.

  • Sisyphus

    Push the boulder that is your software up the hill.

  • steading

    A small colony sim where OpenUSD is the world, save and mod format: settlers gather, build huts and live through the winters, saves are checksummed USD layers, and mods are USD sublayers.

  • Tic Tac Toe (Java)

    Play Tic Tac Toe against the computer in the console.

  • Tic Tac Toe (pygame)

    Tic Tac Toe against the computer, drawn with pygame: tap Start, then a square; the computer answers.

  • Tic Tac Toe (SDL)

    A graphical Tic Tac Toe game that uses SDL viewports to split the screen into nine cells, with a computer opponent.

  • Tic Tac Toe (Web)

    Two players take turns on one device, with a move history to step back through.

  • Tidewater

    A time-loop text adventure in FishE's village: at eleven the harbour bell rings and you wake on the docks at eight.

Libraries

  • community-site-kit

    Shared Next.js + MUI building blocks for community websites: an SSR-safe colour mode, prop-driven nav bars, SEO metadata, sitemap and robots.txt builders, and a searchable icon-grid catalogue.

  • Cube Factory

    A Unity asset that creates, tracks and removes cubes in response to player input.

  • Deck of Cards

    A C++17 model of a 52-card deck — creating, shuffling and moving cards between decks — built with CMake and tested with Catch2 on Linux, macOS and Windows.

  • discord-account-link

    Links a Discord identity to an account on your own community site over the OAuth2 authorization-code flow — identify scope only, and no Discord token is ever stored.

  • env-lib-cpp

    The C++ counterpart to py-env-lib: base classes for two-dimensional virtual worlds, used by the C++ simulations such as Microbiome.

  • github-docs

    Run a community's documentation out of a GitHub repository: a TypeScript reader for serving the docs and a Python pull-request writer for editing them.

  • graphik

    A lightweight Python graphics library built on pygame that provides simple, reusable methods for graphics programming.

  • minecraft-server-ping

    A zero-dependency TypeScript implementation of the Minecraft Server List Ping protocol: ping a server over TCP and read its MOTD, player count, version, favicon and latency.

  • one-to-one-mapping-checker

    A hacker-challenge solution that decides whether a one-to-one character mapping exists from one string to another.

  • Ponder

    A Kotlin library of modules that assist with building console applications and Minecraft plugins.

  • py-env-lib

    Base classes for creating two-dimensional virtual worlds in Python.

  • rotator

    Rotates a list of items to the left a given number of times.

  • sdl-assist

    Abstracts away the handling of Simple DirectMedia Layer, with text and button tools and support for drawing rectangles — the C++ equivalent of what graphik does for pygame.

  • SDLGrid

    A reusable grid class for SDL2 programs: set the screen size and the number of rows and columns, and draw into the cells.

  • SequenceChecker

    A reusable C# class that checks whether one array is a subsequence of another, written for a hacker challenge.

  • session-client

    Clients for a generic bearer-token identity service — register, login, validate, refresh, logout — treating success, refusal and service-unavailable as three distinct outcomes rather than two.

  • slow-printer

    A Pokémon-style print function from 2017 that prints text one letter at a time, like a game dialogue box; other programs can import it.

  • Strata

    A small C++17 engine (SDL3 + OpenGL 4.5) behind a stable C ABI: cascaded sun shadows, point lights, terrain, static meshes, overlays, deterministic simulation fields and USD saves.

  • tak

    A text-adventure kit: one user-interface contract with three front-ends behind it — a terminal, a browser that polls a server, and a browser tab that runs the whole game itself under Pyodide — plus save slots with schema validation, a progressive-disclosure unlock engine and NPC dialogue with conditional lines.

  • trace-client-cpp

    A one-header C++11 client for reporting program usage to a trace server.

  • trace-client-csharp

    A zero-dependency, one-file C# client for reporting program usage to a trace server.

  • trace-client-java

    The Java 8 counterpart: a dependency-free, one-file usage-reporting client for a trace server, vendored into all of the Dan's Plugins Minecraft plugins so each one reports a startup event with its version and nothing about the player.

  • trace-client-js

    A zero-dependency, one-file TypeScript client for reporting program usage to a trace server from Node and edge runtimes — vendor it, bStats-style.

  • trace-client-python

    One call to report that a program was used: a standard-library-only Python 3.8+ client for a trace server, vendored bStats-style as a single file.

  • usd-recorder

    A flight recorder for simulations: call record() once per tick and get a time-sampled OpenUSD stage you can scrub in usdview or Blender, with entity lifecycle, typed extras, event channels, chunked value clips and a flatten command.

  • usd-web

    Puts an OpenUSD world on a web page: greedy-meshes a USD stage or heightmap into compact, content-addressed tiles and ships a dependency-free three.js viewer with touch controls, overlay layers and live tile hot-swapping.

  • Viron

    A foundational spatial simulation service that manages environments, grids, locations, and entities via a clean REST API.

  • web-guards

    Fail-closed security primitives for small community websites: rate limiting, origin and CSRF checks, session cookie rules, signed OAuth state, and proxy-aware client addresses.

Minecraft

  • Activity Tracker

    Records player login sessions and play time, with leaderboards, detailed per-player statistics and optional Discord webhook notifications when players join and leave.

  • Alternate Account Finder

    A moderation plugin that identifies accounts which have connected from the same IP address — the tool server staff reach for when a ban is being evaded.

  • Bookshelves You Can Use

    Turns bookshelf blocks into usable storage — right-click any bookshelf to open a small inventory.

  • Cellphones

    A Minecraft plugin for servers whose chat is local: cell towers and phones form a chat network, so players with a phone in their inventory can talk beyond earshot while they are in tower coverage.

  • Conquest Recipes

    Adds crafting recipes, item names and lore for 73 items matching the textures of the Conquest resource pack, such as steel longswords and bone shields.

  • Currencies

    An expansion for Medieval Factions that lets faction owners create and mint local currencies, so each nation can run its own money.

  • Dan's Essentials

    A collection of everyday utility commands for Minecraft server operators and players — fly toggles, gamemode switching, broadcasts, muting, inventory management, warp signs and more.

  • Dan's Plugin Manager

    Lets operators download and install the community's plugins in-game or from the server console, instead of hunting for jars and matching versions by hand.

  • Dan's Server Hosting

    Free-tier Minecraft server hosting: sign in, create a server, and join.

  • Dan's Set Home

    A Minecraft plugin that lets players set named home locations and teleport back to them.

  • Dan's Spawn System

    Lets players choose a custom spawn point in the world by clicking signs, so a server can offer several starting locations.

  • Democracy

    A Medieval Factions expansion that lets nations hold democratic elections.

  • DPC Minecraft Server

    An infrastructure-as-code Minecraft server for the Dan's Plugins Community — the live environment the plugins are proven on before a release goes out.

  • Easy Links

    Server admins save named URLs that players look up in-game with a short command instead of long links pasted into chat, with per-link usage counts.

  • Faction Map

    A Minecraft plugin that draws a lightweight 3D map of the server's world in the browser, with Medieval Factions territory tinted per faction, claim borders, names and alliance, war and vassal relations, updated live without a reload.

  • Fiefs

    An expansion for Medieval Factions that lets faction members create fiefs — sub-factions with their own land and members inside a larger nation.

  • FlyCommand

    The first Minecraft plugin in the portfolio: one /fly command that lets permitted players toggle flight on and off, with no configuration and no saved data.

  • Food Spoilage

    A Minecraft plugin that turns food items into rotten flesh after a period of time, so provisioning a long journey becomes a real decision.

  • Gemstones

    Planned Minecraft plugin: ruby, hessonite, pearl and other gemstones as findable, tradeable goods.

  • Herald

    Sends Discord notifications when players join the server, so a community sees its world stay busy without anyone having to be in-game to notice.

  • Heraldry

    Planned Minecraft plugin: coats of arms for players and factions, rendered in-world as Minecraft maps, including arms imported from Armoria.

  • KDRTracker

    Keeps track of every player's kill/death ratio on a Minecraft server.

  • Kingdom: First Era

    A casual, unwhitelisted survival roleplay Minecraft server in the Kingdom Community.

  • Mailboxes

    Persistent in-game mail for Minecraft: players and other plugins can send messages that survive restarts, with item attachments for secure item transfer.

  • Medieval Cookery

    Lets server owners define their own shaped cooking recipes — with custom hunger values and leftover items like returned bowls — for an enhanced roleplay experience.

  • Medieval Economy

    Provides a virtual coinpurse and a physical currency item, giving a server the pieces it needs to simulate an economy rather than trade by barter.

  • Medieval Factions

    A Minecraft plugin that lets players simulate sovereign nations — creating factions, claiming territory, waging war or diplomacy, writing laws, and holding dueling tournaments.

  • Medieval Roleplay Engine

    A Minecraft plugin that facilitates roleplay between players — characters, names and speech that belong to the world rather than the account behind it.

  • Merchants

    Planned Minecraft plugin: NPC merchants that buy and sell goods for coin, built on Medieval Economy.

  • Minecraft-USD-Exporter

    Exports Minecraft Java Edition worlds to OpenUSD, with per-block-type instancing and composable overlay layers such as faction territory, for usdview and Blender.

  • MiniFactions

    Factions for Minecraft kept deliberately simple, minimal and expandable — a lightweight alternative to Medieval Factions.

  • mod-craft

    A Spring Boot REST API for managing individual Minecraft mods and assembling them into modpacks, treating a modpack as data rather than a hand-zipped folder.

  • More Recipes

    Adds crafting recipes for items that vanilla Minecraft leaves uncraftable, putting blocks that were previously creative-only within reach in survival.

  • Nether Access Controller

    Lets server operators control who has access to the nether — a progression gate for servers that want the dimension earned rather than assumed.

  • NoMoreCreepers

    A small, focused Minecraft plugin that prevents creepers from spawning.

  • Open MC Server Infrastructure

    A community-agnostic, Docker-based Minecraft server infrastructure with a Spring Boot dashboard, automated backups, Discord alerts, RCON support, and a full CI/CD pipeline.

  • PlayerLore

    Lets players write their own lore onto the items they carry, for storytelling and roleplay servers.

  • Radios

    A Minecraft plugin for receive-only broadcast radio: a message sent on a frequency is heard by every player holding a switched-on receiver tuned to it.

  • Seasons

    Planned Minecraft plugin: a seasonal cycle of four seasons that change the weather, crop growth and the length of the year.

  • Siege Weapons

    Planned Minecraft plugin: buildable medieval siege engines, trebuchets and rams, that only breach walls during a declared war.

  • SimpleSkills

    Introduces skills into Minecraft in a systematic, easy-to-use and expandable way, so players level up the things they actually spend their time doing.

  • Timescale

    Planned Minecraft plugin: slows the passage of in-game time, so a Minecraft day can last as long as a server wants.

  • Wild Pets

    An open-source Minecraft plugin that lets players tame any entity in the game.

  • Wildlife

    Planned Minecraft plugin: deer, boar, ducks and crows for survival servers, made from reskinned vanilla mobs so vanilla clients need no mods.

Simulations

  • acsf-usd-env

    A read-only exporter that turns Artificial Consciousness Simulation Framework runs into OpenUSD stages with cycle-indexed time samples, for inspecting and replaying a run in usdview or Blender.

  • Apex

    Observe a virtual environment whose entities depend on one another as sources of energy, and watch the food chain find — or fail to find — its balance.

  • Artificial Consciousness Simulation Framework

    An experimental framework for simulating emergent properties of consciousness in a named autonomous AI agent, grounded in consciousness-science theory.

  • Interakt

    A simulation centred on the interaction between entities in two-dimensional worlds — what happens when independent agents share a grid.

  • Kreatures

    Place a creature into a virtual environment alongside others and observe its activity.

  • Microbiome

    Witness the activity of a virtual microbial community — organisms feed, reproduce and die in a simulated environment you watch rather than control.

  • Orrery

    The whole solar system from real NASA/JPL data: the Sun, planets, dwarf planets, 25 moons, Saturn's rings, three comets, the Voyagers and New Horizons, and 12,584 asteroids and Kuiper belt objects, placed at any instant from JPL ephemerides.

  • viron-strata

    A live, read-only 3D view of a Viron environment, drawn with the Strata engine.

  • viron-usd

    Records a Viron simulation tick by tick as an OpenUSD stage with time-sampled entities, for playback in usdview or Blender.

Websites