I have recently been frustrated by one thing: there is practically no library for caching singleton values. The thing is most caches are designed to keep a lot of things in one caching container. What if I did not need the key-value generic map? So I have decided to create one myself. This was not very painful, but I feel strange that practically no-one has done this before. Sincerely, I am writi
A common problem with a familiar shape: a process can dial outbound to the internet, but nothing on the internet can dial it back. Your dev server on a laptop. A service in a private VPC. A homelab app behind your router. A container in a pod with no ingress. Same shape every time — outbound works, inbound doesn't. rift is a small Go binary I built to solve that. Run it as a server on a VPS you ow
In the fast-paced world of continuous integration and deployment (CI/CD), managing sensitive information like API keys, tokens, and credentials—collectively known as secrets—is not just a best practice; it's a critical foundation for security and efficiency. GitHub Actions provides a robust framework for automating workflows, but a common friction point for many development teams, particularly tho
The Challenge of Scalable Secrets Management in GitHub Actions For development teams scaling beyond a handful of repositories, managing environment-specific variables and secrets in GitHub Actions can quickly become a significant bottleneck. The manual duplication of configurations across multiple repos, especially when dealing with distinct environments like development, staging, and production
TL;DR. golang.org/x/net/idna.Lookup.ToASCII runs UTS-46 NFKC mapping 0-9. A pre-IDNA net.ParseIP check rejects the NO_PROXY lists, TLS-SNI routers, and cookie-domain validators that TrimRight + ParseAddr golang.org/x/net/http/httpproxy, the canonical safe pattern, and two I ran into this one while writing a Go HTTP client for a private project. I idna.Lookup.ToASCII canonicalising the host The sha
Israel national security minister served gold death penalty noose birthday cake
I got tired of the same three-step content publish loop: write draft → open CMS → paste, format, re-paste, fight the rich-text editor, click publish. Repeat for every environment — staging, then production. For one article, fine. For a team publishing 20+ pieces a month? That workflow is a quiet tax on everyone's time. So I wired up a pipeline that cuts the loop entirely. You commit a .md file to
This isn't an anti-Go post. Go is a great language. This is about what I want to understand. I just finished building an L7 HTTP load balancer in Go. It accepts connections. It parses HTTP headers. It forwards requests to backend servers using round-robin. It handles concurrent connections with goroutines. It has health checks. It works. And somewhere in the middle of it working, I realized I didn