<p>The house runs itself the same way every morning. And every night, it can rewrite how it runs.</p> <p>Those two sentences are in tension — a system deterministic enough to trust with the locks and the alarm, and adaptive enough that an AI edits its own behavior while everyone sleeps. Resolving that tension is the entire architecture, and the resolution has a shape robotics settled on decades…
<p>A whole-house automation setup lives or dies on how it’s organized, not on how clever any single automation is. Mine runs on a few dozen YAML packages, a handful of custom blueprints, a calendar integration that turns schedules into routines, and a voice pipeline that speaks in every room. This page is the architecture: how the configuration is split, what the blueprints abstract, and where a…
<p>A whole campaign — its maps, its monsters, its months of session history — fits in a folder of plain Markdown files. No database, no proprietary format, no subscription. The vault is the single source of truth, and everything else is a render, an export, or a link out to a platform.</p> <p>That constraint is the whole trick. Because every note is just text, the campaign gets a wikilink graph,…
<p>Everything runs headless on one always-on Linux machine. There is no cluster, no cloud build farm, no Kubernetes — just an ordinary unprivileged user, a working tree, and a pool of specialized Claude Code agents that share it. Claude Code is Anthropic’s command-line coding tool; an agent, here, is a scoped persona it can hand a job to.</p> <p>The shape is simple to state. Three intake paths…
<p>The interactive AI conversation — the one where you sit at a chat window and ask things — is the part everyone talks about. It’s also the part I use least. Most of the AI in my life never asks for my attention. It runs on a clock, triages my inbox, watches my house, files things where they belong, and drops me a note when something needs me.</p> <p>This is the ambient half. It’s quieter than…
<p>I counted the other day. My Claude Code setup has 37 skills, a multi-agent SDLC pipeline, a six-agent research workflow, a handful of bespoke reviewers, and a knowledge-graph search across nearly 5,000 vault notes. Of all of that, I wrote exactly one thing by hand.</p> <p>Everything else the system built for itself, with me reviewing every definition and holding the taste gate. The seed was an…
<p>Back in May I put four posts online in quick succession — a Claude Code workflow built on a ten-step SDLC pipeline, my AI-native homelab, the Home Assistant architecture underneath it, and a rig for running Dungeons and Dragons out of Obsidian. Four systems, and every one of them already worked the day I wrote it up.</p> <p>Those posts were the <em>before</em>. What I want to write down here is…
<p>For the past five or six months, every code change I ship has gone through one of two pipelines, and a routing heuristic picks which. Small, single-file changes take an eight-step fast path. Anything complex or high-stakes takes the full eleven-step version. Both are overkill for a one-person homelab on paper, and I keep reaching for one most days I write code. This is why.</p> <pre><button…
<p>A few months ago I had a passing thought about how MQTT QoS levels actually behave in practice. Normally that’s fifteen minutes of vague Googling, half an answer, and forgotten by dinner. Instead I typed it into Todoist.</p> <p>By the time I checked back there was a research note in my vault: six sources tiered by credibility, a synthesis that named the actual tradeoffs, a Mermaid diagram of…
<p>The Mac had been offline for a while. When it reconnected to Syncthing at 21:03 UTC on a Saturday night, the LXC’s puller took less than fifteen minutes to start applying the delta: 2,657 file deletions, 574 frontmatter prunes stripping 74,118 lines against just 809 additions, and 166 Apple-style <code><name> 2.md</code> conflict copies scattered across half the vault.</p> <p>Nothing was…
<p>I have microphones outside that listen for birds. A neural net running on a little server chews on the audio around the clock, and every time it’s confident it heard a species, it posts the result to my home dashboard. Common Chiffchaff at 94% confidence. Great Tit. Blackcap. The dashboard is where I glance to see what’s been singing.</p> <p>For a while, the dashboard said nothing. Every bird…
<blockquote class="callout note" data-callout="note"> <div class="callout-title"> <div class="callout-icon"></div> <div class="callout-title-inner"><p>A snapshot from May 2026. The tended, current-state version lives in the garden: <a href="../../Garden/claude-code-workflow" class="internal alias" data-slug="Garden/claude-code-workflow">claude-code-workflow</a>.</p></div> </div> </blockquote> <p>I…
<blockquote class="callout note" data-callout="note"> <div class="callout-title"> <div class="callout-icon"></div> <div class="callout-title-inner"><p>A snapshot from May 2026. The tended, current-state version lives in the garden: <a href="../../Garden/dnd-obsidian-ai-workflow" class="internal alias" data-slug="Garden/dnd-obsidian-ai-workflow">dnd-obsidian-ai-workflow</a>.</p></div> </div>…
<blockquote class="callout note" data-callout="note"> <div class="callout-title"> <div class="callout-icon"></div> <div class="callout-title-inner"><p>A snapshot from May 2026. The tended, current-state version lives in the garden: <a href="../../Garden/home-assistant-architecture" class="internal alias" data-slug="Garden/home-assistant-architecture">home-assistant-architecture</a>.</p></div>…
<blockquote class="callout note" data-callout="note"> <div class="callout-title"> <div class="callout-icon"></div> <div class="callout-title-inner"><p>A snapshot from May 2026. The tended, current-state version lives in the garden: <a href="../../Garden/my-ai-native-homelab" class="internal alias" data-slug="Garden/my-ai-native-homelab">my-ai-native-homelab</a>.</p></div> </div> </blockquote>…
<p>Yesterday, a project at Google that I’ve been putting a lot of work into launched! You can read about it on the <a href="http://google-latlong.blogspot.com/2014/09/making-of-maps-cornerstones.html" class="external">Google Lat Long blog<svg aria-hidden="true" class="external-icon" style="max-width:0.8em;max-height:0.8em" viewBox="0 0 512 512"><path d="M320 0H288V64h32 82.7L201.4 265.4 178.7 288…
<p>Kalman filters are notoriously difficult to comprehend. I’ve come to the conclusion that, for people like me, it’s mostly due to the notation used in their description. For those of you like me, I offer the following, fancy-equation-free explanation of the one-dimensional Kalman filter.</p> <p>I prefer code to equations. Those of you like me know that mathematicians and physicists are fond of…
<p>If your Roomba is getting slow in its old age, try cleaning the forward IR sensors.</p> <ol> <li>Remove the front bumper by backing out 10 or so small screws along the underside of the bumper. It should pop off easily. Be careful not to damage the wire harness. Disconnecting the harness is not necessary.</li> <li>Using canned air, blow out the dust from the entire inside of the bumper. Pay…
<p>For the past few months, I’ve been working on a new ROS SLAM package called google_mapping. Along the way, I’ve been taking notes on best practices for making ROS packages offline-friendly. This is when you ask, “isn’t that what <a href="http://ros.org/wiki/Bags" class="external">bags<svg aria-hidden="true" class="external-icon" style="max-width:0.8em;max-height:0.8em" viewBox="0 0 512…
<p>I gave another talk about cloud robotics at Devoxx 2012 in Antwerp last month. This talk is Java developer focused and goes into more detail about ROS than the one at Berkeley. It also has more cool robot videos and a fun maze-solving-robot demo :)</p> <p>I really liked the venue. Giving a presentation in front of a huge movie screen like that was pretty great.</p> <p>The <a…
<p>I just got back from my trip to the inaugural ROSCon. Putting faces to names within the ROS community was a great experience. Beyond that, many of the sponsors brought in some hardware to play with!</p> <p>My rosjava talk was well attended and the video is now up on YouTube. It’s aimed at developers who are already familiar with both ROS and Java. After just a single year since its release, I…
<p>I have a Logitech diNovo Edge Bluetooth keyboard. I like it a lot for use with our HTPC. However, I found that when the HTPC is suspended, the keyboard would not reconnect on resume.</p> <p>I found this solution on the <a href="http://ubuntuforums.org/showpost.php?p=11543623&postcount=5" class="external">Ubuntu Forums<svg aria-hidden="true" class="external-icon"…
<p>I was surprised to find out that plugging a DVI to HDMI cable into my Lenovo X220 docking station allowed me to use the audio channel of the HDMI connection. However, setting it up required a bit of trial and error.</p> <p>Open your sound settings and click the “Hardware” tab. You can then choose a “Profile” from the drop down. There are lots of profiles to choose from and many of them mention…
<p>I’ve used my beloved Kinesis Advantage keyboard for over half a decade. Occasionally, I’ve had the issue that Eclipse stops responding to the <code>F3</code> key for opening declarations. After checking all the key settings, I found that Eclipse was correctly configured. That lead me to use <code>xev</code> where I found that the <code>F3</code> and <code>F4</code> keys were behaving…
<p>I found existing tutorials on how to do this to be a bit complicated. Here’s how to do simple fling detection in four directions:</p> <figure data-rehype-pretty-code-figure=""><pre tabindex="0" data-language="java" data-theme="github-light github-dark"><code data-language="java" data-theme="github-light github-dark" style="display: grid;"><span data-line=""><span…
<p>23 AIs found. Quarantine? Yes. Delete? Yes. “Mom, you have to go through this every day! I can’t keep coming round here every time this piece of shit starts acting up!” She starts to look away. He can feel the guilt pounding, tears welling. It’s not her fault. These things happen. AI is a natural phenomenon.</p> <p>“Another pan-AI has been quarantined by authorities. Details at eleven.” The…
<p><em>Damon says</em>: Fallout: New Vegas is definitely the most fun I’ve had wasting away in front of the Xbox for days at a time. I’m new to the series, but I’ll be picking up the next installment and possibly some of the previous ones.</p> <p>Usually I play games in fairly short bursts. When I do play for several hours at a time, the game is usually finished in a few days. New Vegas was…
<p><strong>Update</strong>: as pointed out in the comments below, instructions are available on the <a href="http://www.ros.org/wiki/cturtle/Installation/Ubuntu/SVN" class="external">ROS wiki<svg aria-hidden="true" class="external-icon" style="max-width:0.8em;max-height:0.8em" viewBox="0 0 512 512"><path d="M320 0H288V64h32 82.7L201.4 265.4 178.7 288 224 333.3l22.6-22.6L448 109.3V192v32h64V192 32…
<p><em>Damon says</em>: Fable III is the most disappointing sequel since <em>The Kingdom of the Crystal Skull</em>. <em>Laura says</em>: I was disappointed. The worst part was that the game was okay - maybe a 6/10 or 7/10 thanks to the Darkness Incarnate quest. It wasn’t great, but it wasn’t so poor that I felt I could legitimately hate it. The graphics are fun if cartoony, the sound is good, the…
<p>Installing and running SketchUp 7 under Wine works quite well with Ubuntu Lucid. But, not out of the box:</p> <ul> <li>You’ll probably need to do the <a href="http://wiki.winehq.org/GoogleSketchup" class="external">registry hack (and/or others) described on WineHQ’s wiki<svg aria-hidden="true" class="external-icon" style="max-width:0.8em;max-height:0.8em" viewBox="0 0 512 512"><path d="M320…
<p>I’ve been experimenting with different configurations for controlling my HTPC. Since I typically have my laptop on the couch with me, one setup I’m trying is Synergy.</p> <p>By itself, Synergy is completely insecure. However, it’s easy enough to secure through the use of SSH tunnels. There are lots of tutorials for setting up Synergy through a tunnel, but I didn’t find any that suit the HTPC…
<p>We’d like to introduce our cats to the interwebs. While many of you may already know Helo from his <a href="http://picasaweb.google.com/lh/photo/HfipVqHQc6j-0aIFGQf73w?feat=directlink" class="external">previous<svg aria-hidden="true" class="external-icon" style="max-width:0.8em;max-height:0.8em" viewBox="0 0 512 512"><path d="M320 0H288V64h32 82.7L201.4 265.4 178.7 288 224 333.3l22.6-22.6L448…
<p>In the summer of 2010, I built a MakerBot Cupcake CNC from a deluxe kit (batch 15). Over the next year, I upgraded nearly every component, added Bluetooth wireless printing, switched from ABS to PLA, and used it to make everything from costume jewelry to a LED menorah. This is the full story of the build, the fixes, and the things I printed.</p> <h1 id="building-the-kit">Building the Kit<a…