Senior backend engineer, blockchain and distributed systems
I build EVM indexers and backend services in Go, TypeScript and Python, and I instrument them until I know where every core and megabyte goes. My largest system keeps two years of Ethereum and BSC DEX trades on the small board in this photo.
Based in Bogotá, Colombia. Open to international remote roles.
Swapstracker indexes Uniswap V2, V3 and V4-style swaps on EVM chains, prices every trade in USD and serves candles and live trades.
I built it twice. My first version split the ETL across TypeScript microservices writing to MongoDB, and my own logs showed where the time went: serializing, shipping and re-parsing the same data between services. So I rewrote the path from logs to trades as a single Go binary and moved storage to PostgreSQL with TimescaleDB. Both versions are my own closed-source code.
Operational numbers from my own logs and metrics. Not an independent audit, not a controlled benchmark.
Measurement log
3.1+ billion
trades stored, two years of Ethereum and BSC
observed
1 TB
compressed history, on a 2 TB SSD
observed
20 days
to backfill those two years, both chains together
observed
≈ 1 year
what my first version projected for the same job
estimate from logged blocks/s
80% less
RAM after the rewrite
reported, no reproducible benchmark yet
An estimate against an observation, not a controlled benchmark. Architecture, data access and storage all changed together, so no single factor gets the credit.
Teams often paste the same client secret into several projects just to call one external API. Every copy is another place to leak or forget to rotate.
Gatekeeper keeps provider credentials on the server, encrypted, and lets each user call only the providers an admin granted them. Consumers authenticate against Gatekeeper; Gatekeeper authenticates against the provider.
A routine engine for gym, reading, meditation and running. Cycles, daily and weekday schedules, intervals, calendar shifts and cloning of community routines. Go (standard net/http router) and pgx/v5, explicit SQL, versioned migrations, SvelteKit.
The daily notebook: four disciplines, the cycle in progress and 30 days of activity. The interface is in Spanish.
A Telegram bot that remembers group conversations. RAG over messages, summaries and vector search, LLM provider failover and async reminders. It encrypts stored messages with AES-256-GCM, using per-user and per-group keys derived with HKDF from a server-side secret. Python, MongoDB, ChromaDB, Svelte.
Five LLM providers in a fixed fallback order, each with its own model, success and error counts. The interface is in Spanish.
Risk analysis for EVM tokens: simulated buys and sells on forked state to detect honeypots and transfer taxes, combined with bytecode, market data and early holder analysis. Reuses Foundry Anvil daemons for recent-state simulations, isolating requests with a mutex and evm_snapshot/evm_revert.
Shared contracts and adapters for auth, logging, encryption, storage and HTTP clients with retries and backoff.
How I got here
I trained as an electrical engineer and wrote both of my degree theses in MATLAB. Later I worked as a RETIE inspector, certifying that electrical installations met Colombia’s technical regulation. It was solid work, but not the kind of engineering I wanted to do.
While still inspecting, I co-founded a small power-quality studies company with a colleague. I wrote its analysis software in Python, using the GPU to get through large volumes of measurements, and built its website. That was my way back into software. What drew me in was the freedom to create something, measure how it works and keep improving it.
Outside work I play Warframe, and I played a lot of World of Warcraft. The part I enjoy is the math: working out which combination of gear and modifiers pushes damage and survivability furthest. In WoW, the numbers once gave me a character I could only describe as immortal. Same instinct, different system.
On the bench now
An automated futures strategy that takes its signals from Swapstracker’s trade statistics. No results to show yet. When there are, they will be written up here with the method.
Contact
Email is the fastest way to reach me. I’m looking for remote backend and blockchain roles with international teams.