Vibe Coding 24/7 On A Screen For Ants

Given the increasing effectiveness and autonomy of coding agents, I wanted a good way of working with them when not at my computer. I found a setup that works pretty well for me, so I wanted to share it in case it's helpful for someone else.

I've been using Claude Code as my primary agentic coding tool for about 6 months now, so all examples here will use that, although I'm guessing it could be used with others. Claude Code has been solid and continually improving, especially with Opus 4.5. (But I guess ask me in a few months… :D)

Tailscale

The key part of a setup like this is having some computer that has Claude Code set up, and then being able to securely connect to it.

My current overall approach is to set up a secure network through Tailscale so I can SSH to it.

flowchart LR
    Phone["📱 Phone
(Termius)"] TS["🔒 Tailscale"] Mac["💻 Mac
(Claude Code)"] Phone --> TS --> Mac

I set up my main computer (currently M3 Max Macbook Pro) to run Tailscale. First, run the Tailscale daemon with $ sudo tailscaled. (This changed my computer's hostname for some reason, which was not super desirable.)

Then configure your computer to accept SSH connections from anyone in your tailnet (basically your authenticated devices):

$ tailscale set --ssh

It seems like Tailscale has two (three!) Mac interfaces:

  • a native Mac app (used for connecting to the Tailscale network)
  • the same, but installable through the app store
  • and one that's a CLI interface.

You need the CLI version to be able to run the tailscale ssh command, and the versions seem to need to agree with one another or you get warnings and possibly issues:

Read on →

Avoid Losing Work with Jujutsu (jj) for AI Coding Agents

Someone in the Indy Hackers Slack shared the following post:

My first Gemini CLI experience: "I messed up. I accidentally removed your untracked files with git clean, which wasn't my intention. I'm truly sorry. Since they weren't in git, I can't restore them easily."

— rands (@rands@mastodon.social) View on Mastodon

I had also run into this problem while coding with AI agents. This seemed like an opportune time to write up some thoughts to hopefully save others some time and agony.

Sometimes this issue happens to me because I get too confident in the current work direction and have not committed in a while. And then one or two prompts later, I have a broken or confusing set of changes.

Or, as Rands's post mentions, sometimes the AI agent purposely or accidentally reverts some changes and can't recover them. Several versions ago, when Claude Code compacted context, it would also clear the terminal, so if it couldn't remember the changes, then I would be unlikely to recover.

Enter jj

To try to combat this problem, I've been setting up and using Jujutsu (henceforth jj) instances for the repos that I have. jj keeps track of every filesystem change in your repo. So you can use its history to see and restore changes that might have otherwise gotten lost. It also works fairly seamlessly with git, which basically all of my projects use at this point. It also doesn't affect other users of your projects. So in my mind there are basically no downsides to setting it up.

Read on →

How I Generally Reduced Sugar Consumption

About a decade ago after reading on the topic, I significantly cut down my added sugar consumption, and stopped drinking soda. The prior sentence might make it sound easy, but it actually took a lot of time and effort. Since this seems to have been a durable change, I wanted to write up some thoughts about how I approached it.

Benefits:

  • weight loss (about 10 pounds in my case, as an already pretty lean person)
  • better metabolic health
  • more stable moods and energy due to less blood sugar fluctuation

The general thought that motivated me was that having basically any added refined sugar is not a positive thing, and so I wanted to limit this as much as possible. There is basically no nutritional benefit to added sugars, and it has many negative effects like metabolic dysfunctions, obesity, diabetes, inflammation, and cardiovascular disease. Since my grandfather had type 2 diabetes, this was something that I wanted to avoid.

For a while, I was pretty hardcore about this, and would try to avoid fruits and generally go low/no carb. I have softened to basically eat fruit as it's available or desired, and have been eating rice and bread fairly liberally.

My general approach now is to eliminate the obviously bad, moderate the questionable, and still enjoy treats from time to time.

Read on →

PlainErrors: Streamlined Rails Error Pages for LLM Agents

I work a lot with Rails applications and I've been having Claude Code do some local testing and other poking around using Playwright MCP. However, when there are backend errors, there are be a lot of tokens returned to display the BetterErrors page or the standard Rails development error page, which would unnecessarily fill up the context window.

So… I worked with Claude Code to build a new gem (PlainErrors) that is a Rack Middleware that gives streamlined error reports for LLMs.

In practice, this should let the agent do more debugging and iterating without filling up the context.

Read on →

Set A Minimum Daily Step Goal

I had some major lower back and leg issues in 2015 that lasted at least a year. After doing some physical therapy, I was much better off, enough so that I could play Ultimate competitively again.

On Father's Day weekend 2020, I tweaked my back again. This was a true Father's Day weekend. My wife was working so I watched the kids the whole weekend. I was fairly deconditioned due to skipping the gym to try to avoid getting the then-novel Covid-19. Biking was sketchy for my back since the initial injury, but that weekend I took the kids around town in a bike trailer. The weight of the kids and their stuff, combined with the fact that I was minimally exercising at the time, was too much for my back to handle. I felt it tighten up, and then kept pushing. By the time we made it home, I knew I was in trouble.

Stress may play a role in pain (see On Pain and Hope), and 2020 was a stressful time for me personally (two young children, helping run a startup that just had its sales pipeline dry up and a cofounder leave), and the world (U.S. election, pandemic, etc.)

My back wasn't quite as bad off as the first time, but with the pain that I had, most days I was hardly getting out of the house. By December of that year, after starting to see the physical therapist again, I was feeling marginally better, and I decided to get a step tracker to try to walk more consistently to avoid future injury.

Now that I've kept it up for several years and feeling better than ever, I wanted to write up some thoughts and tips. If you're looking to do something like this, I hope that this article gets you off to a good start.

Read on →