You are viewing: ~c5n/pages/projects/.
See also: scouting, projects, consulting, resume.


Here is a selection of several open-source projects which I have developed or worked on.

University of Scouting


Ben Spellmann and I built a transcript reporting system for scouters (adult scout leaders) in Longhorn Council. Using this system, scouters can look up prior courses attended through University of Scouting.

Adaptive Card CLI


I had a need to post text messages to Microsoft Teams channels, and it was somewhat challenging to find a simple API that would do what I needed, especially one that supported environment variables for the webhook URL (to make integrating with Jenkins and similar CI engines easier).

This CLI sends text messages and an optional title to teams channels.

Standard Version CI Action

Docker Hub:

I needed a convenient way to manage version numbers at merge-time in JavaScript and Puppet modules, and found that standard-version does the trick nicely. While integrating JavaScript modules with standard-version directly is convenient, it is less convenient for other other project types which don’t already have node_modules present.

To solve this problem, I built standard-version into a docker container and published it, for my own use in GitHub Actions and Jenkins workflows.

2-Lane Pinewood Derby Judge

I made up two designs for this, one bare bones and one with a little bit more flash. Both are purposefully simple, and designed using the MakeCode block editor for the benefit of scouts interested in programming.

Feather M0 Express


The first iteration is based on an Feather M0 Express, and includes only the absolute minimum features required to serve as a finish line judge. The only output is through the single onboard pixel. Blink once for a win in the first lane, blink twice for a win in the second lane.

Circuit Playground Express


The second iteration is only slightly more complicated, and is based on the design from the first project. This version uses a Circuit Playground Express, mainly because it is a popular beginner board and because of the number of onboard features.

Here, the 10 onboard pixels are used to a greater effect indicating a win by pointing left or right, and some musical tones are added for fun. Thanks to the addition of a servo motor, an onboard button now releases cars to start the race. This allows the program to track the time of the winning car, though it is only reported by serial.


My “Hello World” lately, has been to generate diceware passwords. Here are a few projects where I explored new languages or patterns.

CLI (Go)


I wrote this simply to play around a bit with some specific go patterns, such as test coverage, concurrency, interfaces, and error handling. While this tool seems to work fine for me, use it for your own passwords at your own risk.

package main

import (

func main() {
  var num = flag.Int("d", 8, "number of dice")
  dice := diceware.New()
  if result, err := dice.Generate(*num); err == nil {
    fmt.Printf("%s\n", result)
  } else {
    fmt.Printf("error: %s\n", err)

Web (JavaScript)

Docker Hub:

Diceware Web is a static, JavaScript site with no external resources that generates 8-word Diceware passwords.

API (JavaScript)


If you would like to generate a diceware password in the least secure way possible, feel free to click the links below.

(The initial API call may take up to a few minutes as Azure boots up the container that hosts the API code. Subsequent calls will be much faster.)

Please don’t actually use these passwords for anything important. I’m sure Azure is run by perfectly nice folks, and their SSL is plenty secure… but this is not a safe way to generate passwords.

It’s more of an Azure API “hello world” than anything else.

API (Python Flask)


A second API-based implimentation, equally ill-suited to generate your personal baking password, demonstrates a single Flask-based web API endpoint.

ECC Docker Repo


In 2014, I created a somewhat standardized set of Docker images based on CentOS 6 which I used for both personal and professional projects. Since then, best practices for Docker have come a long way and the Dockerfiles I created no longer even build (since the centos:6.4 base image is no longer available).

Recently, I moved all of these projects to their own repos, with hopes of someday revisiting them. Until then, you can find them here: I am leaving the original repo in place for the time being, as that is where dockerhub is pulling from.

Other Misc Projects


I’ve tinkered with a lot of different ideas, some good, some bad. For every repo that’s pushed here, there are several more that I never got around to uploading (usually because I forgot, then later lost the code).

You will find a mix of finished and unfinished projects (plus a few forks) in the cobwebs of my GitHub profile. I tend not to delete code, no matter how ugly or unfinished. Half-baked ideas have a way of being useful years later. (The file edit dates on these are especially unreliable, as many of them were pushed to GitHub many years after they were written.)