Henry de Valencehttps://hdevalence.ca/Elliptic Curves, Lattices, and the Upper Half-Planehttps://hdevalence.ca/blog/2012-10-31-elliptic-curves-lattices-and-the-upper-half-plane/https://hdevalence.ca/blog/2012-10-31-elliptic-curves-lattices-and-the-upper-half-plane/Exploring the correspondence between complex elliptic curves, lattices, and points in the upper half-plane via the j-invariantWed, 31 Oct 2012 00:00:00 GMTA portable photocopier with OpenCVhttps://hdevalence.ca/blog/2012-11-22-a-portable-photocopier-with-opencv/https://hdevalence.ca/blog/2012-11-22-a-portable-photocopier-with-opencv/Building a Python script using OpenCV to transform photos of documents into clean, flat, high-contrast scansThu, 22 Nov 2012 00:00:00 GMTCurved-Fold Origamihttps://hdevalence.ca/blog/2012-02-07-curved-fold-origami/https://hdevalence.ca/blog/2012-02-07-curved-fold-origami/Exploring the mathematics and artistry of curved-fold origami through photographs, with notes on folding technique and setupTue, 07 Feb 2012 00:00:00 GMTChrome for Android webfont bug workaroundhttps://hdevalence.ca/blog/2012-10-22-android-chrome-web-fonts/https://hdevalence.ca/blog/2012-10-22-android-chrome-web-fonts/A workaround for Chrome for Android's text enlarger bug that breaks web fontsMon, 22 Oct 2012 00:00:00 GMTQOTD: Newton on Cassegrainhttps://hdevalence.ca/blog/2013-01-26-qotd-newton-on-cassegrain/https://hdevalence.ca/blog/2013-01-26-qotd-newton-on-cassegrain/A quote from Isaac Newton about Cassegrain's telescope designSat, 26 Jan 2013 00:00:00 GMTBeware poor quality in Springer GTM bookshttps://hdevalence.ca/blog/2012-11-05-poor-quality-in-springer-gtm-books/https://hdevalence.ca/blog/2012-11-05-poor-quality-in-springer-gtm-books/A visual comparison showing the stark difference in print quality between two Springer Graduate Texts in Mathematics booksMon, 05 Nov 2012 00:00:00 GMTA neat trick to distinguish integershttps://hdevalence.ca/blog/2012-10-25-a-neat-trick-to-distinguish-integers/https://hdevalence.ca/blog/2012-10-25-a-neat-trick-to-distinguish-integers/Using Lagrange's Four Square Theorem to express integer inequality in positive existential arithmetic without using negationThu, 25 Oct 2012 00:00:00 GMTJPEG compression and retina displayshttps://hdevalence.ca/blog/2013-04-09-jpeg-compression-and-retina-displays/https://hdevalence.ca/blog/2013-04-09-jpeg-compression-and-retina-displays/Investigating the quality/size tradeoffs of JPEG compression at different resolutions for high-DPI displaysTue, 09 Apr 2013 00:00:00 GMTKStars Summer of Code 2013https://hdevalence.ca/blog/2013-06-02-kstars-summer-of-code/https://hdevalence.ca/blog/2013-06-02-kstars-summer-of-code/Introducing my Google Summer of Code project to rewrite KStars' astronomy engine using OpenCL for better performanceSun, 02 Jun 2013 00:00:00 GMTLord Macaulay on copyrighthttps://hdevalence.ca/blog/2013-05-03-lord-macaulay-on-copyright/https://hdevalence.ca/blog/2013-05-03-lord-macaulay-on-copyright/A historic speech from 1842 where Macaulay argues against extending copyright terms, using examples from Wesley, Shakespeare, and AustenFri, 03 May 2013 00:00:00 GMTCoordinate Systems in KStarshttps://hdevalence.ca/blog/2013-06-17-coordinate-systems-in-kstars/https://hdevalence.ca/blog/2013-06-17-coordinate-systems-in-kstars/An overview of astronomical coordinate systems used in KStars - horizontal, equatorial, ecliptic, and galactic - and how to convert between themMon, 17 Jun 2013 00:00:00 GMTQuaternions and Rotationshttps://hdevalence.ca/blog/2013-06-20-quaternions-and-rotations/https://hdevalence.ca/blog/2013-06-20-quaternions-and-rotations/An exploration of how quaternions provide an elegant way to represent 3D rotations, avoiding the problems of Euler angles and matricesThu, 20 Jun 2013 00:00:00 GMTIntel VTune on Linux 3.9 workaround for hlist_for_each_entryhttps://hdevalence.ca/blog/2013-07-07-intel-vtune-linux-39-hlist_for_each_entry/https://hdevalence.ca/blog/2013-07-07-intel-vtune-linux-39-hlist_for_each_entry/How to fix Intel VTune's sepdk driver compilation errors on Linux 3.9+ by adapting to kernel API changes in hlist iteratorsSun, 07 Jul 2013 00:00:00 GMTKStars GSoC: Progress Updatehttps://hdevalence.ca/blog/2013-07-09-kstars-gsoc-progress-update/https://hdevalence.ca/blog/2013-07-09-kstars-gsoc-progress-update/Progress report on rewriting KStars' coordinate transformations using linear algebra instead of spherical trigonometry for better performanceTue, 09 Jul 2013 00:00:00 GMTKStars GSoC: Aberration with a Stereographic Projectionhttps://hdevalence.ca/blog/2013-07-26-kstars-gsoc-aberration-with-a-stereographic-projection/https://hdevalence.ca/blog/2013-07-26-kstars-gsoc-aberration-with-a-stereographic-projection/Using stereographic projection to simplify stellar aberration calculations in KStars, replacing complex trigonometry with elegant geometric transformationsFri, 26 Jul 2013 00:00:00 GMTConverting KML files to shapefiles with extra datahttps://hdevalence.ca/blog/2014-01-26-converting-kml-to-shapefiles-with-extended-data/https://hdevalence.ca/blog/2014-01-26-converting-kml-to-shapefiles-with-extended-data/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.Sun, 26 Jan 2014 00:00:00 GMTKStars GSoC: OpenCL and a first performance reporthttps://hdevalence.ca/blog/2013-07-28-kstars-gsoc-opencl-and-a-first-performance-report/https://hdevalence.ca/blog/2013-07-28-kstars-gsoc-opencl-and-a-first-performance-report/Implementing optional OpenCL support in KStars and benchmarking the new algorithms, showing 56x speedup from better algorithms and 132x with OpenCLSun, 28 Jul 2013 00:00:00 GMTNotes on my Arch Linux installhttps://hdevalence.ca/blog/2013-09-21-notes-on-my-archlinux-install/https://hdevalence.ca/blog/2013-09-21-notes-on-my-archlinux-install/Personal notes on installing Arch Linux with bcache, btrfs, and radeon drivers - including important caveats about bcache/btrfs compatibilitySat, 21 Sep 2013 00:00:00 GMTBetter Living Through Clang-istryhttps://hdevalence.ca/blog/2013-12-22-better-living-through-clangistry/https://hdevalence.ca/blog/2013-12-22-better-living-through-clangistry/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.Sun, 22 Dec 2013 00:00:00 GMTHaskell, Lasers, and Curved-Fold Origamihttps://hdevalence.ca/blog/2013-08-04-haskell-lasers-and-curved-fold-origami/https://hdevalence.ca/blog/2013-08-04-haskell-lasers-and-curved-fold-origami/Using a laser cutter and Haskell to create precise curved-fold origami patterns, with concentric circles scored on both sides of the paperSun, 04 Aug 2013 00:00:00 GMTFun with Google n-grams data (part 1)https://hdevalence.ca/blog/2014-02-05-fun-with-the-google-ngrams-data/https://hdevalence.ca/blog/2014-02-05-fun-with-the-google-ngrams-data/Exploring data structure optimizations for working with Google's massive n-gram datasets, including tries and tagged pointers.Wed, 05 Feb 2014 00:00:00 GMTFun with n-grams, part 2: tightly packed trieshttps://hdevalence.ca/blog/2014-02-13-fun-with-ngrams-part-ii-tightly-packed-tries/https://hdevalence.ca/blog/2014-02-13-fun-with-ngrams-part-ii-tightly-packed-tries/Exploring tightly packed tries as a space-efficient data structure for storing n-grams, using information theory and clever encoding techniques.Thu, 13 Feb 2014 00:00:00 GMTWhen ‘he’ll be kept on payroll, somewhere’ is where you arehttps://medium.com/@hdevalence/when-hell-kept-on-payroll-somewhere-is-where-you-are-f419d3022d0https://medium.com/@hdevalence/when-hell-kept-on-payroll-somewhere-is-where-you-are-f419d3022d0The story of why I quit my cryptography PhDFri, 17 Mar 2017 00:00:00 GMTCapitalism and Arithmetic and Casting Out Nineshttps://hdevalence.ca/blog/2016-05-28-capitalism-and-arithmetic-and-casting-out-nines/https://hdevalence.ca/blog/2016-05-28-capitalism-and-arithmetic-and-casting-out-nines/Exploring the historical Treviso Arithmetic from 1478 and its method of 'casting out nines' for error checking in arithmetic calculations.Sat, 28 May 2016 00:00:00 GMTSIDH in Go for quantum-resistant TLS 1.3https://blog.cloudflare.com/sidh-go/https://blog.cloudflare.com/sidh-go/During a summer internship at Cloudflare, I designed and implemented quantum-resistant TLS 1.3 in Go using supersingular isogeny Diffie-Hellman.Fri, 01 Sep 2017 00:00:00 GMTAccelerating Edwards Curve Arithmetic with Parallel Formulashttps://medium.com/@hdevalence/accelerating-edwards-curve-arithmetic-with-parallel-formulas-ac12cf5015behttps://medium.com/@hdevalence/accelerating-edwards-curve-arithmetic-with-parallel-formulas-ac12cf5015beNew speed records for elliptic curve operations by implementing parallel Edwards curve formulas with SIMD/AVX2 vectorization.Wed, 01 Aug 2018 00:00:00 GMTFaster Bulletproofs with Ristretto and AVX2https://blog.chain.com/faster-bulletproofs-with-ristretto-avx2-29450b4490cdhttps://blog.chain.com/faster-bulletproofs-with-ristretto-avx2-29450b4490cdImplementation of Bulletproofs range proofs using Ristretto & AVX2 optimizations in Rust, achieving 1.15ms verification for 64-bit proofs.Fri, 13 Apr 2018 00:00:00 GMTMerlin: flexible, composable transcripts for zero-knowledge proofshttps://medium.com/@hdevalence/merlin-flexible-composable-transcripts-for-zero-knowledge-proofs-28d9fda22d9ahttps://medium.com/@hdevalence/merlin-flexible-composable-transcripts-for-zero-knowledge-proofs-28d9fda22d9aAutomatic Fiat-Shamir transformations for complex zero-knowledge proofs, with flexible domain separation, multi-round protocols, automatic message framing, and composition of proof statements.Fri, 28 Sep 2018 00:00:00 GMTBulletproofs pre-releasehttps://medium.com/interstellar/bulletproofs-pre-release-fcb1feb36d4bhttps://medium.com/interstellar/bulletproofs-pre-release-fcb1feb36d4bAnnouncing the stable pre-release version of Bulletproofs, with type-safe multiparty computation, further optimizations, and support for generic circuit-based proof statements.Thu, 08 Nov 2018 00:00:00 GMTEven faster Edwards curves with IFMAhttps://medium.com/@hdevalence/even-faster-edwards-curves-with-ifma-8b1e576a00e9https://medium.com/@hdevalence/even-faster-edwards-curves-with-ifma-8b1e576a00e9Further speed records for elliptic curve operations, using Intel's AVX512-IFMA instructions to implement parallel Edwards curve formulas.Mon, 10 Dec 2018 00:00:00 GMTFlexible precomputation for verification checkshttps://medium.com/@hdevalence/flexible-precomputation-for-verification-checks-1eadb9505a17https://medium.com/@hdevalence/flexible-precomputation-for-verification-checks-1eadb9505a17New API in curve25519-dalek v1.1 enables partial precomputation for multiscalar multiplication, yielding 20-30% speedup across a wide range of protocols.Tue, 19 Feb 2019 00:00:00 GMTzkp: a toolkit for Schnorr proofshttps://medium.com/@hdevalence/zkp-a-toolkit-for-schnorr-proofs-6e381b4f0a31https://medium.com/@hdevalence/zkp-a-toolkit-for-schnorr-proofs-6e381b4f0a31A Rust library providing high-level macros and low-level APIs for generating and verifying Schnorr-style discrete logarithm proofs with optimized performanceFri, 29 Mar 2019 00:00:00 GMTDecoding Bitcoin Messages with Tokio Codecshttps://www.zfnd.org/blog/decoding-bitcoin-messages-with-tokio-codecs/https://www.zfnd.org/blog/decoding-bitcoin-messages-with-tokio-codecs/How Zebra uses Tokio's codec functionality to efficiently parse Bitcoin wire protocol messages into typed data structures for Zcash nodes.Tue, 25 Feb 2020 00:00:00 GMTA New Network Stack For Zcashhttps://www.zfnd.org/blog/a-new-network-stack-for-zcash/https://www.zfnd.org/blog/a-new-network-stack-for-zcash/The first step towards a second, interoperable Zcash implementation: a modernized networking stack built with async Rust and Tokio.Tue, 28 Jan 2020 00:00:00 GMTComposable Futures-based Batch Verificationhttps://www.zfnd.org/blog/futures-batch-verification/https://www.zfnd.org/blog/futures-batch-verification/A novel approach to batch verification of cryptographic data, using futures to disentangle validation states and transparently batch verification checks.Fri, 31 Jan 2020 00:00:00 GMTLet's Develop Decentralized, Privacy-Preserving Contact Tracinghttps://www.zfnd.org/blog/decentralized-contact-tracing/https://www.zfnd.org/blog/decentralized-contact-tracing/A call to action in the early stages of the COVID-19 pandemic, urging grassroots action to respond to institutional failure.Mon, 23 Mar 2020 00:00:00 GMTDesign Tradeoffs in Privacy-Preserving Contact Tracinghttps://www.zfnd.org/blog/design-tradeoffs-in-private-contact-tracing/https://www.zfnd.org/blog/design-tradeoffs-in-private-contact-tracing/As we build privacy-preserving contact tracing, let's examine key tradeoffs: trust, privacy, and health authority dependence. Here's what we've learned.Fri, 27 Mar 2020 00:00:00 GMTPrivate Contact Tracing Protocols Compared: DP-3T and CENhttps://www.zfnd.org/blog/private-contact-tracing-protocols-compared/https://www.zfnd.org/blog/private-contact-tracing-protocols-compared/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.)Mon, 06 Apr 2020 00:00:00 GMTIt's 255:19AM. Do you know what your validation criteria are?https://hdevalence.ca/blog/2020-10-04-its-25519am/https://hdevalence.ca/blog/2020-10-04-its-25519am/Ed25519 signature validation criteria vary widely between implementations, creating risks for consensus systems. Here's why and how to fix it.Sun, 04 Oct 2020 00:00:00 GMTPenumbra Labs Raises Seed Round To Build Private, Decentralized Exchangehttps://penumbra.zone/blog/penumbra-labs-raises-seed-round-to-build-private-exchangehttps://penumbra.zone/blog/penumbra-labs-raises-seed-round-to-build-private-exchangeAnnouncing my startup, Penumbra Labs, and its $4.75M seed round led by Dragonfly Capital, with the goal of bringing privacy to DeFi.Thu, 04 Nov 2021 00:00:00 GMTHow We're Building Penumbrahttps://penumbra.zone/blog/how-were-building-penumbrahttps://penumbra.zone/blog/how-were-building-penumbraAn overview of Penumbra's development approach to building a fully shielded proof-of-stake blockchain, using transparent proofs to iterate on privacy-preserving mechanics.Tue, 30 Nov 2021 00:00:00 GMTPublic Testnet #1: "Valetudo"https://penumbra.zone/blog/valetudo-testnethttps://penumbra.zone/blog/valetudo-testnetPenumbra launches its first public testnet featuring multi-asset shielded transactions and client-side chain scanning, marking a key milestone in private blockchain design.Wed, 01 Dec 2021 00:00:00 GMTTestnet #4: Shielded Staking Is Herehttps://penumbra.zone/blog/shielded-staking-is-herehttps://penumbra.zone/blog/shielded-staking-is-herePenumbra's fourth testnet, Thelxinoë, introduces private staking and delegation mechanics using delegation tokens, enabling privacy for delegators while maintaining validator accountability.Wed, 26 Jan 2022 00:00:00 GMTPenumbra Summer 2022 Updatehttps://penumbra.zone/blog/2022-summer-updatehttps://penumbra.zone/blog/2022-summer-updateMajor progress on core infrastructure including Decaf377 cryptography, Jellyfish Merkle Tree implementation, private staking, and the first non-SDK IBC connection to Cosmos Hub.Tue, 09 Aug 2022 00:00:00 GMTPenumbra Testnet 38: Kalykehttps://penumbra.zone/blog/testnet-38-kalykehttps://penumbra.zone/blog/testnet-38-kalykeMajor improvements simplify client development with tokenized unbonding, personal rollups, and simplified swaps, making Penumbra's privacy features easier to implement.Mon, 12 Dec 2022 00:00:00 GMTPenumbra Testnet 29: Shielded Swaps Have Arrivedhttps://penumbra.zone/blog/shielded-swaps-have-arrivedhttps://penumbra.zone/blog/shielded-swaps-have-arrivedPenumbra's 29th testnet release introduces private token swaps within the shielded pool, using batch processing to minimize MEV and eliminate transaction ordering.Tue, 13 Sep 2022 00:00:00 GMTPenumbra Winter 2022 Updatehttps://penumbra.zone/blog/2022-winter-updatehttps://penumbra.zone/blog/2022-winter-updateMajor progress on shielded swaps, transaction plans, state models, client sync, governance MVP, and ZK proofs. Plus roadmap for DEX engine and web interfaces.Fri, 23 Dec 2022 00:00:00 GMTPenumbra's DEX Arrives From The Futurehttps://penumbra.zone/blog/dex-arrives-from-the-futurehttps://penumbra.zone/blog/dex-arrives-from-the-futurePenumbra testnet launches a private, concentrated-liquidity DEX with batched execution, optimal routing, and in-protocol arbitrage - advancing DEX capabilities beyond current systems.Tue, 23 May 2023 00:00:00 GMTInterchain Privacy Is Herehttps://penumbra.zone/blog/interchain-privacy-is-herehttps://penumbra.zone/blog/interchain-privacy-is-herePenumbra'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.Thu, 28 Sep 2023 00:00:00 GMTBringing Shielded Transactions to the Webhttps://penumbra.zone/blog/bringing-shielded-transactions-to-the-webhttps://penumbra.zone/blog/bringing-shielded-transactions-to-the-webPenumbra Testnet 63 introduces a web wallet and frontend enabling private transactions in the browser without compromising security.Thu, 02 Nov 2023 00:00:00 GMTGradual Dutch Auctions on Penumbrahttps://penumbra.zone/blog/dutch-auctionshttps://penumbra.zone/blog/dutch-auctionsPenumbra introduces protocol-level Dutch auctions for price discovery of new assets and better execution of trades, enabling gradual, privacy-preserving market matching.Wed, 24 Jul 2024 00:00:00 GMTShielded Staking on Penumbrahttps://penumbra.zone/blog/shielded-staking-on-penumbrahttps://penumbra.zone/blog/shielded-staking-on-penumbraPenumbra introduces private proof-of-stake using validator-specific delegation tokens, enabling private staking while maintaining validator accountability.Tue, 07 May 2024 00:00:00 GMTShielded Upgradabilityhttps://penumbra.zone/blog/shielded-upgradabilityhttps://penumbra.zone/blog/shielded-upgradabilityPenumbra Testnet 64 'Titan' introduces support for shielded chain upgrades, enabling network coordination on software versions while preserving private user data across upgrades.Mon, 18 Dec 2023 00:00:00 GMTStepping down from Penumbra Labshttps://hdevalence.ca/blog/2025-04-15-penumbra-labs/https://hdevalence.ca/blog/2025-04-15-penumbra-labs/Announcing my departure from Penumbra.Tue, 15 Apr 2025 00:00:00 GMTNuminexhttps://hdevalence.ca/blog/2025-07-08-numinex/https://hdevalence.ca/blog/2025-07-08-numinex/Notes on an experimental, multiplayer, open-world AI chat system built on the AT Protocol.Tue, 08 Jul 2025 00:00:00 GMT