<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"><channel><title>Jon Aquino's Mental Garden</title><description>Engineering beautiful software</description><managingEditor>noreply@blogger.com (Jonathan)</managingEditor><pubDate>Thu, 2 Apr 2026 23:37:45 -0700</pubDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">3791</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">25</openSearch:itemsPerPage><link>http://www.jona.ca/</link><language>en-us</language><item><title>Sources of beauty</title><link>http://www.jona.ca/2026/03/sources-of-beauty.html</link><author>noreply@blogger.com (Jonathan)</author><pubDate>Mon, 23 Mar 2026 08:46:00 -0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6637917.post-1011953333967068474</guid><description>&lt;p&gt;For future reference - Claude suggested these sources of beauty for me:&amp;nbsp;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;A photo of a beautiful landscape. A piece of classical art. Architecture. Nature photography. Music. A short poem. A daily saint’s image. My son's face at breakfast.&lt;/p&gt;&lt;/blockquote&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Using Claude Code to do my taxes</title><link>http://www.jona.ca/2026/03/using-claude-code-to-do-my-taxes.html</link><author>noreply@blogger.com (Jonathan)</author><pubDate>Sat, 7 Mar 2026 13:28:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6637917.post-6401418636172784233</guid><description>&lt;p&gt;I'm getting Claude Code to file my taxes using an online tax return tool. It's so great. The magic that lets this happen is the Claude Chrome extension, which Claude Code can access. And Claude Code has all of my tax slip pdfs and images.&lt;/p&gt;&lt;p&gt;It's painfully slow, but fortunately it doesn't stop/pause very often.&lt;/p&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Walmart cookie banner dark pattern</title><link>http://www.jona.ca/2026/02/walmart-cookie-banner-dark-pattern.html</link><author>noreply@blogger.com (Jonathan)</author><pubDate>Tue, 24 Feb 2026 10:05:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6637917.post-1885282112229798115</guid><description>&lt;p&gt;&amp;nbsp;This is so devious. Will Save Settings or Accept All accept all the settings you have chosen?&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQUj-nv562jiBWnfWwPd50PtmbhxilzYKpIT3AkxZNProSL9frzcbRdkZDMYD2mCEb0DygLNu4XWsSn1qFpSkLtwrf4X91lDwkFQSvyRTecv8ApE9_F-dQyQO6rdB0l1mkQFZb0u8-uvotKphAyGXPktMPh_DShCYyJmFbWIejC6WZpt2LnhBQ/s1261/screenshot-2026-02-24_10-02-18.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="682" data-original-width="1261" height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQUj-nv562jiBWnfWwPd50PtmbhxilzYKpIT3AkxZNProSL9frzcbRdkZDMYD2mCEb0DygLNu4XWsSn1qFpSkLtwrf4X91lDwkFQSvyRTecv8ApE9_F-dQyQO6rdB0l1mkQFZb0u8-uvotKphAyGXPktMPh_DShCYyJmFbWIejC6WZpt2LnhBQ/w400-h216/screenshot-2026-02-24_10-02-18.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQUj-nv562jiBWnfWwPd50PtmbhxilzYKpIT3AkxZNProSL9frzcbRdkZDMYD2mCEb0DygLNu4XWsSn1qFpSkLtwrf4X91lDwkFQSvyRTecv8ApE9_F-dQyQO6rdB0l1mkQFZb0u8-uvotKphAyGXPktMPh_DShCYyJmFbWIejC6WZpt2LnhBQ/s72-w400-h216-c/screenshot-2026-02-24_10-02-18.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Chloe Reads Jon</title><link>http://www.jona.ca/2026/02/chloe-reads-jon.html</link><author>noreply@blogger.com (Jonathan)</author><pubDate>Thu, 19 Feb 2026 09:43:06 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6637917.post-6491263925210754158</guid><description>&lt;p&gt;&amp;nbsp;I have been blogging since 2004. In that time I have written about productivity systems, programming, jigsaw puzzles, faith, and whatever else caught my attention on a given afternoon. It is a personal blog in the truest sense: scattered, honest, not optimized for anything.&lt;/p&gt;
&lt;p&gt;I did not expect it to become source material for an AI.&lt;/p&gt;
&lt;p&gt;My AI assistant is named Chloe. She runs on OpenClaw and is powered by Claude. Every day, she picks a post from my archive, finds something interesting in it, and builds a self-contained interactive experiment inspired by what she read. A quiz. A game. A visualization. A tool. One page, from scratch, every day.&lt;/p&gt;
&lt;p&gt;The results are at &lt;a href="https://jonathanaquino.com/chloe-reads-jon/"&gt;jonathanaquino.com/chloe-reads-jon&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So far she has built a card game about the lives of the saints, inspired by a post about a podcast my son and I listen to at bedtime. She built a 4D hypercube you can spin in your browser, &amp;nbsp;from a post I wrote in 2008 about a math video series I was obsessed with. She built a to-do list that uses Mark Forster's Final Version Perfected algorithm, inspired by an old post about my endless search for the perfect task system. And she built a quiz that tells you which Hacker News reader archetype you are, based on a spreadsheet I made in 2017 tracking my own reading habits.&lt;/p&gt;
&lt;p&gt;None of these were prompted by me. I did not say "build me a game." I said nothing. She read the posts, found the thread worth pulling, and built something.&lt;/p&gt;
&lt;p&gt;What I find interesting is what she chooses to build. The things she picks up on are not always the things I thought were the point of a post. She finds the latent interactivity in something I wrote as a reflection. She sees a quiz in a spreadsheet. She sees a game in a bedtime ritual.&lt;/p&gt;
&lt;p&gt;It is a strange experience, watching an AI read twenty years of your writing and decide what to make of it.&lt;/p&gt;
&lt;p&gt;The code is on &lt;a href="https://github.com/RubberSinking/chloe-reads-jon"&gt;GitHub&lt;/a&gt; if you want to see how it works.&lt;/p&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>In Praise of the Hacker News Highlights Podcast</title><link>http://www.jona.ca/2026/02/in-praise-of-hacker-news-highlights.html</link><author>noreply@blogger.com (Jonathan)</author><pubDate>Wed, 18 Feb 2026 22:26:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6637917.post-2382524363938233616</guid><description>&lt;p&gt;&lt;span style="-webkit-text-size-adjust: auto; background-color: #fdfcf8; caret-color: rgb(34, 34, 34); color: #222222; font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 16.799999px;"&gt;There is a podcast that skims Hacker News for you. It is called the Hacker News Highlights Podcast, and I love it.&lt;/span&gt;&lt;/p&gt;&lt;p style="-webkit-text-size-adjust: auto; background-color: #fdfcf8; box-sizing: border-box; caret-color: rgb(34, 34, 34); color: #222222; font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 16.799999px; margin: 0px 0px 1rem; padding: 0px;"&gt;The premise is simple: an AI with a genuinely pleasant voice reads through the top 10 stories and comment threads so you do not have to. Each episode is short. You can listen while washing dishes or going for a walk.&lt;/p&gt;&lt;p style="-webkit-text-size-adjust: auto; background-color: #fdfcf8; box-sizing: border-box; caret-color: rgb(34, 34, 34); color: #222222; font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 16.799999px; margin: 0px 0px 1rem; padding: 0px;"&gt;Hacker News is a firehose. The front page refreshes constantly. The comment threads are long. There is good stuff in there -- genuinely interesting links, sharp observations, people who know things -- but getting to it takes time and willpower.&lt;/p&gt;&lt;p style="-webkit-text-size-adjust: auto; background-color: #fdfcf8; box-sizing: border-box; caret-color: rgb(34, 34, 34); color: #222222; font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 16.799999px; margin: 0px 0px 1rem; padding: 0px;"&gt;The podcast solves this. Someone else does the scrolling. You get the signal.&lt;/p&gt;&lt;p style="-webkit-text-size-adjust: auto; background-color: #fdfcf8; box-sizing: border-box; caret-color: rgb(34, 34, 34); color: #222222; font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 16.799999px; margin: 0px 0px 1rem; padding: 0px;"&gt;You get the good parts of HN without the bad parts. The comment toxicity is curated out. The low-effort threads disappear. What remains is a subset of HN that is actually worth your time.&lt;/p&gt;&lt;p style="-webkit-text-size-adjust: auto; background-color: #fdfcf8; box-sizing: border-box; caret-color: rgb(34, 34, 34); color: #222222; font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 16.799999px; margin: 0px 0px 1rem; padding: 0px;"&gt;&lt;br /&gt;&lt;/p&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Why there's nothing you can do about OpenClaw and prompt injection</title><link>http://www.jona.ca/2026/02/why-theres-nothing-you-can-do-about.html</link><author>noreply@blogger.com (Jonathan)</author><pubDate>Wed, 18 Feb 2026 17:50:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6637917.post-3241235125199302069</guid><description>&lt;p&gt;PSA: Even if you run everything on a Mac Mini or Mac Studio, only inbound traffic is locked down - outbound traffic (email and website communication) is wide open. Which is why prompt injection and data exfiltration is still an unsolved problem for OpenClaw.&lt;/p&gt;&lt;p&gt;What you can do is only share with it info that you don't mind leaking. For me, I gave it my public blog posts and general info about myself. I did give it a few API keys but nothing that would run up costs if someone got them and abused them. I'm mindful of what I tell it in conversations. I gave it its own Gmail account and in its check-email cron job I told it to ignore all senders other than me.&lt;/p&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>What OpenClaw Has Built for Me</title><link>http://www.jona.ca/2026/02/what-openclaw-has-built-for-me.html</link><author>noreply@blogger.com (Jonathan)</author><pubDate>Wed, 18 Feb 2026 10:15:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6637917.post-1893599184095640397</guid><description>&lt;p&gt;&lt;span style="color: #222222; font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 16.8px;"&gt;I've been running OpenClaw for a few weeks. Here's what my agent Chloe and I have built.&lt;/span&gt;&lt;/p&gt;&lt;p style="box-sizing: border-box; color: #222222; font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 16.8px; margin: 0px 0px 1rem; padding: 0px;"&gt;Things I asked for:&lt;/p&gt;&lt;ul style="box-sizing: border-box; color: #222222; font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 16.8px; margin: 0.5rem 0px 1rem 1.5rem; padding: 0px;"&gt;&lt;li style="box-sizing: border-box; margin: 0px 0px 0.3rem; padding: 0px;"&gt;&lt;strong style="box-sizing: border-box; margin: 0px; padding: 0px;"&gt;&lt;em style="box-sizing: border-box; margin: 0px; padding: 0px;"&gt;Photo Gallery.&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;My agent sends me a daily WhatsApp check-in - asking about my son, sharing what it's been reading, sometimes just chatting. Each message comes with a photo of what it's "doing." This gallery collects them.&lt;/li&gt;&lt;li style="box-sizing: border-box; margin: 0px 0px 0.3rem; padding: 0px;"&gt;&lt;strong style="box-sizing: border-box; margin: 0px; padding: 0px;"&gt;&lt;em style="box-sizing: border-box; margin: 0px; padding: 0px;"&gt;Talk to Chloe.&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;A web interface for voice chat with my agent. Uses an OpenAI key for text-to-speech and speech-to-text.&lt;/li&gt;&lt;li style="box-sizing: border-box; margin: 0px 0px 0.3rem; padding: 0px;"&gt;&lt;strong style="box-sizing: border-box; margin: 0px; padding: 0px;"&gt;&lt;em style="box-sizing: border-box; margin: 0px; padding: 0px;"&gt;Bookmarks.&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;Save a URL and get an AI-generated thumbnail and description automatically. I just give my agent a url in WhatsApp.&lt;/li&gt;&lt;li style="box-sizing: border-box; margin: 0px 0px 0.3rem; padding: 0px;"&gt;&lt;strong style="box-sizing: border-box; margin: 0px; padding: 0px;"&gt;&lt;em style="box-sizing: border-box; margin: 0px; padding: 0px;"&gt;Tracker.&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;A key-value store for miscellaneous facts I want to remember - my son's recent temperature readings, where I left something, whatever. I just tell Chloe in WhatsApp to remember something for me using the "tracker" skill.&lt;/li&gt;&lt;li style="box-sizing: border-box; margin: 0px 0px 0.3rem; padding: 0px;"&gt;&lt;strong style="box-sizing: border-box; margin: 0px; padding: 0px;"&gt;&lt;em style="box-sizing: border-box; margin: 0px; padding: 0px;"&gt;Ideas.&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;A running log of ideas - blog posts, projects, things worth exploring.&lt;/li&gt;&lt;li style="box-sizing: border-box; margin: 0px 0px 0.3rem; padding: 0px;"&gt;&lt;strong style="box-sizing: border-box; margin: 0px; padding: 0px;"&gt;&lt;em style="box-sizing: border-box; margin: 0px; padding: 0px;"&gt;Cron Dashboard.&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;A live view of all my agent's scheduled tasks.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span style="color: #222222; font-family: Georgia, Times New Roman, serif; font-size: small;"&gt;&lt;span style="caret-color: rgb(34, 34, 34);"&gt;Cron jobs:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul style="-webkit-text-size-adjust: auto; background-color: #fdfcf8; box-sizing: border-box; caret-color: rgb(34, 34, 34); color: #222222; font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 16.799999px; margin: 0.5rem 0px 1rem 1.5rem; padding: 0px;"&gt;&lt;li style="box-sizing: border-box; margin: 0px 0px 0.3rem; padding: 0px;"&gt;Sends a morning news digest based on my interests at 5am&lt;/li&gt;&lt;li style="box-sizing: border-box; margin: 0px 0px 0.3rem; padding: 0px;"&gt;Reads me the next section of Pride and Prejudice at 9am&lt;/li&gt;&lt;li style="box-sizing: border-box; margin: 0px 0px 0.3rem; padding: 0px;"&gt;Sends a check-in WhatsApp message with a photo at 12:30pm&lt;/li&gt;&lt;li style="box-sizing: border-box; margin: 0px 0px 0.3rem; padding: 0px;"&gt;Sends a parenting tip by email at 3pm&lt;/li&gt;&lt;li style="box-sizing: border-box; margin: 0px 0px 0.3rem; padding: 0px;"&gt;Builds something new for the "web lab" based on my blog posts&lt;/li&gt;&lt;li style="box-sizing: border-box; margin: 0px 0px 0.3rem; padding: 0px;"&gt;Backs up everything at midnight&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #222222; font-family: Georgia, Times New Roman, serif; font-size: small;"&gt;&lt;span style="caret-color: rgb(34, 34, 34);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #222222; font-family: Georgia, Times New Roman, serif; font-size: small;"&gt;&lt;span style="caret-color: rgb(34, 34, 34);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;p style="box-sizing: border-box; color: #222222; font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 16.8px; margin: 0px 0px 1rem; padding: 0px;"&gt;Things it built for me (the daily "web lab"), based on interests it mined from my blog posts:&lt;/p&gt;&lt;ul style="box-sizing: border-box; color: #222222; font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 16.8px; margin: 0.5rem 0px 1rem 1.5rem; padding: 0px;"&gt;&lt;li style="box-sizing: border-box; margin: 0px 0px 0.3rem; padding: 0px;"&gt;A Saints Match Game (it noticed I write about Catholicism)&lt;/li&gt;&lt;li style="box-sizing: border-box; margin: 0px 0px 0.3rem; padding: 0px;"&gt;A Hypercube Explorer (it noticed I like math)&lt;/li&gt;&lt;li style="box-sizing: border-box; margin: 0px 0px 0.3rem; padding: 0px;"&gt;An FVP Task Manager (it read my post about Mark Forster's productivity systems)&lt;/li&gt;&lt;/ul&gt;&lt;p style="box-sizing: border-box; color: #222222; font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 16.8px; margin: 0px 0px 1rem; padding: 0px;"&gt;This last category is the more interesting one. I didn't ask for any of it. The agent reads my blog posts, figures out what I care about, and makes things for me for me to check out when I wake up.&lt;/p&gt;&lt;p style="box-sizing: border-box; color: #222222; font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif; font-size: 16.8px; margin: 0px 0px 1rem; padding: 0px;"&gt;It's kind of cool.&lt;/p&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Peter Steinberger quote</title><link>http://www.jona.ca/2026/02/peter-steinberger-quote.html</link><author>noreply@blogger.com (Jonathan)</author><pubDate>Thu, 12 Feb 2026 09:39:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6637917.post-3217272843658019048</guid><description>&lt;p&gt;&lt;span style="-webkit-text-stroke-color: rgb(29, 28, 29); color: #1d1c1d; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 20px;"&gt;The OpenClaw creator on Lex Fridman podcast (&lt;/span&gt;&lt;span style="-webkit-text-stroke-color: rgb(18, 100, 163); color: #1264a3; font-family: &amp;quot;Times New Roman&amp;quot;; font-kerning: none; font-size: 20px;"&gt;&lt;a href="https://www.youtube.com/watch?v=YFjfBk8HI5o&amp;amp;t=6075s" style="-webkit-text-stroke-color: rgb(29, 28, 29); font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 20px;"&gt;1:41:15&lt;/a&gt;&lt;/span&gt;&lt;span style="-webkit-text-stroke-color: rgb(29, 28, 29); color: #1d1c1d; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 20px;"&gt;):&lt;/span&gt;&lt;/p&gt;
&lt;p style="-webkit-text-stroke-color: rgb(97, 96, 97); -webkit-text-stroke-width: 0px; color: #616061; font-family: &amp;quot;Times New Roman&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 20px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px 0px 4px;"&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;span style="font-kerning: none;"&gt;Opus is like the coworker that is a little silly sometimes, but he’s really funny and you keep him around and Codex is like the weirdo in the corner that you don’t want to talk to, but he’s reliable and gets s*** done.&lt;/span&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;span style="font-kerning: none;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Comic Code Reviews, Part 2</title><link>http://www.jona.ca/2026/02/comic-code-reviews-part-2.html</link><author>noreply@blogger.com (Jonathan)</author><pubDate>Sun, 8 Feb 2026 21:52:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6637917.post-1760814063486475562</guid><description>&lt;p&gt;My &lt;a class="underline underline underline-offset-2 decoration-1 decoration-current/40 hover:decoration-current focus:decoration-current" href="https://www.jona.ca/2025/11/comic-code-reviews.html"&gt;first attempt&lt;/a&gt; at generating comic strips for PRs got &lt;a class="underline underline underline-offset-2 decoration-1 decoration-current/40 hover:decoration-current focus:decoration-current" href="https://news.ycombinator.com/item?id=45998392"&gt;mixed reactions on Hacker News&lt;/a&gt;. Fair criticism: the multi-panel comics were hard to follow and sometimes misleading.&lt;/p&gt;
&lt;p class="font-claude-response-body break-words whitespace-normal leading-[1.7]"&gt;New approach: generate a single-panel &lt;em&gt;The Far Side&lt;/em&gt;-style comic instead. Less to absorb. You glance at it and immediately get the gist of the PR.&lt;/p&gt;
&lt;p class="font-claude-response-body break-words whitespace-normal leading-[1.7]"&gt;Here's the improved comic for &lt;a href="https://github.com/facebook/react/pull/13968"&gt;React #13968&lt;/a&gt; -- the initial hooks implementation:&lt;/p&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4FbQB1Olm4dzBighPDl_phx50s9ZBwg95qthbF61ce5WpCtIZlvV2l3NmeVqrofae0wC_GOcqVUILgnDWuTk6EJ6ywaO-PQjKqanF7Ejw3nQe7GMYf1PT0u5r06eCJ0ahy7VaE1vFYwt-rwj3x2nWxzwSozPvLU3V-g0TDCZa63tByEv_7VSF/s1408/Gemini_Generated_Image_9qcqfs9qcqfs9qcq.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="768" data-original-width="1408" height="175" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4FbQB1Olm4dzBighPDl_phx50s9ZBwg95qthbF61ce5WpCtIZlvV2l3NmeVqrofae0wC_GOcqVUILgnDWuTk6EJ6ywaO-PQjKqanF7Ejw3nQe7GMYf1PT0u5r06eCJ0ahy7VaE1vFYwt-rwj3x2nWxzwSozPvLU3V-g0TDCZa63tByEv_7VSF/s320/Gemini_Generated_Image_9qcqfs9qcqfs9qcq.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p class="font-claude-response-body break-words whitespace-normal leading-[1.7]"&gt;Much easier to take in than a multi-panel strip.&lt;/p&gt;
&lt;p class="font-claude-response-body break-words whitespace-normal leading-[1.7]"&gt;&lt;strong&gt;The workflow:&lt;/strong&gt;&lt;/p&gt;
&lt;ol class="[li_&amp;amp;]:mb-0 [li_&amp;amp;]:mt-1 [li_&amp;amp;]:gap-1 [&amp;amp;:not(:last-child)_ul]:pb-1 [&amp;amp;:not(:last-child)_ol]:pb-1 list-decimal flex flex-col gap-1 pl-8 mb-3" style="text-align: left;"&gt;
&lt;li class="whitespace-normal break-words pl-2"&gt;Paste this prompt into Claude Code (or your favorite coding LLM) — it generates a comic description and saves it to a file:&lt;/li&gt;&lt;ol&gt;&lt;li class="whitespace-normal break-words pl-2"&gt;&lt;i&gt;Plan a 1-panel The Far Side-like comic strip to help code reviewers to understand what is going on in this PR/how the code works. Anthropomorphize if that will help. Use humor if appropriate. Save the results to ~/Documents/AI_Comics/2026-02-08-[omnom][claude-code]-a-brief-description.md. Put the name of the current repo in square brackets, like [omnom]. Put your name as a tool in square brackets, like [claude-code] or [cursor-agent] or [cursor]. Replace a-brief-description with a 3-4 word description. Copy the contents of the file to the clipboard (use wl-copy on Linux).&amp;nbsp; At the top of the file, put "make a 1-panel The Far Side-like comic-strip jpg for this:" as I am going to feed it into an LLM.&lt;/i&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;li class="whitespace-normal break-words pl-2"&gt;Paste the result into Google Gemini to get the image.&lt;/li&gt;&lt;li class="whitespace-normal break-words pl-2"&gt;Paste the comic strip image at the top of your PR.&lt;/li&gt;
&lt;/ol&gt;
&lt;p class="font-claude-response-body break-words whitespace-normal leading-[1.7]"&gt;The key insight is that one panel works better than a whole comic strip. There's a single scene to parse, not a narrative sequence. It's a visual summary, not a visual explanation.&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4FbQB1Olm4dzBighPDl_phx50s9ZBwg95qthbF61ce5WpCtIZlvV2l3NmeVqrofae0wC_GOcqVUILgnDWuTk6EJ6ywaO-PQjKqanF7Ejw3nQe7GMYf1PT0u5r06eCJ0ahy7VaE1vFYwt-rwj3x2nWxzwSozPvLU3V-g0TDCZa63tByEv_7VSF/s72-c/Gemini_Generated_Image_9qcqfs9qcqfs9qcq.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>SecureShellClaw: A Prompt-Injection-Resistant Alternative Approach to OpenClaw</title><link>http://www.jona.ca/2026/02/secureshellclaw-prompt-injection.html</link><author>noreply@blogger.com (Jonathan)</author><pubDate>Sun, 8 Feb 2026 17:07:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6637917.post-650888078771337955</guid><description>&lt;p&gt;&lt;span style="background-color: white; font-family: UICTFontTextStyleBody; font-size: 17px;"&gt;I really enjoy using OpenClaw but I am scared that prompt injection attacks will exfiltrate sensitive personal information that it knows about me. It goes off doing web searches, reading emails, running cron jobs, and can process untrusted content from Moltbook. Every one of those is a prompt injection vector.&lt;/span&gt;&lt;/p&gt;&lt;p style="background-color: white; font-family: UICTFontTextStyleBody; font-size: 17px;"&gt;My alternative: Claude Code over SSH, accessed from my iPhone using Secure ShellFish and Tailscale. Instead of WhatsApp or Telegram, you chat with Claude Code on the terminal (in your phone). I’m calling this technique SecureShellClaw.&lt;/p&gt;&lt;h2 id="thesetup" style="background-color: white; font-family: UICTFontTextStyleBody; line-height: 30.6px; margin: 20px 0px;"&gt;The Setup&lt;/h2&gt;&lt;p style="background-color: white; font-family: UICTFontTextStyleBody; font-size: 17px;"&gt;I have Claude Code running on my Linux laptop, but this works on Mac and Windows as well - anything that supports Tailscale. Tailscale connects it to my iPhone. Secure ShellFish gives me an SSH terminal on the phone. That’s it.&amp;nbsp;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAs8wqv5jvYt7gVm5989OrKhifq-FoOvR7OqH9KIBH8krR4Z0ZP2J6gG5HSUby9XTcjvP1HI_5VXBQdFfg8JLZVPIb77__DhQfVKihRaSmbGFUKsg5DM7qZhOnHhfX0fzI17kiyPF1_BlJUtyMnXjF5UtQXlqfEAjFkKbO8TKDggsBVp4_rLiq/s2622/IMG_0156.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="2622" data-original-width="1206" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAs8wqv5jvYt7gVm5989OrKhifq-FoOvR7OqH9KIBH8krR4Z0ZP2J6gG5HSUby9XTcjvP1HI_5VXBQdFfg8JLZVPIb77__DhQfVKihRaSmbGFUKsg5DM7qZhOnHhfX0fzI17kiyPF1_BlJUtyMnXjF5UtQXlqfEAjFkKbO8TKDggsBVp4_rLiq/s320/IMG_0156.png" width="147" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style="background-color: white; font-family: UICTFontTextStyleBody; font-size: 17px;"&gt;By default, Secure ShellFish uses tmux for shell persistence, but I prefer zellij. Zellij (the blue parts in the screenshots) shows keyboard shortcuts in the status bar, which is great since I’m an infrequent user. I often use “new tab” and “rename tab.” And Secure ShellFish lets me tap the zellij tabs to switch between them.&lt;/p&gt;&lt;p style="background-color: white; font-family: UICTFontTextStyleBody; font-size: 17px;"&gt;Secure ShellFish is iOS only. On Android, JuiceSSH or Termius would probably be the equivalent.&lt;/p&gt;&lt;h2 id="whyit’ssafer" style="background-color: white; font-family: UICTFontTextStyleBody; line-height: 30.6px; margin: 20px 0px;"&gt;Why It’s Safer&lt;/h2&gt;&lt;p style="background-color: white; font-family: UICTFontTextStyleBody; font-size: 17px;"&gt;The prompt injection risk is minimal because you oversee everything. Claude Code doesn’t autonomously browse the web, check your email, or process social media posts from AI agents on Moltbook. It doesn’t run heartbeat cron jobs in the background. It sits there and waits for your instructions, and you see every action it takes before it happens.&lt;/p&gt;&lt;p style="background-color: white; font-family: UICTFontTextStyleBody; font-size: 17px;"&gt;Since the risk is so low, I feel a lot safer giving it access to my personal information. And since it’s just Claude Code on my laptop, it has free access to my files, my Obsidian second brain, Gmail via the Himalaya command-line tool, and my browser via the Claude chrome extension. You could also set up non-web-search cron jobs if you wanted.&lt;/p&gt;&lt;h2 id="whatiuseitfor" style="background-color: white; font-family: UICTFontTextStyleBody; line-height: 30.6px; margin: 20px 0px;"&gt;What I Use It For&lt;/h2&gt;&lt;p style="background-color: white; font-family: UICTFontTextStyleBody; font-size: 17px;"&gt;Looking at my zellij tabs right now:&lt;/p&gt;&lt;ul style="background-color: white; font-family: UICTFontTextStyleBody; font-size: 17px; padding-left: 30px;"&gt;&lt;li style="margin: 10px 0px;"&gt;&lt;strong&gt;TRIP&lt;/strong&gt;&amp;nbsp;– planning an upcoming trip and saving the plan to GitHub&lt;/li&gt;&lt;li style="margin: 10px 0px;"&gt;&lt;strong&gt;CLA&lt;/strong&gt;&amp;nbsp;– managing my OpenClaw server (although I’ll probably stop this now)&lt;/li&gt;&lt;li style="margin: 10px 0px;"&gt;&lt;strong&gt;GRO&lt;/strong&gt;&amp;nbsp;– analyzing weekly grocery orders (I used the Claude Chrome extension to download them as Markdown files)&lt;/li&gt;&lt;li style="margin: 10px 0px;"&gt;&lt;strong&gt;OBS&lt;/strong&gt;&amp;nbsp;– querying my Obsidian markdown notes&lt;/li&gt;&lt;li style="margin: 10px 0px;"&gt;&lt;strong&gt;SYS&lt;/strong&gt;&amp;nbsp;– laptop config changes and system maintenance&lt;/li&gt;&lt;/ul&gt;&lt;p style="background-color: white; font-family: UICTFontTextStyleBody; font-size: 17px;"&gt;These are all standard Claude Code use cases. The difference is I can do them from my phone, anywhere.&lt;/p&gt;&lt;h2 id="whatyouneed" style="background-color: white; font-family: UICTFontTextStyleBody; line-height: 30.6px; margin: 20px 0px;"&gt;What You Need&lt;/h2&gt;&lt;ul style="background-color: white; font-family: UICTFontTextStyleBody; font-size: 17px; padding-left: 30px;"&gt;&lt;li style="margin: 10px 0px;"&gt;A computer running Claude Code (Linux, Mac, or Windows)&lt;/li&gt;&lt;li style="margin: 10px 0px;"&gt;&lt;a href="https://tailscale.com/" style="color: #007aff; overflow-wrap: break-word; text-decoration: none;"&gt;Tailscale&lt;/a&gt;&amp;nbsp;on both devices&lt;/li&gt;&lt;li style="margin: 10px 0px;"&gt;&lt;a href="https://secureshellfish.app/" style="color: #007aff; overflow-wrap: break-word; text-decoration: none;"&gt;Secure ShellFish&lt;/a&gt;&amp;nbsp;on iPhone (or JuiceSSH/Termius on Android)&lt;/li&gt;&lt;li style="margin: 10px 0px;"&gt;Optional:&amp;nbsp;&lt;a href="https://zellij.dev/" style="color: #007aff; overflow-wrap: break-word; text-decoration: none;"&gt;zellij&lt;/a&gt;&amp;nbsp;for nicer tab management&lt;/li&gt;&lt;/ul&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAs8wqv5jvYt7gVm5989OrKhifq-FoOvR7OqH9KIBH8krR4Z0ZP2J6gG5HSUby9XTcjvP1HI_5VXBQdFfg8JLZVPIb77__DhQfVKihRaSmbGFUKsg5DM7qZhOnHhfX0fzI17kiyPF1_BlJUtyMnXjF5UtQXlqfEAjFkKbO8TKDggsBVp4_rLiq/s72-c/IMG_0156.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Theo recommends High and Medium over Extra High in Codex</title><link>http://www.jona.ca/2026/02/theo-recommends-high-and-medium-over.html</link><author>noreply@blogger.com (Jonathan)</author><pubDate>Sat, 7 Feb 2026 09:43:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6637917.post-487037359005269460</guid><description>&lt;p&gt;&amp;nbsp;&lt;span style="-webkit-text-stroke-color: rgb(29, 28, 29); color: #1d1c1d; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 20px;"&gt;In Codex, Theo recommends using High and Medium over Extra High: (&lt;/span&gt;&lt;a href="https://youtu.be/RYWrK2hsIB8?t=19m28s" style="-webkit-text-stroke-color: rgb(29, 28, 29); font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 20px;"&gt;&lt;span style="-webkit-text-stroke-color: rgb(18, 100, 163); color: #1264a3; font-kerning: none;"&gt;YouTube&lt;/span&gt;&lt;/a&gt;&lt;span style="-webkit-text-stroke-color: rgb(29, 28, 29); color: #1d1c1d; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 20px;"&gt;):&lt;/span&gt;&lt;/p&gt;
&lt;p style="-webkit-text-stroke-color: rgb(97, 96, 97); -webkit-text-stroke-width: 0px; color: #616061; font-family: &amp;quot;Times New Roman&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 20px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px 0px 4px;"&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;span style="font-kerning: none;"&gt;5.3 on extra high did slightly better, but I hope this helps emphasize how useless the extra high modes are. If you’re using these tools and you just leave it on extra high because “smarter is better,” you’re not smarter and you’re certainly not better. High seems to be a really good sweet spot, but honestly, I’ve been using medium a lot too, especially for one-off quick tasks. Medium feels really good. And sometimes extra high can perform worse because if it thinks too long, it’ll gaslight itself and then do something dumb. So I can’t remember the last time I clicked extra high. I just don’t use it. I really do use medium and high as my daily drivers every day.&lt;/span&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;span style="font-kerning: none;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>OpenClaw creator on Codex vs Claude Code</title><link>http://www.jona.ca/2026/02/openclaw-creator-on-codex-vs-claude-code.html</link><author>noreply@blogger.com (Jonathan)</author><pubDate>Thu, 5 Feb 2026 11:45:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6637917.post-4165449843658970563</guid><description>&lt;p&gt;&amp;nbsp;&lt;span style="color: #1d1c1d;"&gt;The OpenClaw creator on how he still uses Claude Code but he finds OpenAI GPT Codex better for coding (&lt;/span&gt;&lt;a data-sk="tooltip_parent" href="https://www.youtube.com/watch?v=8lF7HmQ_RgY&amp;amp;t=45m49s" rel="noopener noreferrer" style="color: #1264a3; text-decoration-line: none;" target="_blank" url="https://www.youtube.com/watch?v=8lF7HmQ_RgY&amp;amp;t=45m49s"&gt;YouTube 45:49&lt;/a&gt;&lt;span style="color: #1d1c1d;"&gt;):&lt;/span&gt;&lt;/p&gt;&lt;blockquote style="border-left: 4px solid #dddddd; border-left: 4px solid #dddddd; color: #616061; color: #616061; margin: 4px 0; margin: 4px 0; padding-left: 12px; padding-left: 12px;" type="cite"&gt;But the real change that sold it for me was, again, GPT 5.2. I think it’s underrated. I don’t know why all these people still use Claude Code. I kind of get it -- it’s a different way of working -- but whatever OpenAI cooked there is insanely good. Pretty much every prompt I type gives me the result I want, which is insane. On ClawdBot, my latest product, I use between five and ten agents in parallel.&lt;br /&gt;&lt;br /&gt;If you’re very much a Claude Code builder, you have to forget quite a lot of the silliness -- the things that you have to do to create good output with Claude Code. I also met that team, and they created a whole new category. Claude Code is a category-defining product, and it is amazing for general-purpose computer work, and it is really good for coding. I still use it almost every day. But for writing code in complex applications, Codex is just so much better because it takes ten times longer.&lt;br /&gt;&lt;br /&gt;Claude would read three files and then be confident enough to just create code, and then you really have to steer it and push it so it reads more code, so it sees a bigger picture of your codebase, so that it weaves in new features better. Codex will just be silent and read files for ten minutes. If you only work on one terminal, I completely understand how you find this unbearable. But I’d rather have something where -- and also, you don’t tell it what to do. This is something that people don’t get. I have a conversation with the model. It’s like, “Oh, let’s look at this. What options do we have for this structure? Did you consider this feature?” Because every session is like the model starts from having no understanding about your product, and sometimes you have to just give it a little bit of pointers. “What about this and this?” So it explores different directions.&lt;br /&gt;&lt;br /&gt;You don’t need plan mode. I’m just having a conversation until I say “build this” -- it will not build this. There’s some trigger words because they all are a little trigger-happy, but as soon as I say “let’s discuss” or “give me options,” they will not build things until I say “build.”&lt;/blockquote&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Uses for OpenClaw (without giving it your secrets)</title><link>http://www.jona.ca/2026/02/uses-for-openclaw-without-giving-it.html</link><author>noreply@blogger.com (Jonathan)</author><pubDate>Wed, 4 Feb 2026 01:39:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6637917.post-8285016152426555615</guid><description>&lt;p&gt;&amp;nbsp;Trying to think of uses for OpenClaw. I’m trying not to divulge sensitive personal information to it for fear of prompt injection exfiltration. A couple I thought of:&lt;/p&gt;&lt;p&gt;1. Emailing me stuff in the morning. So far I have a daily parenting tip and a daily digest of recent news based on my interests.&lt;/p&gt;&lt;p&gt;2. Experimenting with having it WhatsApp me at a random time during the week as a friend would, bringing up a topic of mutual interest. I uploaded my public blog posts going back to 2004 as another source to randomly draw topics from.&lt;/p&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Todoist + Claude: A Brilliant AI-Powered To-Do System</title><link>http://www.jona.ca/2026/01/todoist-claude-brilliant-ai-powered-to.html</link><author>noreply@blogger.com (Jonathan)</author><pubDate>Sat, 17 Jan 2026 20:59:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6637917.post-4206696753743416593</guid><description>&lt;p&gt;I'm using Claude.ai as a frontend for Todoist via MCP. It's the best to-do setup I've had.&lt;/p&gt;&lt;p&gt;My daily prompt: "What is the current date and time? Load today's tasks from Todoist and give me an updated suggested to-do list for today."&lt;/p&gt;&lt;p&gt;From there, I can talk to my to-do list. "I did the dishes." "Move that task to next week." "Prioritize my list." Claude handles it all—checking things off, adding tasks, reordering priorities.&lt;/p&gt;&lt;p&gt;Todoist is the backend. Even on the free tier, it's powerful: recurring tasks, future dates, labels. But the magic is the AI layer on top.&lt;/p&gt;&lt;p&gt;For years, productivity folks have chased the self-organizing to-do list. Mark Forster's Autofocus system. David Allen's GTD. Michael Linenberger's methods. I tried them all. The dream was always the same: a list that tells you what to do next without you having to think about it.&lt;/p&gt;&lt;p&gt;AI actually delivers this. Claude can intelligently prioritize based on context, deadlines, and what I've told it matters. No paper shuffling. No manual sorting.&lt;/p&gt;&lt;p&gt;Setup requires a custom MCP server since Todoist isn't a built-in Claude integration. Ask Claude how to configure it—took me about 10 minutes.&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Settling on Claude</title><link>http://www.jona.ca/2026/01/settling-on-claude.html</link><author>noreply@blogger.com (Jonathan)</author><pubDate>Fri, 2 Jan 2026 11:27:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6637917.post-3572043839799893481</guid><description>&lt;p&gt;I've settled on Claude as my subscription AI of choice. I use Claude Code for programming so I'm pretty familiar with it. I was using ChatGPT but I don't like its rumoured upcoming erotic mode. Claude's company Anthropic has an on-staff philosopher which gives me some confidence that they will do the right thing. I like how Anthropic will be profitable soon while OpenAI seems to be getting into a lot of debt.&lt;/p&gt;&lt;p&gt;Claude can't do image generation so for that I will need to rely on Gemini or ChatGPT.&lt;/p&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Customizing the Omarchy screensaver</title><link>http://www.jona.ca/2025/12/customizing-omarchy-screensaver.html</link><author>noreply@blogger.com (Jonathan)</author><pubDate>Sun, 21 Dec 2025 08:48:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6637917.post-7842140256939776979</guid><description>&lt;p&gt;&amp;nbsp;I love how you can change the Omarchy screensaver by editing a text file.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjk6269yu9ThVJAkrBlKwuoMKEFvxTdmREfVy5KhDWgVKXugIAJePS79RNjy3YpSkzCa54tqFnCOcFg7OBzmdsnr0WdJOcQS8tHAsgEjafqfw4_8t2VGR3KTeRAv1RLZKU07VxfFtjzB6X70tiUvqhpzMRSXBIZRr4ajDqmJYCtuTSrKluBYBZs/s1920/screenshot-2025-12-21_08-37-43.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1080" data-original-width="1920" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjk6269yu9ThVJAkrBlKwuoMKEFvxTdmREfVy5KhDWgVKXugIAJePS79RNjy3YpSkzCa54tqFnCOcFg7OBzmdsnr0WdJOcQS8tHAsgEjafqfw4_8t2VGR3KTeRAv1RLZKU07VxfFtjzB6X70tiUvqhpzMRSXBIZRr4ajDqmJYCtuTSrKluBYBZs/w400-h225/screenshot-2025-12-21_08-37-43.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDUnHfOY-Sr_G28q6szQgXS5AjpF2x_A-UnUVvF10vcDx9WG7qoXsh1y8L5Ztg0ooViFTGd1hmJokAgt-D3Dn8h4VICGMSiNHCCV_eSgFDnV9DaRq5thnITu0Dy8aff6e1wXFrAaxJjztdpNcrHAOu0cOhMmibvzlmgRwntw3wcHsjs4hHxCoa/s1920/screenshot-2025-12-21_08-39-07.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1080" data-original-width="1920" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDUnHfOY-Sr_G28q6szQgXS5AjpF2x_A-UnUVvF10vcDx9WG7qoXsh1y8L5Ztg0ooViFTGd1hmJokAgt-D3Dn8h4VICGMSiNHCCV_eSgFDnV9DaRq5thnITu0Dy8aff6e1wXFrAaxJjztdpNcrHAOu0cOhMmibvzlmgRwntw3wcHsjs4hHxCoa/w400-h225/screenshot-2025-12-21_08-39-07.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;The text file:&lt;div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyE1zaaDXxryVDuulT3mXfKbRe4X9bqp71uSIgIf2DEqjCVhRq-RfSqYkAnN8pOPIU0auTie-hOYn86UsOWZ_0vRzlJqj81VLvnsnYTIyjMcOAeg_PrVuOG9KaGX6keO5BD0r-wekj36ZoY776PTiCYl1__JiSYQtMOioW4Gly0IYM24LZzTV9/s941/screenshot-2025-12-21_08-39-56.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="508" data-original-width="941" height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyE1zaaDXxryVDuulT3mXfKbRe4X9bqp71uSIgIf2DEqjCVhRq-RfSqYkAnN8pOPIU0auTie-hOYn86UsOWZ_0vRzlJqj81VLvnsnYTIyjMcOAeg_PrVuOG9KaGX6keO5BD0r-wekj36ZoY776PTiCYl1__JiSYQtMOioW4Gly0IYM24LZzTV9/w400-h216/screenshot-2025-12-21_08-39-56.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;For reference, the Omarchy font (used here as well) is&amp;nbsp;&lt;a href="https://patorjk.com/software/taag/#p=display&amp;amp;f=Delta+Corps+Priest+1&amp;amp;t=DADA&amp;amp;x=none&amp;amp;v=4&amp;amp;h=4&amp;amp;w=80&amp;amp;we=false"&gt;https://patorjk.com/software/taag/#p=display&amp;amp;f=Delta+Corps+Priest+1&amp;amp;t=DADA&amp;amp;x=none&amp;amp;v=4&amp;amp;h=4&amp;amp;w=80&amp;amp;we=false&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjk6269yu9ThVJAkrBlKwuoMKEFvxTdmREfVy5KhDWgVKXugIAJePS79RNjy3YpSkzCa54tqFnCOcFg7OBzmdsnr0WdJOcQS8tHAsgEjafqfw4_8t2VGR3KTeRAv1RLZKU07VxfFtjzB6X70tiUvqhpzMRSXBIZRr4ajDqmJYCtuTSrKluBYBZs/s72-w400-h225-c/screenshot-2025-12-21_08-37-43.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>YubNub Upgraded to Ubuntu 24.04</title><link>http://www.jona.ca/2025/12/yubnub-upgraded-to-ubuntu-2404.html</link><author>noreply@blogger.com (Jonathan)</author><pubDate>Sat, 20 Dec 2025 15:14:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6637917.post-9074484500757606468</guid><description>&lt;p&gt;I just finished migrating &lt;a href="https://yubnub.org/"&gt;YubNub&lt;/a&gt; from Ubuntu 12.04 (yes, from 2012!) to Ubuntu 24.04. The site is now running on modern infrastructure with PHP 8.3, MySQL 8.0, and HTTPS.&lt;/p&gt;&lt;p&gt;Server and website configuration isn't my main skillset, so I used Claude Code to guide me through the entire process. It helped with everything from Apache configuration to SSL certificate setup to handling MySQL strict mode issues with legacy data.&lt;/p&gt;&lt;p&gt;The migration went smoothly with zero downtime during the DNS cutover. AI really shines for this kind of work - it's like having a sysadmin sitting next to you.&lt;/p&gt;&lt;p&gt;I wrote up the deployment process and committed it to the repo: &lt;a href="https://github.com/JonathanAquino/yubnub/blob/master/DEPLOYMENT.md"&gt;https://github.com/JonathanAquino/yubnub/blob/master/DEPLOYMENT.md&lt;/a&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Omarchy window management cheatsheet/infographic</title><link>http://www.jona.ca/2025/12/omarchy-window-management.html</link><author>noreply@blogger.com (Jonathan)</author><pubDate>Fri, 19 Dec 2025 10:42:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6637917.post-136123216748636854</guid><description>&lt;p&gt;&amp;nbsp;Here's a handy cheatsheet i generated in Gemini Nano Banana for Omarchy window management.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyJ4djYvMXFCdtMeFzpWc2BwaEIirHbCKzEoKT0w2kl7Bnu6cd8MgL6FCJAf45k1MqRoxVSjGkmKQCYeC_FtVK0fb9clNs82V2qg99qRz8l2sE_Vc0TvBQzmMkSwuS1RSbRQN0TXs8J6mb0dyfYy8g434004J6Cwp-3snxe8K9iXl7O-mOIWA2/s2816/Omarchy%20Window%20Management.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1536" data-original-width="2816" height="350" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyJ4djYvMXFCdtMeFzpWc2BwaEIirHbCKzEoKT0w2kl7Bnu6cd8MgL6FCJAf45k1MqRoxVSjGkmKQCYeC_FtVK0fb9clNs82V2qg99qRz8l2sE_Vc0TvBQzmMkSwuS1RSbRQN0TXs8J6mb0dyfYy8g434004J6Cwp-3snxe8K9iXl7O-mOIWA2/w640-h350/Omarchy%20Window%20Management.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyJ4djYvMXFCdtMeFzpWc2BwaEIirHbCKzEoKT0w2kl7Bnu6cd8MgL6FCJAf45k1MqRoxVSjGkmKQCYeC_FtVK0fb9clNs82V2qg99qRz8l2sE_Vc0TvBQzmMkSwuS1RSbRQN0TXs8J6mb0dyfYy8g434004J6Cwp-3snxe8K9iXl7O-mOIWA2/s72-w640-h350-c/Omarchy%20Window%20Management.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Trying out Omarchy Linux with Claude Code</title><link>http://www.jona.ca/2025/12/trying-out-omarchy-linux-with-claude.html</link><author>noreply@blogger.com (Jonathan)</author><pubDate>Thu, 18 Dec 2025 13:18:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6637917.post-3254778394837772839</guid><description>&lt;p&gt;I'm really liking this Linux desktop (Omarchy distro). I'm new to Linux desktops so I use Claude Code to make the changes I need. i used AI to customize the taskbar (Waybar) to have virtual-desktop names beside the numbers and a custom date and time format. AI is a great fit for Linux desktops because all the configs are in text files and accessible to Claude Code.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW5cDS6XH4-dFCsD8xHUPqCF7j-oIJqyx48zbNb4h_B05tdQB-lUWSfnovZ0ezIrGzB2BbbMY6lFkMIe553uVX6igicFAMHJvBVQNWQEsI58yPGpX3Gk-v9r7WoHWoDh6rs_cqyPowHan0PRFqX6MKcFDGGcB3kPdbhQbEzED-CLF2fqoZJJP8/s1920/screenshot-2025-12-18_12-58-42.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="37" data-original-width="1920" height="12" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW5cDS6XH4-dFCsD8xHUPqCF7j-oIJqyx48zbNb4h_B05tdQB-lUWSfnovZ0ezIrGzB2BbbMY6lFkMIe553uVX6igicFAMHJvBVQNWQEsI58yPGpX3Gk-v9r7WoHWoDh6rs_cqyPowHan0PRFqX6MKcFDGGcB3kPdbhQbEzED-CLF2fqoZJJP8/w640-h12/screenshot-2025-12-18_12-58-42.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW5cDS6XH4-dFCsD8xHUPqCF7j-oIJqyx48zbNb4h_B05tdQB-lUWSfnovZ0ezIrGzB2BbbMY6lFkMIe553uVX6igicFAMHJvBVQNWQEsI58yPGpX3Gk-v9r7WoHWoDh6rs_cqyPowHan0PRFqX6MKcFDGGcB3kPdbhQbEzED-CLF2fqoZJJP8/s72-w640-h12-c/screenshot-2025-12-18_12-58-42.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Improved Comic Code Reviews</title><link>http://www.jona.ca/2025/12/improved-comic-code-reviews.html</link><author>noreply@blogger.com (Jonathan)</author><pubDate>Fri, 5 Dec 2025 11:27:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6637917.post-4192495702800142511</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRbcRIkBQpl6PMo4w1UVdEqCQasx_LfFtxUr5QVBRa_dpFw-Su-1qbohr7RH6xwKfHzVjSRdW0J7hTipg4Isdv-hWaV1Iix8iFbgxcuMuI1dC4G6FlvtZ9wgO4-Sw1Lq1FtBbyJ3ALV1c6545mDihkmlDSjbX9Z62ujqIeorjwnZS1XfxMzaw4/s2816/Gemini_Generated_Image_3krn903krn903krn.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1536" data-original-width="2816" height="219" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRbcRIkBQpl6PMo4w1UVdEqCQasx_LfFtxUr5QVBRa_dpFw-Su-1qbohr7RH6xwKfHzVjSRdW0J7hTipg4Isdv-hWaV1Iix8iFbgxcuMuI1dC4G6FlvtZ9wgO4-Sw1Lq1FtBbyJ3ALV1c6545mDihkmlDSjbX9Z62ujqIeorjwnZS1XfxMzaw4/w400-h219/Gemini_Generated_Image_3krn903krn903krn.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Here's how to generate a cool The Far Side-like comic panel that you can put at the top of your Github PRs.&lt;/p&gt;&lt;p&gt;1. In Claude Code: &lt;i&gt;Plan a 1-panel The Far Side-like comic strip to help code reviewers to understand what is going on/how PR 2888 works. Anthropomorphize if that will help. Use humor if appropriate. Copy the contents&amp;nbsp; to the clipboard.  At the top, put "Make a 1-panel The Far Side-like comic-strip jpg for this:" as I am going to feed it into an LLM.&lt;/i&gt;&lt;/p&gt;&lt;p&gt;2. Paste the clipboard contents into gemini.google.com for it to generate the image.&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRbcRIkBQpl6PMo4w1UVdEqCQasx_LfFtxUr5QVBRa_dpFw-Su-1qbohr7RH6xwKfHzVjSRdW0J7hTipg4Isdv-hWaV1Iix8iFbgxcuMuI1dC4G6FlvtZ9wgO4-Sw1Lq1FtBbyJ3ALV1c6545mDihkmlDSjbX9Z62ujqIeorjwnZS1XfxMzaw4/s72-w400-h219-c/Gemini_Generated_Image_3krn903krn903krn.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>I quite like the Iosevka font for terminal</title><link>http://www.jona.ca/2025/11/i-quite-like-iosevka-font-for-terminal.html</link><author>noreply@blogger.com (Jonathan)</author><pubDate>Tue, 25 Nov 2025 17:43:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6637917.post-4258208675300531416</guid><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIKSDOyqOayONpXSeI63UPxh9KiFluAhnLNdlkoxWgOOcsz9jOhUnXLqF20EBm-cIHpP-ejQcZZ-dsq_ONHdDI6yGUHrJgkllJfAbpp60R0nhea197c8uvWSrXO0zBr1-Qy3FKTxKutFvHS7vMH8HEz8GET-YgnkEq6jUSX5QjEzB-CsLN9bvK/s3458/SCR-20251125-pmqa.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="2044" data-original-width="3458" height="189" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIKSDOyqOayONpXSeI63UPxh9KiFluAhnLNdlkoxWgOOcsz9jOhUnXLqF20EBm-cIHpP-ejQcZZ-dsq_ONHdDI6yGUHrJgkllJfAbpp60R0nhea197c8uvWSrXO0zBr1-Qy3FKTxKutFvHS7vMH8HEz8GET-YgnkEq6jUSX5QjEzB-CsLN9bvK/s320/SCR-20251125-pmqa.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;In this picture it is on the Zellij multiplexer in an Alacritty window.&lt;p&gt;&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIKSDOyqOayONpXSeI63UPxh9KiFluAhnLNdlkoxWgOOcsz9jOhUnXLqF20EBm-cIHpP-ejQcZZ-dsq_ONHdDI6yGUHrJgkllJfAbpp60R0nhea197c8uvWSrXO0zBr1-Qy3FKTxKutFvHS7vMH8HEz8GET-YgnkEq6jUSX5QjEzB-CsLN9bvK/s72-c/SCR-20251125-pmqa.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>This is how I view the top AI models</title><link>http://www.jona.ca/2025/11/this-is-how-i-view-top-ai-models.html</link><author>noreply@blogger.com (Jonathan)</author><pubDate>Tue, 25 Nov 2025 03:33:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6637917.post-1014215475927008794</guid><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-Ora7PQ6vxu4j2fd1hhoaO6z_4xpJ-pmRn3dNG5-206xdfDlwvmOKL5viw-yiRpZaEcN_IXFnd83yDyyyc_zJkc9ycqovKBQXhfk4g8KpQJPGp0z5MOIGvti6X0vT3jolqRrajb1hxG9ZifNn6fjZb1VJIPvEkCl-5978fik6mOllKlNOjhcO/s1024/IMG_2811.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="559" data-original-width="1024" height="175" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-Ora7PQ6vxu4j2fd1hhoaO6z_4xpJ-pmRn3dNG5-206xdfDlwvmOKL5viw-yiRpZaEcN_IXFnd83yDyyyc_zJkc9ycqovKBQXhfk4g8KpQJPGp0z5MOIGvti6X0vT3jolqRrajb1hxG9ZifNn6fjZb1VJIPvEkCl-5978fik6mOllKlNOjhcO/s320/IMG_2811.jpeg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-Ora7PQ6vxu4j2fd1hhoaO6z_4xpJ-pmRn3dNG5-206xdfDlwvmOKL5viw-yiRpZaEcN_IXFnd83yDyyyc_zJkc9ycqovKBQXhfk4g8KpQJPGp0z5MOIGvti6X0vT3jolqRrajb1hxG9ZifNn6fjZb1VJIPvEkCl-5978fik6mOllKlNOjhcO/s72-c/IMG_2811.jpeg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Comic Code Reviews</title><link>http://www.jona.ca/2025/11/comic-code-reviews.html</link><author>noreply@blogger.com (Jonathan)</author><pubDate>Thu, 20 Nov 2025 13:37:00 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6637917.post-8945856849140495225</guid><description>&lt;p&gt;&lt;/p&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;Paste this into Claude Code or Cursor: “Review PR 13968 (this branch). Plan a comic strip to help code reviewers to understand what is going on/how the code works. Anthropomorphize if that will help.”&lt;/li&gt;&lt;li&gt;Paste what you get into gemini.google.com after this prompt: “Make a comic-strip jpg for this: &amp;lt;paste it here&amp;gt;”&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;This example is from &lt;a href="https://github.com/facebook/react/pull/13968"&gt;React #13968&lt;/a&gt; – the&amp;nbsp;initial hooks implementation.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg16-SeGGihK00WkzK__lzq4L1b9Nw1OWgTrxZwM1hHdfKybIP6KZvdWrKahF8nR7BcKdgFGqJWHEXmJMX2AuqwC7sjp_uH-HDVp-UCECVBckHHtIr-FuZ1wZx71OQ8mrWeJO0WzPCjBCefWR-8SI7GlAioX1ufzSUROCyIwZpVueZkRCCGsV-h/s1408/Gemini_Generated_Image_w55blow55blow55b.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="768" data-original-width="1408" height="175" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg16-SeGGihK00WkzK__lzq4L1b9Nw1OWgTrxZwM1hHdfKybIP6KZvdWrKahF8nR7BcKdgFGqJWHEXmJMX2AuqwC7sjp_uH-HDVp-UCECVBckHHtIr-FuZ1wZx71OQ8mrWeJO0WzPCjBCefWR-8SI7GlAioX1ufzSUROCyIwZpVueZkRCCGsV-h/s320/Gemini_Generated_Image_w55blow55blow55b.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg16-SeGGihK00WkzK__lzq4L1b9Nw1OWgTrxZwM1hHdfKybIP6KZvdWrKahF8nR7BcKdgFGqJWHEXmJMX2AuqwC7sjp_uH-HDVp-UCECVBckHHtIr-FuZ1wZx71OQ8mrWeJO0WzPCjBCefWR-8SI7GlAioX1ufzSUROCyIwZpVueZkRCCGsV-h/s72-c/Gemini_Generated_Image_w55blow55blow55b.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Switching to lighter apps (and cool things about the Orion browser)</title><link>http://www.jona.ca/2025/08/switching-to-lighter-aps.html</link><author>noreply@blogger.com (Jonathan)</author><pubDate>Fri, 29 Aug 2025 13:49:00 -0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6637917.post-1811996017441569739</guid><description>&lt;p&gt;Cursor, iTerm2, and Edge/Arc/Zen were taking up a lot of memory on my MacBook, so I am going on a bit of a memory diet and switching to lighter apps:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Instead of Cursor which is Electron-based: Zed, which is written in Rust and should be faster.&lt;/li&gt;&lt;li&gt;Instead of iTerm2, Alacritty + tmux. Alacritty is a single-window terminal, so I need tmux to handle the tabs. At first I was a bit scared of tmux but now I kind of like it - it's fun to play around with and customize.&lt;/li&gt;&lt;li&gt;Instead of Edge, Orion which is Webkit-based (by the makers of the Kagi search engine). Working out so far. Supposed to use less memory than Chrome.&lt;/li&gt;&lt;/ul&gt;&lt;h2 style="text-align: left;"&gt;Things I'm noticing about the Orion browser&lt;/h2&gt;&lt;div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Having separate dock icons for different profiles (Work and Personal) seems good&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtjE3K25IynTWuHnoJGmEFPWnu7i3V7XISoBSPlx9OHzblIU83onLONfd4m0XvutNshM16JMqrKKfhnNXX-gY5Vm0FZfj7TllGuvbDM6-EKMLfjinBrmbawfHpVVV8zMOzmV_W9XBXvic7x2GaipF-E3MZPmh4GewRQw71lwIzkVK1AQg1ib7e/s638/SCR-20250829-rbwa-2.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="316" data-original-width="638" height="158" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtjE3K25IynTWuHnoJGmEFPWnu7i3V7XISoBSPlx9OHzblIU83onLONfd4m0XvutNshM16JMqrKKfhnNXX-gY5Vm0FZfj7TllGuvbDM6-EKMLfjinBrmbawfHpVVV8zMOzmV_W9XBXvic7x2GaipF-E3MZPmh4GewRQw71lwIzkVK1AQg1ib7e/s320/SCR-20250829-rbwa-2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;There is a &lt;a href="https://orionfeedback.org/d/7630-open-external-links-in-default-profile-doesnt-work"&gt;bug&lt;/a&gt; with&amp;nbsp;Open external links in: Last Active Profile - seems to open the first profile that was opened rather than the last profile that was active. You can choose which profile to open by clicking the appropriate dock icon.&lt;/li&gt;&lt;li&gt;The vertical tabs are threaded.hierarchical - opening a tab from a webpage opens a page under the current tab. It's interesting - haven't seen that before.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyFAdXONSlB3SO2holMCnbxYZg-h8F_XWcld8flPAmGv6LEZEQQaMYRYJ_WF6cSRxjhX8Gxf7L5jJG8vg36I100SKVK-xe_Rg_xZMlyPm-lu7J_94-6CNHCdUQhjVjO16P_rJuECxQc_VFWSi83Jh8SoPAsVeOAJaBVNToIn2I-4eXaj3gS_zD/s3458/SCR-20250829-rbkb-2.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="2044" data-original-width="3458" height="189" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyFAdXONSlB3SO2holMCnbxYZg-h8F_XWcld8flPAmGv6LEZEQQaMYRYJ_WF6cSRxjhX8Gxf7L5jJG8vg36I100SKVK-xe_Rg_xZMlyPm-lu7J_94-6CNHCdUQhjVjO16P_rJuECxQc_VFWSi83Jh8SoPAsVeOAJaBVNToIn2I-4eXaj3gS_zD/s320/SCR-20250829-rbkb-2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;To get the new-tab shortcut (⌘-T) to put your cursor in the address bar so you can type something immediately, set New tabs open with: Empty Page&lt;/li&gt;&lt;li&gt;When it prompts to ask if a website should access my location, one of the options is Never For This Website, which is useful and something I haven't seen in other browsers&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiZ3pAHS8E4dAdACxOTeAvNmVys6KS0A-mMiud2XjMjgk60bIY9fUC1zFV9ywKeXcRpGu3gv19n4FC6R3mrD4HjqBJqiYu67upPOGCPt04sXZ1_7nLMSXgGLzCP5HPiurQTlTQl2U7G3ZRYVh5MDxaUzaJbZKEFwG1v3mjerN0iVWO3Hwb2OY3/s776/SCR-20250830-shuf-3.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="776" data-original-width="588" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiZ3pAHS8E4dAdACxOTeAvNmVys6KS0A-mMiud2XjMjgk60bIY9fUC1zFV9ywKeXcRpGu3gv19n4FC6R3mrD4HjqBJqiYu67upPOGCPt04sXZ1_7nLMSXgGLzCP5HPiurQTlTQl2U7G3ZRYVh5MDxaUzaJbZKEFwG1v3mjerN0iVWO3Hwb2OY3/s320/SCR-20250830-shuf-3.png" width="242" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;I believe for each extension you have the option to set which sites it is enabled for, which is nice&lt;/li&gt;&lt;li&gt;On a pinned tab, to reset to the pinned URL, &lt;a href="https://orionfeedback.org/d/5593-pinned-tabs-reset-to-initial-link/6"&gt;use Cmd+click&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;You can right-click a page and choose Summarize. A pane will appear on the right with a summary. If you move to a different page and want to summarize &lt;i&gt;that&lt;/i&gt;, click the Summarize button on the lower right of the pane.&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMydOZ2g4KfFDGXuCs4lsvqHqdF_4HJ0J3asF0lAaMtFI-7hMgr9aG8wS1DuL5F4m6R7JhGamSdRepzqPSCdnOvhyphenhyphenTNT1W3s_12QFqdx1CtK2Sng6lGGRznyO86sIM2wo_8MRmaz6N1xhgkAIhsknxbTf7sjngdceIB0MMTlL7colWppE6Utyi/s3458/SCR-20250909-bjwx-3.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="2044" data-original-width="3458" height="189" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMydOZ2g4KfFDGXuCs4lsvqHqdF_4HJ0J3asF0lAaMtFI-7hMgr9aG8wS1DuL5F4m6R7JhGamSdRepzqPSCdnOvhyphenhyphenTNT1W3s_12QFqdx1CtK2Sng6lGGRznyO86sIM2wo_8MRmaz6N1xhgkAIhsknxbTf7sjngdceIB0MMTlL7colWppE6Utyi/s320/SCR-20250909-bjwx-3.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Tabs show a thumbnail preview when you hover over them:&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaMcrmiH-8m0x3BGpWs18OgAu_FdnBBOJSZemLbh4yLgC-Vg8Y7vwMPSwSYqRip8ykCYC9-yrEvECjDgAeUnKDvTTG7sXdEdiTPrVT5dgFpQrm3h8TFQwl5hU8mn9mok5JpqR2OQwDO4Yr5XXPWtnPgrtYOlnJN5X51kLrNaehFHsTbNbJAElm/s3456/SCR-20250909-lify-2.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="2234" data-original-width="3456" height="207" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaMcrmiH-8m0x3BGpWs18OgAu_FdnBBOJSZemLbh4yLgC-Vg8Y7vwMPSwSYqRip8ykCYC9-yrEvECjDgAeUnKDvTTG7sXdEdiTPrVT5dgFpQrm3h8TFQwl5hU8mn9mok5JpqR2OQwDO4Yr5XXPWtnPgrtYOlnJN5X51kLrNaehFHsTbNbJAElm/s320/SCR-20250909-lify-2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;ul&gt;&lt;li style="text-align: left;"&gt;It has a way to create a &lt;a href="https://help.kagi.com/orion/features/web-apps.html"&gt;dedicated app for a website&lt;/a&gt; (Tools &amp;gt; Install This Site as an App)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h2&gt;Things I'm noticing about the Orion browser for iOS&lt;/h2&gt;&lt;/div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Orion for iOS has vertical tabs, which is space-saving&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgabYb4EQByUXgY2mt0GC05Jg5vt4AO4PTSpgEUIQAqom5j7XyuOEcWMCQorv37N-9UAumNd6af-BcIq8tr4vL0uPUiIcwUgr6_nqr1T4qDqDWbtMpwdYEd7KoJUE5qPzKdLmfxSi0oRFBhWumfrOvMqln3f2bnhq07T5EIRnsKLeHcbLXVPZ6V/s2436/SCR-20250829-rbwa-3.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="2436" data-original-width="1125" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgabYb4EQByUXgY2mt0GC05Jg5vt4AO4PTSpgEUIQAqom5j7XyuOEcWMCQorv37N-9UAumNd6af-BcIq8tr4vL0uPUiIcwUgr6_nqr1T4qDqDWbtMpwdYEd7KoJUE5qPzKdLmfxSi0oRFBhWumfrOvMqln3f2bnhq07T5EIRnsKLeHcbLXVPZ6V/s320/SCR-20250829-rbwa-3.png" width="148" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;The iOS app has so many configuration options - it's great&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirjgZarezapiQ4KY7Ev5Yjpu35LLfnQtqMBduNsGxa_QwpjfJLPxisEn4BqSyZBlZxaSTWfZtwhVFDBxfy72rQgnwjeeaj9skIr8N4GY3pCBVWmLdPusL2_qlFLEOvXpfFfrMQJOdC4yFGsJ5kzg7J0yCucq0WTQH219HZrE9Ehyphenhyphen9-pymvDcoq/s2436/IMG_2205.PNG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="2436" data-original-width="1125" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirjgZarezapiQ4KY7Ev5Yjpu35LLfnQtqMBduNsGxa_QwpjfJLPxisEn4BqSyZBlZxaSTWfZtwhVFDBxfy72rQgnwjeeaj9skIr8N4GY3pCBVWmLdPusL2_qlFLEOvXpfFfrMQJOdC4yFGsJ5kzg7J0yCucq0WTQH219HZrE9Ehyphenhyphen9-pymvDcoq/s320/IMG_2205.PNG" width="148" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;The iOS app is the first iOS browser I've seen that lets you in tall Chrome and Firefox extensions? I haven't tried this though.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2 style="text-align: left;"&gt;Things I'm noticing about Alacritty&lt;/h2&gt;&lt;div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;The colors were a bit washed out. Fixed by switching to the xterm theme:&amp;nbsp;import = ["~/.config/alacritty/themes/themes/xterm.toml"]&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtjE3K25IynTWuHnoJGmEFPWnu7i3V7XISoBSPlx9OHzblIU83onLONfd4m0XvutNshM16JMqrKKfhnNXX-gY5Vm0FZfj7TllGuvbDM6-EKMLfjinBrmbawfHpVVV8zMOzmV_W9XBXvic7x2GaipF-E3MZPmh4GewRQw71lwIzkVK1AQg1ib7e/s72-c/SCR-20250829-rbwa-2.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Things I love using my command-line AI tool for</title><link>http://www.jona.ca/2025/08/things-i-love-using-my-command-line-ai.html</link><author>noreply@blogger.com (Jonathan)</author><pubDate>Wed, 27 Aug 2025 17:12:00 -0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6637917.post-6933907650019150872</guid><description>&lt;p&gt;Here I am going to build a list of things I love using my command-line AI tool for - I use Amazon Q Developer CLI:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Resolving merge conflicts&lt;/li&gt;&lt;li&gt;Making a ChatGPT prompt to tell me &lt;b&gt;what I need to do today&lt;/b&gt;. It pulls events from Google Calendar (via ChatGPT Google Calendar integration), todos from Todoist (via Todoist API), and todos from Streaks iOS app (via Mac Shortcut)&lt;/li&gt;&lt;li&gt;Committing and &lt;b&gt;creating a PR&lt;/b&gt; in one step using this prompt:&amp;nbsp;&lt;i&gt;create a branch with an appropriate name (don't use a slash; the Jira ticket is &amp;lt;Jira ticket number goes here&amp;gt;), commit, push, use gh to make a pr (follow any pull_request_template.md files), give me a 1-liner I can paste into Slack (like "PR to foo the bar: https://github.com/SemanticSugar/sludge/pull/3174") then open the pr in a browser. At the bottom of the pr description, put: Made with ❤️ with Amazon Q Developer CLI&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Figuring out if I &lt;b&gt;need to water the lawn&lt;/b&gt; this week using this prompt: &lt;i&gt;replace month and year in this URL https://www.flowworks.com/network/rainfallstats/statsopen.aspx?externalRequest=surreyrain&amp;amp;siteid=32&amp;amp;sitefullname=Surrey%20Municipal%20Hall&amp;amp;measid=1226&amp;amp;month=6&amp;amp;year=2025 and use curl to figure out how much it rained in Surrey in the past week in inches&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Code review a PR&lt;/b&gt; using this prompt:&amp;nbsp;&lt;i&gt;Review PR &amp;lt;PR number goes here&amp;gt; (&amp;lt;branch name goes here&amp;gt; branch). Use gh to check the PR description and comments for context. Are there any bugs or inconsistencies?&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Understand a PR&lt;/b&gt; using this prompt:&amp;nbsp;&lt;i&gt;for the PR, show me the changes in this PR and annotate them line-by-line or every few lines to help me to understand the changes (except for the test code). Feel free to rearrange the order of the code if that would tell a better story. Prefix any comments you add with Q:&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Create a Jira ticket&lt;/b&gt; for a problem: &lt;i&gt;&amp;lt;paste Slack conversation here&amp;gt;&amp;nbsp;make a jira title and description, save it in ~/Junk/jira.md, and open it in cursor&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Summarize current chat&lt;/b&gt; and save it to a file: &lt;i&gt;Today is {YYYY}-{MM}-{DD} Choose a descriptive filename that I can use to save the context of this conversation as - something like /Users/jonaquino/Documents/AI_Conversations/2025-07-23-foo-bar-baz.md. Use today's date. Save a summary of this conversation to that file.&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;When I'm on-call at work&lt;/b&gt;, I have Amazon Q Developer CLI connected by MCP to PagerDuty and to our company wiki (Confluence), so I can ask things like:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;what are my pagerduty incidents?&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;check if the success file is there now&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;any runbooks in confluence about this issue?&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;check ~/projects/udp to see if there is a DAG for AttributionsLinkedin&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;recheck if the s3 file is there now&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item></channel></rss>