Projects
A timeline of things I've worked on.
Nesso
Nesso is an app for active learning built around typed knowledge graphs, where nodes are ideas and edges are the typed semantic relations you draw between them. Instead of absorbing answers passively, you draw connections and choose what each link means: causes versus enables, subtype-of versus instance-of, across 52 relation types in eight categories. Every concept carries spaced-repetition state via FSRS. Nesso runs as a local-first web app and a Tauri desktop app. An optional Socratic AI helps you work through ideas using local or cloud models. It revisits an interest I first explored with Mindmapp, my first open-source project: helping people organize what they learn. This time I'm focusing on active learning, research on memory, and giving people control over their data.
Atlante
Atlante has been an experimental project where I explored ways to manage agent prompts, skills, and workflows as composable, versioned artifacts. I built a small TypeScript tool to try out templates, validation, reusable packs, and early forms of evaluation.
Squid
Squid grew out of my work on TheInterfold, where I spent a lot of time wrestling with fully homomorphic encryption and the rough edges of the tools available. It is an ergonomic Rust wrapper for Poulpy, a high-performance FHE library built on RLWE encryption over the Torus, adopting the bivariate polynomial representation proposed in Revisiting Key Decomposition Techniques for FHE and drawing on CHIMERA for unifying different schemes under a common plaintext space. Squid handles scratch memory management and scheme lifecycle transitions. It also ships as squid-js, with WebAssembly and Node.js bindings for use from JavaScript.
TheInterfold
After a roughly 5-month break, I resumed work on the most complex project I've worked on so far. I had a lot to learn from the cryptographers and engineers on the team. TheInterfold is a distributed network for verifiable confidential computation that combines FHE, MPC, ZK, blockchain, and mechanism design. The network is designed to run computations on encrypted data contributed by multiple users. My work focused on Noir circuits and recursive proofs for verifying the threshold-BFV protocol, from distributed key generation and input encryption to threshold decryption and on-chain verification. I also built CRISP's proof system for coercion-resistant secret ballots, along with TypeScript SDKs, APIs, and tooling for generating and integrating proofs.
MPC Framework
Although I only worked on it for a couple of months, this project gave me the chance to study MPC (Multi-Party Computation) and use Rust for the first time. MPC Framework makes building MPC circuits simpler, thanks to a DSL called Summon for boolean circuits and a plug-in architecture for different backends. In my opinion one of the most well-executed projects at PSE, largely thanks to Andrew Morris.
ZK-ID
ZK-ID is a team working on zero-knowledge proofs for digital identity systems. I contributed from the team's inception, shortly before Devcon SEA. The goal was to coordinate efforts toward making ZK technologies interoperable and standardized. What struck me the most was realizing how many people, organizations, and institutions were already working on these problems.
Zupass
Zupass, conceived before Devconnect IST and later used at that and many other events, is a platform built to store and manage PCDs, an abstraction similar to W3C's verifiable credentials that allows anyone to verify a claim through a proof (ZK or any other cryptography). The PCD used for authentication was based on Semaphore. It was a pleasure contributing to this project with the 0xPARC team, who have played a substantial role in promoting Programmable Cryptography, a second generation of cryptographic primitives that includes ZK, MPC, FHE, and iO.
ZK-Kit
I put a lot of work into ZK-Kit. We needed reusable, well-documented development tools for zero-knowledge projects, with libraries that could be used in production. I also wanted to bring together programmers interested in maintaining and improving them. Implementations included various Merkle trees, Baby Jubjub, Poseidon, and utilities initially built in JavaScript, Solidity, and Circom, later extended to Noir and Rust.
Temporary Anonymous Zone
TAZ was an experiment, a booth at Devcon VI where attendees could learn about privacy, cryptography, and anonymity by actually using anonymous applications built on Semaphore: asking and answering questions, creating collaborative art, all without revealing their identity. The concept was inspired by T.A.Z.: The Temporary Autonomous Zone, an essay by the writer and anarchist Hakim Bey, adapted for the event by PSE's comms team. I also gave a talk at that Devcon that I had worked hard on, even though every cell in my body wished I wasn't on that stage at that moment.
Semaphore
Semaphore was one of the first general-purpose zero-knowledge protocols, allowing users to prove membership in a group, or anonymity set, without revealing their identity, with gatekeepers that could enforce any condition: token ownership, credentials, and more. It could power anything from anonymous voting apps to mixers like Tornado Cash. When I started working on it, only a proof of concept existed. I led development through the audited v2–v4 releases, redesigning the Circom circuits, TypeScript SDKs, and Solidity contracts. Alongside the protocol, I worked on documentation, release pipelines, and the tools and workflows contributors used to work on it. It is the project I learned the most from.
Interep
After implementing Iden3's Sparse
Merkle Tree in TypeScript, I unexpectedly found myself working on a project with a
mysterious team then called AppliedZKP, which later became
PSE (Privacy and Scaling Explorations), a research and
development lab supported by the Ethereum Foundation. The idea behind Interep was to build a
bridge for transferring "reputation" from web2 to web3 using
zero-knowledge. Through Interep I got involved in the Ethereum community and
became interested in cypherpunk ideas.
Fun fact: one of the first
contributors to Interep was Jay Graber, now CEO
of Bluesky.
Elekton
Elekton was an anonymous voting application built with zero-knowledge proofs, which I worked on for my master's thesis. The ability to prove you possess information without revealing it felt like such a powerful concept that I couldn't pass up the opportunity to study the technology and its development tools. This project was also my first real step into cryptography, and got me thinking more seriously about privacy.
CAFCHA
CAFCHA was a research project I contributed to during my master's degree. It was an application for certifying every step of the agro-food supply chain on the Ethereum blockchain. At the time, "blockchain" was on the verge of becoming an overused buzzword, but I was interested in the technology, especially the idea of decentralization as opposed to how the web was evolving (and unfortunately has kept evolving). Working on it taught me more about Solidity and what it takes to move a proof of concept to production.
Mindmapp
My first personal open-source project, inspired by Tony Buzan's mind maps. Building it taught me a lot about JavaScript and web technologies and how open-source projects work. Through the project I met other people interested in memorization tools. The project was later forked by B310 into TeamMapper, a collaborative mind mapping tool now used for free by public schools in Germany.