Book: PHP to TypeScript — A Bridge for Modern PHP 8+ Developers Also by me: The TypeScript Library — the 5-book collection My project: Hermes IDE | GitHub — an IDE for developers who ship with Claude Code and other AI coding tools Me: xgabriel.com | GitHub A PHP developer opens a TypeScript codebase, scrolls to the ORM layer, and gets stuck on a familiar question: how does $user->name wo
macOS tar destroys files on Linux: I validated it in my real Railway pipeline and documented the 3 cases nobody mentions There's a Hacker News thread that resurfaced this week with 107 points about a 2024 article: tar on macOS creates archives that Linux can't extract cleanly. The community reacted the way it always does — "use GNU tar", "install gtar with Homebrew", "this has been known for yea
Tar en macOS destroza archivos en Linux: lo validé en mi pipeline real de Railway y documenté los 3 casos que nadie menciona Hay un hilo en Hacker News que resurfaceó esta semana con 107 puntos sobre un artículo de 2024: tar en macOS crea archivos que Linux no puede extraer limpiamente. La comunidad reaccionó como siempre: "usá GNU tar", "instalá gtar con homebrew", "esto es conocido desde hace
Book: TypeScript Essentials — From Working Developer to Confident TS, Across Node, Bun, Deno, and the Browser Also by me: The TypeScript Library — the 5-book collection My project: Hermes IDE | GitHub — an IDE for developers who ship with Claude Code and other AI coding tools Me: xgabriel.com | GitHub A team I talked to had a service that crashed roughly twice Cannot read properties of u
When you automate backups, you eventually discover the backup was not the hard part. The hard part was everything around it. This week I got a nice little reminder from my self-hosted agent setup: the backup job can be logically correct, authenticated, scheduled, and still fail because of two very boring constraints: Docker-owned files are not always readable by the user running cron. GitHub Relea
Book: TypeScript Essentials — From Working Developer to Confident TS, Across Node, Bun, Deno, and the Browser Also by me: The TypeScript Library — the 5-book collection My project: Hermes IDE | GitHub — an IDE for developers who ship with Claude Code and other AI coding tools Me: xgabriel.com | GitHub You add a new status to your app. The string "archived" goes Two days later a teammate
Most dev teams I've worked with communicate updates through a Slack message or a Notion doc that clients never open. Stack: Next.js 14 App Router Supabase (auth + DB + RLS) Tiptap (rich text editor) Tailwind CSS + shadcn/ui The cherry on top was the bug that kept me up at night. Tiptap's getHTML() was saving content to Supabase as escaped HTML entities, so <strong> became <strong> and render
Cuando una aplicación necesita leer un archivo, escribir en una conexión TCP o esperar datos de un disco, el kernel de Linux ofrece tradicionalmente dos caminos: bloquear el proceso hasta que la operación termine, o usar interfaces como epoll y Linux AIO para manejar múltiples operaciones concurrentes. Durante casi tres décadas, esas fueron las opciones dominantes. Pero desde la versión 5.1 del ke