-
Minimum Viable Solution Architecture
Recently at work, someone asked me why my team wasn’t creating detailed logical data models as part of their solution design. It seems quite simple to me – they don’t do it because nobody reads it. Most solution architecture documentation is out of date before it even gets logged in the architecture repository. Why do…
-
Using 1Password and direnv to store developer secrets
This is more notes to myself so i don’t forget. Goals: Benefits of 1Password: Initial set up 1. Install 1Password, 1password-cli, direnv. 1Password must be the direct download or Homebrew cask version, not the Mac App Store version as App Store enforces sandboxing. 2. Configure 1Password desktop app 3. Configure shell Add to ~/.zshrc. This…
-
Using Web Search with Claude Code API Billing
If you’re running Claude Code against your own API key or through a proxy instead of Anthropic’s native backend, you’ve probably noticed that the built-in WebSearch tool just doesn’t return results because it relies on a server-side API that only exists at Anthropic. Without web search, the agent cant research, so we built a self-hosted…
-
Using Claude Code for things that aren’t code – gardening
-
Auto-switching SSH keys for work repos
-
The effects of batch size and linger time on Kafka throughput
By default, Kafka attempts to send records as soon as possible, sending up to max.in.flight.requests.per.connection messages per connection. If you attempt to send more than this, the producer will start batching messages, but ultimately if you saturate the connection so there are unacknowledged message batches pending, the producer enters blocking mode. We can optimise the…
-
Using Claude Code for things that aren’t code – product comparisons
Claude Code is pretty amazing. It’s let me build prototypes and improve apps faster than I ever thought possible. But I was wondering – what else can it do? I’ve been using Emby for years, but recently I started to wonder what happened to Jellyfin, the project that forked Emby years ago. So i decided…
-
Fix: `Error: Cannot find module @rollup/rollup-linux-x64-gnu. npm has a bug related to optional dependencies` in CI
Although builds were succeeding locally, during CI builds were failing on Linux with the error Error: Cannot find module @rollup/rollup-linux-x64-gnu. npm has a bug related to optional dependencies. The log suggested removing package-lock.json – but this obviously breaks deterministic builds. The root cause is a missing dependency – specifically, when Rollup needs native binaries for…
-
Protocol level integrity guarantees in Kafka
I was recently asked to design a method to meet ITAC (IT Application Controls) standards for critical data flows in our organisation. ITAC are application-level controls looking mainly at how we ensure the completeness, accuracy and validity of transactions – for example, invoices or trades. Our control set is based on the ICFR principles, of…
-
How to: use custom / self-signed certificates with Requests in Python
In a previous post, I explained how to configure Azurite to use a self-signed certificate to enable OAuth authentication. One challenge with this method is that the Azure Python SDK will refuse to connect to azurite, reporting errors such as: This is because the the Azure SDK uses the Requests library, which in turn uses…
