Saltar al contenido
Escritos

Blog

Notas sobre construir para web y móvil: rendimiento, arquitectura, IA y el oficio de lanzar productos.

2
series
35
artículos
25
Temas

Todos los artículos

Ilustración de una carpeta de proyecto y tres copias idénticas, cada una con un cambio propio, todas apoyadas en una misma base compartida
IA28 oct 202624 min de lectura

Qué es un git worktree: cómo funciona por dentro y cuándo usarlo

Qué es un git worktree explicado a fondo: qué guarda git en disco, qué comparte con el repositorio, sus comandos, sus límites y cuándo conviene usarlo.

Leer más
Ilustración: a la izquierda, una conversación que termina en una respuesta; a la derecha, la misma conversación conectada a un calendario, una base de datos y un sistema de pedidos, y termina en una acción completada
IA27 sep 202615 min de lectura

Chatbot vs agente de IA: diferencias, ventajas y cuál necesita tu negocio

Chatbot vs agente de IA: qué hace cada uno, sus ventajas, qué trabajo y riesgo agrega un agente y cómo decidir cuál conviene a tu negocio antes de cotizar.

Leer más
Ilustración: un cliente y el ingeniero conversan; de la conversación sale una propuesta escrita con el alcance recortado y el precio sellado, y el pago dividido en hitos que se liberan uno por uno
Producto26 sep 202618 min de lectura

Cuánto cuesta desarrollar una app y por qué cotizo precio fijo

Cuánto cuesta desarrollar una app: de qué depende el precio, por qué nadie serio da un número sin alcance y qué te garantiza una cotización a precio fijo.

Leer más
Ilustración: el dinero del cliente recorre un camino en cobre que se detiene en una caja cerrada con candado, y solo sigue hacia el desarrollador cuando una entrega marcada con un visto cruza el otro sentido; debajo, un camino secundario lleva a una balanza
Producto23 sep 202616 min de lectura

Por qué contratarme por Upwork: pagos protegidos, reputación verificable y arbitraje

Qué gana un cliente al contratar por Upwork: dinero en custodia hasta aprobar cada hito, horas auditables, reputación que nadie edita y arbitraje si algo falla.

Leer más
Ilustración de Jev: un estado entra a un nodo de decisión y sale convertido en tres valores tipados, un sí o no, una opción y una puntuación, sin texto de por medio
IA23 sep 202614 min de lectura

Qué es Jev: el modelo de TypeSafe AI que decide en vez de escribir

Qué es Jev, el modelo de TypeSafe AI que devuelve decisiones tipadas con probabilidades en vez de texto: cómo llamar su API, cuánto cuesta y cuándo usarlo.

Leer más
Ilustración: bloques irregulares y apagados, amontonados sin orden, pasan por una línea de lectura en cobre y salen como tres filas ordenadas dentro de un documento, dos marcadas con un visto y una descartada
Producto19 sep 202616 min de lectura

Heredaste un producto: la auditoría de código antes de seguir

Auditoría de código al heredar un producto de otro equipo: qué revisa, qué dice el veredicto escrito y cómo decidir entre conservar, reparar o reescribir.

Leer más
Ilustración: un ticket suelto que termina en un bloque de código, frente a un camino continuo que va de la decisión a la construcción, la publicación y el mantenimiento de un producto
Producto19 sep 202614 min de lectura

Qué es un ingeniero de producto y en qué se diferencia de un programador

Qué hace un ingeniero de producto, en qué se diferencia de un programador y cómo saber cuál de los dos necesita tu negocio antes de contratar.

Leer más
Ilustración de una app en el centro rodeada de superficies del sistema: un widget, una isla dinámica, un reloj y un símbolo de modelo local, conectadas a ella
Móvil13 sep 202617 min de lectura

Lo que solo puedes hacer en nativo: WidgetKit, Live Activities, App Intents, StoreKit 2, Foundation Models y watchOS

Lo que solo puedes hacer en iOS nativo y React Native no ofrece: WidgetKit, Live Activities, App Intents y Siri, StoreKit 2, Foundation Models y watchOS.

Leer más
Ilustración de una tabla de casos donde cada fila se compara con una referencia, junto a un cronómetro que representa el tiempo de compilación
Móvil12 sep 202617 min de lectura

Testing y tooling en iOS para seniors: Swift Testing, snapshots, mocks, Instruments y tiempos de compilación

Testing en iOS viniendo de Jest: Swift Testing vs XCTest, snapshots, mocks con protocolos y URLProtocol, XCUITest vs Maestro, Instruments y compilación.

Leer más
Ilustración de una cadena de eslabones que une un certificado, un perfil y un paquete firmado, con un sello al final que representa la revisión
Móvil11 sep 202617 min de lectura

Build, firma y App Store: lo que EAS te escondía

Build, firma y App Store sin EAS: certificados, provisioning profiles, entitlements, Fastlane match, TestFlight, App Review, Privacy Manifest y Tuist.

Leer más
Ilustración de una forma que se transforma en tres fases hacia otra posición, con una escala de tamaños de texto y un símbolo a un lado
Móvil10 sep 202615 min de lectura

UI, theming y animaciones en SwiftUI sin NativeWind ni Reanimated

UI, theming y animaciones en SwiftUI sin NativeWind ni Reanimated: tokens en Asset Catalog, Dynamic Type, SF Symbols, withAnimation y Liquid Glass.

Leer más
Ilustración de una fila de módulos pequeños del lado izquierdo conectados uno a uno con bloques del sistema del lado derecho, con un bloque marcado como principal
Móvil9 sep 202617 min de lectura

Del ecosistema expo-* a los frameworks de Apple: la tabla de equivalencias por dominio

Qué framework de Apple reemplaza a cada paquete expo-*: cámara, ubicación, autenticación, pagos, notificaciones y archivos, con los permisos de Info.plist.

Leer más
Ilustración de tres capas de almacenamiento apiladas, con una caja aparte sellada que representa al Keychain y una nube que sincroniza con la capa principal
Móvil8 sep 202614 min de lectura

Persistencia en iOS: SwiftData, GRDB y Keychain, y por qué Realm ya no es opción

Persistencia en iOS: cuándo usar SwiftData, GRDB o Core Data, por qué Realm ya no es opción, el Keychain tras desinstalar y offline-first con CloudKit.

Leer más
Ilustración de varias tareas que corren en paralelo dentro de un mismo marco y convergen en un único punto de salida, con un actor aislado a un lado
Móvil7 sep 202616 min de lectura

Concurrencia en Swift: adiós al event loop. async let, TaskGroup, actores y Swift 6

Concurrencia en Swift para quien viene de JavaScript: sin event loop, async let y TaskGroup en vez de Promise.all, actores, Sendable y data races en Swift 6.

Leer más
Ilustración de sanitype: un payload atraviesa un límite y sale con los campos sensibles enmascarados, más un reporte de lo que se tocó
IA7 sep 202621 min de lectura

Datos sensibles fuera del prompt: una librería de TypeScript escrita en 39 minutos desde su especificación

Datos sensibles fuera del prompt con sanitype: redacta, enmascara o elimina datos antes de que salgan hacia un LLM o un log. Así está hecha en TypeScript.

Leer más
Ilustración de una capa de datos: la red y un almacén local alimentan un mismo flujo que llega a la vista, con la caché como fuente principal
Móvil6 sep 202617 min de lectura

Data en Swift: lo que TanStack Query hacía por ti y cómo construir tu capa de caché

Data en Swift sin TanStack Query: cómo construir tu capa de caché con URLSession y Codable, un repositorio con AsyncStream, SwiftData o GRDB e invalidación.

Leer más
Ilustración de una pila de pantallas apiladas en profundidad, con un enlace externo que entra directamente a una pantalla intermedia
Móvil5 sep 202614 min de lectura

Navegación en SwiftUI sin file-based routing: NavigationStack, un enum de rutas y deep links

Navegación en SwiftUI viniendo de Expo Router: NavigationStack con un enum Route, el patrón Coordinator, deep links, Universal Links y swift-navigation.

Leer más
Ilustración de Spec-Driven Development: una especificación se convierte en criterios de aceptación y de ahí en la lista de sismos de una app móvil
IA5 sep 202623 min de lectura

Spec-Driven Development en React Native: un MVP que lista los sismos del mundo, especificado antes de escribir código

Spec-Driven Development en React Native: un MVP que lista los sismos del mundo, donde la spec decide qué entra y sus criterios de aceptación son los tests.

Leer más
Ilustración de un agente de voz: una llamada entra, un backend resuelve fechas y opciones, y sale una cita confirmada en el calendario
IA4 sep 202626 min de lectura

Agente de voz que agenda citas: ElevenLabs, Cal.com y un backend que no deja adivinar al modelo

Cómo monté un agente de voz que agenda citas con ElevenLabs y Cal.com, y por qué el backend en Fastify es lo que evita que el modelo invente horarios.

Leer más
Ilustración de un estado central del que salen vistas que solo observan la parte que leen, con módulos separados alrededor
Móvil4 sep 202616 min de lectura

Estado y arquitectura en SwiftUI: de Zustand y Redux a @Observable y TCA

Estado y arquitectura en SwiftUI viniendo de Zustand y Redux: MVVM con @Observable como default, cuándo vale TCA, inyección de dependencias y packages.

Leer más
Ilustración de un árbol de vistas donde cada nodo propone un tamaño a sus hijos y recibe una respuesta, con un camino principal marcado
Móvil3 sep 202616 min de lectura

SwiftUI no es React, aunque se parezca: body, identidad, modifiers y layout

SwiftUI no es React: qué es body frente a render, por qué importa la identidad, cómo el orden de los modifiers cambia todo y el sistema de layout sin flexbox.

Leer más
Ilustración de dos sistemas de tipos: una forma que se copia al pasar de mano en mano y otra que se comparte por referencia, con un contenedor que puede estar vacío
Móvil2 sep 202617 min de lectura

Swift para quien ya domina TypeScript: las cinco diferencias que cambian cómo diseñas

Swift para quien domina TypeScript: value vs reference semantics, opcionales en el sistema de tipos, enums con datos, protocolos y Codable en vez de zod.

Leer más
Ilustración de dos caminos que salen del mismo punto: uno cubre dos plataformas con una sola capa y el otro llega directo a las capacidades del sistema
Móvil1 sep 202617 min de lectura

Por qué un senior de React Native debería aprender nativo en 2026

Por qué un senior de React Native debería aprender nativo: dónde gana iOS (widgets, APIs del día uno, ML en el dispositivo), dónde pierde y por qué suma.

Leer más
Ilustración de los límites duros de un agente: el loop del agente encerrado en un marco de comprobaciones —presupuesto, allowlist de comandos, allowlist de paths— con un interruptor de apagado afuera y un registro de cada vuelta
IA31 ago 202634 min de lectura

Los límites duros de un agente autónomo: lo que evita el desastre

Los límites duros de un agente autónomo: topes de iteraciones y tokens por corrida, allowlist de comandos y paths, kill switch, idempotencia y observabilidad.

Leer más
Ilustración de una persona entrenando a un robot: le entrega un ejemplo etiquetado con una marca de verificación y la señal de entrenamiento fluye hacia el robot
IA25 jul 202613 min de lectura

Trabajos de anotación de datos: en qué consiste etiquetar y revisar respuestas de IA

Trabajos de anotación de datos y revisión de respuestas de IA: qué tareas incluyen, cómo alimentan el entrenamiento con RLHF y cómo se mide la calidad.

Leer más
Ilustración de una flota de agentes: un prompt se reparte hacia varios agentes en paralelo, cada uno en su propio worktree
IA6 jul 202616 min de lectura

Orca: el ADE para orquestar una flota de agentes de código en paralelo

Probé Orca, un ADE de código abierto para correr una flota de agentes de código en paralelo: Claude Code, Codex y más, cada uno en su worktree aislado.

Leer más
Ilustración del sistema de punta a punta: un ticket de Jira entra por un disparador, pasa por una cola con estado, se procesa en un workspace efímero y sale como un pull request que vuelve como comentario a Jira
IA2 jul 202630 min de lectura

De un ticket de Jira a un PR: el sistema autónomo de punta a punta

De un ticket de Jira a un PR: un webhook o polling dispara el agente, una cola con estado persistente procesa cada ticket una sola vez y devuelve un PR.

Leer más
Ilustración de un agente aislado: del repositorio sale una copia de trabajo separada sobre su propia rama, el loop trabaja ahí dentro y la salida es un pull request, no un merge
IA30 jun 202620 min de lectura

El agente dentro de un repo real: aislar tareas con git worktree y entregar un PR

Un agent loop sobre un repo real: aislar cada tarea con git worktree, reproducir el bug con un test, correr toda la suite y entregar un PR, no un merge.

Leer más
Ilustración del loop ReAct: un agente elige entre cuatro herramientas —leer, buscar, escribir, correr— y con cada observación construye su propio contexto
IA30 jun 202621 min de lectura

De generar archivos a usar herramientas: el loop ReAct de un agente de código

El loop ReAct de un agente de código: pasar de generar la función entera a leer, buscar, editar y correr con herramientas, construyendo su propio contexto.

Leer más
Ilustración de tres niveles de input para un agente: tests escritos a mano, ejemplos que el agente convierte en tests, y la suite del repo que ya existe como evaluador
IA30 jun 202624 min de lectura

Quién escribe los tests del agente: tres formas de definir qué es correcto

Quién escribe los tests de un agente define qué es correcto. Tres niveles: spec y tests a mano, ejemplos que el agente convierte en tests o la suite del repo.

Leer más
Ilustración del sandbox de ejecución: el texto del modelo entra a un recinto aislado con temporizador, pasa por cuatro filtros y sale como una observación clasificada
IA30 jun 202621 min de lectura

El sandbox de un agent loop: del texto del modelo a una observación fiable

El sandbox de un agent loop convierte el texto del modelo en una observación fiable: extrae el código, valida que parsea, lo ejecuta con timeout y lo aísla.

Leer más
Ilustración del loop write-test-fix: un nodo escribe código, otro lo prueba, y el fallo regresa como contexto hasta que los tests pasan
IA30 jun 202624 min de lectura

El loop más simple que funciona: un agente write-test-fix paso a paso

Un agente write-test-fix paso a paso: spec y tests a mano, el modelo escribe el código, se ejecuta y el fallo vuelve como contexto. Con código que corre.

Leer más
Ilustración de un agent loop: un objetivo entra en un ciclo de decidir, actuar y observar que se repite hasta una condición de parada
IA29 jun 202613 min de lectura

Qué es un agent loop (y qué no): estado, acción, parada

Qué es un agent loop y qué no: sus tres componentes —estado, acción y condición de parada— y por qué 'hazme una app' es input de chat, no de agente.

Leer más
Ilustración de un pipeline de noticias: varios feeds RSS convergen en un flujo que filtra, reescribe con IA y publica un borrador
Automatización29 jun 202617 min de lectura

Automaticé un medio de noticias con n8n: de 20 feeds RSS a borradores en WordPress

Automaticé un medio con n8n: lee 20 feeds RSS, deduplica en Postgres, cura y reescribe con IA por niveles y deja borradores en WordPress con aviso en Telegram.

Leer más
Ilustración de routing de modelos: una petición se reparte entre varios modelos, con la mayoría del tráfico hacia el modelo principal
IA29 jun 202626 min de lectura

Routing de modelos con OpenRouter y DeepSeek para minimizar costos sin perder calidad

Routing de modelos con OpenRouter: DeepSeek para la mayor parte del tráfico y modelos premium solo donde importa, para bajar costos de LLM sin perder calidad.

Leer más