Josh

Josh

@joshtuddenham.dev

I code things for Granola joshtuddenham.dev

96 followers334 following44 posts

what is going on with the YouTube app on android?! I have Premium and lately it has refused to stop playing videos, rinsed my battery playing videos continuously on no volume, and opened to a random video playing (alongside assorted crashes)

Cursor 3, JetBrains Air - all these new IDE alternatives seem to be pushing one thing, parallelization. But the academic literature is clear for decades. It makes you slower. Nobody is good at context switching. Shouldn't more people be talking about this?

Anthropic shipped three features in one week that each look small on their own. Together they replaced remote agent control platforms, event automation (n8n/Zapier territory), and workflow orchestration tools. It's clear they see the harness as the moat.

joshtuddenham.devAnthropic Quietly Killed Three SaaS Categories This Week | Josh TuddenhamMost coverage focused on individual features. Nobody zoomed out to see what Anthropic did across the full week: absorb three categories of SaaS tooling into their own surface area.

I have been doing a lot of work playing with agents that execute code in sandboxes at runtime, and given the right harness, this pretty much feels like the future of software. And I hate how much of a booster that makes me sound, but it is hard to imagine another outcome.

View full thread

it is hard to imagine going back to hand rolling a rest api once you have experienced the emergent behaviours the above enables.

With REST you have to anticipate every action upfront. Here you define the primitives, add confirmation gates on anything destructive, and hand them over. The complexity assembles itself. The first time it handles something you never planned for is the moment it feels like the future.

I have been doing a lot of work playing with agents that execute code in sandboxes at runtime, and given the right harness, this pretty much feels like the future of software. And I hate how much of a booster that makes me sound, but it is hard to imagine another outcome.

The key will be providing a deterministic abstraction layer to each sandboxed agent (for example, a collection of end points with human in the loop side effect confirmation)

I'm beginning to think the single best use of OpenClaw would be to convert all the WhatsApp voice notes people send me into normal text messages

1/ Your AI agent dispatches 3 tools in parallel. The database lookup times out silently. The merge node proceeds with whatever arrived. The agent generates a confident answer from 2/3 of the information it needed. Your logs look clean.

View full thread

4/ This is a Petri net synchronization primitive. It's been in the formal methods literature since the 60s. I built it into an open-source safety layer for AI agents that works with the Vercel AI SDK.

1/ Your AI agent dispatches 3 tools in parallel. The database lookup times out silently. The merge node proceeds with whatever arrived. The agent generates a confident answer from 2/3 of the information it needed. Your logs look clean.

2/ This isn't hypothetical. It's the default behavior in n8n (append mode merge), LangGraph (implicit state), and every ReAct loop. If one branch fails quietly, nothing stops the agent from continuing with partial context.

3/ The fix is a join that blocks until every dispatched path resolves. Not "proceed when something arrives." "Proceed when everything arrives." Skip a tool? Fine. Place the done token directly. But the join won't fire until all tokens are present.

In short, I think allowing users to create a 'personality' for their AI agent, and have it speak to them and treat them in a certain way could very easily lead to even more AI induced psychosis than we already are seeing.

Spent some time improving error handling in Wooster (my AI trip planning app) and wrote about the journey. From simple beginnings: if (error) { console.log(error); } To typed errors, proper logging, and middleware. Here's the full story: www.joshtuddenham.tech/blog/wooster...

joshtuddenham.techExpress Error Handling: Because Things Will Go Wrong | Joshua Tuddenham | Full-Stack EngineerFrom try-catch hell to elegant error handling: A deep dive into implementing robust error handling in Express with TypeScript, custom error types, and global middleware.

debugging prod: why are my DB queries returning duplicates? *3 hours later* oh my CI/CD never deletes old files and I've been running a horrifying hybrid of old and new code for a month nothing like discovering your prod server is basically a code necropolis where old functions refuse to die 💀

You are up to date.