gorelease; Abusing Remotely Hosted DuckDB Databases On The Command Line For Fun And Full Text Search
gorelease

So, I intended to cover this as a “success story’, since I was hoping it would simplify my attempts to churn out cross-platform releases of Go projects for the Drop (et al.). However, I kept getting stuck on the Windows build and just ran out of time to debug it. It looks way more promising than my janky Justfile setup, and I had some of this written already, so let me drop that here, and make time in future Drop for some more praise once I get it all working.
GoReleaser is a super neat open-source tool designed to streamline the release process for Go projects across multiple platforms. It handles (if you are not inept, like I seem to be) the complex task of building and deploying software for various operating systems including Windows, macOS, and Linux.
The tool supports numerous distribution formats and package managers. It can create Homebrew formulas, Nix packages, Linux packages, DMGs for macOS, MSIs for Windows, Docker images, archives, and Snap packages. Additionally, it includes modern software supply chain features like SBOM generation, code signing, and notarization capabilities.
The CLI seamlessly integrates with major code hosting platforms like GitHub, GitLab, and Gitea. It automatically generates changelogs and can broadcast releases through various communication channels including social media, Slack, and Discord.
The tool has gained significant traction, with notable users including Google, GitHub, Amazon, Microsoft, Hashicorp, Shopify, Datadog, and Uber.
I know others have it working well in a CGO-required environment, so it is likely just a matter of reading a bit more for me to get it right. Check back for an update!
Abusing Remotely Hosted DuckDB Databases On The Command Line For Fun And Full Text Search

While the previous version of this worked fine, folks rightfully were a tad dismayed at the GIANT WASM DOWNLOAD SIZE just to read my blatherings in that way.
I had wanted to build a CLI version of this, so I took a stab at a first cut of it in Go. The TUI is not going to win any awards, but it’s enough of a foundatiaon to build on and make more generic. That is, I think it’s pretty common to have posts in markdown with some structure, and if I can spend a tiny bit more time on the side that created the DuckDB FTS database and way more time on this viewer/searcher CLI, this could become a generic way to have a good reading/research experience for various types of information.
One thing I had to figure out is that DuckDB returns arrays as []interface{} in Go, which required a custom type:
type DuckDBArray []interface{}
func (a DuckDBArray) Value() (driver.Value, error) {
return json.Marshal(a)
}
func (a *DuckDBArray) Scan(value interface{}) error {
switch v := value.(type) {
case []interface{}:
*a = v
return nil
default:
return fmt.Errorf("unsupported type for DuckDBArray: %T", value)
}
}
I want to eventually use all of the salient Charmbracelet UX libraries for the TUI, but they do require some up-front work, so I relied the Go stdlib tabwriter package, which provides clean columnar output. I did incorporate Charm’s markdown viewer, so reading the Drop posts should be easier on the eyes than they might otherwise be at a terminal (ref. section header).

The CLI paginated like the web app, but this version also is a tad more efficient when it comes to fetching the actual post content.
You can find the code up at Codeberg where I also have pre-built releases for Windows, Linux, and macOS.
FIN
We all will need to get much, much better at sensitive comms, and Signal is one of the only ways to do that in modern times. You should absolutely use that if you are doing any kind of community organizing (etc.). Ping me on Mastodon or Bluesky with a “🦇?” request (public or faux-private) and I’ll provide a one-time use link to connect us on Signal.
Remember, you can follow and interact with the full text of The Daily Drop’s free posts on Mastodon via @dailydrop.hrbrmstr.dev@dailydrop.hrbrmstr.dev. ☮️
Leave a reply to Drop #625 (2025-03-20): I’ll Be RFCing You In All The Old Familiar Standards – hrbrmstr's Daily Drop Cancel reply