¬ 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

TIL via Adam Johnson: Zsh: select generated files with (om[1]) glob qualifiers […] In Zsh, we can avoid copying such generated filenames by using glob qualifiers, which are extra syntax you can add to filename globs in Zsh. Specifically,...
It’s 2026. Blogging to my static website from a laptop, with vim and markdown, with hugo build and git commit / git push is old-school. I can instead create blog posts via the Claude Code app. It already has access to my git repository....
Problem statement: you follow a blog author you like via RSS on miniflux, but you’re not interested in a subset of their posts. More specifically, you’re not interested in posts that match https://example.com/interview/paul-atreides....
Problem statement: Claude Code responses have been getting shorter lately. There’s been discussion on HN and a blog post about Claude Code being “dumbed down” with increasingly terse outputs. Before: After: Simply add "outputStyle":...
Goodness. Who asked for a feature to burn tokens? Orchestrate teams of Claude Code sessions: Coordinate multiple Claude Code instances working together as a team, with shared tasks, inter-agent messaging, and centralized management. Demo...
Previously. The tables turn: this time it was me who told Claude: You are absolutely right! — § —Reply via email#ai #serenity
TIL via Ashik Nesin: Claude Code now has support for /insights commands. […] When you run it, Claude Code will read your message history from the past month. It’ll summarize your projects, how you use Claude Code, and give suggestions on...
Skim.app: Skim is a PDF reader and note-taker for OS X. It is designed to help you read and annotate scientific papers in PDF, but is also great for viewing any PDF file. Installation is a breeze: shell brew install skim In addition to...
This is an exemplary situation illustrating why running a personal blog is simply much nicer than jumping the social media bandwagon. Comments received via email tend to be much higher-quality than social media replies. And I am not even...
Problem statement: make a slides presentation for a certain business or academic use case. Part I: What? Classic approach: pick one of: LibreOffice, Microsoft PowerPoint, Google Slides. Hipster approach: pick one of: Notion, Reveal.JS...
Open Source security in spite of AI by Daniel Stenberg1 (of curl fame): The title of my ending keynote at FOSDEM February 1, 2026. As the last talk of the conference, at 17:00 on the Sunday lots of people had already left, and presumably...
Problem statement: some CLI tools accept only a single file as an argument. Create a pre-commit local hook for them. A common workaround is to wrap it in a bash for-loop (.pre-commit-config.yaml): yaml repos: - repo: local hooks: - id:...
Dictate messages and documents on Mac: With Dictation, you can speak to enter text anywhere you can type it. […] Turn Dictation on or off On your Mac, choose Apple menu > System Settings, then click Keyboard in the sidebar. (You may need...
TIL via Victor Kropp: The light-dark() CSS function is a modern replacement for the prefers-color-scheme media feature query. As usual lately, the almighty Amp did all the heavy lifting to modernize this blog. One-shot prompting is still...
Clear /tmp at reboot on Alpine Linux via Chimo: By default, Alpine Linux doesn’t (completely) clear the /tmp directory on reboot (unless you mount it as tmpfs). If you would like to enable this feature, change “wipe_tmp” to “YES” […] My...
Search Random