<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Posts on Widgita</title><link>https://widgita.xyz/posts/</link><description>Recent content in Posts on Widgita</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 21 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://widgita.xyz/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Dissonance Fatigue, Or Why "Being Aware of the Gap" Is Itself Exhausting</title><link>https://widgita.xyz/posts/2026/04/dissonance-fatigue-or-why-being-aware-of-the-gap-is-itself-exhausting/</link><pubDate>Tue, 21 Apr 2026 00:00:00 +0000</pubDate><guid>https://widgita.xyz/posts/2026/04/dissonance-fatigue-or-why-being-aware-of-the-gap-is-itself-exhausting/</guid><description>&lt;p&gt;I stumbled on a term the other day - &amp;ldquo;dissonance fatigue&amp;rdquo; - and the more I read about it, the more it clicked into place for a feeling I&amp;rsquo;ve had on and off for years without ever having a name for it. I don&amp;rsquo;t think I&amp;rsquo;ve seen a tidier description of &lt;em&gt;that specific flavour of tiredness&lt;/em&gt; you get when nothing in particular is wrong, but you&amp;rsquo;re quietly aware that you&amp;rsquo;re not quite the version of yourself you&amp;rsquo;d like to be. So I went down a bit of a rabbit hole, and I want to write it down while it&amp;rsquo;s fresh, mostly for myself, but also because I suspect a few other people will recognise the shape of it.&lt;/p&gt;</description></item><item><title>Voice Notes to Obsidian, via iCloud, rclone, Modal, and WhisperX</title><link>https://widgita.xyz/posts/2026/04/voice-notes-to-obsidian-via-icloud-rclone-modal-and-whisperx/</link><pubDate>Tue, 21 Apr 2026 00:00:00 +0000</pubDate><guid>https://widgita.xyz/posts/2026/04/voice-notes-to-obsidian-via-icloud-rclone-modal-and-whisperx/</guid><description>&lt;p&gt;I think out loud. That has always worked better for me than sitting in front of a blank page, which means I end up with a lot of &lt;a href="https://www.openplanetsoftware.com/just-press-record/"&gt;Just Press Record&lt;/a&gt; voice memos sitting on an iPhone - a few seconds at a time, sometimes a two-hour walking monologue, rarely anything in between. They sync to iCloud, and then nothing happens to them. I have yet to voluntarily scrub through a ninety-minute audio file to find the one sentence I cared about at minute 43.&lt;/p&gt;</description></item><item><title>Immich, or How I Stopped Taking Google Photos as the Truth</title><link>https://widgita.xyz/posts/2026/04/immich-or-how-i-stopped-taking-google-photos-as-the-truth/</link><pubDate>Mon, 20 Apr 2026 00:00:00 +0000</pubDate><guid>https://widgita.xyz/posts/2026/04/immich-or-how-i-stopped-taking-google-photos-as-the-truth/</guid><description>&lt;p&gt;I&amp;rsquo;ve been a Google Photos user for the better part of a decade, and for most of that time I made peace with the trade-off: Google gets to look at every photo I take, in exchange for &lt;em&gt;all of my photos automatically backed up, searchable, and accessible from anywhere&lt;/em&gt;. That trade-off felt fine in 2016. It feels less fine now. The free tier got worse, the AI features got noisier, and every so often I&amp;rsquo;d notice another &amp;ldquo;just check that this is the right person&amp;rdquo; prompt and remember that Google has been quietly building a face graph of everyone I&amp;rsquo;ve ever photographed.&lt;/p&gt;</description></item><item><title>noise.widgita.xyz - A Noise Map With Sliders You Actually Want</title><link>https://widgita.xyz/posts/2026/04/noise.widgita.xyz-a-noise-map-with-sliders-you-actually-want/</link><pubDate>Mon, 20 Apr 2026 00:00:00 +0000</pubDate><guid>https://widgita.xyz/posts/2026/04/noise.widgita.xyz-a-noise-map-with-sliders-you-actually-want/</guid><description>&lt;p&gt;I wanted a &amp;ldquo;how noisy is this neighbourhood, roughly?&amp;rdquo; map that I could pull up before picking a short-term rental, before agreeing to view a flat, or just out of curiosity when walking somewhere new. There are a few of these around, but they all either (a) hide the interesting bit behind an account, (b) are locked to one country, or (c) are essentially a screenshot of a PDF pretending to be a web map. I wanted something that loads instantly, works globally, respects my data, and lets me &lt;em&gt;see&lt;/em&gt; the trade-off between &amp;ldquo;noisy road&amp;rdquo; and &amp;ldquo;quiet rail&amp;rdquo; without squinting.&lt;/p&gt;</description></item><item><title>A CUDA Occupancy Calculator You Can Just Pull Up</title><link>https://widgita.xyz/posts/2026/04/a-cuda-occupancy-calculator-you-can-just-pull-up/</link><pubDate>Sun, 19 Apr 2026 00:00:00 +0000</pubDate><guid>https://widgita.xyz/posts/2026/04/a-cuda-occupancy-calculator-you-can-just-pull-up/</guid><description>&lt;p&gt;If you&amp;rsquo;ve ever tuned a CUDA kernel, you know the dance: pick a block size, count registers per thread (or let &lt;code&gt;nvcc&lt;/code&gt; tell you with &lt;code&gt;--ptxas-options=-v&lt;/code&gt;), figure out how much shared memory you&amp;rsquo;re using, and then work out how many of those blocks can actually live on an SM at once. NVIDIA used to ship a spreadsheet for this - it was great, but a spreadsheet is exactly the friction I don&amp;rsquo;t want when I&amp;rsquo;m halfway through optimising a kernel and just want a quick &amp;ldquo;is the limiting factor &lt;em&gt;registers&lt;/em&gt; or &lt;em&gt;shared memory&lt;/em&gt; here?&amp;rdquo; answer.&lt;/p&gt;</description></item><item><title>A JWT Decoder That Doesn't Phone Home</title><link>https://widgita.xyz/posts/2026/04/a-jwt-decoder-that-doesnt-phone-home/</link><pubDate>Sun, 19 Apr 2026 00:00:00 +0000</pubDate><guid>https://widgita.xyz/posts/2026/04/a-jwt-decoder-that-doesnt-phone-home/</guid><description>&lt;p&gt;Every now and then I need to peek inside a JWT - debugging an auth flow, sanity-checking what scopes a CI service account actually has, or figuring out &lt;em&gt;why&lt;/em&gt; a token is being rejected at 23:00 the night before a release. And every time, I&amp;rsquo;d catch myself reaching for whatever JWT decoder Google surfaced first, pasting in a token, and then immediately feeling slightly icky about it. That token might be a service credential. It might still be valid for another six hours. And I just handed it to some random subdomain.&lt;/p&gt;</description></item><item><title>Automated Folder Watching</title><link>https://widgita.xyz/posts/2026/04/automated-folder-watching/</link><pubDate>Sun, 19 Apr 2026 00:00:00 +0000</pubDate><guid>https://widgita.xyz/posts/2026/04/automated-folder-watching/</guid><description>&lt;p&gt;I used file watching loops for almost my entire career (professionally and personally). It&amp;rsquo;s always been a &lt;code&gt;for&lt;/code&gt; loop or &lt;code&gt;os.walk&lt;/code&gt; or similar (C/C++/Python/SBCL/&amp;hellip;), and it was always lots of boilerplate code. Not difficult, just a bunch of lines to maintain and make sure they catch all corner cases.&lt;/p&gt;
&lt;p&gt;While setting up this blogging pipeline (thank goodness I can just concentrate on the &lt;em&gt;typing&lt;/em&gt; part and deployment happens automagically) I got to learn about gorakhargosh&amp;rsquo;s &lt;code&gt;watchdog&lt;/code&gt; Python library. You should totally check out &lt;a href="https://github.com/gorakhargosh/watchdog"&gt;their GitHub page&lt;/a&gt; for the project! It&amp;rsquo;s a bit dated, but does the job perfectly fine!&lt;/p&gt;</description></item><item><title>Converting Between JSON, YAML, and TOML Without the Awkwardness</title><link>https://widgita.xyz/posts/2026/04/converting-between-json-yaml-and-toml-without-the-awkwardness/</link><pubDate>Sun, 19 Apr 2026 00:00:00 +0000</pubDate><guid>https://widgita.xyz/posts/2026/04/converting-between-json-yaml-and-toml-without-the-awkwardness/</guid><description>&lt;p&gt;Half my life as an engineer is moving things between configuration formats. A Helm chart wants YAML, the Rust crate wants TOML, the GitHub Action wants YAML again (but a slightly different dialect, naturally), and the thing I&amp;rsquo;m shipping it all into wants JSON. I always end up doing one of two things: opening some random web converter and pasting in a config that probably contains internal hostnames, or writing a five-line Python snippet that I&amp;rsquo;ll write again next week because I never bother to save it.&lt;/p&gt;</description></item><item><title>How Much Will Serving This LLM Actually Cost?</title><link>https://widgita.xyz/posts/2026/04/how-much-will-serving-this-llm-actually-cost/</link><pubDate>Sun, 19 Apr 2026 00:00:00 +0000</pubDate><guid>https://widgita.xyz/posts/2026/04/how-much-will-serving-this-llm-actually-cost/</guid><description>&lt;p&gt;The question I get asked most often when someone wants to ship an LLM-powered feature is, basically, &amp;ldquo;okay but what&amp;rsquo;s this going to cost?&amp;rdquo; And the honest answer is &lt;em&gt;it depends on a lot of things you haven&amp;rsquo;t decided yet&lt;/em&gt;: which model, what precision, how many tokens per request, how many requests per second at peak, whether you self-host or pay an API provider per token, and whether you can tolerate the cold-start of a serverless GPU. Most of those have order-of-magnitude effects, so a back-of-envelope number can be off by 10x in either direction.&lt;/p&gt;</description></item><item><title>Posting Pipeline All Set Up</title><link>https://widgita.xyz/posts/2026/04/posting-pipeline-all-set-up/</link><pubDate>Sun, 19 Apr 2026 00:00:00 +0000</pubDate><guid>https://widgita.xyz/posts/2026/04/posting-pipeline-all-set-up/</guid><description>&lt;p&gt;Welcome to Widgita. This first post confirms that the Hugo pipeline picks up
Markdown straight from my Obsidian vault and deploys it to my blog.&lt;/p&gt;
&lt;p&gt;I always wanted to try out this level of automation, and I love the fact that it integrates well with my favourite tools.&lt;/p&gt;
&lt;p&gt;This blog will be my personal scratchpad for any experiments, tryouts, developments, projects, etc. that I do. Mainly for my half personal/half professional growth; and maybe someone else finds interesting crumbs of knowledge, tooling links, or inspiration in it.&lt;/p&gt;</description></item><item><title>Stop Second-Guessing Cron Expressions</title><link>https://widgita.xyz/posts/2026/04/stop-second-guessing-cron-expressions/</link><pubDate>Sun, 19 Apr 2026 00:00:00 +0000</pubDate><guid>https://widgita.xyz/posts/2026/04/stop-second-guessing-cron-expressions/</guid><description>&lt;p&gt;Cron is one of those things I&amp;rsquo;ve been using for twenty-odd years and still occasionally stare at for thirty seconds before committing. Is &lt;code&gt;*/15 9-17 * * 1-5&lt;/code&gt; what I think it is? Does &lt;code&gt;0 0 * * 0&lt;/code&gt; fire at midnight Sunday or Monday? And does that depend on the box&amp;rsquo;s timezone or UTC? Most of the time you can squint and reason your way through it, but &amp;ldquo;most of the time&amp;rdquo; is exactly the kind of confidence level you don&amp;rsquo;t want when the cron in question is the nightly DB backup.&lt;/p&gt;</description></item></channel></rss>