See my resume.
See my blog at
§Writing a Worm
During my computer science undergrad at University of Wisconsin Milwaukee, I had the opportunity to participate in a cybersecurity lab.
We were tasked with a project towards the end of the class and I authored a simple computer worm. Much like panchan, it works by using SSH for lateral movement across hosts. Unlike panchan, it was never released into the wild and is not super robust.
§My technical projects
I sling code on GitHub and GitLab, occasionally using other services.
Stuff that has been updated in the last year or so goes here.
- Super Rogue
- Spring Lisp Game Jam 2023 submission. Play here.
- A Django (Python) based pastebin with REST API and user accounts. See this example instance on Heroku.
- A tool to manipulate Jupiter Hell save files, .nvc archives (game data lives within), and more. Golang.
- TinyBASIC Interpreter in Racket. Blog post.
- TOML parser for Racket. Originally forked from Greg Hendershott’s TOML parser.
- micro library to access umask syscall within Racket.
- 4chan image downloader in Racket
- Advent of code samples in various languages. See the year I tried to do each day in a different language. Favorite days were done in ZKL and Forth.
§Application scripting / configuration
- Extensions and customizations (in lua) of the awesome window manager.
- Emacs configuration. Written in literal-programming style.
Like a good emacs user, a lot of code tailored for my specific needs and
use-cases (check out
site-*directories for even more code I wrote or forked).
- dotfiles with a tool to manage them using GNU Stow. Includes some useful, original mpv lua scripts too!
I believe in ensuring I don’t duplicate my own work multiple times. This is important because computers are pretty messy and easy to break.
- My desktop configuration. May adopt it for server use in future.
- My irc setup. Used primarily via the glowing-bear web application & weechat-android app. Ansible.
- My hobby retrocomputing Thinkpad x31. Yes it even runs ansible!
- VM to host open source .iso torrents. Ansible.
- Ansible playbook to deploy a gitlab runner on Alpine linux. This takes over the whole system as gitlab runners should not be trusted (they run whatever code you push).
Stuff I consider complete - no more features. Also stuff that hasn’t been updated recently, however, I depend on it.
- Racket utility library to check mumble server status
- Racket-based API Client & Bot for runogame.com
- Web microservice to toggle a Mikrotik router’s wifi. Useful for disconnecting from this shared consciousness we call the internet.
- Pastebin in Racket
- Python flask webapp to show random imgur images by changing case of a string. NSFW because imgur is NSFW.
- ssh wrapper to simplify playing NetHack on sites like hardfought.org
- Microservice to tell client their public facing IP. Like ipchicken. Racket.
- Library/tool to query Enemey Territory: Quake Wars servers in Racket.
Undergrad university capstone project. Chat app with Android app. Backend is django + django-rest-framework. I was the lead on the backend team.
- API spec
- Script to test the API implementation with the API.md specification file (Racket)
- Backend service
Codebases in various states of disrepair or irrelevance. Anything I don’t depend on or isn’t in a usable state.
- A wine prefix manager written in Racket
- PHP library to get Minecraft server status
- pyton asyncio image downloader in python. Sadly aiohttp broke their backwards compat and I opted to write a new version in Racket.
- OpenEdge Advanced Business Language major mode for emacs. Forked from here.
- Racket library to query minecraft servers.
- Python PyQt4 application to modify/sign starcraft II arcade XML documents.
- sirsi and sirsi2
- Python tools to check when library books become overdue / auto renew books if possible. This was to avoid pesky library fines due to not liking their hard to use website. Did I Mention Sirsi Dynex isn’t user friendly?
- Simple (probably insecure) python password manager
- fork of a tool to embed content into images. Is not a stenographic tool. C.
- Partial implementation of a NBT file parser in Racket.
- LindenScript Language scripts for Second Life. This language is a real piece of work. Don’t believe me, read the code :)
- More bitbucket repos…?
- I would list them, however, bitbucket had the wonderful idea of wiping mercurial repositories instead of archiving them until the user deletes them.
- My old Gentoo workstation configuration (such as
- My old Gentoo overlay for Gentoo (portage) packages
- FreeBSD ports I maintained for awhile
For a little while I was the maintainer of the Heremes Pandora App for Mac. Then I quit using Macs. It wasn’t for me. Apple doesn’t seem to listen to power users like they used to.
- Control the Hermes application over the network. Play/pause/skip/control volume. php+applescript backend with jquery / bootstrap frontend.
- Python script to suspend Hermes playback during Skype calls.
- scripts to automate an old way of signing applications on Mac, prior to notarization.
- The app itself (I no longer maintain this for a long time)
§Open source contributions
Goal of this document: demonstrate a history of contributing to projects af various languages and technologies.
I make a lot of small contributions to various open source projects. My goal is to improve my own “quality of life in computing” with one fix at a time. As a rule of thumb, I try to use software that I can fix much like I would try to fix any electronic or furniture I possess.
I do not claim ownership or any recognition beyond making important fixes to various projects.
Note: This is an exceprted list. It also presently does not include most of my own projects or tickets that brought about improvements.
I used to be loosely involved with the FreeBSD project as a ports maintainer. Later on I used this experience at a student job to write ports for a scientific computing cluster.
FreeBSD Bugzilla Search for my tickets
(The one about lack order reversal is not posted by me.)
§VLC for iOS (2014)
Add option to embolden subtitles for easier reading on low contrast videos.
Hermes is a Pandora client for MacOS. I maintained it for a couple years, then gave up my hobby projects within the Apple Ecosystem. This project gave me new appreciation for the amount of hard work every software maintainer must put in to achieve even the most basic software quality standards.
§Projects related to Hermes
- HermesRemote - an experimental web UI for controlling Hermes.
- HermesSkypeControl - Play/pause Hermes when you receive a call in Skype.
§Gentoo packaging (2011, 2018-2020)
Many years ago I made an overlay with some interesting ebuilds.
Presently I maintain an overlay of ebuilds on GitHub. It is also on
the list of unofficial overlays that
I still use Gentoo for various reasons; if something breaks (which it doesn’t), it is my own fault.
§Arch Linux packaging (2017)
I moved on from Arch Linux because of various reasons amounting to a system that was hard to manage software across deployments, subpar package writing tools (e.g. not any meaningful QA checks), and a community that was not pleasant to participate in.
Never the less, I did maintain a few packages in AUR.
- libtcod-151 (work around Arch’s lack of slotting/parallel installation support)
- crimson (Classic open source game: Crimson Fields)
- slashem (nethack variant)
- marlowe (Shakespeare programming language transpiler)
Textual is the best IRC client for MacOS. I don’t use MacOS anymore, but I did enjoy improving it. Fixes include UX enhancements, adding extension AppleScripts, and reporting a bunch of issues that others fixed. Unfortunately the Textual issue tracker on GitHub was shut down some time ago. I recall finding a bug with a PING sent from the server would be replied by a double-PONG, causing certain IRC daemons to disconnect Textual clients, thereby rendering Textual not very usable with certain IRC networks.
I also wrote a little DeviantArt Thumbnail plugin in Swift for Textual.
Yes, a JSON encoder in AppleScript. It is madness.
Python based json pretty printer with color. Various fixes.
A simple CLI to access Amazon Web Services Glacier - a nearline storage service intended for storage that is not intended for online access.
A couple package bumps in the de-facto Mac OS X package manager.
That Python package written by dinnerbone (a minecraft dev) to ping minecraft servers. I fixed up the packaging to Pythonista expectations.
Tool to hide mouse. Resolved some packaging quirks.
Best theme for emacs. UX improvements.
IRC bot. Mostly adding plugins and dockerizing.
IRC client library for Racket. Added TLS support.
IRC bot. Tidy up and add some plugins.
Popular python code linter. Formerly called pep8.
IRC Bot. Minor fix.
Good keyboard-first web browser. Documentation tweaks.
Select rectangles, windows, or screens for screenshots and other tasks.
Document some things, fix a segfault.
Text based music visualizer.
Document some keyboard shortcuts.
Landing page for your emacs.
Document some things. Check back for some QoL fixes.
Tool to generate .ebuild files (for packaging software on gentoo) from Cargo crates (used for the Rust programming language).
Fix a link.
Static website generator.
Fix to RSS feed generation. Add way to force complete regeneration of the website.
Typed variant of Racket.
Add some more types to untyped racket bits.
§the racket website (2019)
Every site needs a favicon.
Documentation tweaks. Fix/report issue with GCC/GNU Make detection in 7.4.
Improve some documentation.
Contributing multiple improvements to the Alpine Ports project used to build the packages for Alpine Linux.
P.S. Alpine is pretty nice :)
Just a tiny patch to fix the documentation.