¬ just serendipity 🍀

¬ just serendipity 🍀

Thiago Perrotta

Welcome to my digital garden – a space dedicated to exploring technology and sharing what I’ve been learning. This site reflects my passion for continuous learning and open-source software, wherein I document my journey, offer insights, and dive into miscellaneous topics that reflect my interest. My goal is to maintain a corner of the Web for self-expression focused on valuable, distraction-free content. I believe in the power of the Open Web as a platform for sharing knowledge.

Latest Posts

♠ Problem statement: given my miniflux server with hundreds of RSS feed subscriptions, add emoji country flags to each feed title, representing their country of origin and/or the country they’re associated with1. For example: Before: Not...
♠ Problem statement: a coding agent stops when it thinks it is done, not when the thing is actually done. /goal sets a condition that outlives the turn. The docs call it a wrapper around a session-scoped, prompt-based Stop hook: every...
♠ A serendipitous discovery: macOS continuity. Picture this: I am using my corp Macbook Pro, whilst my personal Macbook Air happens to be close by. Both of their lids are open. In my corp Macbook, for some reason, I decided to move the...
♠ Problem statement: I often type commit (only) what you changed in coding agent harnesses. Can I make an abbreviation out of it? Pi turns a Markdown file in ~/.pi/agent/prompts/ into a /slash command. This one gives me /commit: ---...
♠ Problem statement: Terrateam opens drift reports as GitHub issues, but terrateam plan only works on pull requests. The distinction is explicit in Terrateam’s issue comment handler: { primary = Primary.{ number = pull_request_id;...
♠ It’s about time: I added a books page to this blog with a sample of my favorites. ∎ — § —Reply via email#bestof #serenity
♠ Yours truly, more than two months ago: As of today, it’s not clear to me whether this approach will stick. Clearly this approach is here to stay: bloggify (40+ posts at the time of this writing). I am starting to ponder whether to...
♠ Previously. Problem statement: the @narumitw/pi-github-pr statusline entry reports much more than I care about: PR #123: checks failing (2), changes requested, 3 comments I want the clickable PR link and nothing else. Checks live in gh...
♠ Previously. CodeBurn shows Gen AI / LLM code usage: where did all the money burning tokens ($$) go? CodeBurn is a free, open-source, local-first tool that tracks AI coding token usage and cost across 41 tools and agents (Claude Code,...
♠ Previously. With the volume expanded, the next failure surfaced. The pod came up, served for 14 minutes, then hit a different wall: % kubectl -n monitoring get pod prometheus-...-prometheus-0 -o json | \ jq '.status.containerStatuses[]...
♠ Problem statement: a Prometheus pod crash-looped on a full 128GiB volume. I resized the Azure-managed disk to 256Gi in the Azure Portal (ClickOps) to no avail. The disk really was bigger: % az disk show -g my-cluster-k8s-nodes \ -n...
♠ Previously. Problem statement: migrate my English 🇬🇧 deck to dedicated note types with British English text-to-speech, without adding reverse cards. I created English Language Card 🇬🇧 with four fields (Front, Front Example, Back, and...
♠ Previously. Problem statement: post connections showed only direct links, while posts with the same tags remained disconnected in the graph of this blog. I added a second kind of edge. The pre-computation picks up to two posts with the...
♠ There’s no need for plan mode. Sandboxing + prompt engineering is enough. End your prompt with Devise a plan …and let the 2026 Gen AI models flow by themselves. Here’a a sample session: User: some of my blog posts e.g....
♠ Previously. Problem statement: notify a Slack channel whenever Freight finishes soaking in an upstream Kargo Stage, without promoting it to the next environment. A soak does not finish a process. Once requiredSoakTime elapses, Kargo...
Search Random