Golang

A 4-post collection

Hard Lemonade: Three Fixes to Get Local AI Pouring on AMD

By Matthew Hunter |  Jun 23, 2026  | ai, lemonade, olla, amd, rocm, open-source, golang

Running a local LLM server is the easy part. Getting three separate pieces of infrastructure to agree that a model is downloaded, reachable, and worth waiting for is where the afternoon goes. Over the past two weeks I shipped three fixes across two open-source projects to get AMD’s Lemonade serving models behind the Olla proxy on my Strix Halo box. None of them was hard in the algorithmic sense – the diffs are a struct field, a config key, and a prepended path. They all came out of the same goal: point Olla at Lemonade on a Radeon and get a chat completion back.

Continue Reading...

ghtraffic

By Matthew Hunter |  Jun 19, 2026  | github, analytics, homelab, golang, umami, postgres, docker

GitHub’s traffic API gives you 14 days of view and clone data per repository. After that, it’s gone. If you want a longer historical record of how your open source projects are performing, you have to collect the data yourself before the window closes.

ghtraffic is a small Go tool that solves this problem. It queries the GitHub traffic API for every repository you have push access to – including organization repos – and writes newline-delimited JSON to stdout, one record per repo per day. Run it hourly via cron and append to a local file, and you accumulate a permanent historical record.

Continue Reading...

dicta

By Matthew Hunter |  Jun 17, 2026  | linux, wayland, voice, dictation, accessibility, golang

Speech-to-text is one of the few accessibility tools where Linux still lags. The options that exist tend to want a commercial cloud API, a Python toolchain with GPU model files, or an X11 session – and often all three. I wanted something that runs as a single static binary on Wayland, talks to whatever ASR backend I already have, and doesn’t listen until I tell it to.

dicta is that: a Linux/Wayland voice dictation daemon written in pure Go. No always-on microphone, no wakeword, no push-to-talk. Capture starts when you press a key and stops when the session ends.

Continue Reading...

math-mcp: Giving LLMs a Calculator That Knows It's a Calculator

By Matthew Hunter |  May 10, 2026  | mcp, claude-code, golang, math, finance, statistics

LLMs do arithmetic in their heads. Mostly they’re close. Occasionally they’re off by enough to matter – a mortgage payment that’s $90 too high, an opportunity-cost claim that’s understated by 10%, a loan payoff term that ignores the interest still accruing while you pay it down. The model doesn’t know which case it’s in. Neither do you, unless you check.

math-mcp is a small MCP server that gives the model somewhere else to send those questions. It exposes ~55 discrete tools: Go’s math standard library, gonum’s statistical aggregates, and razorpay/go-financial’s time-value-of-money functions, each wrapped as its own tool so the LLM picks them out of its tool list by name and calls them directly. One tool per function, no expression evaluator. The point is to make “I should not estimate this” the easy path.

Continue Reading...