I just released version 0.3 of jp. It fixes the tiniest of tiny bugs where in very obscure cases it might turn your shell prompt green. Also a new release comes with new pre-made binaries, which have been compiled with a more recent version of Go, which means they run on newer versions of macOS.
But, honestly, none of that was the point of the new release. Since leaving Slack a while back (more on that later, maybe) I’ve been spending time exploring all the technology changes that happened while I was busy with a hypergrowth startup. One of the interesting ones is Github Actions. You can use Actions to run any code in a short-lived container whenever something happens in a Github repo. This opens up so many possibilities. But to really learn a technology you have to actually use it, and jp just happens to be where I’m trying this one out.
In this case I’m using Actions and Go’s cross compilation support to automatically build binaries for Mac and Linux on every push. When I tag a new release page a new draft GitHub release page is made, and binary downloads are added to it. It’s all pretty basic, but it means that the entire build process is now reproducible, instead of relying on the state of the Homebrew install on my laptop.
This feels related to a lot of work happening on VS Code, like Recommended Extensions, Workspace Settings, and Remote Development. Every aspect of a project can now easily be checked into version control. This was always possible, and necessary, for huge projects with many engineers, but it felt like too much work for tiny projects. Now it’s just a handful of YAML and JSON files.
So hopefully the next time I dust off a seven year old project on a new laptop it’ll take less than a few hours to get it working again.■