I finally did it, instead of spending way too much time on a simple side-project I’ve been thinking and tinkering about, I let go of it.
Way too many times software developers end up in starting more and more (side-)projects while never either finishing or cancelling old ones. They become abandoned while still taking up head-space somewhere in a dark corner of the mind. This post will be a list of my abandoned or cancelled projects, including short descriptions of what I intended to achieve and where i think I failed.
Prollama
Prollama was my attempt to create an automated Pull Request Review Bot for Github. The clue: it’s supposed to be a) zeroconf (you need gh
and ollama
configured, though) and privacy first. Your code/review-data will never leave your own computer, there’s no Remote API involved (if you don’t want to). The idea was simple enough to have an MVP ready in an evenings’ work. The path to stability, though, was - as it is often - totally underestimated by me. So after trying to figure out how to extract hunks from a unified diff file I had to prompt engineer my way through different local models to figure out how to get a model to respond in a structured format. And i had to unescape/unquote/uncontrolcharacter the returned string, which sometimes turned into a mess because suddenly things like ‘+’ caused the unmarshaller to escape the next character (e.g., the i
of import slog
). This in turn then caused the unmarshaller to return an error and rendered the whole hunk unusable. And this was only the beginning, so I pulled a canary and escaped as soon as I figured this would not end up well for me. Maybe someday this project will be activated again, but until then everyone is free to learn from it or even continue the work on it.
But as always, you learn from those projects, and this is what I’ve learned when working on Prollama:
- how to create a context with a timeout and how to react to it actually timing out using an
errgroup
- see: https://github.com/lakrizz/prollama/blob/19a92c1d3d2f1c32f9608511fc2c06675460b0c5/main.go#L102 - compared and used different flag/cli/config packages and figured i like
urfave/cli
very much and will reuse it if applicable. I also tried viper/cobra and something else that i already forgot about. - figured that generics are pretty much usable and got a bit more of a hang of it by writing a generic slice-convert function: https://github.com/lakrizz/prollama/blob/19a92c1d3d2f1c32f9608511fc2c06675460b0c5/pkg/slicex/slicex.go#L3
- In conclusion I still think the idea is great, since my (although very short) research phase only pointed me towards CI-based tools that need direct permissions to your repositories. Prollama was intended to only use local resources and making sure none of your data or code is transferred to any company, keeping privacy as high as possible. Maybe similar tools do exist, but not this one.