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.
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.|
|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.|
|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.|
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.
|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.|
|Since I build microcontroller code from a git hook, why not also build containers from a git hook? This does that.|
|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.|
|One of the first things I put into a container when I was originally fooling around with Docker, the DOS version of Elite Plus.|
|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.|
|Another early experiment was sticking some old browsers into containers. Hopefully preserving a look into how the Web used to be.|
|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.|
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.
|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.|
|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.|
|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 and a terminal server that runs my Wyse WY-60 terminal, my ISM sensor network base station and my Noritake VFD.|
|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.|
A script that backs up my |
A script that backs up my |
A script that backs up the |
|A script that backs up my MikroTik RouterBoard devices running RouterOS.|
|Various tools for managing my mobile devices. Mostly BlackBerry devices but some stuff for working with backups of iOS devices.|
|I wrote a Nagios plugin to check the status of a NetApp Clustered Data ONTAP system. This uses the NetApp Managability SDK which is probably not supported anymore. It was able to check general health, disk health, volume space and SnapMirror replication relationships.|
|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 Managability SDK which is probably not supported anymore.|
|This is a collection of trivial utilities and configuration files for various programs.|
|I'm not sure why NVIDIA requires you to make an account on their site to use their driver auto-updater, that seems pretty sus to me so I wrote a little Python/ PySimpleGUI app for my Windows gaming computer to check for and download updates for the graphics driver.|
|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.|
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.|
|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.|
|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.|
|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.|
|A lot of people used to harmlessly prank people on their guest WiFi. I chose to interscept 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.|
Vociferate is the internal name of my Random
Thoughts microblog. It is an
and I wrote like 4 blog posts about it.|
Previously, previously, previously, previously.
|I don't log into my 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. Occasionally though I find something worth watching on the homepage. More often than not though the suggestions are garbage clickbait, so I wrote a curses app that lets me fetch the homepage and run it through a killfile.|
iOS / macOS Programs
|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 privlidge of keeping a device I bought out of a landfill.|
|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 deathgrip over the platform made it impratical for me to use so it's been abandoned. It is a reasonable example of a Swift based streaming media player, though.|
|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 hardare.|
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.