About Me

Joel Teodoro

About Me

Backend Software Engineer

4+ years building backend services and microservices architecture, specialized in Go. Passionate about distributed systems, clean architecture, and performance optimization.

$cat resume.pdf

Why I Built This Blog

I started RuntimeRants out of curiosity and a need to document what I learn.

Most tutorials tell you what to do, but rarely explain why it works that way. I wanted a space to share the deep dives I do when learning — the real engineering notes, not the polished marketing content.

What you'll find here:

  • Technical deep dives into backend systems
  • CI/CD pipelines, deployment strategies, and DevOps patterns
  • Low-level explorations: sockets, syscalls, concurrency
  • Comparisons with code, benchmarks, and honest opinions
  • Notes from books I'm reading (DDIA, system design, etc.)

What I Do

I focus on Backend & Systems Engineering — building scalable, reliable services that handle real-world complexity.

Backend Development & APIs

Backend development, API design, and building production services.

Distributed Systems & Data Pipelines

Distributed systems, data pipelines, messaging/streaming, and reliability.

Architecture & System Design

Architecture, system design, scalability patterns, and real-world trade-offs.


Experience

Backend Software Engineer (Golang)

Dribba
Oct 2024 – PresentAndorra.com · CityXerpa

Designing, developing, and maintaining backend microservices in Golang within distributed, production-grade environments.

  • Own the full product lifecycle of two microservices from scratch — API research, design collaboration, GraphQL contract with frontend, DB schema, architecture, caching strategy, and deployment — reporting directly to the CTO with near-total autonomy
  • Designed the multi-vertical global search on Elasticsearch: a separate index per vertical instead of one shared index, federated queries via _msearch, and self-contained card-level documents so the UI renders a result without a second trip to the database (⟨N⟩ documents across ⟨N⟩ verticals, p95 ⟨latency⟩)
  • Migrated an ENUM column on a live production MySQL table with ALGORITHM=INSTANT, then moved the domain to a lookup table — no downtime, no table rebuild (⟨N⟩-row table)
  • Built the billing layer for bus reservations: IGI tax and commission chained entirely in cents so no floating-point drift accumulates across the calculation; investigated and resolved a billing discrepancy with an external provider
  • Integrated the full bus booking cycle with the Movelia provider: purchase, cancellation, and ticket PDF generation
  • Unified the GraphQL schema for direct and multi-segment routes so the frontend consumes a single shape regardless of how the trip is structured underneath
  • Integrated Redsys as the card payment gateway with transactional safety — states, async callbacks, retries, duplicate prevention — so a failed payment never yields a confirmed booking
  • Designed the Redis caching strategy, hotel image deduplication, and the cancellation feature end to end
  • Designed services with hexagonal architecture, clean code, and separation of concerns across GraphQL, gRPC, and REST; deployed on Kubernetes (GKE) with GitLab CI/CD on GCP
GoMySQLElasticsearchRedisgRPCGraphQLKubernetesGCP

System Design

I work through large-scale designs end to end — real-time feeds, ticketing, ride-hailing, timeline fan-out — then build the pieces I find most interesting as small, runnable systems.

The other half is storage internals: LSM trees and partition design in Cassandra, B+ trees and locking in MySQL, write-ahead logs and change data capture.


How I Practice

  • System design exercises — I work Hello-Interview-style designs end to end (Uber, ticketing, real-time feeds, timeline fan-out), and when something nags me I pull the thread down to the internals — that's how I ended up reading about Cassandra and RabbitMQ
  • Advent of Code (opens in a new tab) — every year
  • LeetCode (opens in a new tab) — to keep the algorithmic muscle sharp
  • ReadingConcurrency in Go (Cox-Buday), finished and re-read; Designing Data-Intensive Applications (Kleppmann), halfway through

Education

Software Engineering Degree

Universitat Rovira i Virgili

Sept 2020 – June 2024 · Tarragona, Spain


Tech Stack

The tools I use regularly for backend development and infrastructure.

stack — zsh
joel@runtimerants ~/stack % tree
Tech Stack
├─Languages
├─Go
├─Java
├─C
├─Python
└─JavaScript
├─Backend & APIs
├─Spring Boot
├─gRPC
├─GraphQL
├─REST
├─WebSockets
├─Webhooks
└─Sockets
├─Databases
├─PostgreSQL
├─MySQL
├─Redis
├─Elasticsearch
└─Cassandra
├─Messaging & Streaming
├─Kafka
├─RabbitMQ
└─Pub/Sub
├─Architecture
├─Microservices
├─Event-driven
└─Hexagonal
├─Cloud & Containers
├─GCP
├─Cloud Run
├─Kubernetes
└─Docker
└─DevOps & Tooling
├─GitLab CI/CD
├─Git
├─Linux
└─Bash
joel@runtimerants ~/stack %

Contact

Feel free to reach out if you want to discuss something technical, collaborate on a project, or just say hi.


Setup / Uses

setup — zsh
editorsNeoVim · VS Code · IntelliJ IDEA
terminalmacOS Terminal · Oh My Zsh
vcsGitHub · GitLab
containersDocker Desktop · Minikube
api_toolsPostman · Swagger / OpenAPI
databaseTablePlus
networkingngrok · Tailscale · NordVPN
notesObsidian · Excalidraw

Hardware

LaptopMacBook Pro (M4 Pro) · 24 GB · 512 GB
MonitorBenQ Mobiuz 27" 2K · 175 Hz
Desktopi5 14th Gen · RTX 4070 Super · 32 GB · 2 TB SSD
KeyboardEpomaker F75 "Vanilla Ice"
MouseLogitech G502
HeadsetLogitech Gaming

Side Projects

This Blog

framework: Next.js + Nextra
styling: Custom CSS
hosting: Vercel
analytics: none (privacy first)