Debian logo Debian

Minified screenshot of Debian packaging portfolio I've been an active Debian packager since 2015, and a Debian Project Member since March 2023. Previously I was a verified uploader (DM) from 2018-2023. Much of my work here relates to tools and themes for the Linux desktop.

I also maintain a personal repository shipping more niche apps and my default settings.

Apps for Linux

icoextract demo icoextract is a pure-Python icon extractor library and thumbnailer for Windows executables. It aims to be lightweight, portable (cross-platform), and fast on large files.

Variety Variety is a wallpaper downloader and manager, with support for numerous online sources (Unsplash, Wallhaven, etc.) and built-in effects/filters.

In collaboration with Peter Levi.

bookmarksync demo bookmarksync is a simple utility to manage and sync GTK+ and KDE bookmarks (i.e. favourite places). As seen on the Arch Linux Wiki!

Networking & Backend

Limnoria NuWeather example Limnoria is a powerful, multi-purpose IRC bot written in Python. I work on the main project as well as a set of plugins, which talk to various services including OpenWeatherMap and

In collaboration with Val Lorentz and many others. map snippet I operate AS4242421080 within the dn42 experimental network; as of May 2022 it is a top 10 network by peer count, with ~12 PoPs and >100 active peers.

Much of my project focus here is leveraging automation (currently Ansible) to create a scalable and easy-to-maintain network.

certpush is a tool to generate and deploy Let's Encrypt certificates on websites with multiple backends (GeoDNS, anycast, etc.). Under the hood, it uses rootless certbot with DNS verification.

Previous work

  • PyLink (2015-2022): multi-network IRC services, with support for federation via server-side "puppeting" relays
  • wikiTrivia (2021): an interactive CLI trivia game using SWI-Prolog and Wikidata queries for questions
  • DataPackCrafter (2021): a DSL (domain-specific language) for Minecraft data packs, implemented in TypeScript
  • FileInsight (2016-2019): file type identifier tool (C++/Qt) using libmagic (file) and TrID as backends
  • Shapes (2017-2018): a puzzle platformer game in Unity3D + C#
  • TrulyAmazed (2016-2017): a maze game built using PyQt5