I'm a developer with experience mainly in C#, Rust, and JavaScript. My interests include endangered species conservation. I started Beastie Bot to help keep threatened species articles on Wikipedia up to date with public data from the IUCN.
Contributions to open source projects include discovering and helping patch a security vulnerability in a tool from the Internet Archive (CVE-2025-58438); I also identified and helped patch a bug in the Microsoft's dotnet runtime (timespan parsing). I've followed machine learning developments for a long time with code contributions to gensim and other machine learning projects which predate the release of ChatGPT.
Most personal projects listed here are simply scratching an itch, such as an online tool which can tell you how long an ebook file is without upload it or downloading an app; an online generator of sine sweeps for messing around with impulse response recordings; and a tool I use to switch off the PC screen when I turn off the light (ScreenSleeper).
Several of my projects are experiments in information design, searching for ways to present complex information in a way it can be understood efficiently, effectively and simply. Examples include: FT8 Player which visualizes amateur radio data packets; wasm-ops which lays out the set of operations (op codes) available to high-performance web applications through WebAssessmbly; Qubero hex editor, an early project of mine which aimed to open up complex binary files with a spreadsheet-like interface. Also the aforementioned Beastie Bot, although it outputs text styled for wikis and not visualizations, is also an information design project with the same prinicples. It aims to present the rich data relating to the risk of exinction of plant and animal species in a way which is effective, accurate and easily understood.
I run a Discord bot (Sprinto) which helps authors and writing groups stay focused on their craft.
General projects:
- Sprinto | github — Discord bot for writers/authors/nanowrimo, to run writing sprints, to help you focus on your work. Now found on 50,000 Discord servers [currently closed source] (C#)
- TimeSpanParser — Parser for any human input of a time span such as "5 mins" (C# library)
- Streamling Overlay app [itch.io] Find what music is playing on Spotify, VLC, Winamp, etc and display it (e.g. in OBS) via a built-in webserver, for streamers. (C# and JavaScript; closed source for now)
- wasm-ops — Online Chart of WebAssembly Instructions (web page, JavaScript)
- Online Sine Sweep Generator — Online tool to generate high-fidelity test signals focused on capturing impulse responses. (JavaScript)
- Online Word Counter for .epub ebooks — How long is that book? (for EPUB files)
- beastie bot 3 — Generate lists of threatened species, formatted for Wikipedia. Plus related data wrangling tools (C#)
- CommentedList — Format for managing lists of text for use in random selection such as quote-of-the-day. Allows for comments with hashtags and key-value pairs. (C# library)
- ScreenSleeper — MQTT listener for Windows to turn on/off the screen for home automation (C#)
- a2max — Integer Basic boot loader with maximum compatibility for the Apple II series and emulators
- send em tiny Windows utility to send Unicode characters, configured by renaming an .exe file, to improve functionality of old mouse/keyboard utilities (C#)
- youtube-speed-tweak — A Firefox extension to increase youtube playback speed beyond 2x
- "Worst Wordle" — Script to find the most ambiguous ("worst") four-letter combos in Wordle, namely "__IGHT" (C#)
- HomeConfig — Library to quickly find and read a config file (C#)
- qubero — Hex Editor project with support for inserting or deleting single bits (Java)
- snakey — Snakey: DOS era game written in C (playable in browser)
- Other/private/undocumented projects: PebblyPop, LorenzLorentz, UnicodeWatch, LiteraryWatch, mpegdemo/h264demo, ...
Amateur radio specific projects:
- Online FT8 Player — Online visualizer and player for FT8, which is a mode for sending short messages popular with amateur radio enthusiasts. (JavaScript/WASM)
- upSidetone — Low latency morse code keyer app for Windows (C#)
- Online Random Wire Calculator — Online long-wire length calculator and plot for amateur radio enthusiasts. (JavaScript)
- VaraHuffmanNet — Reimplement and document the compressed VARA protocol format associated with Winlink for amateur radio (C# rewrite of VB6 code)
Projects with code contributions:
- dotnet runtime — discovered bug and contributed fix for TimeSpan.Parse(string) in dotnet system library (pull request Note my previous github username was Quole)
- ia: official command-line interface tool for the Internet Archive (archive.org) — discovered path traversal vulnerability (CVE-2025-58438)[https://github.com/advisories/GHSA-wx3r-v6h7-frjp]; contributed code for patch
- word2vec-api (Python) Simple web service providing a word embedding model (contributions: updated from python 2 → 3; added a new setting)
- LiveSplit — minor contributions to simplify time formatting. PR (C#)
- TimTheWordWarBot — Contributed minor fix (Java)
- standingwave3 — AS3 (ActionScript3) audio library; contribution: bug fixes
- Gensim — Python library for natural language processing (NLP); contribution: better word2vec file support PR



