Skip to main content
← Writing

Working with Me

A user manual for collaborating with me.

On this page

I write software for a living, but I’ve spent enough years working across time zones, cultures, and codebases to know that the hardest bugs are usually interpersonal. This post is my attempt at a README for working with me.

Think of it as a man page. Skip to the section you need.

The short version

I prefer written communication over calls. I default to async. I value specificity and I’m allergic to vague requests. I’ll give you honest feedback and I expect the same in return. I care about developer experience, clean APIs, and shipping things that work.

If you’re reaching out for the first time, email beats everything else.

Where I come from

I’m Italian, specifically from the Veneto region, near Venice. I grew up close to H-Farm, one of Italy’s early tech incubators, which is where I first caught the startup bug. At 19, I co-founded Skydreamer and presented at TechCrunch Disrupt 2017. It didn’t last, but it taught me more about shipping under pressure than any university course would.

I hold a Master’s in Computer Science from the University of Padua (graduated with honors). My thesis on submodular optimization took me to the Czech Technical University in Prague, where I later returned to work on fuel pipeline scheduling for the Czech Ministry of Energy.

Since then, I’ve lived and worked across Europe: Venice, Berlin, Prague, Istanbul, Tbilisi. I’m currently based in Tbilisi, Georgia. I’ve worked remotely for most of my career.

Culturally, I’d describe myself as Central European. I’m direct, sometimes blunt, and I don’t take long to get to the point. If you’re used to more indirect communication styles, this might feel abrupt at first. It’s not rudeness; it’s efficiency. I’d rather spend five minutes on a clear email than thirty on a meeting that could have been a message.

I speak English, Italian, and Venetian. I get by in Spanish, German, Turkish, and Russian, depending on how recently I’ve lived somewhere.

How I communicate

Async by default. I operate across multiple time zones and work deeply for long stretches. Slack messages are fine. Emails are better for anything that requires thought. I’ll respond within a day for most things, faster if it’s urgent.

Written over spoken. I think more clearly when I write. If we’re discussing architecture, a tricky decision, or a proposal, I’d rather see it as a document or a GitHub issue than hash it out live. Writing forces precision, and it leaves a trail.

Specific over vague. “Can I get your thoughts on this?” with no context is hard to act on. “Here’s a PR that changes how we load WASM modules. Can you review the approach in src/runtime?” gives me something to work with. The more specific your ask, the better my answer.

Direct feedback, both ways. I’ll tell you if I think something is wrong. I won’t be harsh, but I won’t sugarcoat it either. I want the same in return. A colleague at Prisma once described me as someone who “consistently brings boldness, clarity, and thoughtfulness into the room.” I take that as the best professional compliment I’ve received.

How I work

I go deep. I once spent a full day tracing a createRequire is not a function error through webpack internals, wasm-bindgen binaries, and WebAssembly loading semantics before finding a two-line fix. I like understanding systems from the bottom up. If something breaks, I want to know why, not just how to make it green again.

I care about DX. Most of my career has been about developer tooling: ORM internals at Prisma, AI agent SDKs at Composio, build tooling, CLI design. I think about APIs from the consumer’s perspective first. If the developer using my code needs to read the source to understand the interface, the interface is wrong.

I default to open source. I’ve maintained public projects in TypeScript, Rust, C++, Python, and Go. I think in public when I can. My talks, code, and writing are usually available for anyone to read.

I ship incrementally. A small, correct change today is worth more than a perfect, sprawling one next week. Small PRs, clear commit messages, fast feedback loops.

Meetings

I’m not against meetings. But I treat synchronous time as expensive.

If you want to meet, send me context first: a brief message or document outlining what we’ll discuss. “Quick sync” with no agenda usually means neither of us will leave with clear outcomes.

For first-time conversations: start with an email or message. Tell me what you’re working on, what you need, and why you think I can help. If the conversation has momentum, a meeting follows naturally. If it doesn’t, forcing one won’t fix that.

I keep my calendar on Cal.com. Book a slot if the context is clear; no need to ask permission.

What I value in collaborators

Ownership. If you say you’ll do something, do it. If you can’t, tell me early.

Precision. I appreciate people who are careful with words: in code, in documentation, in conversation.

Curiosity. I’ve gone from mobile apps to mathematical optimization to WASM compilation pipelines to AI agent tooling. The thread connecting all of it is that I followed what was interesting. I like working with people who do the same.

Honest disagreement. I hold strong opinions, weakly. I’d rather be wrong and learn something than be right and learn nothing. If you disagree with me, say so.

Getting in touch

If you’ve emailed me and haven’t heard back in a week, nudge me. I sometimes lose things in the inbox. I won’t mind.


This post was inspired by Grzegorz Kossakowski’s Working with Me.