Selected projects

What I build on the side.

A running set of independent projects — small enough to finish, ambitious enough to learn from. Computational physics, machine learning applied to quantum systems, and the systems and cryptography I am exploring next. All open source.

01

Inertial Confinement Fusion

Toy models of laser-driven fusion — from the ignition cliff to the Xcimer pipeline.

A growing set of small, self-contained Python models for building intuition about inertial confinement fusion — a few hundred lines each, runnable on a laptop, with every simplification written down. Each is quantitatively anchored (real DT fusion reactivity, the rocket equation, textbook ignition criteria) and cross-checked against known results.

They build up from a 0-D hot-spot ignition balance, through a "rocket" capsule implosion and a resolved 1-D Lagrangian hydro solve, to Rayleigh–Taylor instability growth in both planar and converging geometry, a view-factor model of where hohlraum drive symmetry comes from, the yield hit from low-mode drive asymmetry, an excimer-laser + SBS pulse-compression chain, and machine-learned surrogates for both the ignition threshold and hohlraum-geometry design.

02

Quantum Machine Learning

Can a neural network learn to emulate a quantum gate? The answer is about data, not architecture.

A small, instrumented Qiskit + PyTorch playground for one question: when you train a network to imitate a quantum gate, does the representation of its output decide whether the learned gate composes?

Training on Born-rule probabilities throws away phase, so the learned gate fails to compose — U² diverges from the truth. Training on full complex amplitudes keeps phase, and composition holds to ~0.998–0.9997 fidelity. Feed the probability model tomographically complete data and it recovers phase after all — so the barrier is the information in the target, not the network.

03

Machine Learning

Reinforcement-learning experiments on classic control.

Reinforcement-learning experiments built up on classic control environments — from a random-agent baseline to tabular methods to the harder swing-up task.

  • Random-agent baseline for calibration.
  • Tabular Q-learning on classic control.
  • Q-learning on the cart-pole swing-up task.
04

Voices — publicly auditable ZK voting

In design

A voting system where anyone can audit the election, nobody can see who you are, and you can still confirm your own vote counted.

Solidity · EVM · Zero-knowledge proofs (Semaphore / MACI)github.com/Sebastoshi/VoicesDapp ↗

Modern elections ask voters to trust a black box. Voices explores the opposite: a voting system that is publicly auditable end-to-end, on a blockchain, while keeping every ballot secret. Anyone can verify that each recorded vote came from an anonymous, authorized, unique voter — without ever learning who voted, or how any individual voted.

The hard part is a real cryptographic tension. A voter should be able to confirm their vote was counted, yet must not be able to prove to anyone else how they voted — a transferable receipt is exactly what enables coercion and vote-buying. Voices combines zero-knowledge set-membership with on-chain public auditability: a government ID establishes eligibility off-chain and never touches the chain, a nullifier prevents double-voting, and verification is end-to-end rather than receipt-based.

  • Eligibility without exposure — the ID is verified off-chain; only a zero-knowledge proof of set membership ever goes on-chain.
  • One person, one vote — a nullifier makes double-voting detectable without linking a vote to a voter.
  • Public auditability — anyone can confirm every vote came from an anonymous, authorized, unique voter.
  • Coercion-resistant verification — end-to-end verifiability, not a receipt someone could demand to see.
  • Explicit trust boundaries — the eligibility issuer is named, not hidden inside a black box.

Prove eligibility

Verify your government ID once, off-chain, with the eligibility issuer.

Anonymous credential

Join the eligible-voter set as a commitment in a Merkle tree — no identity on-chain.

Cast your vote

Submit a zero-knowledge proof of eligibility plus a nullifier; the ballot is recorded on-chain.

Public tally

Anyone verifies every recorded vote came from an anonymous, authorized, unique voter.

Verify your own

Confirm your vote was counted — without producing a receipt anyone could coerce.