Posts
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.
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.
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.
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.
Convert openssh keys to rsa keys
Convert openssh keys to rsa keys
Convert openssh keys to rsa keys
from something that starts with
-----BEGIN OPENSSH PRIVATE KEY-----
to something that starts with
-----BEGIN RSA PRIVATE KEY-----