I write things that people use.
C, C++ and Rust are my preferred languages; JavaScript and Python are the ones I use most and know best. Currently
studying in university.
I'm open to collaboration and contributions.
Everything below is built and maintained in my free time.
Everything relaxy.xyz related: the bot, the dashboard, the website and the supplementary services.
A single RaspberryPi hosts everything isolated under Podman and bubblewrap.
Relaxy! Discord Bot
A multipurpose Discord bot running as a sharded fleet with one supervising manager process and N cluster processes. Backend uses MongoDB.
Uses: Node.js v24+, discord.js v14, MongoDB (Mongoose), discord-hybrid-sharding, discord-player (custom fork), node-canvas, ffmpeg, tesseract-ocr.
- 210,000+ users
- 192 commands, 58 event handlers
- Diff-based document storage, multi-process DB workers, local caching
- OCR-backed and perceptual-hash scam detection on posted images
- Cross-server role sync, ban appeals and synced moderation over a credential-less handshake
- One shared implementation behind every moderation action, for the usual moderation, dashboard as well as linked servers
- Hot reload, rolling restarts and class patching
- Shard, network and file watchdogs
Relaxy! Dashboard
Web dashboard for the bot. Discord OAuth login, three access tiers computed from the OAuth guilds permission bitfield. Has per-user profile customization as well.
Uses: Fastify, the native MongoDB driver, JavaScript, esbuild.
- Discord OAuth-based access control with three permission tiers, per-request authorization checks, per-session CSRF protection and a strict list of modifiable fields
Relaxy! Website
The bot's showcase site, plus the public uptime page. I've designed it from the ground up to be as fast as possible.
Uses: HTML, CSS, JavaScript.
- 12 pages, ~4,600 lines of JS, ~5,850 lines of CSS
- Changelog, devlog, technical writeup, CDN, Matrix and Minecraft pages
- The uptime page is driven by the health feeds published below
Relaxy! Additions
The scripts and services that ensure maximum possible uptime. Written for runit on Void.
Uses: Node.js, POSIX shell scripts, nftables, runit.
- Probes 24 services on a ten-second loop and publishes three JSON feeds (one full, one public, one status)
- Hardware watchdog that pets
/dev/watchdog, so the Pi reboots automatically on a deadlock - An uptime ledger with day buckets, incident detection and cause inference, mirrored into a Discord outages channel
incidentCLI tool for declaring and annotating outages- Scripts to keep sshd at the top of the CPU, IO and OOM priority lists, with a self-contained nftables table putting SSH in band 0 at DSCP CS6 to ensure the Pi stays reachable while it is dying
- error pages generated from the dashboard's own CSS, so I don't have to write new ones by hand every time I change something
Library that generates Google Emoji Kitchen combination image URLs from two emojis, for JavaScript/TypeScript (npm and JSR), Python, Rust, Go, PHP, Ruby and C#.
Uses: TypeScript, Python, Rust, Go, PHP, Ruby, C#, GitHub Actions.
- 125,000+ total downloads (npm-stat)
- 1,221 dependent repositories on GitHub
- 619 base emojis, 330,640 valid combinations
- Compact compatibility data is 2.9MB (OG was 96MB!), shared by all nine packages
- Every package is tested against the same cases and published from one release workflow
Runtime introspection logger for Python. Reports variable assignments, mutations and function calls as they happen, with no debugger and no instrumentation of the target code beyond a decorator.
Uses: Python 3.8+, sys.settrace introspection.
- 10,000+ PyPI downloads
- ~5,600 lines across 12 modules, with 21 test modules and 10 demos, tested on Python 3.8 to 3.14 on Linux, macOS and Windows
- Educational mode rewrites output into plain sentences for teaching
- Tracks locals, attribute writes, container mutations, arguments and return values
System-wide pop-up dictionary for Linux (X11) and Windows.
Hold a key combination and point at a word in any
application to see its definitions. Same dict format as Yomitan.
Uses: C++26, Qt, AT-SPI / UI Automation, PaddleOCR and Tesseract.
- Japanese, Russian, Ukrainian, Korean and Greek, with deinflection (食べさせられなかった finds 食べる)
- Reads text through accessibility interfaces, or with OCR in games, images and videos
- Dictionaries compiled into memory-mapped indexes
- Pronunciation audio, Anki cards through AnkiConnect, and configurable popup themes
- Listed in the official AppImageHub catalog
CLI project tracker with Git repo discovery, search/filtering, bulk editing, configurable output, and a background update daemon.
Uses: Python 3.11+.
- ~11,600 lines across 45 modules, with 23 test modules
- 15 commands, each with aliases and a fused short version
- Frecency-based name resolution
- Undoable edits, tui, a background daemon, shell completion for bash, zsh and fish, and a
manpage - Selected for the XERJ Corpus Hub of reference code solutions for coding agents
- abba (C++26) - Arbitrary Binary Behavioural Anticheat. Memory scanning, file integrity hashing and INI-driven configuration. Still work in progress!
- von-neumann-machine-simulator (Rust, egui/eframe) - Von Neumann architecture simulator with a native GUI.
- ibus-mozc-system (Python, Shell, X11) - Scripts and config that make Japanese input under IBus and Mozc work on a keyboard without dedicated JP keys.
- xfce-tiler (Python, X11) - Quadrant, half and directional window tiling for XFCE and xfwm4.
- x11-mic-monitor (Python, X11, PipeWire) - Hear your own microphone on a mouse button, or record yourself and hear it straight back.
- discord-profile-studio (Python, Tkinter) - Designer for Discord Rich Presence and profile widgets with a live preview. Still work in progress!
- hprint (C++23) - Header-only utility for centered terminal headers. Unicode 16 aware widths (emoji sequences, combining marks, escape codes), UTF-8 borders, any output stream, usable at compile time.
- path-variable-editor (Python) - Windows PATH editor that works past the 2047-character limit, with backups and a check against other programs' changes before saving.
- mood (Rust, ratatui) - Log 0-10 mood scores with reasons from the terminal, then review them as terminal charts or PNG graphs.
- download-favourite-discord-gifs (Python) - Downloads exported Discord favourite GIFs, converts to correct formats with magic byte detection.
- raytracer (C++) - Ray tracer following Ray Tracing in One Weekend.
- libstrangle-dlsym-fix (C) - Fork of milaq's libstrangle with the
__libc_dlsymlookup error corrected making OpenGL work again on latest glibc.
Unreleased - Projects which will probably never see the light of day
- Local AI Studio (Rust, ratatui) - Super+R popup for quick questions to local models. Shows timing per reply, has approval modes, and the model can look at the screen, read selected text, search files and search the web.
Personal - Random configs and themes that I use
- g-mang-hud-mattfor-edition (TF2 HUD) - My modification of a 16+ year old TF2 HUD written in ReScript.
- .bashrc (Shell) - My .bashrc. System, packaging, media and programming utilities, each documented with what it needs installed.
- gtk-config (CSS) - My GTK 3 and 4 theme for Void.
- xfce4-notes-plugin (Vala) - Fork of the Xfce notes plugin: opens any folder of notes (every folder a window), works well with git and Syncthing, reads legacy encodings, scrolls between notes and shows/hides on a shortcut.
Archive - University work and older projects
- university-coursework (C, C++, Python, Jupyter) - Everything from my Computer Science degree, organised by semester.
- neural-network (C++26) - Feedforward multithreaded neural network written from scratch, with a test suite. (also submitted as the final project for algorithms & data structures)
- visual-sorter-v2 (C++20, OpenGL [GLFW], SDL3 and ImGui) - Twelve sorting algorithms drawn one comparison at a time. Performance metrics, graphs and more.
- emergency-department (C++20, POSIX IPC) - A hospital emergency department where every role is a separate process, coordinating purely through message queues, shared memory, semaphores and signals. Final project for operating systems class.
- numerical-methods-labs (C++) - Numerical methods lab programs.
- university-dotnet (C#) - Every exercise from the .NET class.
- relaxy-public-v1 (JavaScript) - The first stripped-down showcase of the bot, from 2023. Superseded by relaxy-public-v2.
- grand-archives-discord-bot (JavaScript) - A bot for an old
roleplay server. Its
alchemycommand is what emoji-mixer grew out of. - escape-the-backrooms-teammaker (C++, Win32) - Team builder used by nightmare runners early in the game's life.
- matura-exam-preparation (Python) - Scripts and notes I used as study material for the Matura CS exam.
- asteroids-old (C++, SFML), c-sorting-visualiser (C) and backprop-neural-network-side-project (Python) - Early things from when I was first learning to program.
Mirrors of my repositories are also available on codeberg.org/MattFor.
- Discord: mattfor
- Email: mattfor@relaxy.xyz
- Website: https://mattfor.com
I'm a community manager for Fancy Games,
overseeing Escape The Backrooms since 2023. Join
our Discord server!
I also own and run the Escape the Backrooms Community
organisation GitHub | Codeberg.
Organisation repositories
- autosplitter (ASL) - The LiveSplit autosplitter for the game, covering versions 5.0+. Auto start, splits on level transitions and cutscenes, load removal, and a paused timer in cutscenes, the main menu and on crashes. Based on uhara by ru-mii.
- UE4SS (C++) - Our fork of RE-UE4SS.
- community-wiki - The community wiki: confirmed features, suggestion guidelines, templates for level, item and entity suggestions, and a guide to running the game on Linux.
- etb-speedrun-bot-v2 (Python) - The speedrunning bot behind the leaderboards and run verification, "The Watcher", originally by @Reokin. Members link their speedrun.com profile and the bot keeps their roles up to date.

