Eighteen years of combined engineering experience, four specialist domains, and a small studio that would rather show the work than the pitch deck.
We've been building software professionally since 2008. Backend mostly, but across the full range — hands-on engineering, technical leadership, and the product side where you have to decide what's worth building in the first place.
Most of that work was for other people. Some of it was for companies large enough that you'd recognise the name, on systems handling more traffic in an hour than our own products will see in a year. It's good work and we're proud of it, but almost none of it has our name on it.
Two reasons, and we'll be honest about both.
The first is that we wanted to build our own things. After enough years of shipping other people's roadmaps, the itch to have opinions of your own becomes hard to ignore.
The second is that building without outside pressure is a great way to be wrong for a long time. Inside a company, someone challenges a bad idea within a week. Left alone, a bad idea can survive six months because nobody's there to ask the obvious question. This site is our attempt at replacing that — put the thinking in public, early, and let people tell us where it breaks.
Right now our time splits roughly three ways: client work, which pays for everything else; our own products, which are all in various states of unfinished; and writing about both.
Evenings and weekends go to the game, which has no business case whatsoever and is therefore the most fun thing on the list.
We keep a small number of engagements running at a time, on purpose. A team stretched across ten clients writes worse software for all of them — we'd rather turn work away than do that.
Most of what we can show is our own products. Client work is often confidential, especially in healthcare, so where we can't name the client we say so plainly rather than pad the portfolio with vague claims.
AI-focused client work and healthcare/telephony engagements, alongside a small software publisher building our own products. Both fund the work on this site.
Leading engineering teams, making architecture calls, and learning that most technical problems at that level turn out to be communication problems.
Systems at real scale, where the interesting constraints aren't about writing code — they're about what happens when a million people use it at once.
The years of just building things. Enormously useful, occasionally painful, and the reason we can still debug most things faster than we can explain them.
Sometimes. We take on a small number of engagements, usually AI-related or something technically awkward enough to be interesting. Email us and we'll tell you honestly whether we have room.
Often, especially in healthcare and finance. Several of the case studies on this site are real client engagements we can't fully name — we say what we can, honestly, without breaking confidence.
Not yet — none of them are launched. If you want early access to any of them, say so and we'll add you to the list for that one.
Yes, all of them, and we reply to most. Blunt feedback before we've spent three months building the wrong thing is worth more to us than praise.
Global consultancies, telecom operators, healthcare systems, hospitality groups and industrial firms — across the Gulf, Europe and the US. Some of these were long engagements, some were single hard problems.
What we actually reach for, and what each one is for. Years shown are time in production.
Large enterprise front-ends where structure matters more than novelty. Most of our consultancy work lived here.
Product UI where things change weekly. Our default when the interface is the product.
Anything that needs to be fast on first load and rank in search. All four project dashboards run on it.
Streams of events that arrive out of order — live call feeds, socket updates, anything you can't wait on.
Structured Node services. When a team is going to inherit the codebase, the opinionated framework wins.
The workhorse. API layers, job runners, and the glue between everything else.
Where milliseconds are the product. The hot path of the bidding engine is headed here.
Every project on this site. We'd rather push logic into the database than build a service to do it.
Wiring language models into real product surfaces — not a chat widget bolted on the side, but a feature that fits the interaction it's replacing.
Plumbing for LLM features — retrieval, tools, and getting models to talk to real systems.
Agent workflows that branch and loop. When a chain isn't enough because the work has actual state.
Running and fine-tuning open models when sending data to an API isn't an option.
Classic ML — scoring, classification, and the prediction work that predates the LLM era.
Vector search at a size where doing it yourself stops being clever and starts being a second job.
Real-time updates that don't need a full WebRTC stack — live dashboards, call queues, chat. The default when Node already owns the connection.
Peer-to-peer audio and video in the browser, no plugin required. Underneath every voice feature we've shipped.
The SFU behind anything with more than two people on a call at once. Selective forwarding instead of every client uploading to everyone.
Wallet connections, contract calls, and reading chain state from the browser. The unglamorous half of every crypto product.
Where most of what we ship actually runs. RDS, ECS and S3 cover almost everything; we reach for something fancier only when we have to.
CI/CD, infrastructure as code, and the pipelines that make "it works on my machine" somebody else's problem.
Real-time 3D for the game projects on this site. Nanite and Lumen changed what a small team can ship without a dedicated art department.
About the work, the projects, or how we work with clients.