go-nbd release 0.3.0
I’m happy to announce that a new release of the github.com/digitalocean/go-nbd module, version 0.3.0, is available here:
I’m happy to announce that a new release of the github.com/digitalocean/go-nbd module, version 0.3.0, is available here:
When I first got into homelab as a hobby, I had a single server. Of course, that’s how it usually starts for those of us in the homelab community; but for most of us, it doesn’t end there. I know this, because I am most of us.
Instead of a single server, my homelab now consists of 1-3 Minisforum UM480XT mini PCs. I say “1-3” because I switch things up a lot depending on my mood and what I feel like maintaining.
My blog has moved around several times since its inception. I first started it in college using Automattic’s hosted wordpress.com services, then I eventually moved it to a $5 VPS where I self-hosted my own copy of WordPress. After some time of that, its final form has taken the shape of a Hugo-generated static site on a $5 Linux VPS.
I’ll concede that it doesn’t take a substantial amount of toil to deploy a server and configure it to run a basic WordPress blog or static HTML pages for that matter. I’ve developed some sentimental feelings toward this blog though, and taking the proper steps to ensure that it is properly backed up or easily restored in case of tragedy adds a bit more complexity.
I recently read through Cloud Native Patterns by Cornelia Davis. I thought it was a great book. This post is not a review of Cloud Native Patterns, but instead it’s a journal of how I’ve applied some of what I’ve learned.
There have been many times that I’ve declared Popple to be a completed project, but it’s continued to prove itself a valuable playground for experimenting and learning new-to-me ideas in both software development and ops. So, naturally, I chose to hack on Popple to get some hands-on experience with some of the concepts described in the book.
I decided to implement a health check capability into my Discord bot. Its uptime is totally unimportant, but it was still fun to do.
In terms of monitoring the Discord bot, there were a few options:
I chose the second option. I found it compelling because the model of pushing a ping from my host to the monitoring API didn’t require me to punch a hole in my host’s firewall so that the monitoring API could scrape the health check endpoint. It’s also free, but it’s worth noting that when I played around with updown.io’s price estimators that I found it to be very inexpensive (on the order of cents per year for my use case).
I’m willing to bet that many Go programmers have seen or used this strategy for enumerating things in code before:
type Profession int
const (
Unknown Profession = iota
Warrior
Cleric
Hunter
Mage
)In practice, this is probably fine. In fact, I can’t think of a time this has caused a (known) bug in one of my programs (yet.) Famous last words.
However, there are times where I wish the solution was a little more bulletproof at compile-time.

I like virtualization and I want an always-on server to continue to learn and experiment with the KVM virtualization ecosystem.
Looks big and loud. Most of the used gear at my price point seemed kind of old, too. And besides, if this ever stops being a hobby for me, I can just throw a video card in this (if such a mythical thing can ever be found again) and find it a new home.
The QEMU developers recently merged Apple Silicon support for Apple’s Hypervisor.Framework virtualization layer. This means that barring any complications or removals, the next release tag for QEMU should include this support.
I’ve written previously about Booting Cloud Images with QEMU. However, I’ve since graduated to a more convenient method of spawning virtual machines. This method is also much faster and is more cohesive with the rest of the virtualization stack that you’ll find on your Linux distribution. As someone who creates and tears down tons of virtual machines for testing things, this method appeals to me more than the previous. Let’s get into it.
I’ve been having a lot of fun lately refining a weekend project I started a few months ago. I basically threw this bot over the wall back in early April. About a month ago, I started getting serious about learning the Go programming language, so I thought I’d just revisit my Discord bot with a more “learned” eye and find ways to polish it up a bit.
Popple is a Discord bot that I made for myself and my friends, and it has been my playground for practicing everything I was learning in a project with an extremely small blast radius. Actually, the blast radius is both small and sympathetic, since most of my friends in that server are software developers too; so it was easy to laugh about whatever bugs that had made it into the running version of the bot.