This page has a chronological list of blog posts I've written, some of which are hosted externally.
Penumbra introduces protocol-level Dutch auctions for price discovery of new assets and better execution of trades, enabling gradual, privacy-preserving market matching.
Penumbra introduces private proof-of-stake using validator-specific delegation tokens, enabling private staking while maintaining validator accountability.
Penumbra Testnet 64 'Titan' introduces support for shielded chain upgrades, enabling network coordination on software versions while preserving private user data across upgrades.
Penumbra Testnet 63 introduces a web wallet and frontend enabling private transactions in the browser without compromising security.
Penumbra's testnet now supports IBC and ICS-20 token transfers, bringing privacy to the Interchain through decentralized, permissionless token transfers from any IBC-compatible chain into Penumbra's multi-asset shielded pool.
Penumbra testnet launches a private, concentrated-liquidity DEX with batched execution, optimal routing, and in-protocol arbitrage - advancing DEX capabilities beyond current systems.
Major progress on shielded swaps, transaction plans, state models, client sync, governance MVP, and ZK proofs. Plus roadmap for DEX engine and web interfaces.
Major improvements simplify client development with tokenized unbonding, personal rollups, and simplified swaps, making Penumbra's privacy features easier to implement.
Penumbra's 29th testnet release introduces private token swaps within the shielded pool, using batch processing to minimize MEV and eliminate transaction ordering.
Major progress on core infrastructure including Decaf377 cryptography, Jellyfish Merkle Tree implementation, private staking, and the first non-SDK IBC connection to Cosmos Hub.
Penumbra's fourth testnet, Thelxinoë, introduces private staking and delegation mechanics using delegation tokens, enabling privacy for delegators while maintaining validator accountability.
Penumbra launches its first public testnet featuring multi-asset shielded transactions and client-side chain scanning, marking a key milestone in private blockchain design.
An overview of Penumbra's development approach to building a fully shielded proof-of-stake blockchain, using transparent proofs to iterate on privacy-preserving mechanics.
Announcing my startup, Penumbra Labs, and its $4.75M seed round led by Dragonfly Capital, with the goal of bringing privacy to DeFi.
Ed25519 signature validation criteria vary widely between implementations, creating risks for consensus systems. Here's why and how to fix it.
Two leading privacy-preserving contact tracing protocols, DP-3T and CEN, show similar approaches. Here's how they compare on privacy & security. (Both were subsumed by the Apple/Google Exposure Notification protocol.)
As we build privacy-preserving contact tracing, let's examine key tradeoffs: trust, privacy, and health authority dependence. Here's what we've learned.
A call to action in the early stages of the COVID-19 pandemic, urging grassroots action to respond to institutional failure.
How Zebra uses Tokio's codec functionality to efficiently parse Bitcoin wire protocol messages into typed data structures for Zcash nodes.
A novel approach to batch verification of cryptographic data, using futures to disentangle validation states and transparently batch verification checks.
The first step towards a second, interoperable Zcash implementation: a modernized networking stack built with async Rust and Tokio.
A Rust library providing high-level macros and low-level APIs for generating and verifying Schnorr-style discrete logarithm proofs with optimized performance
New API in curve25519-dalek v1.1 enables partial precomputation for multiscalar multiplication, yielding 20-30% speedup across a wide range of protocols.
Further speed records for elliptic curve operations, using Intel's AVX512-IFMA instructions to implement parallel Edwards curve formulas.
Announcing the stable pre-release version of Bulletproofs, with type-safe multiparty computation, further optimizations, and support for generic circuit-based proof statements.
Automatic Fiat-Shamir transformations for complex zero-knowledge proofs, with flexible domain separation, multi-round protocols, automatic message framing, and composition of proof statements.
New speed records for elliptic curve operations by implementing parallel Edwards curve formulas with SIMD/AVX2 vectorization.
Implementation of Bulletproofs range proofs using Ristretto & AVX2 optimizations in Rust, achieving 1.15ms verification for 64-bit proofs.
During a summer internship at Cloudflare, I designed and implemented quantum-resistant TLS 1.3 in Go using supersingular isogeny Diffie-Hellman.
The story of why I quit my cryptography PhD
Exploring the historical Treviso Arithmetic from 1478 and its method of 'casting out nines' for error checking in arithmetic calculations.
Exploring tightly packed tries as a space-efficient data structure for storing n-grams, using information theory and clever encoding techniques.
Exploring data structure optimizations for working with Google's massive n-gram datasets, including tries and tagged pointers.
A guide on converting KML files with ExtendedData tags to shapefiles using GDAL's ogr2ogr tool, including tips on enabling LibKML support in Arch Linux for proper data conversion.
Exploring how to use Clang's memory layout dump feature to optimize C++ object sizes, resulting in a 10% memory reduction by eliminating padding and reconsidering data types.
Personal notes on installing Arch Linux with bcache, btrfs, and radeon drivers - including important caveats about bcache/btrfs compatibility
Using a laser cutter and Haskell to create precise curved-fold origami patterns, with concentric circles scored on both sides of the paper
Implementing optional OpenCL support in KStars and benchmarking the new algorithms, showing 56x speedup from better algorithms and 132x with OpenCL
Using stereographic projection to simplify stellar aberration calculations in KStars, replacing complex trigonometry with elegant geometric transformations
Progress report on rewriting KStars' coordinate transformations using linear algebra instead of spherical trigonometry for better performance
How to fix Intel VTune's sepdk driver compilation errors on Linux 3.9+ by adapting to kernel API changes in hlist iterators
An exploration of how quaternions provide an elegant way to represent 3D rotations, avoiding the problems of Euler angles and matrices
An overview of astronomical coordinate systems used in KStars - horizontal, equatorial, ecliptic, and galactic - and how to convert between them
Introducing my Google Summer of Code project to rewrite KStars' astronomy engine using OpenCL for better performance
A historic speech from 1842 where Macaulay argues against extending copyright terms, using examples from Wesley, Shakespeare, and Austen
Investigating the quality/size tradeoffs of JPEG compression at different resolutions for high-DPI displays
Building a Python script using OpenCV to transform photos of documents into clean, flat, high-contrast scans
A visual comparison showing the stark difference in print quality between two Springer Graduate Texts in Mathematics books
Exploring the correspondence between complex elliptic curves, lattices, and points in the upper half-plane via the j-invariant
Using Lagrange's Four Square Theorem to express integer inequality in positive existential arithmetic without using negation
A workaround for Chrome for Android's text enlarger bug that breaks web fonts
Exploring the mathematics and artistry of curved-fold origami through photographs, with notes on folding technique and setup