¬ 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.
August 2026
September 2026
October 2026
Top Words
- claude
- code
- reply
- github
- commit
- homebrew
- script
- shell
- anki
- update
- atuin
- pull
All posts (411)
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. This is fun! And eye-opening. — § —Reply via email#gaming #serenity %commentary
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 Code reads skills from a marketplace, which is essentially a git repo with a...
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 compressed communication style: drops articles, filler words, and pleasantries...
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 match/: % espanso edit corp Editing file:...
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? macOS doesn’t do that — the keyboard decides to sleep, not the host. Install a...
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 .pre-commit-config.yaml files to point at it: - repo: https://github.com/<org>/pre-commit-hooks rev:...
My switch-to-default git alias had been trying branch names in order: switch-to-default = !git switch --force main 2>/dev/null \ || git switch --force master 2>/dev/null \ || git switch --force $(git symbolic-ref refs/remotes/origin/HEAD \ | sed 's@^refs/remotes/origin/@@') It works, but it’s trial-and-error....
RFC: What is Stop Energy? by Dave Winer: Suppose someone, call him Mr. A, has an idea that he believes is ready to deploy, or is requesting comments as he is getting ready to deploy. So he posts an RFC, usually on a mail list or a website, in the hope that people will spot a problem and help him figure out a...
Just ask! Just do it™: […] So, to summarize, don’t ask “Any Java experts around?”, but rather ask “How do I do {problem} with Java and {other relevant info}?” Previously. — § —Reply via email#serenity
I’ve been drawing a line for ages here. My AI usage policy, quoting Derek Sivers: I have never ever used AI to generate text in place of my “voice”. […] nothing claiming to be written by me is written by an AI. Likewise, I said. Then in “new blog post via Claude Code” I held the line one more time: the LLM...
Problem statement: A cronjob refreshes an image-pull secret in every namespace so nodes can authenticate to a private registry. It does the obvious™ thing: delete the old secret, then create the new one right away: kubectl delete secret --ignore-not-found aws-ecr-token -n "$namespace" kubectl create secret...
The Master wakes to a pager. Coffee is ready. Apprentice: “Master, who created the drift?” Master: “Which drift?” Apprentice: “The bucket tag — live state ≠ terraform config in git.” Master: “Show me the chain.” They follow: pipeline → cronjob → github actions container → terraform CI bot → github pull request →...
Page 10 of 35