<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>notdefined.dev</title><description>Notas desde las trincheras: Ruby, JavaScript, arquitectura backend y experimentos con IA.</description><link>https://notdefined.dev/</link><item><title>Svelte 5 desde React: menos código, menos excusas</title><link>https://notdefined.dev/blog/svelte-5-desde-react-menos-codigo-menos-excusas/</link><guid isPermaLink="true">https://notdefined.dev/blog/svelte-5-desde-react-menos-codigo-menos-excusas/</guid><description>Construí el dashboard de Inboxed con Svelte 5 viniendo de años en React. Aquí lo que me sorprendió, lo que me atrapó, y por qué no lo cambiaría para este proyecto.</description><pubDate>Mon, 16 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Ruby 4.0 y async: el event loop que le faltaba a Ruby</title><link>https://notdefined.dev/blog/ruby-40-async-el-event-loop-que-le-faltaba-a-ruby/</link><guid isPermaLink="true">https://notdefined.dev/blog/ruby-40-async-el-event-loop-que-le-faltaba-a-ruby/</guid><description>Ruby 4.0 (diciembre 2025) entregó lo que Ruby 3.x prometió: I/O concurrente real con Fibers, Ractor::Port para paralelismo sin drama, y ZJIT que optimiza workloads concurrentes. Te explico cómo funciona, cómo se compara con Node.js, y si puedes usarlo con tu app Rails hoy.</description><pubDate>Sat, 14 Mar 2026 00:00:00 GMT</pubDate></item><item><title>SolidJS: el sabor de React sin la amargura</title><link>https://notdefined.dev/blog/solidjs-el-sabor-de-react-sin-la-amargura/</link><guid isPermaLink="true">https://notdefined.dev/blog/solidjs-el-sabor-de-react-sin-la-amargura/</guid><description>SolidJS tiene la sintaxis de React, la performance de Svelte, y no tiene virtual DOM. Si ya sabes React, lo aprendes en un día — y probablemente no quieras volver.</description><pubDate>Sat, 07 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Kamal: deploy de Rails sin la complejidad de Kubernetes</title><link>https://notdefined.dev/blog/kamal-deploy-de-rails-sin-la-complejidad-de-kubernetes/</link><guid isPermaLink="true">https://notdefined.dev/blog/kamal-deploy-de-rails-sin-la-complejidad-de-kubernetes/</guid><description>Kamal (antes MRSK) llega por defecto con Rails 8 y usa Docker en cualquier VPS sin necesitar Kubernetes. Qué problema resuelve, cómo se compara con Heroku/Fly/Render, zero-downtime deploys, y cuándo todavía tiene sentido una plataforma managed.</description><pubDate>Tue, 24 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Hotwire en 2026: ¿el sueño Rails sin JS sigue vivo?</title><link>https://notdefined.dev/blog/hotwire-en-2026-el-sueno-rails-sin-js-sigue-vivo/</link><guid isPermaLink="true">https://notdefined.dev/blog/hotwire-en-2026-el-sueno-rails-sin-js-sigue-vivo/</guid><description>Evaluación honesta después de construir features reales con Turbo y Stimulus. Dónde Hotwire genuinamente brilla, dónde empieza a pelearse contigo, y cuándo el tradeoff vale la pena vs &apos;solo usa React&apos;.</description><pubDate>Tue, 10 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Cómo estructuro una app Rails en 2026</title><link>https://notdefined.dev/blog/como-estructuro-una-app-rails-en-2026/</link><guid isPermaLink="true">https://notdefined.dev/blog/como-estructuro-una-app-rails-en-2026/</guid><description>No es &apos;el Rails way&apos; y tampoco DDD desde cero. Un approach pragmático después de 10+ años: dónde va la lógica de negocio, cómo usar concerns sin crear un desastre, y cómo los nuevos defaults de Rails 8 cambian las decisiones de arquitectura.</description><pubDate>Tue, 27 Jan 2026 00:00:00 GMT</pubDate></item><item><title>Caching en Rails: de cache do a Redis y de vuelta</title><link>https://notdefined.dev/blog/caching-en-rails-de-cache-do-a-redis-y-de-vuelta/</link><guid isPermaLink="true">https://notdefined.dev/blog/caching-en-rails-de-cache-do-a-redis-y-de-vuelta/</guid><description>Rails 8 trae Solid Cache — un backend de caché respaldado por DB sin Redis. Cubrimos el stack completo: fragment caching, Rails.cache, HTTP caching con ETags, Russian doll caching, e invalidación.</description><pubDate>Tue, 16 Dec 2025 00:00:00 GMT</pubDate></item><item><title>GitHub Actions: CI/CD sin el drama</title><link>https://notdefined.dev/blog/github-actions-ci-cd-sin-el-drama/</link><guid isPermaLink="true">https://notdefined.dev/blog/github-actions-ci-cd-sin-el-drama/</guid><description>Una guía de supervivencia, no de referencia. Los conceptos que más tardan en clickear: jobs vs steps vs workflows, needs para ordering, matrix builds, caching correcto, y cómo debuggear sin hacer 40 commits.</description><pubDate>Tue, 02 Dec 2025 00:00:00 GMT</pubDate></item><item><title>Service objects en Rails: cuándo ayudan y cuándo son solo indirection</title><link>https://notdefined.dev/blog/service-objects-en-rails-cuando-ayudan-y-cuando-son-solo-indirection/</link><guid isPermaLink="true">https://notdefined.dev/blog/service-objects-en-rails-cuando-ayudan-y-cuando-son-solo-indirection/</guid><description>La comunidad Rails lleva una década debatiendo sobre service objects y los dos lados tienen razón a veces. Qué problema resuelven realmente, las diferentes formas de implementarlos, y cuándo un módulo simple es suficiente.</description><pubDate>Tue, 25 Nov 2025 00:00:00 GMT</pubDate></item><item><title>Background jobs en Ruby que no te vuelvan a perseguir</title><link>https://notdefined.dev/blog/background-jobs-en-ruby-que-no-te-vuelvan-a-perseguir/</link><guid isPermaLink="true">https://notdefined.dev/blog/background-jobs-en-ruby-que-no-te-vuelvan-a-perseguir/</guid><description>Todos saben usar Sidekiq básico. Lo que nadie te enseña: idempotencia, manejo de errores que no sea retry ciego, timeouts, cómo testear sin mockear todo, y patrones para jobs que llaman APIs externas.</description><pubDate>Tue, 11 Nov 2025 00:00:00 GMT</pubDate></item><item><title>Rate limiting de APIs: más que solo contar requests</title><link>https://notdefined.dev/blog/rate-limiting-apis-mas-que-contar-requests/</link><guid isPermaLink="true">https://notdefined.dev/blog/rate-limiting-apis-mas-que-contar-requests/</guid><description>Fixed window, sliding window, token bucket — tradeoffs reales, no solo definiciones. Dónde enforcer (nginx, app layer, Redis), cómo manejar sistemas distribuidos, y rate limiting por complejidad de operación.</description><pubDate>Tue, 28 Oct 2025 00:00:00 GMT</pubDate></item><item><title>pgvector: usando PostgreSQL como vector store</title><link>https://notdefined.dev/blog/pgvector-postgresql-como-vector-store/</link><guid isPermaLink="true">https://notdefined.dev/blog/pgvector-postgresql-como-vector-store/</guid><description>pgvector lleva en producción desde 2023 y la mayoría de las apps no necesitan Pinecone ni Weaviate. Cómo instalar la extensión, guardar embeddings, buscar por similitud, y cuándo sí necesitas un vector DB dedicado.</description><pubDate>Tue, 07 Oct 2025 00:00:00 GMT</pubDate></item><item><title>El problema N+1 en ActiveRecord: tres formas de resolverlo, una de prevenirlo</title><link>https://notdefined.dev/blog/el-problema-n-mas-1-en-activerecord-tres-formas-de-resolverlo/</link><guid isPermaLink="true">https://notdefined.dev/blog/el-problema-n-mas-1-en-activerecord-tres-formas-de-resolverlo/</guid><description>Todos conocen includes. Pero hay diferencias reales entre includes, preload, y eager_load, y scopes que crean N+1 para quien los usa sin saberlo. Acá está el mapa completo.</description><pubDate>Tue, 23 Sep 2025 00:00:00 GMT</pubDate></item><item><title>Event-driven design: cuándo tu app debe dejar de hablarse a sí misma</title><link>https://notdefined.dev/blog/event-driven-design-cuando-tu-app-debe-dejar-de-hablarse-a-si-misma/</link><guid isPermaLink="true">https://notdefined.dev/blog/event-driven-design-cuando-tu-app-debe-dejar-de-hablarse-a-si-misma/</guid><description>Intro práctica a EDA desde un ángulo DDD. Cuándo las llamadas directas se vuelven un problema, qué son los domain events, y cómo implementarlos en Rails sin pasarte de Kafka cuando no lo necesitas.</description><pubDate>Tue, 09 Sep 2025 00:00:00 GMT</pubDate></item><item><title>API versioning: por qué el versionado en URL no está siempre mal</title><link>https://notdefined.dev/blog/api-versioning-por-que-el-versionado-en-url-no-esta-siempre-mal/</link><guid isPermaLink="true">https://notdefined.dev/blog/api-versioning-por-que-el-versionado-en-url-no-esta-siempre-mal/</guid><description>Header versioning es más correcto en teoría. URL versioning es lo que los equipos realmente shippen de forma confiable. Las cuatro estrategias, sus tradeoffs reales, y cómo manejar deprecación sin romper clientes.</description><pubDate>Tue, 19 Aug 2025 00:00:00 GMT</pubDate></item><item><title>LLM context windows: por qué tu feature de IA es más lento de lo que necesita ser</title><link>https://notdefined.dev/blog/llm-context-windows-por-que-tu-feature-de-ia-es-mas-lento-de-lo-que-necesita/</link><guid isPermaLink="true">https://notdefined.dev/blog/llm-context-windows-por-que-tu-feature-de-ia-es-mas-lento-de-lo-que-necesita/</guid><description>El tamaño del contexto afecta directamente latencia y costo. Cómo medir qué estás enviando realmente, cuándo chunking vs summarization vs retrieval, y por qué streaming cambia el UX aunque el tiempo total sea el mismo.</description><pubDate>Tue, 05 Aug 2025 00:00:00 GMT</pubDate></item><item><title>GraphQL en producción: lo que los tutoriales no cubren</title><link>https://notdefined.dev/blog/graphql-en-produccion-lo-que-los-tutoriales-no-cubren/</link><guid isPermaLink="true">https://notdefined.dev/blog/graphql-en-produccion-lo-que-los-tutoriales-no-cubren/</guid><description>N+1 es el problema obvio. Pero hay toda una lista de cosas que te muerden tres meses después de lanzar: pagination, schema versioning, rate limiting por complejidad. Acá está el mapa.</description><pubDate>Tue, 22 Jul 2025 00:00:00 GMT</pubDate></item><item><title>Rust ownership para devs que crecieron con garbage collectors</title><link>https://notdefined.dev/blog/rust-ownership-para-devs-que-crecieron-con-garbage-collectors/</link><guid isPermaLink="true">https://notdefined.dev/blog/rust-ownership-para-devs-que-crecieron-con-garbage-collectors/</guid><description>No es otro tutorial de Rust. Es el cambio de modelo mental para alguien que viene de Ruby o JavaScript: por qué el borrow checker existe, las tres reglas sin jerga de CS, y cuándo Rust es la herramienta correcta.</description><pubDate>Tue, 01 Jul 2025 00:00:00 GMT</pubDate></item><item><title>El event loop de Node.js: el modelo mental que finalmente lo hace clickear</title><link>https://notdefined.dev/blog/el-event-loop-de-nodejs-el-modelo-mental-que-finalmente-lo-hace-clickear/</link><guid isPermaLink="true">https://notdefined.dev/blog/el-event-loop-de-nodejs-el-modelo-mental-que-finalmente-lo-hace-clickear/</guid><description>La mayoría de explicaciones del event loop son demasiado abstractas o demasiado de bajo nivel. Esta es la versión que conecta con problemas reales: por qué setTimeout(fn, 0) no es 0ms, qué es la microtask queue, y por qué el código síncrono bloquea todo.</description><pubDate>Tue, 17 Jun 2025 00:00:00 GMT</pubDate></item><item><title>TypeScript `satisfies`: el operador que debí usar antes</title><link>https://notdefined.dev/blog/typescript-satisfies-el-operador-que-debi-usar-antes/</link><guid isPermaLink="true">https://notdefined.dev/blog/typescript-satisfies-el-operador-que-debi-usar-antes/</guid><description>satisfies llegó en TypeScript 4.9 y la mayoría de devs sigue usando as o anotaciones explícitas. La diferencia es sutil pero evita bugs silenciosos que as nunca va a atrapar.</description><pubDate>Tue, 03 Jun 2025 00:00:00 GMT</pubDate></item><item><title>Solid Queue: background jobs sin Redis</title><link>https://notdefined.dev/blog/solid-queue-jobs-sin-redis/</link><guid isPermaLink="true">https://notdefined.dev/blog/solid-queue-jobs-sin-redis/</guid><description>Rails 8 llega con Solid Queue como backend por defecto para Active Job. Es un queue engine respaldado por tu base de datos. Veamos si es suficiente para tu app.</description><pubDate>Tue, 20 May 2025 00:00:00 GMT</pubDate></item><item><title>Docker multi-stage builds: el cambio que redujo el tamaño de nuestra imagen un 70%</title><link>https://notdefined.dev/blog/docker-multi-stage-builds/</link><guid isPermaLink="true">https://notdefined.dev/blog/docker-multi-stage-builds/</guid><description>Un Dockerfile naïve para una app Ruby o Node puede generar imágenes de 2GB. Con multi-stage builds, la misma app puede quedar en 200MB. Te muestro cómo.</description><pubDate>Tue, 06 May 2025 00:00:00 GMT</pubDate></item><item><title>ActiveRecord scopes vs class methods: cuándo usar cada uno</title><link>https://notdefined.dev/blog/activerecord-scopes-vs-class-methods/</link><guid isPermaLink="true">https://notdefined.dev/blog/activerecord-scopes-vs-class-methods/</guid><description>Parecen intercambiables hasta que no lo son. La diferencia entre scope y class method no es solo de estilo — afecta cómo se comporta el encadenamiento y qué pasa cuando el resultado es nil.</description><pubDate>Tue, 22 Apr 2025 00:00:00 GMT</pubDate></item><item><title>PostgreSQL EXPLAIN ANALYZE: leyendo lo que tus queries realmente hacen</title><link>https://notdefined.dev/blog/postgresql-explain-analyze/</link><guid isPermaLink="true">https://notdefined.dev/blog/postgresql-explain-analyze/</guid><description>La mayoría de los devs corren queries sin leer un solo plan de ejecución. Acá te enseño a leer EXPLAIN ANALYZE sin necesitar conocimientos de DBA.</description><pubDate>Tue, 08 Apr 2025 00:00:00 GMT</pubDate></item><item><title>Debugging memory leaks en Ruby sin perder la cabeza</title><link>https://notdefined.dev/blog/debugging-memory-leaks-en-ruby/</link><guid isPermaLink="true">https://notdefined.dev/blog/debugging-memory-leaks-en-ruby/</guid><description>El memory bloat en Rails llega despacio y de repente tus pods están reiniciándose cada hora. Acá está el toolkit práctico para encontrar y matar los leaks.</description><pubDate>Tue, 18 Mar 2025 00:00:00 GMT</pubDate></item><item><title>DeepSeek R1 y lo que el momento open-source en LLMs realmente significa</title><link>https://notdefined.dev/blog/deepseek-r1-el-momento-open-source-en-llms/</link><guid isPermaLink="true">https://notdefined.dev/blog/deepseek-r1-el-momento-open-source-en-llms/</guid><description>DeepSeek R1 llegó el 20 de enero de 2025 y rompió el supuesto de que los modelos de razonamiento frontier requieren clusters de $100M. Qué cambió, qué no, y qué significa para developers.</description><pubDate>Tue, 04 Mar 2025 00:00:00 GMT</pubDate></item><item><title>Ruby 3.4: las features que vale la pena conocer</title><link>https://notdefined.dev/blog/ruby-34-las-features-que-vale-la-pena-conocer/</link><guid isPermaLink="true">https://notdefined.dev/blog/ruby-34-las-features-que-vale-la-pena-conocer/</guid><description>Ruby 3.4 salió el 25 de diciembre de 2024. No todo el changelog merece tu atención — acá está lo que realmente cambia cómo escribes código.</description><pubDate>Tue, 25 Feb 2025 00:00:00 GMT</pubDate></item><item><title>Docker: Rapido y Furioso</title><link>https://notdefined.dev/blog/docker-crash-course/</link><guid isPermaLink="true">https://notdefined.dev/blog/docker-crash-course/</guid><description>Si Docker fuera una pelicula, seria esa escena donde presionas el boton de NOS y te mueves a 300 km/hr. Ajusta el cinturon, porque este crash course va directo al grano para que containerices tu codigo como un verdadero Toretto.</description><pubDate>Thu, 20 Feb 2025 00:00:00 GMT</pubDate></item><item><title>Tailwind CSS v4: lo que realmente cambió y por qué importa</title><link>https://notdefined.dev/blog/tailwind-css-v4-lo-que-realmente-cambio/</link><guid isPermaLink="true">https://notdefined.dev/blog/tailwind-css-v4-lo-que-realmente-cambio/</guid><description>Tailwind v4 salió el 22 de enero de 2025 y rompió bastantes cosas. Te cuento qué cambió, por qué, y cómo migrar sin morir en el intento.</description><pubDate>Mon, 10 Feb 2025 00:00:00 GMT</pubDate></item><item><title>Ruby, Concurrencia y Paralelismo: La Verdad</title><link>https://notdefined.dev/blog/ruby-parallelism-and-concurrency/</link><guid isPermaLink="true">https://notdefined.dev/blog/ruby-parallelism-and-concurrency/</guid><description>Si creias que los threads te darian paralelismo real en Ruby, oops. Hay formas de sacarle jugo a concurrencia y paralelismo con Fibers, Processes y Ractors.</description><pubDate>Thu, 23 Jan 2025 00:00:00 GMT</pubDate></item><item><title>Blocks, Lambdas y Procs: Entendiendo la magia en Ruby</title><link>https://notdefined.dev/blog/ruby-blocks-lambdas-procs/</link><guid isPermaLink="true">https://notdefined.dev/blog/ruby-blocks-lambdas-procs/</guid><description>Si cada vez que te preguntan la diferencia entre blocks, procs y lambdas en Ruby te quedas dudando, este post es para ti. Vamos a ver que son, como funcionan y en que se diferencian, con ejemplos practicos y comparaciones para elegir bien en cada caso.</description><pubDate>Sat, 18 Jan 2025 00:00:00 GMT</pubDate></item><item><title>Ruby Object Model: Un Recordatorio Rapido</title><link>https://notdefined.dev/blog/ruby-object-model/</link><guid isPermaLink="true">https://notdefined.dev/blog/ruby-object-model/</guid><description>Todo en Ruby es un objeto, incluidas las clases mismas. Exploremos como funciona su jerarquia, singleton classes, method lookup y metaprogramacion de forma practica para el dia a dia.</description><pubDate>Wed, 08 Jan 2025 00:00:00 GMT</pubDate></item></channel></rss>