Sign in

Horacio Herrera

@horacioh.com
122 followers 68 following 179 posts

Building Seed (bsky.app/profile/seed.hyper.media), give people freedom to collaborate by saving the web!

PostsRepliesMedia
Horacio Herrera @horacioh.com · 26/09/2026
Let’s GO! 🚀
000
Horacio Herrera @horacioh.com · 26/09/2026
Watched Devin prompt itself to implement Stripe. The prompt barely mentioned any technical steps. It described what the user should be able to DO, not what to build. Here’s my take 👇 seed.horacioh.com/short-posts/...
seed.horacioh.com
Learning from seeing Devin prompting itself
horacio
000
Horacio Herrera @horacioh.com · 12/08/2026
So happy I learned about state machines & the actor model years ago. It's SO IMPORTANT in the era of AI agents and human/agent collaboration ❤️❤️❤️ AI agents are actors: messages, internal state, transitions. The actor model wasn't invented for AI but it might as well have been.
010
Horacio Herrera @horacioh.com · 11/08/2026
How do you know a person wrote it?
000
Horacio Herrera @horacioh.com · 11/08/2026
🎬 Próximamente: vídeos cortos en español con mis features favoritas + meetup de Devin users en Barcelona. ¿Qué quieres que te enseñe de Devin? Te leo 👇 seed.horacioh.com/writing/me-u...
seed.horacioh.com
Me uno al programa de Devin Ambassadors
000
Horacio Herrera @horacioh.com · 11/08/2026
Lo uso en producción, a diario: @seed.hyper.media — mi plataforma de comunidades en red GymClass — herramienta para academias de artes marciales (horarios, pruebas, link-in-bio) Jean OSS — tooling open source
110
Horacio Herrera @horacioh.com · 11/08/2026
Me uno oficialmente como @DevinAI Ambassador 🎉 Llevo meses usando Devin en proyectos reales, no en demos. Ahora quiero compartir esa experiencia. Quick intro de lo que hago con él 👇
100
Horacio Herrera @horacioh.com · 11/08/2026
The hard part of building software is never the code. It's modeling what should happen — and what shouldn't. What's something in your projects where the *model* mattered more than the *implementation*? Reply with yours ↓
000
Horacio Herrera @horacioh.com · 10/08/2026
I used to test components. Now I test state machines. Component tests check 10 things you don't care about (React, DOM, CSS, timing). Machine tests ask one thing: given state + event, did it transition? You already have a state machine — make it explicit.
000
Horacio Herrera @horacioh.com · 08/08/2026
Yep. On my case, what I write will get to 10 people if I’m lucky! So I just stop bothering about polishing too www.moll.dev/notes/justwr...
moll.dev
Just Write - Moll.dev
Just WriteMay 17, 2025 • 3 minute readEDIT: In the interest of transparency, I did have to edit this post. I originally mistyped “2025-05-17” as “202-05-17” in the post metadata which broke the…
010
Horacio Herrera @horacioh.com · 07/08/2026
AI didn't just make code cheaper. It made maintainer attention more expensive. When anyone can generate a PR in 30 seconds, the bottleneck shifts: the scarce resource is review capacity, not code production. The best OSS contributions compress maintainer attention.
110
Horacio Herrera @horacioh.com · 06/08/2026
Local-first is not just offline mode. It changes who owns the product relationship: your work starts with you, survives the network, and syncs when the system catches up. That shift affects architecture, UX, and trust. It's a philosophy, not a feature.
000
Horacio Herrera @horacioh.com · 05/08/2026
Block identity is the most underrated problem in document editors. A block isn't just content — it's position, children, selection, version. Move it, split it, merge it — did the identity survive? Most editors miss this for months.
000
Horacio Herrera @horacioh.com · 04/08/2026
AI made code cheap. It didn't make knowing what to build easier. The bottleneck was never typing. It was understanding the problem, modeling abstractions, knowing what the user needs. AI didn't kill coding — it made visible what the real job always was.
000
Horacio Herrera @horacioh.com · 03/08/2026
Yes that's the default. and that is my thought after trying the opposite. Thanks for sharing Ayu! long time since our last chat!
110
Horacio Herrera @horacioh.com · 03/08/2026
Help me settle this — what feels right to you? • Formatting resets on every Enter (clean slate) • Formatting always persists (whatever was active carries over) • Only some styles persist (tell me which ones)
100
Horacio Herrera @horacioh.com · 03/08/2026
Bold carries over when I just wanted a heading. Italic keeps going when I wanted one emphasized phrase. Font family? Absolute chaos. Some styles should persist. Some shouldn't. Where's the line?
100
Horacio Herrera @horacioh.com · 03/08/2026
Our designer asked me to make text formatting persist when you press Enter — if you're writing in bold and hit Enter, the next line stays bold. My first reaction: "yeah, that makes sense." Then I actually used it. Nope.
100
Horacio Herrera @horacioh.com · 03/08/2026
Who's building stuff on top of NVIDIA Brev? developer.nvidia.com/brev
developer.nvidia.com
NVIDIA Brev
Run, build, train, deploy, and scale AI models with GPU on the cloud.
000
Horacio Herrera @horacioh.com · 03/08/2026
Your framework doesn't matter as much as your model. React, Vue, Svelte — they all render state. The hard part is knowing what states exist, which transitions are valid, and what happens when things go wrong. Good architecture is just good modeling with a nicer name.
000
Horacio Herrera @horacioh.com · 01/08/2026
Nick Nisi at WorkOS deleted 95% of their agent skills and got better results. The harness did the work. And a harness that isn't backed by explicit states and transitions is just a pile of if/else statements you're pretending is architecture. www.youtube.com/watch?v=vy7o...
youtube.com
How I deleted 95% of my agent skills and got better results — Nick Nisi, WorkOS
WorkOS will be back for the World's Fair next week! see https://ai.engineer/wf and use YOUTUBEPROMO for new tickets only. Join 6000 AI engineers at the "Superbowl of AI"! --- Claude would fake…
000
Horacio Herrera @horacioh.com · 01/08/2026
If you believe you can build a really good agent harness without relying on state machines, you are wrong.
youtube.com
How I deleted 95% of my agent skills and got better results — Nick Nisi, WorkOS
WorkOS will be back for the World's Fair next week! see https://ai.engineer/wf and use YOUTUBEPROMO for new tickets only. Join 6000 AI engineers at the "Superbowl of AI"! --- Claude would fake…
100
Horacio Herrera @horacioh.com · 01/08/2026
Autosave looks simple until it isn't. "Just debounce a useEffect" works for v1 — then races, stale saves, and lost work crash the party. At that point the real model is not "an effect." It's a state machine. Explicit states + transitions = no stale IDs, no impossible UI.
000
Horacio Herrera @horacioh.com · 31/07/2026
emm.. what?
000
Horacio Herrera @horacioh.com · 31/07/2026
Thanks @ddoemonn.bsky.social!
010
Horacio Herrera @horacioh.com · 31/07/2026
Not really. If I need to be more explicit I dictate. but generally I speak with my agents the same way regardless the device I'm interacting from
000
Horacio Herrera @horacioh.com · 31/07/2026
This document is GOLD github.com/ddoemonn/int...
github.com
interior/DESIGN.md at main · ddoemonn/interior
micro-interactions for react, built for the half-second after a click - ddoemonn/interior
100
Horacio Herrera @horacioh.com · 31/07/2026
My coding setup right now: Jean on local (web access), Jean on a server, Devin in the cloud. All reachable from a phone, tablet, or laptop through Tailscale. I could be anywhere. The agents don't know and they don't care. They're just working.
010
Horacio Herrera @horacioh.com · 31/07/2026
Boolean flags are fine until the product starts having memory. `isLoading` + `isError` + `isSuccess` + `isSaving` + `isRetrying` + `wasCancelled` = a state machine you're pretending isn't one.
000
Horacio Herrera @horacioh.com · 30/07/2026
#YOLO
010
Horacio Herrera @horacioh.com · 30/07/2026
I shipped 3 PRs this week while I was at BJJ. My agent wrote them. I reviewed when I got back. The code was fine. Not perfect — but neither is the code I write at 2am. The difference is I was on the mats, not at a keyboard.
100
Horacio Herrera @horacioh.com · 23/07/2026
We open-sourced a simplified version of the pattern. Check out the PR → github.com/seed-hyperme... And if you're dealing with editor complexity, read about XState + TipTap.
github.com
Pull requests · seed-hypermedia/seed
Desktop+Web app for self-publishing, powered by the open Hypermedia protocol - Pull requests · seed-hypermedia/seed
020
Horacio Herrera @horacioh.com · 23/07/2026
The lessons: 1️⃣ Not every side effect belongs in useEffect 2️⃣ Extract hooks early — one concern = one hook 3️⃣ Let your state machine drive data flow, not effects 4️⃣ If you can count your effects on two hands, it's time to refactor
110
Horacio Herrera @horacioh.com · 23/07/2026
RESULT: Before: 10 useEffects with multiple interrelated deps After: 2 useEffects that are driven by the document machine
100
Horacio Herrera @horacioh.com · 23/07/2026
Step 5: Merge the rest into a single bridge effect. The remaining bits: - Register imperative handlers - Expose _suppressChangeRef for programmatic updates - Notify parent of editorReady All go in ONE effect that mounts once and cleans up on unmount.
100
Horacio Herrera @horacioh.com · 23/07/2026
Step 4: Use the state machine as the source of truth. We already had an XState doc machine for managing edit state. But it wasn't pushing content to the editor. We added an action that fires on document.remoteUpdate. Now the machine drives content sync, not an effect.
100
Horacio Herrera @horacioh.com · 23/07/2026
Step 3: Extract atomic hooks. We pulled out: - useReadOnlyClickToEdit — handles click-to-edit with mousedown tracking - useBlockHighlight — block hover highlight state - useBlockBorderDebug — debug border toggle Each hook owns ONE concern. Testable. Clean.
100
Horacio Herrera @horacioh.com · 23/07/2026
Step 2: Kill the fake effects. Turns out 3 were really just event handlers disguised as effects. - "Update editor content when prop changes" → should be a ref + imperative handler - "Handle click-to-edit" → literal DOM event listener They're events. Treat them as such.
100
Horacio Herrera @horacioh.com · 23/07/2026
Step 1: Identify what each effect actually does. We categorized them: - Bridge effects (editor ↔ outside world) - Sync effects (keep state in sync) - Debug/Dev effects - Event handlers that shouldn't be effects at all
100
Horacio Herrera @horacioh.com · 23/07/2026
The problem: every feature added another useEffect. - Sync content? useEffect. - Handle focus? useEffect. - Track drafts? useEffect. - Debug overlay? useEffect. After a while, effects are running in non-deterministic order and stepping on each other.
100
Horacio Herrera @horacioh.com · 23/07/2026
We had 10 useEffect calls in a single React component. Our TipTap document editor was a mess of side effects fighting each other. Here's how we went from 10 → 2 by embracing state machines and atomic hooks.
110
Horacio Herrera @horacioh.com · 11/07/2026
I guess that if I’m using @coolify to deploy my side projects, I don’t need Shipnode right? shipnode.dev
shipnode.dev
ShipNode — Zero-downtime Node.js deployments over SSH
ShipNode deploys Node.js apps to your own Ubuntu or Debian server over SSH with zero-downtime releases, PM2, Caddy HTTPS, health checks, and rollbacks.
000
Horacio Herrera @horacioh.com · 10/07/2026
Devin got mentioned in the Cal Newport podcast open.spotify.com/episode/3lKm... cc @cognition
open.spotify.com
Do Managers Actually Understand AI? (I’m Not So Sure.) | AI Reality Check
Deep Questions with Cal Newport · Episode
010
Horacio Herrera @horacioh.com · 09/07/2026
Hello from Shoutrrr
000
Horacio Herrera @horacioh.com · 07/07/2026
Good communication comes from connection and alignment
010
Horacio Herrera @horacioh.com · 06/07/2026
Just because something can be automated doesn't mean it's painful enough for people to want it automated. Before building a solution, validate that you're solving a real pain—not just removing a repetitive task.
000
Horacio Herrera @horacioh.com · 06/07/2026
I built a cron job so my wife wouldn't have to check a website every day. When I was almost done, she said: "You don't have to. I'm already used to doing it." That was a good reminder 👇
110
Horacio Herrera @horacioh.com · 05/07/2026
The catch: good prompting is essential. I treated it like a skilled engineer who just joined — capable, but needs clear context and direction. Wrote up the full breakdown — what worked, the caveats, and who I think it's for: seed.horacioh.com/writing/how-...
seed.horacioh.com
How I Built a Full Booking System as a Side Project — With Devin as My Engineering Partner
010
Horacio Herrera @horacioh.com · 05/07/2026
I used Devin (devin.ai) to build a full booking system for my martial arts academy. Not a demo — a production app with real users. I reviewed PRs from my phone, merged features between meetings. 30+ PRs shipped in a month while working my day job.
devin.ai
Devin
Devin is an AI coding agent and software engineer that helps developers build better software faster. Parallel cloud agents for serious engineering teams.
100
Horacio Herrera @horacioh.com · 05/07/2026
Considering Devin? Here's my honest experience after a month of real use. I'm a cofounder working full-time. I had a clear side project idea but zero time to build it myself. 🧵
100