¬ 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
Tech. Geopolitics. 2026 is terrifying. 2026 is exciting. Both can be simultaneously true. You can both like and dislike the current state of affairs (yes, this includes LLMs), but your individual stance won’t change the pace in which the...
TIL: A few keybindings from Ghostty. Assuming macOS. This list contains the keyboard shortcuts I tend to use weekly (or daily). No point in including an exhaustive list. Cmd + d: split right Cmd + Shift + d: split down Cmd + Shift + p:...
The first time I heard about Architectural Decision Records (ADRs) was with George Fairbanks (GHF) and Titus Winters in an internal training for software engineers at Google Canada. The concept has reasonated with me: An Architectural...
Problem statement: watch -- git diff / watch -- git status should emit colors. Yet it doesn’t. watch(1): NAME watch - execute a program periodically, showing output fullscreen SYNOPSIS watch [option ...] command DESCRIPTION watch runs...
After starting a coding session on the web with Claude Code on Web1, you can resume it in the terminal with the traditional Claude Code CLI app by running claude --teleport. Without arguments, it prompts you to interactively choose an...
My shell prompt displays the git branch my repository has currently checked out: thiago.perrotta perrotta.dev git:master? ❯ Problem statement: augment that prompt to signal whether we’re inside a checked out git worktree. This is helpful...
Previously. The best quality-of-life improvement for Ghostty I added in 20251: add the following keybindings to your Ghostty config: # native: Cmd + Shift + d keybind = cmd+shift+-=new_split:down # native: Cmd + d keybind =...
Previously. Stay up-to-date with the Claude Code CHANGELOG. Did you know it’s possible to obtain a RSS feed straight from a github repo? The Claude Code github repository: https://github.com/anthropics/claude-code/releases Its feed:...
These are great collections: https://github.com/ykdojo/claude-code-tips https://adocomplete.com/advent-of-claude-2025/ New tips to me: /rename to set a session name, like you would with a tmux window. Later on, resume the session with...
Previously. If we can stash untracked files (git stash -u), should we be able to git diff untracked files? Naturally, diffing an untracked file would output the entire file contents. Still, this can be desirable sometimes. When reviewing...
Last week LogSeq was super slow on my Mac, it was pretty much unusable. I had to manually kill its process multiple times as it kept freezing. Eventually I figured out the issue: Then iCloud is the cause for the slowness. This is a known...
Previously. Whenever the LLM is too confident after performing some work: Prompt: Anything else you may have missed? Repeat a few times in a row. It is non-deterministic, it’s not idempotent. — § —Reply via email#ai #dev
I just wrote this post about neovim and git hunks. In it I mentioned various git repositories, but did not link to them whilst writing the post. Ah, these lazy engineers. Why not ask the LLM to link to them for me, especially because...
What is a hunk? When comparing two files, diff finds sequences of lines common to both files, interspersed with groups of differing lines called hunks1. There are various ways to treat git hunks as first-class citizens, manipulating them...
When using Amp Code (a CLI coding agent), sending two messages in a row results in the second message interrupting the first. Most other agents (e.g. Claude Code, OpenAI Codex, Google Gemini) support message queueing by default, wherein...