Adriano Foschi — Projects, experiments and lessons from 20+ years of building software — what I've built, and what I'm building now.
Permissions are two problems, not one
Every authorization engine I've tried answers "can this user see this?" beautifully, and "what can this user see?" badly. That second question is where I keep getting stuck.

Same word, two different jobs: sysadmin before and after AWS
I was a systems administrator twice, a decade apart — and the second time, on AWS, almost nothing from the first job carried over.

The cost of writing collapsed. The cost of checking didn't
Obrussa is an approach I'm trying right now: treating AI-assisted development as a system problem — explicit context, a blocking gate, durable state — because the bottleneck moved from producing code to verifying it.

Architecture as a standard, not a suggestion
Where AI-assisted coding actually fails isn't algorithms, it's architectural boundaries. So I stopped leaving structure to the model: hexagonal clean architecture on NestJS, with the dependency rule enforced on the import graph and a composition root that is the only place allowed to know every piece.

An air conditioner on my own network, and nobody else's
The boxes you can buy to control an air conditioner remotely route the command through the manufacturer's data centre. I soldered my own instead: an ESP8266, an infrared LED and a receiver, running Tasmota — and it ended up inside the machine it controls.

Quality was nobody's job, and then it was mine
Eight years at a software house, half in consulting and half building the company's own product. What decided which years I thrived in wasn't the contract label — it was that I've never been someone who sits still.

A wallet inside a chat app that holds no keys
Putting a self-custody wallet in Telegram means putting it somewhere that must never be allowed to sign anything. The way out was to stop treating the bot as a wallet and start treating it as a remote control.

Sovrano: a self-custody wallet you open with a fingerprint
A wallet where creating a blockchain account means touching a fingerprint sensor or signing in with Google — no seed phrase, no extension, no tokens to buy first. Built on modular smart accounts, so the rules live in the account itself.

No system call for that: getting passkey and JWT signatures verified on chain
A smart contract that wants to accept a fingerprint or a Google login has to verify signature formats the blockchain knows nothing about. Writing that verification myself cost too much to run, so the answer turned out to be knowing where to look for code that already fits inside a constrained VM.

Veive: turning a blockchain account into something you can program
In 2024 I built a modular smart account protocol for the Koinos blockchain. The absence of the piece everyone else builds on turned out to produce a stronger authorization model than the one I was copying.