¬ 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
♠ Previously. Problem statement: preserve Logseq’s task syntax while opening the same markdown files in Obsidian. My migration script originally converted every task into Obsidian’s checkbox syntax: - TODO buy milk -> - [ ] buy milk -...
♠ Today I learned: pi 0.82.1 cannot change its working directory mid-session. The interactive shell syntax looks tempting, but ! and !! run commands in a child process. cd ends with that process; Pi keeps the session’s original cwd....
♠ I found drskill through Drew Breunig’s post about managing an agent’s loadout. Problem statement: lint skills bundled in a Claude Code plugin with drskill. Running it through uvx is easy enough: % uvx drskill scan --detailed drskill...
♠ Problem statement: block destructive shell commands issued by pi without resorting to grepping shell source with regular expressions. My first guard was a direct port of an older hook in Claude Code: const BLOCKED_COMMANDS:...
♠ Problem statement: ctrl+d in pi took several seconds to quit. The culprit was pi-memory’s session_shutdown handler. It sent one last LLM request to summarize the session, wrote its answer to the daily log, then ran qmd update. Pi...
♠ Problem statement: pin pi npm packages without giving up convenient updates. My settings.json used to leave some package versions unpinned, until now: "npm:@heyhuynhgiabuu/pi-diff@0.7.6", - "npm:@tifan/pi-recap", -...
♠ Previously. The Anki official docs do not provide explicit instructions about the archival of decks that are no longer needed. Archiving is better than deleting because you never know when you may need a deck again. One way to archive...
♠ Problem statement: using pi, install an extension (package) as an one-off, without persisting it, for the sake of test-driving it, akin to pre-commit try-repo. Solution: % pi --help [...] --extension, -e <path> Load an extension file...
♠ Problem statement: in Obsidian, out-of-the-box, typing * at the start of a new line emits *|* (an empty bold pair, cursor in the middle) instead of starting a bullet point. The culprit is Settings → Editor → Auto pair Markdown syntax....
♠ Previously. Problem statement: mid-task, I want to ask the LLM agent a quick tangential question — “will this change cause downtime?” — without polluting the main agent thread. Claude Code has /btw1 for exactly this. pi doesn’t, but...
♠ Previously. Problem statement: sometimes a prompt in pi just hangs, as if the network dropped. It never recovers on its own — I have to hit Esc and re-prompt. It’s 2026, this symptom should be self-recoverable. Pi already has...
♠ Previously. Problem statement: pi binds ctrl+p to app.model.cycleForward1 by default, but has no default binding to cycle backward other than shift+ctrl+p, which is arguably difficult to remember. Every keybinding in pi is namespaced...
♠ Previously, previously. Problem statement: adopt caveman in pi. Pi isn’t one of the 30+ agents caveman auto-detects. The install matrix (INSTALL.md) lists agent detection rules one by one — claude, cursor, windsurf, opencode, openclaw,...
♠ Previously. Problem statement: LogSeq v2 is moving its graph format from markdown files to a sqlite database: What’s New with Logseq DB — May 16th 2026 Big update: Logseq is splitting into two versions This is not OK for my workflow....
♠ The recently released Apple Sports app was surely a great way to keep up with the World Cup on the go. It is very polished; it does one thing, and does it well. Simple yet effective. I do recommend it. It’s especially handy when you’re...