blog

Artículos

Aprendizajes prácticos sobre backend, arquitectura de software y construcción de productos digitales. Sin teoría vacía — solo lo que funciona en producción.

google-iogeminiantigravitypythonfastapiagentes-llmraglatam

Google I/O 2026 para el dev backend Python LATAM — Antigravity y Gemini 3.5 Flash

Gemini 3.5 Flash supera a 3.1 Pro en coding y agentic. Antigravity llega como plataforma agent-first. Que significa para FastAPI, PydanticAI y RAG desde Colombia.

architectureadrdocumentationmadrpatternsengineering-practices

Por qué documentar cada decisión técnica de arquitectura (y cómo hacerlo con ADRs)

El formato MADR, cómo lo usé para documentar 14 decisiones arquitectónicas en una plataforma de observabilidad, y por qué los ADRs son la diferencia entre un sistema mantenible y uno que nadie quiere tocar.

pythonarchitecturehexagonalservice-busazureasyncidempotencypatterns

El consumer que perdía mensajes bajo carga — cómo lo arreglé con hexagonal y Service Bus

Cómo refactoricé un adapter de integración a arquitectura hexagonal, migré a Service Bus con peek_lock y AutoLockRenewer, y resolví de verdad el problema de idempotencia en consumers async.

azure-artifactsnpmnugetpypipythondevopspackagesazure

Cómo centralicé los packages privados de Python, npm y NuGet del equipo en Azure

Cómo configuré Azure Artifacts como registro privado para los cuatro SDKs del equipo — autenticación con tokens efímeros, pip.conf y .npmrc, y el patrón upstream para no bloquear paquetes públicos.

azurecontainer-appscontainer-registrygithub-actionsdockerdevopscd

Deploy sin guardar secretos: WIF, Container Apps y rollback automático en GitHub Actions

El pipeline de CD que uso para construir imágenes Docker, publicarlas en Azure Container Registry y desplegar en Container Apps — con rollback, smoke test, y sin downtime.

bicepterraformiacazuredevopsadrinfrastructure

Usé Terraform 6 meses y lo reemplacé — esto es lo que aprendí

La decisión documentada de migrar de Terraform a Bicep para infraestructura Azure — state files, plan/apply cycle, fricción real en pipelines, y las cosas que Terraform hace mejor que Bicep nunca igualará.

node.jsshopifyangularmysqlexpressjwtwebhookscase-studyecommerce

Case study: integración e-commerce Shopify con Node.js, MySQL y Angular

Como construi una plataforma de gestión de inventario sincronizada con Shopify — OAuth app, webhooks bidireccionales, exportación Excel a escala y dashboard Angular con Material Design.

fastifyangularpythonreact-nativeexpovertexaibigquerygcpfirebasecase-studyllmmobile

Case study: plataforma B2B industrial con directorio, app móvil y LLM integration

Como construi un ecosistema de 9 aplicaciones para un cliente industrial — directorio B2B en Fastify, app móvil React Native + EAS, pipeline LLM con VertexAI y BigQuery, y mensajería en tiempo real.

nestjstypescriptmicroservicespostgresqltypeormfastifycase-studypaymentswhatsapp

Case study: plataforma enterprise con 20+ microservicios en NestJS

Como diseñe una plataforma multi-dominio desde cero — API gateway Fastify, pagos, email delivery, WhatsApp integration y dashboard analitico con NestJS + TypeORM + PostgreSQL.

node.jsexpresspostgresqlvitetailwindjwtcase-studysaas

Case study: SaaS de gestión con API REST, PostgreSQL y dashboard Vite

Como construi un SaaS full-stack desde cero — Express + PostgreSQL sin ORM, JWT stateless, frontend Vite con GridJS para tablas de alto volumen.

node.jsfastapimicroservicespostgresqldockerjwtadrcase-studyhealthcare

Case study: plataforma de telemedicina con 18 microservicios Node.js + Python

Como diseñe e implemente desde cero una plataforma de consultas medicas online — autenticacion RBAC, agendamiento con zonas horarias, video Jitsi, reportes RIPS y pipeline de documentos en FastAPI.

delta-lakesql-serverpolarspyarrowpythondata-engineeringmigration

Cómo migré tablas de SQL Server a Delta Lake sin perder datos

El proceso de migrar tablas SQL Server legacy a Delta Lake usando Polars y PyArrow — type mapping, schema evolution, partitioning por fecha, y por qué Delta Lake es la respuesta correcta para datos analíticos.

pythonlibrary-designpyprojectazure-artifactspackagingpatterns

Una librería con bug, cinco servicios caídos — cómo diseñar para que eso no pase

El proceso de construir librerías Python internas con pyproject.toml, namespace packages y defensive design — y la regla de oro: una dependencia transversal nunca puede matar el proceso que la usa.

pythonetldelta-lakepolarspyarrowdata-engineeringazurepatterns

ETL que no explota en producción: chunking adaptivo, high-water marks y Delta Lake

El diseño de un ETL que se adapta al tamaño real de los datos — chunking dinámico por ID y fecha, high-water marks UTC-safe, streaming inserts a Delta Lake, y skip inteligente por día.

github-actionsci-cdpythonnpmnugetazure-artifactsdevopssdk

Un botón para publicar en Python, npm, NuGet y Databricks al mismo tiempo

Cómo diseñé un workflow de GitHub Actions que publica simultáneamente en PyPI, npm, NuGet y un wheel de Databricks — con gates de calidad, idempotencia por versión, y un solo botón de release.

kafkapythonasyncaiokafkabackendmessagingpatterns

El auto-commit de Kafka pierde mensajes en silencio — cómo configuré el consumer correctamente

El diseño de consumers Kafka en Python con aiokafka — commit manual de offsets, manejo de rebalanceo, dead letter queue para mensajes que fallan, y por qué el auto-commit silenciosamente pierde mensajes.

kqlazureapplication-insightsworkbooksobservabilitymonitoringdevops

Los queries KQL que uso para monitorear servicios en producción

Cómo construí dashboards operacionales en Azure Workbooks con KQL — queries de latencia por endpoint, error rates, traces distribuidos, y los patrones de KQL que más uso para monitoreo de servicios.

devopsmakefileci-cdpythonnpmazure-artifactspatterns

Por qué sigo usando Makefile en 2026 (y por qué me alegra haberlo hecho)

Por qué un Makefile bien diseñado es la mejor interfaz entre el developer y el pipeline — idempotencia, skip logic, self-documentation, y cómo lo apliqué para publicar SDKs en cuatro lenguajes.

mongodbaggregationperformancedatabasepythonbackendpatterns

Mi aggregation pipeline de MongoDB tardaba 30s — así lo diagnostiqué con explain()

Cómo diagnostico y optimizo aggregation pipelines lentos en MongoDB — explain plans, índices que sí y que no ayudan, $lookup vs embedding, y los errores que más veces he visto en producción.

mongodbcsharpdotnetbsonaggregationbackendpatterns

MongoDB C# driver: cuándo usar BsonDocument y cuándo usar tipos tipados en aggregation

Cómo construyo aggregation pipelines en C# con el MongoDB driver — cuándo usar BsonDocument vs clases tipadas, el patrón de builder de pipeline, y los casos de borde con tipos BSON que el driver no mapea automáticamente.

opentelemetryobservabilitypythontypescriptcsharpazuresdkadr

15 servicios distribuidos y ningún log útil — cómo lo resolví con OpenTelemetry

El proceso de construir SDKs de instrumentación en Python, TypeScript, C# y Databricks sobre OpenTelemetry exportando a Azure Monitor — incluyendo los 14 ADRs que documenté en el camino.

openaiagentspythonllmcontent-generationaipatterns

Mi prompt de 3000 tokens daba resultados inconsistentes — cómo lo resolví con agentes

Cómo migré un pipeline de generación de contenido de un prompt enorme a una cadena de agentes especializados con OpenAI Agents SDK — por qué los prompts monolíticos fallan a escala y cómo estructurar el handoff entre agentes.

opentelemetrysamplingazurepythontypescriptobservabilitycost-optimization

OpenTelemetry al 10%: cómo reduje el costo de Azure Monitor sin perder visibilidad

Cómo el head-based sampling en OpenTelemetry reduce el costo de Azure Monitor en ~90% sin sacrificar visibilidad de errores — TraceIdRatioBased, ParentBasedSampler, y cuándo el tail-based sampling es la respuesta correcta.

polarspyarrowpandaspythonetldata-engineeringperformance

Pandas se quedó corto con 10M filas — cómo migré a Polars y lo que cambió

Por qué migré mis pipelines ETL de Pandas a Polars con PyArrow — lazy evaluation, expresiones paralelas, Arrow como formato de intercambio, y los casos donde Pandas sigue siendo la opción correcta.

patternssdkpythoncsharpdefensive-designlibrary-designarchitecture

El patrón que evita que tu SDK crashee la app que lo consume

El patrón de diseño defensivo para SDKs — cómo construir una librería que falla silenciosamente, expone su estado de salud, y nunca propaga excepciones al caller. Con implementaciones en Python y C#.

sql-serverdatabasemigrationbackendpatternsproduction

Migrar INT a BIGINT en SQL Server sin downtime: la estrategia de columna shadow

El proceso real de migrar columnas de identidad de INT a BIGINT en tablas productivas de SQL Server — por qué no puedes simplemente ALTER COLUMN, la estrategia de columna shadow, y cómo coordinarlo con el equipo de desarrollo.

yolov8computer-visionpythondotnetml-opsproductionazurepatterns

YOLOv8 funciona perfecto en local — esto es lo que tuve que hacer para ponerlo en producción

Cómo desplegué un modelo YOLOv8 de detección de objetos en producción — arquitectura API .NET que invoca inferencia Python, versionado de modelos, preprocessing pipeline, y las decisiones que no están en la documentación oficial.

pythonaipydanticailangchainbackendagentes

Cómo elegí mi stack de agentes Python en 2026 (y por qué no fue LangChain)

Evalué PydanticAI, LangChain, LangGraph y el SDK nativo. Aquí los números reales y la lógica detrás de la decisión.

claudeopus-4-71m-contextobsidianworkflowsecond-brainllm

Le cargue 150 archivos Markdown a Claude Opus 4.7 y el resultado no fue lo que esperaba

1M de tokens de contexto sin una estrategia clara es ruido. Aqui esta el workflow que uso para cargar mi segundo cerebro completo y conseguir que el modelo entienda el ecosistema sin re-explicar nada.

ragfastapiqdrantopenaiadropen-sourcepython

Abri DocuQuery como OSS — RAG con FastAPI y Qdrant, sin pretender que era perfecto

Tenia repos privados con descripciones aspiracionales y casi nada de codigo. Hoy abri uno real al publico, con su ADR, sus tests y sus huecos.

agentes-llmpydanticailanggraphmicrosoft-agent-frameworkadrpython

Como elegi mi stack de agentes Python en 2026 (y por que no fue LangChain)

Tres frameworks Python para agentes LLM en produccion compitieron: PydanticAI v1, LangGraph v1 y Microsoft Agent Framework 1.0 GA. Aqui mi decision con razones duras.

backendfastapipostgresqlredisidempotencyapi-designadr

Idempotency keys: la implementación con Postgres unique constraint y Redis lock que sí soporta producción

Por qué un endpoint de creación de orden no puede confiar solo en el cliente, qué falla cuando se implementa idempotency con un solo mecanismo, y cómo combinar lock distribuido (Redis) con unique constraint (Postgres) para cubrir tanto carrera concurrente como retry tardío.

backendfastapiyoutube-apianthropic-claudebackground-tasksrate-limiting

Quota-aware pipelines: cómo no quemar 10.000 unidades de YouTube API ni perder análisis Claude a mitad de scan

Detectar 403 quotaExceeded temprano, abortar limpio en lugar de seguir pegando contra una pared, y diseñar el background task para que el frontend muestre estado real (no spinner infinito). Patrones extraídos de una herramienta interna que escanea videos y los analiza con Claude vision.

BlogContenidoDesarrollo WebProductividad

Publicacion nueva en el blog de Jotive

Resumen practico sobre como estructurar y publicar contenido tecnico que aporte valor real.

personalintroducción

Bienvenido a jotive.dev

Una introducción a quién soy, de dónde vengo y qué vas a encontrar en este espacio.