Work Blog About CV
Christian Toledo
About

Hey, I'm Christian.

A full-stack developer from Cuba, based in Gothenburg, Sweden since 2011. Close to seven years of professional experience, and a habit of building and operating real things on my own time, not just at work.

Background

What I actually do

I studied front-end development at Medieinstitutet in Gothenburg, and started working professionally in 2018 alongside my studies, on small WordPress sites. Since then I've worked across both ends of the industry: product companies building one thing for years (Enginio, a Vue.js platform for advertising campaigns, from its early startup days through acquisition by Nordic Retail Group), and consultancies moving between several clients at once, most recently Dear Friends and Nexer AB, working with clients like PostNord, Nordic Wellness, and Inera (the 1177 healthcare platform).

I work across the stack: React, Vue, and Angular on the frontend, Node, .NET, and PHP on the backend, React Native and Expo for mobile, plus Umbraco and WordPress for content-driven sites. Outside of work that range extends further: Kotlin for native Android modules, Python (FastAPI, SQLModel) for backend services, Astro for static sites, and Ansible, Docker, and GitOps for infrastructure. The project I'm proudest of from that consulting work is a React Native app I built solo for Göteborgs Stadsmission, connecting people donating surplus food with people who need it across the city. On the frontend I care about design and UX as much as I care about how things work underneath.

My first real production codebase was an internship at Plejd, a Swedish smart-home company, working in a 100,000+ line Angular.js/Vue.js application used by 50+ employees daily. I still think about that codebase whenever I'm deciding how much structure a new project actually needs.

Skills & achievements

What that range actually looks like in practice

A few concrete things I've done that don't fit neatly into a job-history bullet: reverse-engineered a proprietary Bluetooth wire protocol from an MIT-licensed reference and real hardware captures, replacing a vendor SDK with a from-scratch Kotlin implementation verified byte-for-byte against a Python reference before it ever touched a real board. Built a regression pipeline that fits per-rider physics constants (rolling resistance, aerodynamic drag, drivetrain efficiency) from GPS and battery telemetry via ordinary least squares, sourced against real engineering references rather than picked by feel. Designed and shipped a marketing site from a blank Astro file, hand-rolled touch interactions, a shared lightbox component, and scroll-snap behavior included, not a template. Cut a production app's initial load time by more than half through lazy loading and bundle optimization at Nordic Retail Group. And I plan architecture changes deliberately: multi-brand support in Cityroam was sequenced behind the prerequisites it actually needed rather than bolted on early to demo faster, and it now runs a second manufacturer's scooter at full feature parity on a protocol with no SDK and no documentation at all.

Outside of work

Where the rest of this portfolio comes from

The two projects on the home page, Cityroam and casa-verde, aren't side projects in the "unfinished repo" sense. Cityroam is an Android app that talks directly to electric boards and scooters over Bluetooth protocols I reverse-engineered and reimplemented myself, no vendor SDK left in it at all, plus a backend that fits its own physics model to estimate range; it's in closed beta now. casa-verde is the platform it runs on: about ten containers across five separate systems that I run, monitor, and document like it's someone's job to keep it up, because for a few hours a week it is.

I keep a written decision log for casa-verde: 82 short documents and counting, each one explaining why a particular call was made, including the times I had to revert something that made things worse. That habit, writing down the reasoning and not just the result, is the same one I bring to code review and architecture discussions at work, and it's the same reason Cityroam's own research and planning docs, protocol notes and device-abstraction plans included, get written before the code does. Both repos are private, so those write-ups and the blog posts here are the readable version.

I've also spent a lot of time running local models for a home voice assistant, mostly to learn where they're actually reliable versus where they confidently make things up, a distinction that matters a great deal once a model is controlling real devices in my house. That work is where most of what I know about running AI in production came from, including a latency problem I fixed by scoping the model properly rather than buying a GPU, and a regression I caused and had to roll back the same day. There's more on that in the AI section on the home page.

How I work

A few things worth knowing

Ownership

I follow a problem from requirements through to what happens once it's in production, including the parts that are inconvenient to own.

Learns fast, checks assumptions

New framework, new protocol, new domain: I get productive quickly because I go after the fundamentals first, not just the API surface.

Writes things down

Decisions, trade-offs, and failures get documented, not just remembered. It's cheaper for the next person, including future me.

Genuinely self-driven

I code most days outside of work and run my own production infrastructure, not because it's expected, but because I like building things that work.

When I'm not coding

The rest of it

01 Tynee Ultra X Pro electric skateboard with helmet
On wheels

An electric skateboard called Turbo

The board that started all of it: a Tynee Ultra X Pro. I named it Turbo myself, in memory of Oliver Tree: his first stage character, back when he was still an unknown street performer, was called Turbo. Wanting to actually understand my rides instead of trusting a laggy cloud app turned into a full Android app and backend, and the board's nickname was the obvious name for that too, at first. The app is called Cityroam now: “Turbo” collided with two existing brands in the same niche, which is a bad thing to discover late. The board kept the name.

02
Custom water-cooled PC build Desktop setup with ultrawide monitor
Hardware

Building PCs and keyboards

I've been building custom computers since I was a kid, and it's stayed a real hobby rather than turned into a chore. Current build: an RTX 4090 on a custom water loop, an i7-13700K, 64GB of DDR5, and a 49" ultrawide, plus a couple of mechanical keyboards built from the switches up, QMK firmware included.

03
Custom paludarium ecosystem Terrarium with tropical plants
Living systems

Terrariums and paludariums

Building small land-and-water ecosystems from scratch: glass, drainage, misting, the works. I automate lighting and watering with Home Assistant on a Raspberry Pi, which turned out to be a good lesson in its own right: a stable ecosystem, like stable software, needs the fundamentals right before anything else matters.

Let's talk

Interested in hearing about interesting problems or opportunities. Feel free to reach out.