Over the years I have written many different things in various languages. Largely Python and POSIX shell and most of them are done to the point that they Work For Me™ and solved whatever problem I had at the time.
Patches are welcome, you can find clone and patch instructions on the root page of my git repository.
Microcontroller Projects
Mostly written in C and targeting various Atmel / Microchip microcontrollers. These projects live here.
bar-lighting | A custom lighting controller built for my camp at Pennsic War that provides simulated candle light along with some other general lighting throughout our camp site. Uses an ATmega328P and a PCA9633 or PCA9685 PWM controller. |
breather | There are many implementations of the 'breathing LED', this is one of mine. This one uses an ATtiny85 and pre-computed brightness tables. |
led-gadget | A bit of a junk drawer of simple LED effects running on PIC microcontrollers. See the README.txt in this folder for a description of the different effects. |
sc-ed-clock |
One of my earliest ATMega328PB projects. This is a clock built around
a 5.5" green OLED screen, and a Maxim DS3231M RTC. It features a
SSD1322 driver with some rudimentary display routines that allow it
to implement a graphical UI. For fun it displays local time, UTC
time and the current date in the Elite Dangerous and Star Citizen
universes. There is also a small Python script in the
tools directory that takes a bitmap and turns it into
a suitable .h file for use as a background logo.
|
sensenet | My 915MHz sensor network, featuring several different sensor designs and a base station, built around the RFM69HCW radio modules. I don't trust the Internet of Things so this is my LAN of Things. |
serial-keypad | I tried streaming once, I wrote a lot of code to make it look reasonable and built a serial keyboard that I interfaced to for scene switching. It's a pretty simple little ATmega32U4 based thing that can be used for all kinds of automation. |
tent-lighting | I wanted a remote controlled lighting system for my tent. It features bright white and red LED tape inside a hanging fixture. It is driven by an ATtiny85 doing PWM. |
usb-vfd | I took a Noritake itron VFD and an Atmel ATmega32U4 and hooked them up to the Internet. This is the firmware for that. |
Containers
A collection of mostly esoteric toys wrapped into Docker containers live here. There is also a README in the repository with more details about them all.
atmelbuilder,
builderbase,
microchipbuilder 2018+ | I build the firmware for my microcontroller projects via a git hook and these are the containers that I use to do that. I wrote a blog post about this. |
dockerbuilder 2019+ | Since I build microcontroller code from a git hook, why not also build containers from a git hook? This does that. I talk about the hooks in the related blog post. |
dosbox,
lord 2020 | I have put several old, nostalgic things in containers for reasons. In this case I put the popular BBS door game L.O.R.D. in one. I had to build a custom version of DOSBOX to make it work. If you are looking to put old DOS games in a container this might be useful. |
elite 2017-2019 | One of the first things I put into a container when I was originally fooling around with Docker, the DOS version of Elite Plus. |
geminid,
mollybrown 2020+ | Gemini is an experimental Internet protocol, similar to Gopher. These are a couple servers for that protocol that I put in containers to experiment with. |
netscape-3.04-gold,
netscape-4.79-linux 2017-2019 | Another early experiment was sticking some old browsers into containers. Hopefully preserving a look into how the Web used to be. |
z80builder 2019 | I build microcontroller firmware and Docker containers from git using containers so why wouldn't I also build Z80 assembly binaries? This is a container to do just that using the ZASM assembler. |
Python
A collection of Python bits and pieces all packaged up. Usually this means I copied these a bunch of times across several projects. The root of the repository is here.
flask-configurator 2019+ | When I started putting Flask applications into containers I wanted a way to configure them that worked well both inside a container and in the more traditional Apache mod_wsgi context which I still used in production. This is that. I use it in basically all of my Flask apps. |
flask-syslogger 2018+ | I believe strongly in logging to a central log server. I use syslog-ng as my log server and have everything send logs to it. This is extremely useful. To facilitate this with Flask applications in container and non-container contexts I wrote a bunch of stuff. This is that. It also makes it easy for me to log to a local file while developing and log to syslog in production. |
graphql-tools 2022+ | GraphQL is the new hotness for janky webapps built on popular JavaScript frameworks for no real reason. It aims to 'fix' problems with scaling RESTful APIs and seems mostly to be used to obfuscate otherwise publicly facing data on social media websites. I have gotten so many headaches writing the same helpers over and over that I finally threw several into a module to make working with the responses a little easier and to make it a little bit more straightforward to update when things inevitably change. |
Miscellany
ansible 2020+ | I really prefer Puppet and most of my stuff is managed by it but it turns out that Raspberry Pis are too slow and have too little memory to reasonably run Puppet so I use Ansible to manage those. This repository has several playbooks, including an ADS-B and UAT feeder to FlightAware, an Airplay speaker, a CUPS Print server, a terminal server that runs my Wyse WY-60 terminal, my ISM sensor network base station, and my Internet connected Noritake itron character VFD. |
arris-scraper 2019-2021 | I wrote a Python program to gather statistics from the internal web page of the Arris SB8200 cable modem so I could send it off to Influx DB and graph it. I then wrote a blog post about it. I got FTTH in 2021 so I have stopped active development but still accept patches. |
backup-itunes 2014+ |
A script that backs up my |
backup-books 2021+ |
A script that backs up my |
backup-ios-backups 2020+ |
A script that backs up the |
backup-routerboard 2014+ | A script that backs up my MikroTik RouterBoard devices running RouterOS. |
bbtools 2009+ | Various tools for managing my mobile devices. Mostly BlackBerry devices but some stuff for working with backups of iOS devices. |
betabrite 2020+ | A fork and update of a partial implementation of the BetaBrite LED sign protocol that was originally written by a friend. |
check_nac 2012-2013 |
I wrote a Nagios plugin to check the status of a NetApp Clustered
Data ONTAP system. This uses the NetApp Manageability SDK which is
|
check_vfiler 2013-2015 |
I also wrote a Nagios plugin to check the status of the SnapMirror and
SnapVault relationships that were running inside a vFiler instance on
a NetApp Data ONTAP 7-mode system. This uses the NetApp Manageability
SDK which is |
dotfiles 2015+ | This is a collection of trivial utilities and configuration files for various programs including emacs, irssi, mutt, tmux, and vim. |
geforce-driver-search 2021+ |
I'm not sure why NVIDIA requires you to make an account on their
site to use their driver auto-updater, that seems |
ircbot 2008+ | One of my ex-coworkers and I started writing an IRC bot for the internal IRC server we ran at $OLDJOB. Over the years I took it over and still take care of it on a private IRC server that I run. There are lots of ways to make IRC robots and this is how I did it. I have even used it on my Twitch channel when I was screwing around with streaming. |
podcast-filter 2022+ | A script to parse a podcast RSS feed and emit a modified version that only contains the episodes you care about. Patreon feeds can often be unmanageable jumbles so this is useful to make custom feeds of only the stuff you care for. |
pypeteer 2020+ |
I found myself wanting to generate OpenGraph preview images for the
microblog, in large part to make iOS link previews work. This
wasn't all that hard, I ended up writing another Azure Function
to use pyppeteer
(a Python wrapper around Puppeteer) to generate the image. I then
wrote a blog post about it. Previously. |
qdb 2002-2004 | Inspired by bash.org, one of the first open source projects I wrote was a quote database system. Originally developed without version control, it represented the first project I used CVS for. Releases prior to the repository history can be found here. It was written for PHP 4 it is certainly insecure and is almost certainly broken in novel ways. |
rss-generators 2016+ | These started out as a bunch of CGI scripts for transforming some RSS feeds into better RSS feeds and has morphed into an all singing, all dancing middle-finger towards the modern web. It aggregates YouTube, Instagram, Twitter, Tumblr, and Patreon feeds along side several web comics and sites into RSS feeds that I happily read with a regular old RSS feed reader. These days it runs as a Docker container as well. |
screenfetch-netapp 2015-2017 | I used to be into the desktop customization scene and one of the things that's popular there are system info utilities like screenFetch or neofetch that show off your hardware in screenshots. I also used to run large NetApp storage arrays so I wrote a screenfetch for NetApp ONTAP systems. |
simple-gallery 2010+ | I originally wrote my gallery generator to be able to be browsed on a CD-R or USB thumb drive so it is entirely self-contained. I still use it to generate the image/video galleries on this site. It is nice because it doesn't require a database and can be rebuilt from just a directory of files really easily. I even recently added YAML metadata support to it. |
upsidedown-rewrite 2010 | A lot of people used to harmlessly prank people on their guest WiFi. I chose to intercept all images and rotate them 180°. This doesn't work now with the wide adoption of HTTPS, and I'm less of a jerk these days. |
userscripts 2023+ | Some scripts I wrote for Tampermonkey to make some web experiences better. Youtube-killfile is probably the most complete. |
vociferate 2019+ |
Vociferate is the internal name of my Random
Thoughts microblog. It is built on
Azure Functions
and I have written at least 4 blog posts about it. Previously, previously, previously, previously. |
youtube-dashboard 2021+ | I don't log into a Google account ever so I get the generic YouTube home page which is usually fine since I do most of my YouTube browsing via the RSS transmogrifier feed. Sometimes I like looking for something new that is worth watching but more often than not the suggestions are garbage clickbait. I wrote a curses app that lets me fetch the homepage and run it through a killfile as a proof of concept to replace just browsing the homepage. |
youtube-podcast 2022+ |
Turn a YouTube playlist into an audio podcast. See the related blog post. |
iOS / macOS Programs
iPictureFrame 2018-2019 | This was an attempt to turn an old iPad into a digital picture frame. It worked but it turns out that it wasn't worth paying $100/year for the privilege of keeping a device I bought out of a landfill. |
youtube-dead-ios 2018-2019 | One of my first Docker / Flask applications was a system to download a YouTube video and discard the video track. I started with just having a web app frontend but decided to try to build a native iOS app frontend. This is that. It worked but Apple's death grip over the platform made it impractical for me to use so it's been abandoned. It is a reasonable example of a Swift based streaming media player, though. |
UserLedController 2019 | While I was building the hardware and firmware for the serial keypad for my stream automation software I wanted a way to test the various functions so I wrote a quick macOS app in Swift to interact with the test hardware. |
There is even more, some old, all still loved, some even updated! Head on over to https://ssl.ub3rgeek.net/git/ and check them out.