Posts
Terminal setup - 2026
Following on from my list of favourite CLI tools, I thought I would walk through my whole terminal setup. My configs are linked at the end of this article.
Fixing Discord Alerts on kube-prometheus-stack
My Alertmanager Was Silently Dead for Two Days: Fixing Discord Alerts on kube-prometheus-stack
Managing Talos machine config with patches, mise and hunk
My homelab cluster, portland, is three Dell OptiPlex 7060 Micros running Talos Linux. All three are control-plane nodes that also run workloads. Everything inside Kubernetes is GitOps'd through Argo CD, but the Talos machine config underneath it was... not. I'd been changing nodes with talosctl patch machineconfig, one patch at a time, and slowly losing track of what was actually on each box.
Intercepting iOS App Traffic with mitmproxy CLI & Web UI Guide
Intercepting HTTP(S) traffic from a real iOS device is a powerful way to understand what your app (or any third‑party app) is sending and receiving—without Xcode, without re‑signing, and without touching a simulator. This guide provides a streamlined setup process and covers both the command‑line interface (CLI) and the Web UI (mitmweb) for capturing, filtering, and modifying your mobile traffic.
Switching themes automatically in Neovim
We're going to be using Catppuccin and this setup is generally for MacOS but this idea will work on Linux too. On macOS, you can run this shell command in Lua to get the current system appearance:
Connecting to Forticlient in Omarchy with openfortivpn
I have found a love for window tile management whether that be Aerospace for MacOs or Hyprland for Arch. They suit my workflow especially on a large 32" screen, I have been playing with Omarchy An opinionated Arch + Hyprland Setup by DHH
Attempting to Master Vim Motions
I am not a professional developer, but I am a hobbyist one, who knows what the future holds. As a Lead Solution Engineer, I do get to tinker with code in my day-to-day. But it's not my main role, more of a side quest. However, outside of my role I do love to tinker with code and homelabbing. Before I became a Solution Engineer, I spent some time in IT, which meant a lot of time in the terminal.
Supercharge your API workflow with Kulala in Neovim
If you're a developer like me who lives in Neovim and frequently works with APIs, you've probably bounced between different tools for testing HTTP requests. Maybe you've used Postman, httpie, or curl commands scattered across your terminal history. But what if I told you there's a better way—one that keeps you in your favorite editor and treats your API requests as code?
Why you need CROSS JOIN with an UNNEST in Trino
If you've worked with arrays or delimited strings in Trino, you've probably encountered the need to "explode" them into separate rows. This is where UNNEST comes in. But there's a catch: unlike some other SQL databases, Trino requires you to use CROSS JOIN UNNEST rather than just UNNEST in your SELECT clause. Let's explore why.
Ah moment when using slices in Go!
The slices package defines various functions useful with slices of any type. Below are some small examples I came across today. I wanted to see how I could remove a string from a slice. Below I have a slice called names.