Cli

calcdate: date arithmetic that doesn't make you cry

A Go CLI for date math, range generation, and timezone conversion with a readable expression syntax

Every shell scripter has, at some point, googled “date subtract day mac” or “GNU date macOS BSD difference” and wished they hadn’t. The date command is one of the most platform-fragmented tools in any Unix toolbox: GNU date and BSD date disagree on basically every flag that matters. And once you’ve worked out the syntax for “yesterday,” you still need to do something useful with it — like generate a range of timestamps for a backfill, or compute end-of-month, or skip weekends.

I got tired of this. So I wrote calcdate. Same binary on Linux, macOS, anywhere. One expression syntax. Version 2 just landed and the syntax is now genuinely pleasant to use.

Tools golang cli shell

gini: a no-fuss CLI for editing INI files

A small Go utility to read, write and delete keys in INI files from shell scripts

INI files refuse to die. Samba, PHP, Git, MySQL, half of /etc — they’re everywhere, and editing them from a shell script is annoying enough that people reach for sed, regret it, and then write a much worse bug. gini is the tiny tool I wrote so I could stop doing that.

Tools golang ini cli

gitlab-token-expiration: stop getting surprised by expiring GitLab tokens

A CLI that lists every expirable token across your GitLab projects, groups, and personal account so you can plan rotations

GitLab access tokens expire. Project tokens, group tokens, personal access tokens — all of them. The trouble is that the expiration dates live in different corners of the UI, and you usually find out one expired the morning a CI pipeline mysteriously starts failing.

gitlab-token-expiration is the small tool I wrote to never have that morning again.

Tools gitlab security cli

gocrypt: a tiny AES-GCM file encryption CLI

A small Go command-line tool to encrypt and decrypt files with AES-128 or AES-256 in GCM mode

Sometimes you just need to encrypt a file. Not set up a key management system, not learn the gpg command line again, not pull a heavy dependency — just turn secrets.txt into secrets.bin with a key you control. That’s the niche gocrypt fills for me.

Tools golang encryption aes

httping-go: ping, but for HTTP endpoints

A tiny Go CLI that hits a URL on a loop and prints status code, response time and size — the HTTP equivalent of ping

When a service starts misbehaving, my first reflex is ping. It tells me almost instantly whether the box is up, whether latency is sane, and whether anything weird is going on at the network layer. The trouble is that for HTTP services, ping answers the wrong question. The host can answer ICMP just fine while the application returns 502s every other second.

httping-go is my Go take on the classic httping idea: a tiny CLI that hits a URL on a loop and prints status code, latency and response size. It’s the tool I reach for when I want a quick, continuous feel for how an HTTP endpoint is behaving.

Tools golang http monitoring