Projekt Blogg Om mig CV
Christian Toledo
Om mig

Hej, jag heter Christian.

En fullstackutvecklare från Kuba, bosatt i Göteborg, Sverige sedan 2011. Nästan sju års yrkeserfarenhet, och en vana att bygga och driva riktiga saker på egen tid, inte bara på jobbet.

Bakgrund

Vad jag faktiskt gör

Jag studerade frontendutveckling på Medieinstitutet i Göteborg och började arbeta professionellt 2018 parallellt med studierna, med små WordPress-sajter. Sedan dess har jag arbetat i båda ändar av branschen: produktbolag som bygger en sak i flera år (Enginio, en Vue.js-plattform för reklamkampanjer, från tidig startup-tid genom förvärvet av Nordic Retail Group), och konsultbolag som rör sig mellan flera kunder samtidigt, senast Dear Friends och Nexer AB, med kunder som PostNord, Nordic Wellness och Inera (1177-vårdplattformen).

Jag arbetar över hela stacken: React, Vue och Angular på frontend, Node, .NET och PHP på backend, React Native och Expo för mobil, plus Umbraco och WordPress för innehållsdrivna sajter. Utanför jobbet sträcker sig den bredden längre: Kotlin för native Android-moduler, Python (FastAPI, SQLModel) för backend-tjänster, Astro för statiska sajter, och Ansible, Docker och GitOps för infrastruktur. Projektet jag är stoltast över från konsultarbetet är en React Native-app jag byggde helt själv för Göteborgs Stadsmission, som kopplar samman människor som donerar överskottsmat med människor som behöver den runt om i staden. På frontend bryr jag mig lika mycket om design och UX som om hur saker fungerar under ytan.

Min första riktiga produktionskodbas var en praktik på Plejd, ett svenskt smarta hem-företag, där jag arbetade i en Angular.js/Vue.js-applikation på över 100 000 rader som används dagligen av 50+ anställda. Jag tänker fortfarande på den kodbasen när jag bestämmer hur mycket struktur ett nytt projekt faktiskt behöver.

Kompetens & meriter

Vad den bredden faktiskt ser ut som i praktiken

Några konkreta saker jag gjort som inte passar snyggt in i en punkt i jobbhistoriken: reverse-engineerade ett proprietärt Bluetooth-trådprotokoll från en MIT-licensierad referens och riktiga hårdvarufångster, ersatte ett leverantörs-SDK med en Kotlin-implementation byggd från grunden, verifierad byte för byte mot en Python-referens innan den någonsin rörde en riktig bräda. Byggde en regressionspipeline som anpassar per-förare-fysikkonstanter (rullmotstånd, luftmotstånd, drivlineeffektivitet) från GPS- och batteritelemetri via minsta kvadratmetoden, källbelagd mot riktiga tekniska referenser istället för vald på känsla. Designade och levererade en marknadsföringssajt från en tom Astro-fil, handbyggd touch-interaktion, en delad lightbox-komponent och scroll-snap-beteende inkluderat, ingen mall. Minskade en produktionsapps initiala laddningstid med mer än hälften genom lazy loading och bundle-optimering på Nordic Retail Group. Och jag planerar arkitekturändringar medvetet: stödet för flera märken i Cityroam sekvenserades bakom de förutsättningar det faktiskt krävde i stället för att fastspikas tidigt för att kunna demas snabbare, och det kör nu en andra tillverkares elsparkcykel med full funktionsparitet, på ett protokoll helt utan SDK och utan dokumentation.

Utanför jobbet

Där resten av den här portfolion kommer ifrån

De två projekten på startsidan, Cityroam och casa-verde, är inte sidoprojekt i bemärkelsen "ofärdigt repo". Cityroam är en Android-app som pratar direkt med elbrädor och elsparkcyklar över Bluetooth-protokoll jag själv reverse-engineerat och återimplementerat, inget leverantörs-SDK kvar i den alls, plus en backend som anpassar sin egen fysikmodell för att uppskatta räckvidd; den ligger i stängd beta nu. casa-verde är plattformen den körs på: ett tiotal containrar fördelade på fem separata system som jag driver, övervakar och dokumenterar som om det vore någons jobb att hålla igång, för några timmar i veckan är det.

Jag för en skriven beslutslogg för casa-verde: 82 korta dokument och fler blir det, vart och ett med en förklaring till varför ett visst beslut togs, inklusive de gånger jag fått rulla tillbaka något som gjorde saken värre. Den vanan, att skriva ner resonemanget och inte bara resultatet, är samma vana jag tar med mig till kodgranskning och arkitekturdiskussioner på jobbet, och det är samma anledning till att Cityroams egna research- och planeringsdokument, protokollanteckningar och enhetsabstraktioner inkluderade, skrivs innan koden gör det. Båda repona är privata, så de texterna och blogginläggen här är den läsbara versionen.

Jag har också lagt mycket tid på att köra lokala modeller för en röstassistent hemma, mest för att lära mig var de faktiskt är tillförlitliga kontra var de självsäkert hittar på saker, en skillnad som spelar stor roll så fort en modell styr riktiga enheter i mitt hem. Det arbetet är där det mesta av det jag kan om att köra AI i produktion kommer ifrån, inklusive ett latensproblem jag löste genom att skala modellen rätt i stället för att köpa ett grafikkort, och en regression jag orsakade och fick rulla tillbaka samma dag. Det finns mer om det i AI-avsnittet på startsidan.

Hur jag arbetar

Några saker värda att veta

Ägarskap

Jag följer ett problem från krav till vad som händer när det väl är i produktion, inklusive de delar som är obekväma att äga.

Lär mig snabbt, kontrollerar antaganden

Nytt ramverk, nytt protokoll, nytt område: jag blir produktiv snabbt eftersom jag går på grunderna först, inte bara API-ytan.

Skriver ner saker

Beslut, avvägningar och misslyckanden dokumenteras, inte bara kommer ihåg. Det är billigare för nästa person, inklusive framtida jag.

Genuint självdriven

Jag kodar de flesta dagar utanför jobbet och driver min egen produktionsinfrastruktur, inte för att det förväntas, utan för att jag gillar att bygga saker som fungerar.

När jag inte kodar

Resten

01 Tynee Ultra X Pro elskateboard med hjälm
På hjul

En elskateboard som heter Turbo

Brädan som startade allt: en Tynee Ultra X Pro. Jag döpte den själv till Turbo, till minne av Oliver Tree: hans första scenkaraktär, när han fortfarande var en okänd gatuartist, hette Turbo. Att faktiskt vilja förstå mina åkturer i stället för att lita på en seg molnapp blev en hel Android-app och backend, och brädans smeknamn var det självklara namnet även där, till en början. Appen heter Cityroam nu: ”Turbo” krockade med två befintliga varumärken i samma nisch, vilket är en dålig sak att upptäcka sent. Brädan fick behålla namnet.

02
Specialbyggd vattenkyld PC Skrivbordsuppsättning med ultrawide-skärm
Hårdvara

Bygger datorer och tangentbord

Jag har byggt specialbyggda datorer sedan jag var liten, och det har förblivit ett riktigt intresse snarare än blivit ett måste. Nuvarande bygge: ett RTX 4090 på en specialbyggd vattenloop, en i7-13700K, 64 GB DDR5 och en 49-tums ultrawide, plus ett par mekaniska tangentbord byggda från switcharna och uppåt, QMK-firmware inkluderad.

03
Specialbyggt paludarium-ekosystem Terrarium med tropiska växter
Levande system

Terrarier och paludarier

Bygger små land- och vattenekosystem från grunden: glas, dränering, dimma, allt. Jag automatiserar belysning och vattning med Home Assistant på en Raspberry Pi, vilket visade sig vara en bra läxa i sig: ett stabilt ekosystem, precis som stabil mjukvara, behöver grunderna rätt innan något annat spelar roll.

Låt oss prata

Intresserad av att höra om intressanta problem eller möjligheter. Hör gärna av dig.