<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Entries on Carlos Urreta&#39;s Weblog</title>
    <link>https://urreta.com/entries/</link>
    <description>Recent content in Entries on Carlos Urreta&#39;s Weblog</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    <lastBuildDate>Sun, 08 Nov 2026 21:14:18 -0600</lastBuildDate>
    <atom:link href="https://urreta.com/entries/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>urreta.com, finally</title>
      <link>https://urreta.com/2026/11/08/urreta-com-finally/</link>
      <pubDate>Sun, 08 Nov 2026 21:14:18 -0600</pubDate>
      <guid>https://urreta.com/2026/11/08/urreta-com-finally/</guid>
      <description>&lt;p&gt;I am now the proud owner of &lt;a href=&#34;https://urreta.com&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;urreta.com&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;It was first registered in 2004, and I’ve wanted it since around 2006. For the past 22 years, it’s been in the hands of domain squatters. Every so often I’d visit to check the asking price, then grumble and curse.&lt;/p&gt;&#xA;&lt;p&gt;Ten years ago: $10,000. Five years ago: $4,000. Last year: $1,000.&lt;/p&gt;&#xA;&lt;p&gt;Yesterday: $500.&lt;/p&gt;&#xA;&lt;p&gt;At that price, it was one of those “treat yo’ self” moments. I’d prefer never to engage with squatters, but I made an exception.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Supervised SSH Into a Friend&#39;s Mac</title>
      <link>https://urreta.com/2026/06/30/supervised-ssh-into-a-friends-mac/</link>
      <pubDate>Tue, 30 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://urreta.com/2026/06/30/supervised-ssh-into-a-friends-mac/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been working with a friend to harden the personal infrastructure around the productivity stuff we&amp;rsquo;re both building, mostly handling more ideas and routing them to the right places, with LLMs and agents stepping in where it makes sense. My side is pretty robust and stable at this point. His is coming along, and I often want to be the one typing on his computer: go in, make a bunch of changes, and hand the machine back.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Little pass Trick</title>
      <link>https://urreta.com/2026/03/13/pass-unlock/</link>
      <pubDate>Fri, 13 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://urreta.com/2026/03/13/pass-unlock/</guid>
      <description>&lt;p&gt;Every morning I process my inbox containing voice notes I left myself, messages from people I need to respond to, links and notes that need to get routed to the right places. Agents help with the retrieval and routing, and a lot of that touches secrets stored in &lt;a href=&#34;https://www.passwordstore.org/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;pass&lt;/a&gt;: API tokens, bot credentials, that kind of thing.&lt;/p&gt;&#xA;&lt;p&gt;The problem is that the first &lt;code&gt;pass&lt;/code&gt; call in a session prompts for my GPG passphrase. If an agent hits that mid-run, it just hangs waiting for input I&amp;rsquo;m not watching for.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Adding a Replay Buffer to Handy</title>
      <link>https://urreta.com/2026/03/04/replay-buffer-for-handy/</link>
      <pubDate>Wed, 04 Mar 2026 22:00:00 -0600</pubDate>
      <guid>https://urreta.com/2026/03/04/replay-buffer-for-handy/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;replay-buffer-settings.webp&#34; alt=&#34;Replay buffer settings in Handy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve been using &lt;a href=&#34;https://handy.computer&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Handy&lt;/a&gt; for a while now. It&amp;rsquo;s a desktop speech-to-text app where you hold a key, talk, and it transcribes and pastes what you said. Simple and useful. But I kept running into a situation where I&amp;rsquo;d have a conversation, riff on something good, and then think &lt;em&gt;I wish I had written that down&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;So I forked it and added a replay buffer. Here&amp;rsquo;s my fork on GitHub: &lt;a href=&#34;https://github.com/curreta/Handy/tree/feature/ring-buffer&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;github.com/curreta/Handy/tree/feature/ring-buffer&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>You Must Have a Nice Camera</title>
      <link>https://urreta.com/2026/01/20/nice-camera/</link>
      <pubDate>Tue, 20 Jan 2026 10:59:00 -0600</pubDate>
      <guid>https://urreta.com/2026/01/20/nice-camera/</guid>
      <description>&lt;p&gt;I used to be more out there showing people my photography and would occasionally get an quick response of, &amp;ldquo;Oh, you must have a nice camera.&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;It used to sting, but now I see it in good faith. I know people without photography experience don&amp;rsquo;t have much grasp of what&amp;rsquo;s at play. No problemo. I fight blurting out, &amp;ldquo;OK, take my camera and make something half as good,&amp;rdquo; and instead give a cheery, &amp;ldquo;Yeah, I do. I have some pretty good lenses too!&amp;rdquo;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fixing Poshmark&#39;s Annoying Hover Menus</title>
      <link>https://urreta.com/2026/01/16/fixing-poshmarks-annoying-hover-menus/</link>
      <pubDate>Fri, 16 Jan 2026 17:48:07 -0600</pubDate>
      <guid>https://urreta.com/2026/01/16/fixing-poshmarks-annoying-hover-menus/</guid>
      <description>&lt;p&gt;I was watching my sister browse Poshmark when she accidentally hovered over one of the navigation menus. The entire screen was immediately covered by a massive dropdown. Classic bad UX—hover menus that are too eager and too large.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Debugging the Browser Camera API</title>
      <link>https://urreta.com/2026/01/06/debugging-the-browser-camera-api/</link>
      <pubDate>Tue, 06 Jan 2026 09:49:47 -0600</pubDate>
      <guid>https://urreta.com/2026/01/06/debugging-the-browser-camera-api/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been adding a feature to &lt;a href=&#34;https://garbs.net&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Garbs.net&lt;/a&gt; that lets you take photos directly from the browser using the &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/API/ImageCapture&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;ImageCapture API&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;It was working great on my Pixel 9a, but when my sister tested on her Galaxy S21, all our closeup test shots were coming out blurry. The issue? Her phone has an extra ultrawide lens with a fixed focus, and my code wasn&amp;rsquo;t picking the correct camera.&lt;/p&gt;&#xA;&lt;p&gt;After some digging, I discovered that Camera 0 (the &amp;ldquo;Main&amp;rdquo; camera) was being returned as index 3 or 4 on her device. The camera enumeration order isn&amp;rsquo;t consistent across phones.&lt;/p&gt;</description>
    </item>
    <item>
      <title>All I Can Do Is Try</title>
      <link>https://urreta.com/2025/09/08/all-i-can-do-is-try/</link>
      <pubDate>Mon, 08 Sep 2025 07:38:41 -0500</pubDate>
      <guid>https://urreta.com/2025/09/08/all-i-can-do-is-try/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m closing on my first house in a few days, and I&amp;rsquo;ve been familiarizing myself with that midwestern temple, Menards. &lt;em&gt;Cue shining light imagery followed by a celestial &amp;ldquo;aaaaahhhhh.&amp;rdquo;&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;As I was leaving the pipe fitting section, another guy was finishing up in the same aisle. He grabbed his selection, started walking away, and with a subtle shake of his head muttered under his breath, &amp;ldquo;All I can do is try.&amp;rdquo;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Claude Code Mantras</title>
      <link>https://urreta.com/2025/08/13/claude-code-mantras/</link>
      <pubDate>Wed, 13 Aug 2025 09:01:34 -0500</pubDate>
      <guid>https://urreta.com/2025/08/13/claude-code-mantras/</guid>
      <description>&lt;p&gt;I let myself have the mental model that &lt;a href=&#34;https://claude.ai/code&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Claude Code&lt;/a&gt; is running alongside different projects. Sometimes I&amp;rsquo;m in a full sprint and need to rely on Claude&amp;rsquo;s full pace. That&amp;rsquo;s the case for the &lt;a href=&#34;https://garbs.net&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;inventory and listing software&lt;/a&gt; my sister and I are building. It&amp;rsquo;s in a programming language I&amp;rsquo;m deeply familiar with, and the whole application context is loaded in my head. Other times, as in the case of &lt;a href=&#34;https://pomoria.com&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Pomoria Energy&lt;/a&gt;, it&amp;rsquo;s a side project that needs to grow much more intentionally. The architecture and diligence are more important.&lt;/p&gt;</description>
    </item>
    <item>
      <title>TIL: HTML Error Responses Can Crash Wails JavaScript Bindings</title>
      <link>https://urreta.com/2025/08/06/til-html-error-responses-can-crash-wails-javascript-bindings/</link>
      <pubDate>Wed, 06 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://urreta.com/2025/08/06/til-html-error-responses-can-crash-wails-javascript-bindings/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt;&#xA;I was working on a Wails desktop application and had the Go backend upload a photo to my own API (another service). When the photo failed to upload I didn&amp;rsquo;t catch that my own upload endpoint was returning an HTML error response instead of JSON. This caused the Javascript VM to show &amp;ldquo;NeedDebuggerBreak trap&amp;rdquo; and promises never resolved.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&#xA;I didn&amp;rsquo;t fully debug whether the issue was because the HTML was too large or special characters in the response were causing an issue. The solution was to have the API return a proper JSON response.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Local and Private Voice-to-Insight System with AI</title>
      <link>https://urreta.com/2024/07/25/local-private-voice-to-insight-system/</link>
      <pubDate>Thu, 25 Jul 2024 12:00:00 +0000</pubDate>
      <guid>https://urreta.com/2024/07/25/local-private-voice-to-insight-system/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve built a system that uses AI to help manage my thoughts and emotions. It&amp;rsquo;s not perfect, but it works for me. Here&amp;rsquo;s how I use it every day.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&amp;ldquo;&amp;hellip;giving me a starting point for further reflection&amp;rdquo;&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;process-overview&#34;&gt;Process Overview&lt;/h2&gt;&#xA;&lt;p&gt;It&amp;rsquo;s pretty straightforward:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;I talk to my watch, just like leaving a voice message.&lt;/li&gt;&#xA;&lt;li&gt;My home server picks up the new audio file.&lt;/li&gt;&#xA;&lt;li&gt;It turns my words into text.&lt;/li&gt;&#xA;&lt;li&gt;The text goes through an AI that &amp;ldquo;thinks&amp;rdquo; about what I said.&lt;/li&gt;&#xA;&lt;li&gt;Both the original text and the AI&amp;rsquo;s thoughts end up in my note-taking app.&lt;/li&gt;&#xA;&lt;li&gt;My watch receives the AI&amp;rsquo;s response within a few seconds.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;All of this happens automatically, locally, without me doing anything beyond the initial voice memo.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
