Posts

gitlab-backup: Back Up and Restore GitLab Projects from the Command Line

A CLI tool to back up and restore GitLab projects or groups, with S3 support, hooks, and concurrent exports

gitlab-backup: Back Up and Restore GitLab Projects from the Command Line

Source code: github.com/sgaunet/gitlab-backup

When you self-host GitLab or rely heavily on gitlab.com for your projects, having an independent backup strategy is essential. GitLab’s own backup mechanism works well at the instance level, but sometimes you need something more surgical: back up a single project, or an entire group, on demand, and store the result locally or in S3. That’s what gitlab-backup does.

DevOps gitlab backup cli

perplexity-go: a Go library for the Perplexity API

A lightweight, idiomatic Go client for Perplexity AI — chat completions, the Search API, and a few notes from the maintainer

I’ve been maintaining perplexity-go for a while now — a small Go client for the Perplexity AI API. It started as scratching my own itch (I needed a CLI to query Perplexity from scripts) and grew into a library I now reach for whenever a Go project needs real-time, cited answers from the web.

This post is a tour of what it does, why it exists, and how to use it.

Golang golang perplexity ai

My IP from the Internet's view (shell)

Quick shell one-liners to find your public IP address using curl, dig, and a few alternatives — no browser required

Sometimes you just need to know what IP address the rest of the internet sees when your machine reaches out. Maybe you’re configuring a firewall rule, troubleshooting a VPN, or verifying that traffic is actually leaving through the tunnel you think it is.

No need to open a browser. A terminal is enough.

ops linux shell networking

My Go Modules Toolbox

A curated list of Go libraries I use or plan to evaluate — covering resilience, web, SQL, concurrency, terminal UIs, testing, and more

A running list of Go modules I use or want to keep on my radar. Some I reach for daily, others I’m still evaluating. The Go ecosystem moves fast, so this post will keep evolving — treat it as a snapshot, not a manifesto.

Golang golang libraries modules

Go: Handling time.Now() in Tests

Forget time-mocking libraries — a single function field on your struct is all you need to make time deterministic in Go tests

Time-dependent code is one of the classic pain points in unit testing. A function that calls time.Now() produces a different value every run, and assertions become a moving target. There are popular packages to solve this — but you don’t actually need any of them. A few lines of plain Go are enough.

Golang golang testing time