About Adriano Foschi
I'm Adriano Foschi, a full-stack engineer with 20+ years of experience, from early self-taught projects to leading software architecture as a CTO today.
This blog is a record of what I've built and what I'm building now — side projects, experiments, and the occasional lesson learned the hard way. What I happen to be focused on professionally changes over time, and so will what shows up here.
What I've worked on
I started as a teenager, self-taught, and the first serious thing I wrote was software a school actually ran on. Then I began doing it for a living: freelance web projects taken end to end, while administering the hosting infrastructure that paid for my studies — the job that teaches you what happens to an application after you hand it over.
For many years I was a full-stack developer in consulting, for clients in sectors where things are not improvised: banking, insurance, e-learning platforms. Today I'm CTO at 4HSE: I write less code and spend far more time on architecture and technical choices — multi-tenant systems, scalability, who is allowed to see what, authentication, AI agents — and on coordinating the people building it.
Outside working hours I spent a couple of years building on the Koinos blockchain, where I tested the ideas that had no place at work: a mobile wallet that won first prize at the official hackathon, a modular framework for smart accounts, a wallet you get into with a passkey instead of having to understand a seed phrase. I'm not working on it any more, but the code is public. And I keep infrastructure of my own at home, for the pleasure of not routing everything through someone else's cloud.
Why I study architecture and patterns
I study architecture and design patterns because I follow where coding is going with AI. When producing code becomes much faster, writing is no longer what decides quality: what decides it is the structure the code lands in, and how much of that structure a machine can check.
Hence the thing I care about most: making standards explicit rather than implied. An architecture described in a document is a suggestion; the same architecture checked by the build is a rule, and only the second one survives a deadline, a new person on the team, or an agent writing code. Beyond that, I learn new paradigms by building something real in them rather than by reading about them — and when something didn't work, the useful version of the story is the one that says so.
What I work with
Deepest in the application layer, on both sides of it: TypeScript and JavaScript, React, React Native and Vue on the front end; Node.js, PHP, REST and GraphQL APIs, microservices and CQRS on the back. Around that:
- Authentication and authorization — OpenID Connect, OAuth 2.0, WebAuthn and passkeys, Keycloak, OpenFGA.
- Data — MySQL and SQL in general, MongoDB, Redis.
- Blockchain — Koinos smart contracts in AssemblyScript, smart accounts, wallets, dApps.
- AI — coding agents, LLM integration, and MCP servers.
- Infrastructure — Docker, and the AWS services around it: Lambda, S3, CloudFront, EC2.
If you want the long form, my full CV is on rxresu.me and my open source work is on GitHub.