¬ 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

♠ This site respects your privacy by not containing ads, not using tracking cookies, and not collecting any personally identifiable information. — § —
♠ TIL: brew pin. For reasons to be elaborated in another post, I am currently prevented from upgrading LogSeq to its latest version in homebrew: % brew outdated [...] logseq (0.10.14) != 2.0.1 [...] LogSeq v2 introduces breaking changes...
♠ Typically: Step 1: buy a physical book — via Amazon, bookstores, classifieds marketplaces (e.g. Craigslist in the US, Kijiji in Canada, Kleinanzeigen in Germany). Bonus points for used copies. This should take up to a week. Step 2:...
Project Aces (from the Ace Combat series) has one of the best videogame OSTs ever. I am1 finally pleased2 to find their whole collection available on Spotify as of 2026. Previously, only a handful of them were available. No more fiddling...
Previously. Problem statement: I manage a few dozen repos via myrepos (mr), and I wanted a single command to show which ones have work in progress (“WIP”) — uncommitted changes, dirty staging area, stray branches and alike. I want...
Problem statement: a site / domain needs pop-ups for OAuth / logins, but I don’t want to disable Safari’s pop-up blocker globally just to appease a couple of domains. Safari lets one scope the exception on a per-site basis. The domain...
Previously. Problem statement: one of my skills, /pr-pass, was a hand-rolled loop — push, poll CI, fix a failure, re-push, repeat, bail after five iterations. It works quite well, and it’s one of my most used skills. That said, recently...
Today in AGI: two Claude agents, same annotation, opposite answers. I had a PR touching an ArgoCD PostSync hook. Ordering hooks within a phase needs an annotation, so I asked; Claude Code (Opus 4.8) and Claude in GitHub disagreed: Claude...
cmux is the best implementation I’ve seen for agent orchestrators apps like Conductor, T3 Code, Dux, and friends: Open source Ghostty-based macOS terminal with vertical tabs and notifications for AI coding agents. Built for multitasking,...
Welcome to Gerrymandle! Draw electoral district lines to win more seats than your opponents and win the election! Win the election for purple. Draw 5 districts of 6 populated tiles so that they win more districts than any other party....
Problem statement: my Claude Code skills lived in my .dotfiles, usable only on the machine that cloned them. I wanted them to be installable anywhere with one command, so that (for example) my teammates could easily adopt them. Claude...
Long Claude Code sessions eat a lot of context, fast. Each response injects tokens into the context window: prose-heavy replies burn through it faster than terse ones ($$). caveman is a Claude Code plugin that switches the model into a...
Previously. Problem statement: espanso edit corp opens a config file, but saving it doesn’t take immediate effect. At $DAILYJOB I keep a separate match file for work-specific snippets (“corp”). Espanso supports multiple match files under...
Problem statement: the Keychron K2 (C3, stock firmware) disconnects from macOS after ~10 minutes idle — and there’s no way to prevent it. I spent some time looking for a fix. The usual suggestions: Disable Bluetooth auto-sleep in macOS?...
Problem statement: prek can’t clone a repo: that lives in an internal (private) GitHub repo — https:// clone fails without credentials. I forked my personal pre-commit-hooks into an org-owned repo and updated all our...
Search Random