I really like seeing people’s interesting projects. Even if they are generic or were started just to learn something.
And on top of that, I consider Go to be one of those languages that you can find projects on a pretty diverse range of topics.
So, is there any interesting (or not too) personal Go projects that is in the making, or is already finished?
I have two, done to scratch personal itches:
xs, a remote shell, written from the ground up using Go with post-quantum key exchanges, simple tunnel support and anti-traffic analysis ‘chaff’ experiments - think ‘an ssh replacement from a parallel universe’. Big thing is, it leverages Go’s excellent crypto and network support to achieve most daily ssh use cases, in <5% of the SLOCC so its design and function can be more easily understood by mere mortals, IMHO :)
bacillμs, a near zero-dependency build/CI server - demo instance here
wow, those are awesome projects! and really usable too!
I actually really liked bacillus. The minimalism is perfect, and seems like a great option to projects that would benefit with its own hosted CI server.
Oh, and while messing with it I accidentally triggered four jobs, oops sorry :P
If I had a server and domain just laying around I certainly would setup one for personal projects. I wonder as well if it would be possible to display the most recent job status in the project’s repo interface (maybe with an external image card in the markdown).
Thanks, glad you checked them out! Don’t worry about triggering jobs, it’s a demo instance, doesn’t hurt if you do some builds. There’s a rate limit of 8 jobs concurrently and the build artifacts are cleaned up pretty frequently.
If you wanted to use it as a local build manager thingie, it would be pretty easy to set up in a container (ugh) or locally and just point at localhost:<port> … with your web browser. But go stuff is usually so easy to build it might not be worth it :)
Unsure what you mean about the recent job status idea – can you elucidate more? I’m open to cool ideas…
I meant kinda like what GitHub and GitLab have in its UI, showing the job status from the most recent commit:
Though it doesn’t even have to be a part of the git repo UI. You can link an image badge in the projects README markdown that fetches the status of the most recent job.
Almost every Big™ Modern™ project on GitHub/GitLab has something like this. For example, bubbletea has a “build passing” badge that is linked with its most recent job from GitHub CI. shields.io has them too.
BTW please have a barf bucket beside you if you examine the source code for bacillus … it’s all inline, raw ad-hoc HTML and javascript to build the UI :). I was thinking of redoing it someday with htmx, without getting too fancy (I am not a web developer and loathe JS in general), but it might add some graceful degradation for non-javascript use of the CI interface (though I don’t know if live updates of build status would even be possible/practical without at least some JS).
Hmm! OK I’ll think about how to do that, might be a nice addition. Thanks.
Update: done! I added two endpoints that a page (like a github repo’s README.md) can fetch to get a simple text/plain “lastStatus:n” or image/jpeg pass/fail icon.
I find my browser doesn’t always show the newest CI status right away though, even though the server sends the JPG with an HTTP Cache-Control: no-cache. Hmmm.
It’s primitive and doesn’t give all the nice status in your screenshot above like build time, branch name… I should think about it more I suppose.
Thanks for the idea!
That’s actually so awesome! I noticed you’re already using it in your other projects that use bacillus.
I hope one day I may use bacillus myself. Keep on with its development!
I would like to point out my project as well:
simpleutils, a small alternative coreutils package. It’s the only actual Go project I have right now and it’s nothing impressive, but I really am enjoying making it. It’s been a blast seeing it being useful in my day-to-day life as well.
Ooo, neat! I have heard there’s a push to build a whole coreutils in Rust, but I’d rather have a Go version if I had to choose to replace the time-tested C versions :) I’ll check those out for sure.