All of these projects can be found on my GitHub page, and most are MIT licensed.
Transit trackers
Massachusetts Bay Transportation Authority
Central Ohio Transit Authority
Back in 2009 I wrote a real-time vehicle tracker for the MBTA bus system. I’ve updated it over the years to cover buses, subways, commuter rail, and ferries. When COTA announced real-time tracking of their buses, I implemented it as well.
More background on it can be found in this post.
Home automation
I’ve written a few tools and services for home automation, mostly using hc, which is an Apple HomeKit Accessory Protocol implementation written in Go.
carwings
A library and command-line utility for the Nissan Leaf Carwings API.
carwings-homekit
HomeKit support for the Leaf, built on my carwings library.
leaf
A library and command-line utility for the Nissan Leaf North American
NissanConnect API, which is different from the older Carwings API.
leaf-homekit
HomeKit support for the Leaf, built on my leaf library.
myq
A library and command-line utility for the Chamberlain / LiftMaster MyQ
API.
myq-homekit
HomeKit support for MyQ devices, built on my MyQ library.
wemo-homekit
HomeKit support for Belkin Wemo devices
kasa-homekit
HomeKit support for TP-Link Kasa devices
roku-homekit
HomeKit support for Roku devices with the External Control Protocol
adguardhome-homekit
A HomeKit switch for quickly enabling/disabling AdGuard Home
protection.
powerley-energybridge-homekit
HomeKit support and a Prometheus exporter for Powerley Energy Bridge
devices. These devices are typically branded by the local energy
utility, eg. “AEP Energy Bridge” or “DTE Energy Bridge”.
tripplite-ups-exporter
A Prometheus exporter for Tripp Lite UPSes over USB HID.
thermistor
A fun home electronics project to expose two thermistors as
temperature sensor accessories, built on a Raspberry Pi using
Gobot and HomeKit.
Go tools and packages
I’ve written a handful of tools for Go programmers. This is not an exhaustive list.
envdecode
A package for populating structs from environment variables using
struct tags.
doc-extract
A tool for extracting text from Go source code using specially tagged
Go comments. I’ve found this very helpful for building HTTP API
documentation, which doesn’t fit well into the existing godoc
system.
gengen
A stab at the Go generics problem by writing a code transformation
tool. Because Rob Pike told me to do that, sorta.
nstats
A command-line tool for printing simple numerical statistics.
peercred
A Go package wrapping Linux’s SO_PEERCRED
socket option on Unix
domain sockets.
Other stuff
Things I’ve worked on for previous jobs and that are now mostly ignored.
leeroy
Jenkins integration with GitHub pull requests, before that was an easy
thing to do.
galaxy
A Docker micro-platform-as-a-service. These days it’s called “service
orchestration.” I gave a lightning talk on this at GopherCon
2015.