Madrid, Spain · Building iOS since 2016

I design systems that are
still standing two years on.

Software architect. I work on both ends of the same problem: the app people actually touch, and the infrastructure that holds it up once it stops being a prototype. iOS apps in Swift, and the APIs that feed them.

Who I am

Two schools at once

I have been building iOS apps since 2016, most of that time on banking and large-scale retail projects where the app is not the product: it is the tool someone works with or moves their money through. There a slip is not a charming bug, and you learn quickly to design for day 500 rather than day 1.

Alongside that I run my own products end to end. That forces you down into what someone else handles on a large team: the API, the database schema, the deployment, the certificates and the three-in-the-morning call. It is the other half of the craft, and the half that taught me most about why things break.

That combination is what interests me: the rigour a large project demands, and the judgement you only develop when there is nobody else to hand the problem to.

Client work

Apps in production

iOS applications used daily by thousands of people, in sectors where going down is not an option. I do not go into the internals of each project: they are their owners' products, not mine.

  • Inditex — Internal store management across the group worldwide. Swift 5
  • Mercadona — Purchasing at fish markets and boats. Swift 5
  • Unicaja — Bizum instant-payments integration in the bank's app. Swift
  • Pibank — Private customer area for Banco Pichincha. Swift 4
Own products

From idea to server

Two apps shipped under the OgamLabs label. There is no team here: design, app, API, database, deployment and on-call are all mine.

  • CholloGas

    On the App Store

    Finds the cheapest fuel stations in Spain using the public MITECO dataset.

    Rating
    5.0 ★
    Stations
    11,000+
    Fuel types
    13

    An iOS app in Swift and SwiftUI with a local cache so it works offline, and a TypeScript API on Fastify backed by PostgreSQL. The whole path is mine: design, app, backend, database, deployment and on-call.

    The problem
    Price history threatened to run away. With over 11,000 stations and up to thirteen fuel types, writing every reading on every sync adds tens of thousands of rows a day. And history is not a nice-to-have: it is what tells you whether today is a good day to fill up.
    Alternatives
    Store every reading and prune later with a cleanup job, or store only genuine price changes.
    The decision
    A delta-based sync: a row is written only when the price actually changes. History stays in the millions of rows rather than growing unchecked, and queries stay direct with no recurring maintenance work.
    What it cost
    The date the user sees now means "the last time this price changed", not "the last time we checked". That is counter-intuitive: a two-week-old date looks stale when it actually means a stable price. Accepting that meant explaining it inside the app and giving it a section on the pricing data page.
    • Swift
    • SwiftUI
    • Fastify
    • PostgreSQL
    • Docker
  • Hilo

    Coming soon

    A daily word game: five words hiding one common thread. A short break, not a game that asks for your time and gives nothing back.

Principles

Decisions I stand behind

Not slogans: choices made on my own products, with their costs accepted.

  • No accounts when they add nothing. CholloGas has no login. If the product works without knowing who you are, there is no reason to ask.
  • Finishing costs more than starting. The bulk of an app goes up quickly. What is left after that — the empty states, the network error, the text that breaks on a small screen, the animation that does not make you queasy — is what separates a demo from something someone opens every day. That stretch decides whether the product is any good, and it is where I put the time.
  • I never force a subscription. CholloGas is paid for once and that is that. Hilo also has a one-time purchase, plus monthly and annual plans for anyone who would rather pay gradually. A subscription is fine as an option; what I object to is it being the only door in.
  • Official data, unretouched. Prices come from the public source and are shown as they are: not rounded, corrected or predicted.
  • Operate what I build. Deployment, certificates, backups and monitoring. A system you cannot operate is not finished.
Contact

Get in touch

For proposals, collaborations or questions about any of the apps: [email protected].

I am also on LinkedIn.