~/about
About
Hi, I'm John — kescript on most of the internet.
I've been writing software for a living since 2018, and most of it has been React Native — five-plus apps through the App Store and Play Store. Checkout flows. Encrypted peer-to-peer calls over WebRTC. A meditation app where an interrupted session had to pick up exactly where it stopped. A logistics platform I helped build from nothing, rider app to ledger, where every fee and discount had to reconcile.
Mobile is a good teacher. The phone is slow, the network is lying, and you can't hotfix a binary that's already on someone's device. So I learned to profile before optimising, to put end-to-end tests in the pipeline instead of on a checklist, and to own the release — at one point the CI/CD for five codebases at once.
Since 2024 I've been at Turing, working across the stack and increasingly on AI tooling: a Slack assistant that answers questions about a large codebase, a browser extension that kept a business running through an API outage, and the Python services behind them. The mobile lessons transfer surprisingly well. Latency is still UX, and caching is still most of performance.
I write things down so they finally make sense to me, and in case they help whoever is a step or two behind. I'm based in Lisbon, Portugal.

What I write about
I write for a younger me. Sometimes that's me five years ago, staring at a crash log from a phone I didn't own. Sometimes it's me last month, before something finally clicked. Every post is the explanation I wish someone had handed me then.
If you're standing where I stood — whether that was years ago or a few weeks ago — I hope it saves you some of the time it cost me. It's mostly about these things:
Mobile in production
Performance on low-end Android, offline-tolerant data, motion that stays smooth, native modules when JavaScript isn't enough.
Testing & shipping
End-to-end tests that run on every build, signing and release pipelines, and getting a binary to users without drama.
LLM systems
Retrieval, evaluation, and the unglamorous plumbing that makes a model useful inside a real product.
TypeScript, APIs & the web
Types as documentation, GraphQL versus REST from someone who migrated between them, and Next.js on the server.
How I work
- Measure first.
- Profilers and logs before opinions. Most slow code isn't where you think it is.
- Test what users do.
- An end-to-end test of the real flow is worth more than a dozen of the easy unit kind.
- Own the release.
- Code isn't done when it's merged; it's done when it's in users' hands and observable.
- Write it down.
- When I restructured a frontend, the document explaining why mattered more than the diff. Same reason this blog exists.
Timeline
selected work →2024 —
Full-stack engineer at Turing
AI tooling and the systems around it: a codebase assistant in Slack, browser automation, Python services, API caching, a frontend restructure.
2023 — 2024
Senior React Native engineer at Pickriders
Built the rider and customer apps from zero; owned releases for five codebases and worked on the ledger.
2021 — 2023
Senior React Native engineer at Maharishi Foundation International
End-to-end tests and release pipelines, resumable meditation sessions, QA coordination, hiring.
2020 — 2021
Senior React Native engineer at Destreetboard
Native modules in Swift and Kotlin, motion with Reanimated and Lottie, GraphQL with Apollo, UI test automation.
2019 — 2020
React Native engineer at Soolerides
Encrypted peer-to-peer calls over WebRTC; authentication with AWS Cognito.
2018 — 2019
React Native developer at iNspark
Payment flows, a TypeScript migration, CI pipelines, and profiling performance with Sentry.
BSc Computer Science, Enugu State University of Science and Technology.
Elsewhere
Bio, for introductions
John Nnamani (@kescript) is a software engineer based in Lisbon, Portugal. John has shipped React Native and full-stack products since 2018 — five-plus apps across the App Store and Play Store — now works on AI developer tooling, and writes at kescript.com.