Jesús Torres

Jesús Torres

Ingeniero backend senior, blockchain y sistemas distribuidos

Construyo indexadores EVM y servicios backend en Go, TypeScript y Python, y los instrumento hasta saber en qué se va cada núcleo y cada megabyte. Mi sistema más grande guarda dos años de trades DEX de Ethereum y BSC en la pequeña placa de esta foto.

Vivo en Bogotá, Colombia. Abierto a trabajo remoto internacional.

Una computadora de placa única Radxa ROCK 5C en una caja negra, conectada por USB a un SSD portátil Samsung T7 azul.
Radxa ROCK 5C, Samsung T7, 2 TB. Ejecuta Swapstracker, HabitsFlow y GroupBrain, publicados en internet mediante Cloudflare Tunnel.

Dentro de la placa

  1. Dentro de la caja

    Una Radxa ROCK 5C y un Samsung T7 de 2 TB. Ese es todo el servidor: ejecuta Swapstracker, HabitsFlow y GroupBrain.

    Sobre la máquina
  2. El SoC: un proceso Go

    El RK3588S2 ejecuta el indexador de Swapstracker. Workers en paralelo descargan y enriquecen rangos de bloques; un único committer los escribe en orden.

    Leer el caso Swapstracker
  3. El SSD: más de 3.100 millones de trades

    Dos años de trades de Ethereum y BSC en cerca de 1 TB comprimido en TimescaleDB. La sincronización tardó 20 días frente a una estimación de un año.

    Ver el registro de mediciones
  4. Ethernet: tres apps, un túnel

    Cloudflare Tunnel publica Swapstracker, HabitsFlow y GroupBrain directamente desde esta placa. No hay un servidor alquilado.

    Ver las otras apps
  5. El ventilador: medido, no supuesto

    El indexador reporta su ritmo, las latencias por etapa, CPU, RAM y temperatura. Un cambio cuenta cuando aparece como número.

    Cómo lo mido
  6. Los pines: acceso a propósito

    Una placa expone sus pines deliberadamente. Gatekeeper hace lo mismo con las APIs de terceros: cada usuario llega solo a los proveedores que se le concedieron.

    Leer el caso Gatekeeper

Swapstracker: de un año estimado a 20 días

Swapstracker indexa swaps estilo Uniswap V2, V3 y V4 en cadenas EVM, calcula el precio en USD de cada trade y sirve velas y trades en vivo.

Lo construí dos veces. Mi primera versión repartía el ETL entre microservicios TypeScript que escribían en MongoDB, y mis propios logs mostraban dónde se iba el tiempo: serializar, enviar y volver a parsear los mismos datos entre servicios. Así que reescribí el recorrido de logs a trades como un único binario Go y migré el almacenamiento a PostgreSQL con TimescaleDB. Ambas versiones son código mío y cerrado.

Cifras operacionales de mis propios logs y métricas. No es una auditoría independiente ni un benchmark controlado.

Registro de mediciones
más de 3.100 millonesde trades guardados, dos años de Ethereum y BSCobservado
1 TBde histórico comprimido, en un SSD de 2 TBobservado
20 díaspara sincronizar esos dos años, ambas cadenas juntasobservado
≈ 1 añolo que proyectaba mi primera versión para el mismo trabajoestimación a partir de bloques/s registrados
80% menosRAM después de la reescriturareportado, aún sin benchmark reproducible
Sincronización de dos años, ambas cadenasGráfico de barras. Mi primera versión, en TypeScript, proyectaba unos 365 días para sincronizar dos años de ambas cadenas, estimados a partir de los bloques por segundo registrados. El indexador reescrito terminó la misma sincronización en 20 días reales.Sincronización de dos años, ambas cadenasMi primera versión, proyectado≈ 365 díasMi indexador Go, observado20 días0100200300
Una estimación frente a una observación, no un benchmark controlado. Cambiaron a la vez la arquitectura, el acceso a datos y el almacenamiento, así que el mérito no es de un solo factor.

Gatekeeper: usar una API sin tener sus claves

Es habitual copiar el mismo client secret en varios proyectos solo para llamar a una API externa. Cada copia es otro lugar donde puede filtrarse o quedarse sin rotar.

Gatekeeper guarda las credenciales de los proveedores en el servidor, cifradas, y deja que cada usuario llame solo a los proveedores que un administrador le concedió. Los consumidores se autentican ante Gatekeeper; Gatekeeper se autentica ante el proveedor.

TypeScript, Express, MongoDB, Redis

Tu apptiene un token de Gatekeeperlos secretos no cruzan esta líneaGatekeeper¿quién llama?¿tiene este proveedor?descifrar secretoAdmin + TOTP

concede, revoca, guarda secretos

API externaOAuth / bearer / basic

También corren en esa placa

HabitsFlow

Un motor de rutinas para gimnasio, lectura, meditación y running. Ciclos, calendarios diarios y por días de semana, intervalos, desplazamientos de calendario y clonación de rutinas de la comunidad. Go (router estándar net/http) y pgx/v5, SQL explícito, migraciones versionadas y SvelteKit.

Inicio de HabitsFlow: cuatro cuadernos de disciplina (gimnasio, carrera, lectura, meditación), la asignación del día 12 de un ciclo de gimnasio de 26 días, adherencia por disciplina y un calendario de actividad de 30 días.
El cuaderno diario: cuatro disciplinas, el ciclo en curso y 30 días de actividad.

GroupBrain

Un bot de Telegram que recuerda las conversaciones de un grupo. RAG sobre mensajes, resúmenes y búsqueda vectorial, failover entre proveedores LLM y recordatorios asíncronos. Cifra los mensajes guardados con AES-256-GCM, usando claves por usuario y por grupo derivadas con HKDF desde un secreto del servidor. Python, MongoDB, ChromaDB y Svelte.

Gestión de modelos de GroupBrain: un orden de ejecución de cinco proveedores LLM, primero Groq y después Omniroute, SambaNova, Nvidia y Cerebras, con el proveedor activo marcado.
Cinco proveedores LLM en un orden de respaldo fijo, cada uno con su modelo y sus conteos de éxitos y errores.

Otro trabajo público

w3contractauditor

Análisis de riesgo de tokens EVM: compras y ventas simuladas sobre un fork del estado para detectar honeypots e impuestos de transferencia, combinadas con bytecode, datos de mercado y análisis de los primeros holders. Reutiliza daemons de Foundry Anvil para simular sobre el estado reciente, aislando solicitudes con un mutex y evm_snapshot/evm_revert.

Servicios

Auth
RS256/JWKS, TOTP, Argon2id, sesiones en Redis
Payments
Stripe y PayPal, deduplicación de webhooks, conciliación programada
Notify
grupos de consumidores en Redis Streams, workers en Go, recuperación de pendientes, dead letters
Docs
almacenamiento en GridFS, pruebas de integración con Testcontainers
Gateway
enrutamiento, rate limiting, CORS

golib y tslib

Contratos y adaptadores compartidos para autenticación, logging, cifrado, almacenamiento y clientes HTTP con reintentos y backoff.

Cómo llegué aquí

Estudié ingeniería eléctrica y programé mis dos proyectos de grado en MATLAB. Más tarde trabajé como inspector RETIE, certificando que las instalaciones eléctricas cumplieran el reglamento técnico colombiano. Era un trabajo sólido, pero no el tipo de ingeniería que yo quería hacer.

Mientras seguía inspeccionando, fundé con un colega una pequeña empresa de estudios de calidad de energía. Escribí su software de análisis en Python, usando la GPU para procesar grandes volúmenes de mediciones, y construí su sitio web. Así volví al software. Lo que me atrapó fue la libertad de crear algo, medir cómo funciona y seguir mejorándolo.

Fuera del trabajo juego Warframe, y jugué mucho World of Warcraft. Lo que disfruto es la matemática: calcular qué combinación de equipo y modificadores lleva más lejos el daño y la resistencia. En WoW, los números una vez me dieron un personaje que solo puedo describir como inmortal. El mismo instinto, otro sistema.

En el banco de pruebas

Una estrategia automática de inversión en futuros que toma sus señales de las estadísticas de trades de Swapstracker. Todavía no hay resultados que mostrar. Cuando los haya, los publicaré aquí junto con el método.

Contacto

El correo es la forma más rápida de contactarme. Busco roles remotos de backend y blockchain en equipos internacionales.

El CV está en inglés.