<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/home/static/styles/pretty-feed-v3.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Interconnected</title>
    <link>https://interconnected.org/home</link>
    <description>A blog by Matt Webb. My notebook and space for thinking out loud since February 2000.</description>
    <copyright>Copyright © 2026 Matt Webb</copyright>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <language>en</language>
    <lastBuildDate>Thu, 11 Jun 2026 01:27:18 +0000</lastBuildDate>
    <pubDate>Fri, 05 Jun 2026 16:45:00 +0000</pubDate>
    <item>
      <title>Self-driving legs to walk me to the office</title>
      <link>https://interconnected.org/home/2026/06/05/splitbody</link>
      <description><![CDATA[<div>
<p>When we end up voluntarily ceding control of our own body parts to AI (for example so we can automatically walk around the grocery story while simultaneously catching up on boxsets on a VR headset) I wonder what that will feel like.</p>
<hr />
<p>The underlying tech is currently in research phase.</p>
<p>What I mean is that <a href="https://interconnected.org/home/2025/03/28/filtered">humanoid robots are coming</a> <em>(as previously discussed).</em></p>
<p>And while robots are a mechanical challenge and a software challenge, some people are asking: what if you took that software part and pointed it at something else? Like, not a robot shaped like the human body but the human body itself.</p>
<p>For example: you can directly drive the muscles using Electrical Muscle Stimulation (EMS).</p>
<p>Here’s a new wearable called <strong><a href="https://github.com/danielkaijzer/Human-Operator">Human Operator</a></strong> which won MIT Hard Mode 2026.</p>
<blockquote>
<p>Human Operator is a human augmentation tool that allows AI to briefly take control of your body to help you learn and do things you normally cannot do. To do this, it uses a Vision-Language Model for human motor control through Electrical Muscle Stimulation (EMS). Vision-based commands are generated via open-ended speech input through the Claude API to control finger and wrist stimulation for intuitive on-body interaction.</p>
</blockquote>
<p>So you wear this augmentation over your arm. It looks like white fish scales.</p>
<p>Then you talk to it. And it zaps your muscles to play the piano: <em>"AI stimulates fingers in sequence to play melody."</em></p>
<p>That’s the link to the GitHub page in case you want to build it yourself.</p>
<hr />
<p>Cognitively, zapping your muscles to perform a task frees up your brain to do other stuff!</p>
<p>Here’s a paper that studies this:</p>
<p>Nith, R., Ho, Y., &amp; Lopes, P. (2024). <a href="https://dl.acm.org/doi/fullHtml/10.1145/3613904.3642629">SplitBody: Reducing mental workload while multitasking via muscle stimulation</a>. In <em>Proceedings of the CHI Conference on Human Factors in Computing Systems (CHI ‘24)</em> Article 81, 1-11. Association for Computing Machinery.</p>
<p>The authors point out that mostly EMS is used for tasks the subject is already focused on, e.g. <em>"playing a musical instrument."</em></p>
<p>And also EMS is distracting, either because it <em>"causes a tingling"</em> or generally it will <em>"decrease the user’s sense of agency"</em>.</p>
<p>But despite that, would it be possible to perform two sub-tasks, such as:</p>
<blockquote>
<p>continuously stirring the pot to make caramel (a repetitive muscle movement) and writing an essay (a cognitively-demanding task).</p>
</blockquote>
<p>The researchers called their EMS implementation <strong>SplitBody.</strong> It looks like a cigarette packet strapped to your upper arm.</p>
<p>Results:</p>
<blockquote>
<p>We found that with <em>SplitBody</em>, participants reported less physical-demand (decrease of 31%) and less mental-demand (decrease of 26%) than when performing the task by themselves. Moreover, the performance increased by 35% (averaged over both tasks), including the task that was not automated by EMS, which increased by 18%.</p>
</blockquote>
<p>i.e. if you’re on a work call and cooking at the same time, you should let yourself get electrocuted to do the cooking because, although it tingles, you’ll end up doing better at the work call and the cooking too.</p>
<p>Multi-tasking!</p>
<hr />
<p>Electrical Muscle Stimulation is step one.</p>
<p>You could go direct to the brain?</p>
<p>Like, you can have robot cockroaches:</p>
<p>There’s a backpack that you can install on cockroaches that drives them around by zapping the neurons in their antennas with electrical pulses.</p>
<p>It was a Kickstarter in 2013: <a href="https://www.kickstarter.com/projects/backyardbrains/the-roboroach-control-a-living-insect-from-your-sm">The RoboRoach: Control a living insect from your smartphone!</a></p>
<p>There’s also a technique called <strong>transcranial magnetic stimulation</strong> that you can use with humans: you zap your brain with a whopping great big magnet, and if you point it at your motor cortex then it can move your arms and legs.</p>
<p>Apparently it feels like free will.</p>
<hr />
<p>Every so often I dream of a <a href="https://interconnected.org/home/2015/03/23/filtered">transcranial magnetic stimulation helmet that can walk me to the shops</a> (2015):</p>
<blockquote>
<p>That way your can check your email and Skype your mum, while the Walking-Down-The-Street Hat takes care of the tedious job of moving your legs, and collision-detecting your way around obstacles like buses and humans.</p>
</blockquote>
<p>Whenever I meet someone who I reckon could genuinely build me a TMS helmet (I met such a person the other month at a lab in New York) I pitch the idea so it lives in their head.</p>
<p>And it turns out that, when you propose a special hat that automates your legs so you can walk to work while you’re also doomscrolling or whatever, they look at you like you’re loopy. Especially if you also act it out.</p>
<hr />
<p>We have this image of ourselves as being singular, right? We do one thing st a time.</p>
<p>Yet I don’t consciously think about my legs when I stand up and walk, and I’m clearly multi-threaded in my thinking otherwise ideas wouldn’t develop in the background and pop up in the shower later, and I delegate my way-finding cognition to Google Maps and my memory to my notes.</p>
<p>It’s just an extension of that.</p>
<p>But I wonder whether it will feel alarmingly alienating, like voluntary disassociation as soon as you hit that button of the app that walks your legs to the office (it will inevitably use an app); or will it feel like being in the back of a cab where you can chat with your friends instead of thinking about driving?</p>
<p>And, as we get accustomed to running multiple embodied tasks in parallel, will we start feeling comfortable with renting our parts of ourselves on demand, just casual you know, and somehow it won’t undermine our sense of self?</p>
<hr />
<p>It’s not so much that I think that a bodily-automation helmet is a good idea, it’s that it feels like an economic inevitability – once possible.</p>
<p>For example:</p>
<ul>
<li>Would you spend the price of a car on a home robot that can do the washing up and fold the laundry and tidy the kids room? Instead you could spend 10% of the money on an AI sleeve that takes over your arms to be the robot, and you can delegate your zombie limbs to do the chores while also attending your work zoom or winding down by doing your puzzles.</li>
<li>Would you accept wearing AI gauntlets to drive your car if it meant lower insurance?</li>
<li>If I’m sitting around just watching TV, why not wear an Apple Vision Pro so I can carry on watching my programmes on the inside, and meanwhile people on the other side of the world can dial into my body and go touristing around my neighbourhood, experiencing it from <em>their</em> headsets? I wouldn’t even have to know.</li>
<li>Will a factory really bother investing in precision robotics to assemble their parts, or even time in training people to do the same, when they can strap workers with dextrous fingers into pre-trained software to do the job immediately – and the workers accept less pay because they are doing double-duty by working second tier call centre support jobs at the very same time.</li>
</ul>
<p>Ok horrific.</p>
<p>But what extra could you do too?</p>
<p>Like, I wouldn’t trust myself to free-climb up El Capitan.</p>
<p>But maybe Electrical Muscle Stimulation could drive me up there safely, and I’d just be along for the ride as I (or whatever split body “I” am at this point) ropelessly ascend 3,000ft of sheer rock face, AI controlled hands and feet, high up in the fresh air of Yosemite, body tingling as a thousand tiny electric pulses zap me hour after hour through my fish-scaled cyborg bodysuit.</p>

  <hr />



  <p><small>Auto-detected kinda similar posts:</small></p>
  <ul>
  
  <li><small><a href="https://interconnected.org/home/2020/05/29/musical_cyborgs">Filtered for musical cyborgs</a>
  (29 May 2020)</small></li>
  
  <li><small><a href="https://interconnected.org/home/2022/11/04/somaforming">These robot legs are made for walkin’ me to the shops</a>
  (4 Nov 2022)</small></li>
  
  <li><small><a href="https://interconnected.org/home/2024/09/20/filtered">Filtered for home robots, fast and slow</a>
  (20 Sep 2024)</small></li>
  
  <li><small><a href="https://interconnected.org/home/2022/03/22/robots">Robots for folding laundry at home: two approaches</a>
  (22 Mar 2022)</small></li>
  
  <li><small><a href="https://interconnected.org/home/2025/10/13/dichotomy">Cyborgs vs rooms, two visions for the future of computing</a>
  (13 Oct 2025)</small></li>
  
  </ul>

</div>]]></description>
      <guid isPermaLink="true">https://interconnected.org/home/2026/06/05/splitbody</guid>
      <pubDate>Fri, 05 Jun 2026 16:45:00 +0000</pubDate>
    </item>
    <item>
      <title>How global logistics got me over my fear of personal agents</title>
      <link>https://interconnected.org/home/2026/05/30/fedex</link>
      <description><![CDATA[<div>
<p>Ok a bunch of friends have their own personal AI agent using OpenClaw or Hermes or whatever.</p>
<p>Confession time: I don’t.</p>
<p>I haven’t found I need one. I’m a heavy user of agents for coding, sure, and a few isolated tasks. I haven’t found I need one digging through my notes or sending emails for me.</p>
<p>But really because of two fears:</p>
<ul>
<li>Data security. I’m cautious of something that can non-deterministically execute and get tricked into emailing confidential info or accidentally delete old photos without me noticing.</li>
<li>Psychic integrity – I’ll say more about this in a bit.</li>
</ul>
<p>So I’m a scaredy cat, whatever. Those concerns have kept me away. </p>
<p>Well, you know, concerns go out the window when you have your back against the wall? Last weekend, that’s what happened.</p>
<hr />
<p>I’m shipping <a href="https://poem.town">clocks</a>.</p>
<p>Yes, finally, I know. It’s been a journey. I’m really grateful for the support and the patience of all my backers.</p>
<p>But, you know, 700 have left the warehouse in Hong Kong, and 640 or so have been delivered. The rest are in transit.  </p>
<p>And last weekend…</p>
<p>Well, I’d shipped out 120 or so mainly to the UK and the US and everything had gone fine, very smooth.</p>
<p>I think I had two or three queries from US customs about import clearance and they just wanted a bit more information about the package. I filled in an online web form with a longer description than on the commercial invoice.</p>
<p>Shipping paused because the warehouse ran out of bubblewrap or something. That’s on me.</p>
<p>Then the next 500+ went out and I woke up on Saturday morning to 15 requests from FedEx for extra docs for customs clearance.</p>
<p>Ok that’s fine, I thought, percentage-wise this is approx the same.</p>
<p>So I started going through the requests. It wasn’t the simple text fields on the web this time. FedEx needed a worksheet. A worksheet is a detailed PDF that you have to complete, and they decide whether import is allowed based on that information.</p>
<p>The clock worksheet is not so bad. But it needs to have the tracking number at the top of the PDF, so it’s a different file for every package.</p>
<p>You go to the FedEx website which is <em>arcane.</em> Then you click around, upload the PDF, and you wait a few days and then the package clears customs and is on its way.</p>
<hr />
<p>While I’m doing these 15 worksheets, which was the expected number, another 15 emails arrived.</p>
<p>I always do my best to embody the <a href="https://thethreevirtues.com">three virtues of a great programmer</a> which are, according to Larry Wall</p>
<ul>
<li>Laziness</li>
<li>Impatience</li>
<li>Hubris.</li>
</ul>
<p>So I figured that although it wasn’t taking too long to edit these forms, adding the tracking number to each, it would be appropriately lazy to spend essentially the same amount of time (a little more actually) to make a Claude Code skill where I type <code>/toolbox:make-clock-worksheet &lt;tracking&gt;</code> and the PDF is created and opened on my desktop so I can drag and drop it into the website.</p>
<p>SIDE NOTE: I have a private repo on GitHub which is my personal Claude Code plug-in called <code>toolbox</code>. It has all my custom skills and I can sync them between my machines and I improve them over time. Everyone should do this.</p>
<hr />
<p>I woke up the next morning and another hundred queries had arrived.</p>
<p>I don’t know what kind of flag had gone off in FedEx internal systems but I think they believe I am smuggling watches or something. Because all the questions about my clock are like, <em>ok so what kind of movement does your so-called “clock” have</em> and <em>how big is the movement (btw it’s not a clock unless it’s bigger than X by Y)</em> and <em>yeah so this “clock” how many jewels does it have.</em></p>
<p>Jewels? My clock has no jewels. Watches often have jewels, right? Watches are a great way to plausibly move value across borders. No kidding the Swiss have private banks and premium watches, a coincidence I’m sure.</p>
<p><em>(I have since been informed that jewels in watches are actually tiny and used mechanically as bearings so (a) TIL and (b) apologies for unnecessarily disparaging Switzerland.)</em></p>
<p>Anyway so I have to officially declare that these packages are not watches, they’re clocks, but I have a hundred of these things to fill in.</p>
<p>It is at this point that I realise what a freight forwarder is for.</p>
<p>But it’s just me, and I’ve got to get through these forms, and it’s a long holiday weekend, and I am seriously not going to be grinding through FedEx’s website for the next two days.</p>
<hr />
<p>I gave in, I had to:</p>
<p>Claude Code, here you go, have my Gmail.</p>
<p>Claude Code, here you go, drive a web browser without me even looking.</p>
<p>Then I built an agent to process my email, navigating the FedEx website and uploading worksheets for me when that was the request (all the requests are subtly different), replying to emails from humans and attaching the worksheet when that was what had to happen.</p>
<p>I started conservatively, human-in-the-loop as you’re supposed to do, centaur-style, checking the drafts, but there isn’t the time. I admit it. I surrendered.</p>
<p>And then Monday, the holiday day itself, was pleasant in the end.</p>
<p>My family left for a few days. I sat in the garden in the sun washing down the bbq keeping half an eye on my agent as it worked its way through my inbox autonomously. What a life! Idyllic.</p>
<hr />
<p>What I hadn’t quite internalised about personal agents is that they’re <em>slow.</em></p>
<p>So time-elapsed is more but time-attended is lower.</p>
<p>It’s an odd kind of efficiency and doubly relaxing.</p>
<hr />
<p>So it turns out I have a personal AI agent now.</p>
<p>Or at least the beginnings of the kind I am ok with.</p>
<p>Although it can send email on my behalf, which risks my data, I haven’t crossed the Rubicon to that psychic risk I mentioned before which would be allowing it to read and write into my notes.</p>
<p>My notes.</p>
<p>Let me tell you my theory about AI psychosis.</p>
<p>A lot of people keep a lot of notes.</p>
<p>I keep a lot of notes too, <a href="https://interconnected.org/home/2022/05/27/apps">that’s how I write this blog</a>, and in particular I like the serendipity of running across old ideas in my own notes – <a href="https://interconnected.org/home/2021/02/10/reservoirs">that’s common for other people too</a> (2021).</p>
<p>We used to call it having an <em>outboard brain</em> and it’s true, I think for a certain kind of person, your notes become part of your extended cognition, and you “know something” whether that knowledge is within your skull or within your notes, same same, it’s just a matter of look-up latency.</p>
<p>My theory is that allowing something else to write into your notes does something bad to your psyche.</p>
<p>I had a glimpse of this: a few years ago I asked ChatGPT to write a blog post in my style. (This was before chat could browse the web; my blog is well represented in the training data.)</p>
<p>It was pretty good so I pasted it into my notes as a record (but never posted it of course). I got scared off using ChatGPT to help with my blog pretty early when I was talking through an editing decision and it came up with a turn of phrase that was so perfect and so unique that I couldn’t resist it. But it didn’t represent any thinking that I had done to arrive at it, this perfect metaphor, so it wouldn’t bear my weight when I leant on it. Those two experiences terrified me.</p>
<p>Anyway so recently I was browsing my drafts folder and I ran across the bottom half of this fake blog post without noticing the context at the top, and it was like when the elevator drops faster than you’re expecting because I read these words but they didn’t feel buttressed with even a glimmer of memory in my head, so I was gaslighting myself – had I really written that note? I mean there it is, it sounds like me, but I can’t think around those words.</p>
<p>The feeling of not being able to trust the permanence and integrity of the physical world around you is one thing.</p>
<p>Not being able to trust what’s going on in your own mind is another.</p>
<p>Am I the same person as I was yesterday?</p>
<p>So unnerving.</p>
<hr />
<p>All of which to say is that, for me, my personal theory is that AI psychosis comes from undermining your intrinsic faith in the workings of your own self.</p>
<p>And that comes from allowing an LLM that speaks in your voice to potentially write into your notes which, for a certain kind of person, is part of cognition itself. The AI doesn’t need to actually change your notes, the potential is enough.</p>
<p>Which eventually makes you go loopy.</p>
<hr />
<p>So I have this fear of risking my own psychic integrity, which has so far kept me away from allowing a personal agent to run on my own machine – I love automation but at a healthy arm’s length…</p>
<p>Yet needs must. And here we are. All it took was 100 emails requesting 100 custom PDFs.</p>
<p>I’ve opened the door and now it’s the slippery slope. The slope ends with outsourcing consciousness itself, and the prospect of humanity becoming a population of voluntary p-zombies is a <a href="https://interconnected.org/home/2020/08/06/bis">high-probability eschaton that I’ve talked about before</a>.</p>
<p>I’m making a note here to</p>
<ul>
<li>record my feelings at this moment: how naive will this look in a year or two?</li>
<li>celebrate 640 or so clocks in people’s homes, more in transit, and 300 online right this second.</li>
</ul>
<p>For both: thank you FedEx.</p>

  <hr />


	<p><small>More posts tagged:
	
	<a href="https://interconnected.org/home/tagged/eschatology">eschatology</a>
	(10), 
	
	<a href="https://interconnected.org/home/tagged/that-ai-clock-and-so-on">that-ai-clock-and-so-on</a>
	(14).
	
	</small></p>


  <p><small>Auto-detected kinda similar posts:</small></p>
  <ul>
  
  <li><small><a href="https://interconnected.org/home/2024/03/20/agents">Who will build new search engines for new personal AI agents?</a>
  (20 Mar 2024)</small></li>
  
  <li><small><a href="https://interconnected.org/home/2026/04/18/headless">Headless everything for personal AI</a>
  (18 Apr 2026)</small></li>
  
  <li><small><a href="https://interconnected.org/home/2025/08/14/elsewhere">Me talking about AI elsewhere</a>
  (14 Aug 2025)</small></li>
  
  <li><small><a href="https://interconnected.org/home/2024/06/07/agenda">My personal AI research agenda, mid 2024 (and a pitch for work)</a>
  (7 Jun 2024)</small></li>
  
  <li><small><a href="https://interconnected.org/home/2026/01/15/reminders">The natural home for AI agents is your Reminders app</a>
  (15 Jan 2026)</small></li>
  
  </ul>

</div>]]></description>
      <guid isPermaLink="true">https://interconnected.org/home/2026/05/30/fedex</guid>
      <pubDate>Sat, 30 May 2026 15:44:00 +0000</pubDate>
    </item>
    <item>
      <title>Resident: vibe coding firmware (our new sandbox library for ESP32 devices)</title>
      <link>https://interconnected.org/home/2026/05/20/resident</link>
      <description><![CDATA[<div>
<p>We’re open sourcing Resident, our library for running AI-authored code on microcontrollers – with no compile step and no firmware flashing.</p>
<p>It’s our twist on vibe coding firmware, built for instantly loading new device functionality coded by end users. It’s aimed at device developers, like us. We use Resident in all our work.</p>
<p><em>(We = Inanimate.)</em></p>
<p><a href="https://resident.inanimate.tech">Resident</a> gives you a code sandbox on ESP32 devices and a driver API to provide hardware control and events. So an end user can push an app over Wi-Fi that instantly turns their clock into an interactive pill timer (for example) but the app can’t run probes on the home Wi-Fi network.</p>
<p>It comes bundled with a set of Claude skills. I told Claude about the capabilities of a compatible dev kit and asked it to push a simple app. Here it is:</p>
<p><img alt="" src="https://interconnected.org/more/2026/05/hello-resident.jpg" /></p>
<p>At Inanimate, we believe that on-device sandboxes are an essential low-level primitive for AI agents in the real world.</p>
<p>The announcement is <a href="https://news.inanimate.tech/p/lab-notes-drum-loops-prototyped-as-oranges">over on Lab Notes</a> but I want to take a moment to connect this to some previous themes…</p>
<hr />
<p>Look, I want to bring software into my room.</p>
<p>Like: if I’m working with Claude Code and I step away from my keyboard, it should be able to give me updates on what it’s working on by taking over my desk clock, and ping its permission requests to the gumstick device I have in my pocket for me to accept/decline while I’m making tea. Untether me from my desk! <em>(btw I built this, it was awesome.)</em></p>
<p>Or - more prosaically - why can’t I yell at my stove as I’m leaving the house in the morning <em>oh I forgot I’m roasting a chicken that needs to be ready for 7pm</em> and have it look up timings and push me a notification when it’s pre-heating, and show a custom basting timer app on its 14-seg LED display.</p>
<p><em>"Why can’t I point at a lamp and say ‘on’ and the light come on?"</em> – <a href="https://interconnected.org/home/2020/05/26/voice">I was asking in 2020</a>.</p>
<p>So half of the solution here is AI: LLMs are super good at translating intent into action. I use regular language and the computer will <a href="https://interconnected.org/home/2025/08/29/dwim">Do What I Mean</a> (2025).</p>
<p>But the other half is a problem: how does this actually work? Where does the software run?</p>
<hr />
<p>Every device needs to be able to run user code, that’s the answer.</p>
<p>I’ve been bouncing off this since 2023 <a href="https://interconnected.org/home/2023/04/26/lares">when I put an LLM in charge of a smart home</a> (using tech that we now call agents, but then was my implementation of the ReAct pattern from a paper out of Princeton and Google Research).</p>
<p>In a nutshell, let’s say you press a button on your desk clock and your AI agent has to decide in the moment what to do with that. It won’t work, it’s too slow. Cognitively, an interface has to respond inside 150ms or it is no longer instant – but the AI is a network hop away.</p>
<p>Ok so let’s remove the network hop. Let’s pretend we have edge AI: a GPT-4-equiv AI as a component in every physical thing; ubiquitous intelligence is coming and <em>"a Feynmann-level light switch could guess your intentions pretty well,"</em> <a href="https://interconnected.org/home/2023/10/06/ubigpt">that was was my guess in 2023</a>.</p>
<p>It’s not an outrageous extrapolation! <a href="https://taalas.com/products/">Taalas</a> is baking LLMs into silicon and delivers <em>"17k tokens per second per user on Llama 3.1 8B"</em> (<a href="https://chatjimmy.ai">try it here</a>, e.g. 4,000 words on Hamlet as a space opera, it’s wild it’s so instant). So GPT-4-equiv is a matter of time.</p>
<p><em>Even</em> with that speed, it turns that inference is not enough. To <em>Do What I Mean,</em> you still need to import user context for personalisation and grounding. But memory, Gmail, Wikipedia and the rest are still mostly in the cloud. That network hop again.</p>
<p>So AI can’t be inside the event loop, not if you want really great on-device interactions.</p>
<p>Instead – let the AI write device code. That’s the approach we’ve found.</p>
<p>Take that toy example of a roast chicken basting timer on the display of my stove. My AI agent should be able to dynamically write code for that interactive app, and have that app code executed on the stove itself.</p>
<p>I’m not saying that the AI needs to vibe-code firmware.</p>
<p>Firmware is the code that runs on device microcontrollers: you author it and compile it and you flash it and from that point on, it never changes. AI agents <em>can</em> vibe firmware (very happily). But I’m not sure I want to load code onto my stove that has boundless control over the heating element and the network stack and whatever other low-level capabilities are managed by the firmware itself. We’ve already had <a href="https://www.bbc.co.uk/news/technology-25780908">smart fridges sending spam email</a> (BBC News, 2014), no more thanks.</p>
<hr />
<p>Instead of firmware, the AI can run code in <em>sandboxes.</em></p>
<p>Cloudflare made the case for sandboxes in March this year <a href="https://blog.cloudflare.com/dynamic-workers/">when they introduced dynamic workers</a>:</p>
<blockquote>
<p>Last September we introduced Code Mode, the idea that <u>agents should perform tasks not by making tool calls, but instead by writing code</u> …</p>
<p>You can’t just <code>eval()</code> AI-generated code directly in your app: a malicious user could trivially prompt the AI to inject vulnerabilities.</p>
<p><u>You need a sandbox: a place to execute code that is isolated from your application and from the rest of the world, except for the specific capabilities the code is meant to access.</u></p>
<p>Sandboxing is a hot topic in the AI industry …</p>
</blockquote>
<p>We asked ourselves:</p>
<p><strong>What if, when we allow an AI agent to spread its arms and stretch its legs in a room, it could inhabit devices by writing code that runs in an on-device sandbox, a sandbox that gives access to buttons and screens but not the network stack, and the app code could load and run instantly?</strong></p>
<p>That’s Resident. It provides a code sandbox for ESP32 devices, and a toolchain for AI agents to write apps that target that sandbox.</p>
<p>At Inanimate, we use Resident for all our product prototyping.</p>
<p>And it will be at the heart of our future products.</p>
<p>Look, it may seem wildly disproportionate to write code to turn on a lamp.</p>
<p>But what are computers for? They do the hard work to make it easy for us. So this approach scales well from basic on/off control to… well, it turns out that, now we have this sandbox, we can compose all kinds of useful experiences that take over an entire room – and also weird and wonderful interactive ones that still work when you pull the network cable.</p>
<p>(An app arrives over the network but then the network is no longer required. Resident is built on our messaging library <a href="https://github.com/inanimate-tech/courier">Courier</a> which includes UDP multicast for local inter-device messaging even when internet connectivity drops.)</p>
<hr />
<p>We’re opening Resident today as an alpha (v0.5.0) and open sourcing it under the highly permissive MIT license. Just include our copyright notice with any modifications.</p>
<p>Technically, we’re adding a Lua runtime to your ESP32 device. (Lua is a language designed to be embedded.) </p>
<p>We love Espressif’s ESP32 microcontroller family because it has a unique span in the ecosystem: it is used by individual makers, new hardware startups, and in production at real scale. It has built-in Wi-Fi and supports its native framework esp-idf and Arduino too, which is great for quick prototyping.</p>
<p>Resident gives you an API to add extensions to that Lua runtime: hardware drivers. Those managed capabilities are what makes it a sandbox. So the apps in the sandbox can respond to events that your button driver injects, and they can write to the display via a module added by your display driver.</p>
<p>The apps can be hot loaded at runtime. The way we have it wired up, you push app code down a websocket to the device and it run immediately in the sandbox.</p>
<p>Adding Resident is straightforward during development: bring up your new device as normal, then point your coding agent at <code>docs/start-building.md</code>. It’ll walk you through adding the sandbox and writing the drivers.</p>
<p>Resident comes bundled with:</p>
<ul>
<li>Connectivity: websockets, JSON messaging, and easy Wi-Fi config</li>
<li>A default back-end server at <code>resident.inanimate.tech</code> so you can easily push new apps and events – use the example code to build out your own back-end when you’re ready</li>
<li>A collection of Claude skills to create, validate and push new apps to your devices (and even write device documentation)</li>
<li>Example projects.</li>
</ul>
<hr />
<p>Want to try Resident now?</p>
<p>Ahead of developing your new device, pick up an <a href="https://docs.m5stack.com/en/core/StickS3">M5StickS3</a>. These are made by M5, I talked about them <a href="https://interconnected.org/home/2026/04/21/courier">when we announced Courier</a>.</p>
<p>The M5Stick is a dev kit that has an ESP32 with a screen, battery, couple of buttons, buzzer and IMU. You can bring it up using Arduino pretty simply. Then add Resident and start writing apps. <a href="https://github.com/inanimate-tech/resident/tree/main/examples/m5stick-demo">We have an example project</a>.</p>
<p>Want to get going even faster?</p>
<p>You don’t even need hardware…</p>
<p>The <a href="https://resident.inanimate.tech/#try-it-now">Try it now</a> section of the Resident homepage has a M5Stick simulator, running the Resident sandbox in-browser.</p>
<p>Drag and drop an app onto the simulator to see it run.</p>
<p>Or even: install the Claude skills, tap the button on the webpage to make the simulator live, and create apps from your local Claude Code session. The in-browser simulator will update live and run your app.</p>
<p><img alt="" src="https://interconnected.org/more/2026/05/resident-simulator.gif" /></p>
<p>Hey, deep cut reference alert:</p>
<p>Back in 2021 I went on a dive into <em>files:</em> <a href="https://interconnected.org/home/2021/02/01/golems">Golems, smart objects, and the file metaphor</a>.</p>
<p>What would it mean to drag and drop a file onto a lightbulb? I asked. <em>"Do I literally mean that the lightbulb needs a little slot like the golem’s mouth, into which you insert your instructions stamped on microfiche?"</em></p>
<p>This is my answer haha</p>
<hr />
<p>Resident is what we’ve been using to prototype products and use cases at Inanimate.</p>
<p>We believe that one day all products will work this way.</p>
<p>For more info, the GitHub, and to try it now: <a href="https://resident.inanimate.tech">Resident</a>.</p>
<p>For updates: <a href="https://news.inanimate.tech">subscribe to Lab Notes</a>.</p>

  <hr />


	<p><small>More posts tagged:
	
	<a href="https://interconnected.org/home/tagged/inanimate">inanimate</a>
	(6).
	
	</small></p>


</div>]]></description>
      <guid isPermaLink="true">https://interconnected.org/home/2026/05/20/resident</guid>
      <pubDate>Wed, 20 May 2026 14:14:00 +0000</pubDate>
    </item>
    <item>
      <title>Filtered for bad addresses and good emotions</title>
      <link>https://interconnected.org/home/2026/05/15/filtered</link>
      <description><![CDATA[<div>
<h3>1.</h3>
<p>I love this terrible fake address generator:</p>
<blockquote>
<p>We have spent 3 years collecting data from every country to generate this enormous database.</p>
</blockquote>
<p>…it promises.</p>
<p>These are not English addresses:</p>
<p><em>"2 Scott Common Jenniferstad S60 2PT"</em></p>
<p><em>"4 Matilda Via North Emilychester M20 1BT"</em></p>
<p><em>"Flat 48v Harrison Motorway Lake Gary EH4 5LQ"</em></p>
<p>Good story: <a href="https://johnfinnemore.blogspot.com/2025/10/inside-number-0.html">Inside Number 0</a>, John Finnemore.</p>
<h3>2.</h3>
<p><a href="https://chestofbooks.com/fairy-tale/Kentucky-Superstitions/index.html">Kentucky Superstitions</a> (1920) by Daniel Lindsey Thomas and Lucy Blayney Thomas:</p>
<p>Some household and domestic life superstitions, from <a href="https://chestofbooks.com/fairy-tale/Kentucky-Superstitions/Household-And-Domestic-Life-Superstitions-Part-4.html">part 4</a>:</p>
<ul>
<li><em>"An accidental dropping of a knife brings a woman caller."</em></li>
</ul>
<p>(My nan would always say it would be a man caller, to the point that if I drop a knife I reflexively say <em>“man coming”</em> to this day.)</p>
<ul>
<li><em>"If you spill salt on the table, you will get a scolding before Friday."</em></li>
<li><em>"If you burn salt on the stove or in the grate, you will have to pick each grain out of fire in hell."</em></li>
</ul>
<p>Salt matters eh.</p>
<p><a href="https://chestofbooks.com/fairy-tale/Kentucky-Superstitions/Household-And-Domestic-Life-Superstitions-Part-3.html">Part 3</a>:</p>
<p>Some of these I recognise…</p>
<ul>
<li><em>"If you raise an umbrella in the house, you will have bad luck."</em></li>
</ul>
<p>Some are new to me:</p>
<ul>
<li><em>"If you whistle in bed, you will cry before you retire again."</em></li>
</ul>
<p>Some are quite good, so have a read. (Some are horrifically racist.)</p>
<h3>3.</h3>
<p>A psychology paper from 2019 categorises 28 enjoyable emotions:</p>
<blockquote>
<p>The families of discrete enjoyable emotions, many proposed for the first time, are as follows: (1) Self-praising emotions (authentic pride, fiero, naches, feeling respected), (2) other-praising emotions (admiration, elevation, gratitude, inspiration), (3) past-oriented emotions (forgiveness, nostalgia, relief), (4) future-oriented emotions (anticipatory enthusiasm, courage, determination, hope), (5) hazardous emotions (lust, schadenfreude, hubristic pride), (6) affectionate emotions (love, attachment love, tenderness, positive empathy), (7) arousal-defined emotions (euphoria, serenity), (8) violation-elicited emotions (amusement, awe, curiosity, positive surprise).</p>
</blockquote>
<p>Graham, L. E., Thomson, A. L., Nakamura, J., Brandt, I. A., &amp; Siegel, J. T. (2019). <a href="https://www.tandfonline.com/doi/full/10.1080/17439760.2017.1402074">Finding a family: A categorization of enjoyable emotions.</a> <em>The Journal of Positive Psychology, 14</em>(2), 206-229.</p>
<p>I made a note of this at the time because <a href="https://x.com/tomstafford/status/935239627283288064">Tom Stafford tweeted</a>:</p>
<p><em>"Want to be a scientist? It helps if your personality loads heavily on the ‘violation-elicited’ and ‘future-orientated’ emotions"</em></p>
<p>(I am feeling seen rn)</p>
<p>Forget all the political compasses and Myer-Briggs stuff. I want to know which of these 8 emotional families I chase more than other people.</p>
<h3>4.</h3>
<p><a href="https://makezine.com/projects/yellow-drum-machine/">Yellow Drum Machine</a> <em>(Make: magazine)</em> is a cute robot that drives around your house and plays the drums on whatever it bumps into.</p>
<p>Give yourself a treat and watch the video.</p>

  <hr />


	<p><small>More posts tagged:
	
	<a href="https://interconnected.org/home/tagged/filtered-for">filtered-for</a>
	(123).
	
	</small></p>


</div>]]></description>
      <guid isPermaLink="true">https://interconnected.org/home/2026/05/15/filtered</guid>
      <pubDate>Fri, 15 May 2026 19:10:00 +0000</pubDate>
    </item>
    <item>
      <title>I want my MTV</title>
      <link>https://interconnected.org/home/2026/05/08/mtv</link>
      <description><![CDATA[<div>
<p>You know when I’m home on my own I don’t watch much TV like actual TV, but I do watch music videos on YouTube on the TV.</p>
<p>Sometimes new music but often ones I know really well. Music videos are such a vibe.</p>
<p>And it’s social too? I’ve spent many evenings with friends that just turn into swapping music vids on the big screen.</p>
<hr />
<p>I seem to listen to music only while doing something else, e.g.:</p>
<ul>
<li>while watching music videos, as above</li>
<li>while running</li>
<li>while playing Grand Theft Auto and actually that was the majority component of my enjoyment of GTA5 back in the day: beating someone up and nicking their car, tuning the radio station to something good, then chilling driving the hills of Los Santos listening to the tunes (GTA5 has excellent playlists) watching the sunsets (GTA5 has excellent sunsets).</li>
</ul>
<p>Incidentally GTA6 is coming out in November and apparently it cost $1 billion to make.</p>
<p>Gonna play the heck out of it not just for the music but because of its status as a cultural artefact: the final big game built before LLMs.</p>
<p>No-one will ever invest that much in a game again, no software will ever encode this quantity of hands-on human labour again. The last of the great pyramids.</p>
<p>You think any studio will ever again spend years recording human-authored dialogue from human voice actors for NPCs in story branches that the player may encounter? No way. As much as I am looking forward to playing the first AAA title that does something unique and infinite with AI, we are at the end of an era.</p>
<hr />
<p>Anyway so music videos.</p>
<p>I’m an Apple Music subscriber. They know what I like and also the old tracks I go back to.</p>
<p>Apple TV should have a special channel that connects to my Apple Music and streams music videos for this week’s Essentials or New Music playlists.</p>
<p>A mix of whatever’s new and sometimes <a href="https://www.youtube.com/watch?v=W8r-tXRLazs">Video Killed the Radio Star</a> too.</p>
<p>YouTube could do this in a second, they have all the content. Just a big button that explicitly constrains the auto-play to music only, that would do it.</p>
<p>But they are weirdly against building around specific use cases: I would love them to do something around ambient live streams (<a href="https://interconnected.org/home/2023/05/26/windows">as previously requested</a>) and it feels like a missed opportunity.</p>
<p>So this is a freebie for Apple instead. Call it music television or MTV for short, I think it could catch on.</p>



</div>]]></description>
      <guid isPermaLink="true">https://interconnected.org/home/2026/05/08/mtv</guid>
      <pubDate>Fri, 08 May 2026 02:51:00 +0000</pubDate>
    </item>
    <item>
      <title>We need RSS for sharing abundant vibe-coded apps</title>
      <link>https://interconnected.org/home/2026/04/29/syndicating-vibes</link>
      <description><![CDATA[<div>
<p>Now we have abundant apps, we’ve hit a ceiling in good ways to track and share them.</p>
<p>For example, <a href="https://tools.simonwillison.net">Simon Willison’s personal tools</a>: <em>"Miscellaneous HTML+JavaScript tools built mostly with the help of LLMs."</em></p>
<p>Willison lists 80+ useful tools and the search box can see 205. That’s a lot!</p>
<p>He has hyper-specific tools like one to track daylight savings changes in California, personal software to help build his newsletter from his blog, and a tool to edit using Strunk &amp; White’s principle to <a href="https://tools.simonwillison.net/omit-needless-words">omit needless words</a>. (What’s especially neat is Willison shares the <a href="https://tools.simonwillison.net/colophon#omit-needless-words.html">prompts and chat history behind each tool</a>.)</p>
<p>I keep a note when I see people sharing abundant apps.</p>
<ul>
<li><a href="https://blog.gingerbeardman.com/2026/04/17/today-i-shipped-twenty-apps-and-a-screensaver/">Matt Sephton shipped 20 macOS apps in a day</a>. Everything from a sound effects generator to perspective correction to a language translator with a beautiful interaction: hit cmd-C to copy twice to auto-translate any text. </li>
<li><a href="https://tools.jamesking.io">tools.jamesking.io</a> – designer James King shares personal web-based tools such as his bookmarked fonts and a custom editor to product his podcast.</li>
<li><a href="https://brittcrawford.com/projects/">Britt Crawford’s Home Cooked Software</a> – including an app to turn any web page into a podcast episode and omg I love Log Weight: <em>"Shout at your phone while you’re on the scale and log your weight in Apple Health."</em></li>
</ul>
<p>And then there are…</p>
<ul>
<li>The untracked apps that fly by on X and blogs. Among these I’ll count my own collaborative Markdown editor <a href="https://mist.inanimate.tech">mist</a> and even <em>Galactic Compass</em> which <a href="https://interconnected.org/home/2024/02/15/galactic-compass">I wouldn’t have written without ChatGPT</a>. Where are these listed? Nowhere.</li>
<li>The personal toolkits of Claude skills and workflows that many of us are building up. <a href="https://x.com/mappletons/status/2048789569189957840">How do we manage our agent SKILL.md files? Is it just chaos?</a> asks Maggie Appleton on X. There’s a corporate side to this too: I’d love to know when <a href="https://github.com/cloudflare/skills">Cloudflare adds more skills to their plugin</a> or when <a href="https://interconnected.org/home/2026/04/18/headless">headless CLI tools</a> grow more features.</li>
<li>The streams of apps vibed on platforms like Lovable and Replit – or on the more personal, situated end of the spectrum: <a href="https://nothing.community/d/52739-essential-apps-enters-beta">Essential Apps by Nothing</a> for their Android phones, or <a href="https://www.raycast.com/blog/introducing-glaze">Raycast Glaze</a> for macOS, or <a href="https://dreamer.com">Dreamer</a> where you can see some examples of web-based agentic apps but can’t build your own because they were live for a month before being snaffled up by Meta.</li>
</ul>
<p>This is not even counting the almost-ephemeral prompts to CLI tools like <a href="https://llm.datasette.io/en/stable/">llm</a> that live only in my terminal history.</p>
<p>So many apps!</p>
<hr />
<p>Not all of these apps are vibe-coded. I don’t think the distinction matters. We’re at a new time of abundance, creativity and personal software and I want ways to keep up with the latest.</p>
<hr />
<p>BUT.</p>
<p>How do I keep a list of the apps I use regularly so I can come back to them?</p>
<p>How do I discover new apps? Let’s say I like a tool by Simon, how do I follow him to see what he comes up with next?</p>
<p>What if Simon improves a tool? How would I know? (And conversely, what if someone makes a malicious update?)</p>
<p>How do I share my recommendations? And make them relevant to the platforms you use – iOS if you’re on iOS, ESP32 if you’re on that and so on.</p>
<p>This was one of my two questions about micro-apps before: <a href="https://interconnected.org/home/2024/08/09/no-apps-no-masters">No apps no masters</a> (2024):</p>
<blockquote>
<p>If the future is ephemeral AI-created micro apps, then what’s on my home screen?</p>
</blockquote>
<hr />
<p>Could we have RSS for vibe-coded apps?</p>
<p>I would love an RSS web feed for all those various tools and apps pages, each item with an “Install” button. (But install to where?)</p>
<p>The lesson here is that when vibe-coding accelerates app development, apps become more personal, more situated, and more frequent. Shipping a tool or a micro-app is less like launching a website and more like posting on a blog.</p>
<p>Posting on a blog is what RSS was made for. You use RSS to subscribe to blogs to keep up with the latest content. (<a href="https://aboutfeeds.com">What is RSS?</a>)</p>
<p>When I say that maybe we should have RSS for all these apps, what I really mean is the whole ecosystem that flourished back when blogs were young…</p>
<ul>
<li>Websites for identity – I want more from this person or this project!</li>
<li>RSS to subscribe – get the latest</li>
<li>Newsreaders – to aggregate all my sources</li>
<li>Social sharing – sites like <strong>del.icio.us</strong> (if you remember that) to share the best of your discoveries and discover more recommendations, a purer ProductHunt</li>
<li>Search – via Google and Technorati</li>
</ul>
<p>And tags and all the rest…</p>
<p>The beauty of RSS is that it was used as a simple interop layer: yes there was RSS for blogs. But also there are reverse chronological feeds on all kinds of sites: the New York Times, photo sharing on Flickr, your latest Github stars. And all of those would expose RSS feeds too, so you could subscribe a little like choosing what notifications you allow onto your home screen.</p>
<p>Now the challenge of sharing micro-apps does not exactly map to RSS and web feeds. It’s less about time for one, and apps develop over time, and platforms really matter. But it’s close enough for jazz.</p>
<hr />
<p>In the spirit of <a href="https://interconnected.org/home/2023/05/19/protocols">protocol fiction</a> it would be fun (or at least illuminating) to sketch out an RSS-like format that would be trivially adopted by everyone from Simon Willison’s tools page to my personal Claude plugin (which is a hodge-podge toolbox where I collect useful skills) to the templates at Lovable.</p>
<p>If you do this:</p>
<ul>
<li>Please don’t create a registry that people have to submit their micro-apps to. A file in plain text on their server will do.</li>
<li>Make it work for all the examples I pointed at above.</li>
<li>Don’t insist on open source or prompt sharing or 100% vibe coded; allow it to work for macOS binaries with a link to the Mac App Store, web-based tools that can be run instantly, and proprietary vibe coded widgets that only work in certain platforms. Scale all the way down to people just sharing prompts.</li>
<li>Imagine you are plumbing a future vibrant ecosystem of services for discovery, managing, recommendations, and all the rest. Make it distributed.</li>
<li>Think about what’s <em>different</em> from RSS for blog posts: do we need identity and versions and the ability for people to fork and modify apps?</li>
</ul>
<p>Above all read Dave Winer’s <a href="http://scripting.com/2017/05/09/rulesForStandardsmakers.html">Rules for standards-makers</a> – the distillation of how to invent and popularise a protocol for interop from the person who created both RSS and podcasting.</p>
<p>Let me know if you make this. I’d like to use it.</p>

  <hr />



  <p><small>Auto-detected kinda similar posts:</small></p>
  <ul>
  
  <li><small><a href="https://interconnected.org/home/2020/04/16/rss_for_books">Re: Tom Critchlow’s proposal for a decentralised Goodreads-like system, how about using RSS?</a>
  (16 Apr 2020)</small></li>
  
  <li><small><a href="https://interconnected.org/home/2022/04/29/adaptive_ui">Apps are too complex so maybe features should be ownable and tradable</a>
  (29 Apr 2022)</small></li>
  
  <li><small><a href="https://interconnected.org/home/2020/06/18/personal_software">Personal software vs factory-produced software</a>
  (18 Jun 2020)</small></li>
  
  <li><small><a href="https://interconnected.org/home/2020/11/20/social_os">Multiplayer docs, webcam fashion, noisy icons: three ideas</a>
  (20 Nov 2020)</small></li>
  
  <li><small><a href="https://interconnected.org/home/2015/10/08/tomtown">Tomtown</a>
  (8 Oct 2015)</small></li>
  
  </ul>

</div>]]></description>
      <guid isPermaLink="true">https://interconnected.org/home/2026/04/29/syndicating-vibes</guid>
      <pubDate>Wed, 29 Apr 2026 17:58:00 +0000</pubDate>
    </item>
    <item>
      <title>The Wind in the Willows and reading out loud</title>
      <link>https://interconnected.org/home/2026/04/24/willows</link>
      <description><![CDATA[<div>
<p><a href="https://en.wikipedia.org/wiki/The_Wind_in_the_Willows">The Wind in the Willows</a> right? Kenneth Grahame, 1908.</p>
<p>We all know the children’s story inside-out. Mole and Ratty and gruff Badger and conceited Mr Toad with his motorcars and all their adventures.</p>
<p>I picked up the book as an adult - I can’t remember why - and it wasn’t what I expected.</p>
<p>This week I have been reading it again and it is again astonishing.</p>
<p>I mean… let me share some of the prose with you.</p>
<p>This is when Mole encounters the river for the first time.</p>
<blockquote>
<p>Green turf sloped down to either edge, brown snaky tree-roots gleamed below the surface of the quiet water, while ahead of them the silvery shoulder and foamy tumble of a weir, arm-in-arm with a restless dripping mill-wheel, that held up in its turn a grey-gabled mill-house, filled the air with a soothing murmur of sound, dull and smothery, yet with little clear voices speaking up cheerfully out of it at intervals. It was so very beautiful that the Mole could only hold up both forepaws and gasp, “O my! O my! O my!”</p>
</blockquote>
<p>There’s a chapter where they’re looking back on the summer just gone, and a description of the plant-life soars:</p>
<blockquote>
<p>The pageant of the river bank had marched steadily along, unfolding itself in scene-pictures that succeeded each other in stately procession. Purple loosestrife arrived early, shaking luxuriant tangled locks along the edge of the mirror whence its own face laughed back at it. Willow-herb, tender and wistful, like a pink sunset cloud, was not slow to follow. Comfrey, the purple hand-in-hand with the white, crept forth to take its place in the line; and at last one morning the diffident and delaying dog-rose stepped delicately on the stage, and one knew, as if string-music had announced it in stately chords that strayed into a gavotte, that June at last was here. One member of the company was still awaited; the shepherd-boy for the nymphs to woo, the knight for whom the ladies waited at the window, the prince that was to kiss the sleeping summer back to life and love. But when meadow-sweet, debonair and odorous in amber jerkin, moved graciously to his place in the group, then the play was ready to begin.</p>
</blockquote>
<p>They go out in the boat at night looking for a lost young otter. (A whole other story but they encounter the divine spirit Pan who intercedes with a miracle and then wipes their memories lest they suffer the rest of their lives in the shadow of that awe.)</p>
<p>A description of moonlight:</p>
<blockquote>
<p>The line of the horizon was clear and hard against the sky, and in one particular quarter it showed black against a silvery climbing phosphorescence that grew and grew. At last, over the rim of the waiting earth the moon lifted with slow majesty till it swung clear of the horizon and rode off, free of moorings; and once more they began to see surfaces-meadows wide-spread, and quiet gardens, and the river itself from bank to bank, all softly disclosed, all washed clean of mystery and terror, all radiant again as by day, but with a difference that was tremendous. Their old haunts greeted them again in other raiment, as if they had slipped away and put on this pure new apparel and come quietly back, smiling as they shyly waited to see if they would be recognised again under it.</p>
</blockquote>
<p>It’s just… it’s…</p>
<p>O my! O my! O my!</p>
<hr />
<p>I asked ChatGPT to calculate some readability stats for me: the average sentence length is 18.5 words.</p>
<p><a href="https://languagelog.ldc.upenn.edu/myl/LibermanSHEL12.pdf">Sentence length in literature has been falling over the years</a> (LanguageLog).</p>
<p>But it’s not the lengthy sentences that makes this prose work for me. It’s the rhythm.</p>
<p>And I don’t really get that from reading it dead on the page. It’s because I’ve been reading <em>The Wind in the Willows</em> out loud.</p>
<hr />
<p>Some years back I read Ursula Le Guin’s book about writing, <a href="https://www.amazon.co.uk/Steering-Craft-Twenty-First-Century-Guide-Sailing/dp/0544611616">Steering the Craft</a>.</p>
<p>The first chapter is all about the sound of your words:</p>
<p><em>"The basic elements of language are physical: the noise words make and the rhythm of their relationships."</em></p>
<p>She recommends reading out loud.</p>
<p>So I started reading out loud.</p>
<p>I would take a page of prose from a novel that I really loved, and I would read it out loud, and out loud again, and again, and again, and again, until I could make it sound as wonderful as I <em>felt</em> it was when I was reading in my head.</p>
<p>It’s so hard to do. And you learn so much about words and meaning with this practice.</p>
<hr />
<p>So I doubt you’re reading this post out loud.</p>
<p>But that passage about moonlight above…</p>
<p>For me, it doesn’t work in my head. It’s okay. But when I read it out loud - to my kid, which is my excuse right now - to make it make sense to her ears and for the words to carry her, I have to read it in a certain way, and when I do Kenneth Grahame’s words loft me into the sky, swinging clear of the horizon and right up there, free of moorings, just like his moon.</p>
<p>And when I read his words about the foliage on the riverbank, out loud, I’m right there too.</p>
<p>Do me a favour. Read that moonlight paragraph out loud. Even if under your breath, but pause right now, take a moment and do that, read it out loud.</p>
<p>Then read all of <em>The Wind in the Willows</em> because <a href="https://www.gutenberg.org/ebooks/289">it’s free on Project Gutenberg</a> in Kindle format and everything, and if you have an excuse to read it to someone else then do that, it is transporting and majestic and gentle all at once, and it is a joy to have his words in your mouth and in the air and in your ears.</p>

  <hr />



  <p><small>Auto-detected kinda similar posts:</small></p>
  <ul>
  
  <li><small><a href="https://interconnected.org/home/2024/08/16/bombadil">When kids books low-key break the system of the world</a>
  (16 Aug 2024)</small></li>
  
  </ul>

</div>]]></description>
      <guid isPermaLink="true">https://interconnected.org/home/2026/04/24/willows</guid>
      <pubDate>Fri, 24 Apr 2026 17:56:00 +0000</pubDate>
    </item>
    <item>
      <title>Courier: real-time messaging for ESP32 with batteries included (new library)</title>
      <link>https://interconnected.org/home/2026/04/21/courier</link>
      <description><![CDATA[<div>
<p>I hack on hardware a whole bunch, at <a href="https://inanimate.tech">Inanimate</a> and at home.</p>
<p>AI is in the cloud. Interaction is in my room and in my hands. The job always begins by wiring together those two ends.</p>
<p>So the second thing I do, every single time, is bring up real-time messaging using JSON over websockets so I can connect my new device to a server, and have it emit events and listen for commands.</p>
<p><em>(The first thing I do is bring up the hardware and get basic <a href="https://en.wikipedia.org/wiki/Blinkenlights">blinkenlights</a>.)</em></p>
<p>I want my on-device websockets client to have a super easy interface: give me an <code>onMessage</code> handler to deal with incoming messages.</p>
<p>I need built-in wi-fi config (so I can carry my prototype around to different places). And I don’t want to have to choose which libraries I’m going to use each time, I want good defaults.</p>
<p>That’s what Courier does, in just a handful of lines.</p>
<p><em>Honestly this isn’t rocket science. It’s no biggie. But it’s decisions I make and boilerplate I have to write for every new project, and I don’t want to vibe code and test this bit every time… I just want it to work. So I find Courier useful personally. And in the spirit of sharing, I hope it’s useful for you too.</em></p>
<p><strong>Find the code and README here: <a href="https://github.com/inanimate-tech/courier">Courier on GitHub</a></strong></p>
<p><img alt="" src="https://interconnected.org/more/2026/04/courier.jpg" /></p>
<h3>Quick start</h3>
<p>Courier does a small and necessary job (messaging) in the most straightforward way possible.</p>
<p>Let’s say you’re using Arduino on ESP32. <em>I’ll say more about ESP32 in a minute.</em></p>
<p>Add Courier to your project (we recommend managing your project with <a href="https://platformio.org">PlatformIO</a>):</p>
<p><code>lib_deps = https://github.com/inanimate-tech/courier.git</code></p>
<p>Then here’s all the C++ code you need:</p>
<pre><code class="">#include &lt;Courier.h&gt;

CourierConfig makeConfig() {
  CourierConfig cfg;
  cfg.host = &quot;api.example.com&quot;;
  cfg.port = 443;
  cfg.path = &quot;/ws&quot;;
  return cfg;
}

Courier courier(makeConfig());

void setup() {
  courier.onConnected([]() { courier.send(R&quot;({&quot;type&quot;:&quot;hello&quot;})&quot;); });
  courier.onMessage([](const char* type, JsonDocument&amp; doc) {
    Serial.printf(&quot;Got: %s\n&quot;, type);
  });
  courier.setup();
}

void loop() { courier.loop(); }
</code></pre>

<p>Now your server can send real-time messages in JSON to your device, and your device can handle them. (It pulls out the <code>type</code> automatically for easy routing.)</p>
<p><em>That’s it!</em></p>
<p>You don’t need to hardcode wi-fi details in your code. Courier bundles <a href="https://github.com/tzapu/WiFiManager">WiFiManager</a> for portable connectivity: if a network can’t be found, this library pops up its own access point and open a captive portal.</p>
<p>Also you get for free: sane auto-healing of both the socket and wi-fi, NTP time sync so the internal clock doesn’t drift and break your secure connection (which happens after about 72 hours), and an easy upgrade path to MQTT.</p>
<h3>Try Courier with an M5Stick</h3>
<p><a href="https://en.wikipedia.org/wiki/ESP32">ESP32</a> is a family of microcontrollers that has a special place in the hardware ecosystem: thanks to its low cost, built-in wi-fi and Bluetooth, and ease of development,</p>
<ul>
<li>it is the platform of choice for new hardware startups</li>
<li>and it is great in mass-market production.</li>
</ul>
<p>It even has an Arduino compatibility framework, so you can start with that and then iterate as you go. It’s pretty unique to go from bench to production like that.</p>
<p>So we love ESP32 at Inanimate.</p>
<p>A big player in the ESP32 ecosystem is <a href="https://m5stack.com">M5</a>: they’re China-based and have about 400 SKUs that wrap ESP32 microcontrollers in all kinds of enclosures with all kinds of peripherals and sensors. I had a blast getting a personal tour of M5 <a href="https://www.weltmuseumwien.at/en/exhibitions/superflux">when I visited Shenzhen last year</a> – they use their own sensors in an industrial IoT network to run and monitor their assembly line.</p>
<p>Now you may have seen an M5Stick or two on the socials. They’re super popular at least in my circle, people love hacking on them.</p>
<p>Pick up an <a href="https://www.amazon.co.uk/M5Stack-Official-M5StickC-PLUS2-Development-Yellow/dp/B0D6LCQ19Z">M5Stick-C Plus2</a> on Amazon for less than 30 bucks! It’s an ESP32 with a screen, buttons, buzzer, gyro, battery and mic in a tiny bright yellow package.</p>
<p>Get yourself one or two, <a href="https://docs.m5stack.com/en/core/M5StickC%20PLUS2">bring it up by following the docs</a> and then install Courier…</p>
<p>…or <a href="https://github.com/inanimate-tech/courier/tree/main/examples/m5stick-demo">use our example code</a>. Our example also supports the newer <a href="https://shop.m5stack.com/products/m5sticks3-esp32s3-mini-iot-dev-kit">M5StickS3</a> which is grey and has a more powerful chip.</p>
<p>This is what I made with real-time messaging plus my backend websocket server:</p>
<video controls="" autoPlay="" muted="" loop="" class="measure-wide" src="https://interconnected.org/more/2026/04/courier-interconnected.mp4"></video>

<p>My lil traffic guy tells me the top pages on my blog in real-time <code>^_^ v</code></p>
<p>I have live cursors on every page of my blog (<a href="https://interconnected.org/home/2024/09/05/cursor-party">write-up and open source code</a>) so that same system sends JSON messages via websockets to the M5Stick on my desk.</p>
<p>If a post gets big then I have my stick on my desk so I see immediately, then I pop over to the page and say hi to everyone with the cursor chat.</p>
<p>More visitors = more flowers!</p>
<p>Plus: shake-for-QR code, so I can quickly follow the link back to the top post.</p>
<p>It’s amazing when hardware starts to feel alive.</p>
<p>Do show me if you make anything too.</p>
<h3>Try Courier now</h3>
<p>To use Courier right now, first bring up your M5Stick or other ESP32 hardware so you know it works ok, and then go to the <a href="https://github.com/inanimate-tech/courier">Courier repo on GitHub</a> where you can find installation instructions, API docs and examples.</p>
<p>It’s under active development: this is what we use for prototyping at Inanimate. Hey, <a href="https://news.inanimate.tech">subscribe to our Lab Notes newsletter</a>!</p>
<p>Courier is distributed under an MIT license.</p>

  <hr />


	<p><small>More posts tagged:
	
	<a href="https://interconnected.org/home/tagged/inanimate">inanimate</a>
	(6).
	
	</small></p>


</div>]]></description>
      <guid isPermaLink="true">https://interconnected.org/home/2026/04/21/courier</guid>
      <pubDate>Tue, 21 Apr 2026 15:25:00 +0000</pubDate>
    </item>
  </channel>
</rss>
