2016 » **Quirk**- Drag-and-Drop Quantum Circuit Simulator2021 » **Stim**- QEC Circuit Simulation Library2023 » **Crumble**- (PROTOTYPE) Point-and-Click 2D QEC Circuit Builder

18 Jan 2024 » [Talk at NFSQ] Halving the size of Surface Codes with Yokes (slides) 14 Dec 2023 » [Paper] New circuits and an open source decoder for the color code 07 Dec 2023 » [Paper] Yoked surface codes 18 Nov 2023 » [Paper] Tetrationally Compact Entanglement Purification 02 Nov 2023 » [Talk at QEC23] Less Bacon, More Threshold (slides) 20 May 2023 » [Paper] Less Bacon More Threshold 22 Apr 2023 » The mundane uses of quantum computers 28 Mar 2023 » [Paper] Sparse Blossom: correcting a million errors per core second with minimum-weight matching 23 Feb 2023 » [Paper] Cleaner magic states with hook injection 14 Feb 2023 » [Paper] Inplace Access to the Surface Code Y Basis 04 Feb 2023 » [Paper] Relaxing Hardware Requirements for Surface Code Circuits using Time-dynamics 07 Sep 2022 » [Talk at Quantum Summer Symposium] A short history of the honeycomb code 26 Jun 2022 » [Paper] A Pair Measurement Surface Code on Pentagons 29 Apr 2022 » [Paper] Stability Experiments: The Overlooked Dual of Memory Experiments 29 Apr 2022 » [Paper] Quantum Dictionaries without QRAM 10 Apr 2022 » Briskly Biased Bits 24 Feb 2022 » [Paper] Benchmarking the Planar Honeycomb Code 07 Feb 2022 » [Talk at iQuHACK] Ideas for quantum computing projects 30 Sep 2021 » [Talk] Software and the Honeycomb Code (slides) 22 Sep 2021 » [Video] Qubits vs Bits: The Kickback Effect 24 Aug 2021 » [Paper] A Fault-Tolerant Honeycomb Memory 06 Aug 2021 » [Talk at DEF CON Crypto and Privacy Village] How expensive is quantum factoring, really? (slides) 05 Aug 2021 » [Talk at QPL] Stim: A fast stabilizer circuit simulator (slides) 22 Jul 2021 » [Video] Discussing Honeycomb code code with Michael Newman 11 Jul 2021 » [Video] Estimating the threshold of a new quantum code using stim and pymatching 22 Jun 2021 » [Paper] A CCCZ gate performed with 6 T gates 29 Mar 2021 » [Video] The non-quantum delayed choice eraser 03 Mar 2021 » [Paper] Stim: a fast stabilizer circuit simulator 03 Dec 2020 » [Talk at IQFA] Spacetime Tradeoffs when Optimizing Large Quantum Computations 03 Dec 2020 » [Paper] Quantum block lookahead adders and the wait for magic states 09 Nov 2020 » [Paper] Focus beyond quadratic speedups for error-corrected quantum advantage 06 Nov 2020 » [Paper] Even more efficient quantum computations of chemistry through tensor hypercontraction 30 Aug 2020 » Inverting Clifford Tableaus 11 Aug 2020 » [Paper] Offloading Quantum Computation by Superposition Masking 05 Aug 2020 » [Talk] A Rosetta Stone for the ZS Calculus and the Surface Code 21 Jul 2020 » Decorrelated Depolarization 14 Jul 2020 » [Paper] Compilation of Fault-Tolerant Quantum Heuristics for Combinatorial Optimization 06 Apr 2020 » [Talk at QCTIP2020] How to factor 2048 bit RSA integers in 8 hours using 20 million noisy qubits (slides) 01 Apr 2020 » Factoring the largest number ever with a quantum computer 27 Feb 2020 » [Talk at Simons Institute] Estimating the Fault Tolerant Cost of Classically Intractable Quantum Computations (slides) 28 Nov 2019 » Surviving Chain Link Erasures 20 Oct 2019 » Producing an N+1 Qubit CCZ State with an N Qubit Adder 30 Sep 2019 » [Paper] Surface code dislocations have code distance L+O(1) 25 Aug 2019 » Spooky Pebble Games and Irreversible Uncomputation 08 Aug 2019 » The Frauchiger-Renner Paradox is a Sleeping Beauty Problem 07 Aug 2019 » Verifying Measurement Based Uncomputation 06 Aug 2019 » Weakening the Born Rule 23 May 2019 » [Paper] How to factor 2048 bit RSA integers in 8 hours using 20 million noisy qubits 22 May 2019 » [Paper] Flexible layout of surface code computations using AutoCCZ states 22 May 2019 » Constant Depth Encoded Addition 21 May 2019 » [Paper] Approximate encoded permutations and piecewise quantum adders 18 May 2019 » [Paper] Windowed quantum arithmetic 15 Apr 2019 » [Paper] Asymptotically Efficient Quantum Karatsuba Multiplication 27 Feb 2019 » [Paper] Improved Fault-Tolerant Quantum Simulation of Condensed-Phase Correlated Electrons via Trotterization 13 Feb 2019 » Improving Block Code Distillation (Part 3) 06 Feb 2019 » [Paper] Qubitization of Arbitrary Basis Quantum Chemistry Leveraging Sparsity and Low Rank Factorization 04 Dec 2018 » [Paper] Efficient magic state factories with a catalyzed |CCZ> to 2|T> transformation 09 Jul 2018 » Improving Block Code Distillation (Part 2) 12 Jun 2018 » Improving Block Code Distillation (Part 1) 20 May 2018 » Roulette Selection fit for a Quantum Computer 09 May 2018 » [Paper] Low overhead quantum computation using lattice surgery 09 May 2018 » [Paper] Encoding Electronic Spectra in Quantum Circuits with Linear T Complexity 09 May 2018 » [Paper] Encoding Electronic Spectra in Quantum Circuits with Linear T Complexity 23 Apr 2018 » A Slightly Larger S Gate 01 Apr 2018 » Announcement: My Quantum Cloud Service 10 Feb 2018 » The Bee Movie Singularity 04 Feb 2018 » Canonicalizing H+S+CNOT+T Circuits 28 Jan 2018 » Why Will Quantum Computers be Slow? 12 Dec 2017 » **A Classical Delayed Choice Experiment**28 Nov 2017 » [Paper] Improved Techniques for Preparing Eigenstates of Fermionic Hamiltonians 21 Nov 2017 » Proxy Phasing and Computed Phasing 13 Nov 2017 » [Paper] Quantum Simulation of Electronic Structure with Linear Depth and Connectivity 19 Sep 2017 » [Paper] Halving the cost of quantum addition 28 Aug 2017 » Shor's Quantum Factoring Algorithm 22 Aug 2017 » Breaking Down the Quantum Swap 06 Aug 2017 » Visualizing 2-Qubit Entanglement 31 Jul 2017 » My Preprints #2: A Slightly Smaller Surface Code S Gate 31 Jul 2017 » [Paper] A slightly smaller surface code S gate 23 Jul 2017 » Reversible Computation isn't Free 09 Jul 2017 » Impractical Experiments #4: High Powered Phase Estimation 28 Jun 2017 » My Preprints #1: Dirty Period Finding 23 Jun 2017 » [Paper] Factoring with n+2 clean qubits and n-1 dirty qubits 18 Jun 2017 » [Meta] Who Owns Quirk? 11 Jun 2017 » Computing Fractional Fourier Transforms 06 Jun 2017 » Simple Algorithm for Multiplicative Inverses mod 2ⁿ 24 May 2017 » Efficient Controlled Phase Gradients 02 May 2017 » Quirk v2.0 - Bowing to Convention 09 Apr 2017 » Thinking of Operations as Controls 02 Apr 2017 » Difficulty of Classical Control 13 Mar 2017 » Why care about circuit width? 04 Mar 2017 » **Bugs from the Future: Hadamard Coins and Implicit Measurement**01 Mar 2017 » [Meta] Joining Google's Quantum AI Team 26 Feb 2017 » Trouble Adding Constants into Qubit Registers 11 Feb 2017 » Quantum Bomb Detector Detectors 18 Dec 2016 » Quantum Data Locking vs Recognizable Data 12 Dec 2016 » Turning Detection into Correction with Quantum Teleportation 04 Dec 2016 » Improper Priors 27 Nov 2016 » Bra-Ket Notation Trivializes Matrix Multiplication 20 Nov 2016 » From Swapping to Teleporting with Simple Circuit Moves 13 Nov 2016 » Half-Baked Thoughts for a Quantum Scripting Language 07 Nov 2016 » Quirk's Performance History 22 Oct 2016 » Unfathomable Bugs #9: Lossy Shader Packing 03 Oct 2016 » The Quantum Version of the One-Time Pad is Teleportation 27 Sep 2016 » Post-selection is cheating 20 Sep 2016 » A Resource State won't get you out of Clifford Jail 10 Sep 2016 » Java should Autobox Arrays, or maybe not 31 Jul 2016 » Turning Gradients into Additions into QFTs 05 Jul 2016 » Wait, What?: Genetic Algorithms for Digital Quantum Simulations 26 Jun 2016 » [Un]popular Qubits #4: Affecting Atoms by Looking at Emitted Light 19 Jun 2016 » Quantum vs NP #2-B: Simulating 'A linear time quantum algorithm for 3SAT' 14 Jun 2016 » Using Multiplication to Cut Gates from the QFT 05 Jun 2016 » Erasure is Post-Selection 29 May 2016 » Ultradense Coding would allow FTL Signalling 22 May 2016 » **My Quantum Circuit Simulator: Quirk**15 May 2016 » Reducing Test Boilerplate with Ascii Diagrams 24 Apr 2016 » Eve's Quantum Clone Computer 05 Apr 2016 » Gradually Copying a Quantum Brain 27 Mar 2016 » Protecting Control Flow with Nested Evals 16 Mar 2016 » Wrapping Structure Around Batched Methods 01 Mar 2016 » Paper as Problem: 'Non-local measurements via quantum erasure' 25 Feb 2016 » Don't Use Github Pages' Jekyll Support 22 Feb 2016 » Catching a Crypto Bug in RedPhone 30 Jan 2016 » [Un]popular Qubits #3: The Quantum Pigeonhole Principle 19 Jan 2016 » Unknowable, but Equal 10 Jan 2016 » Using Eigendecomposition to Convert Rotations and Interpolate Operations 07 Jan 2016 » Deflating Delayed Choice Quantum Erasure 28 Dec 2015 » Quantum Teleportation's Two Subroutines 08 Nov 2015 » My Misconceptions: The Quantum Latch 01 Nov 2015 » Quantum vs NP #2: Zachary B. Walters 'A linear time quantum algorithm for 3SAT' 26 Oct 2015 » [Un]popular Qubits #2: The Quantum Zeno Effect 11 Oct 2015 » YOU versus Bell Tests and the No Communication Theorem 08 Oct 2015 » Rule of Thumb: Make Generic Code Value-Agnostic instead of Null-Hostile 17 Sep 2015 » My Misconceptions: The Unintegrable Function 02 Sep 2015 » Partially Erasing Entanglement: Measuring a GHZ Triplet into a Bell Pair 27 Aug 2015 » Quantum vs NP #1-B: Simulating a Claimed NP=BQP Algorithm 01 Aug 2015 » Quantum vs NP #1: Checking a Claimed BQP=NP Algorithm 20 Jul 2015 » Unit Testing with Symbols 05 Jul 2015 » **Things I Can't Solve: Multiplication**22 Jun 2015 » Using Quantum Gates instead of Ancilla Bits 12 Jun 2015 » Constructing Large Increment Gates 05 Jun 2015 » Constructing Large Controlled Nots 17 May 2015 » Impractical Experiments #3: Treating Controls Like Values 01 May 2015 » A Quantum Network Flow Puzzle 25 Apr 2015 » Entangled States are like Unitary Matrices 17 Jan 2015 » Superdense Coding on the Fly and in Reverse 25 Dec 2014 » [Un]popular Qubits #1: Quantum Compression 12 Dec 2014 » Dust your Tests 06 Dec 2014 » Perfect Symmetry Breaking with Quantum Computers 24 Nov 2014 » Converting Rotations into "Nice" Qubit Operations 15 Nov 2014 » Interpolating Qubit Operations 29 Jul 2014 » Logical Ingredients of a Quantum Computer 08 Jul 2014 » **Puzzle: Boxing Megaspheres**22 Jun 2014 » Rule of Thumb: Preconditions Should be Public 17 Jun 2014 » Counter-intuitive Counterfactual Strategies 07 Jun 2014 » Eating Lions, Wolves, and Goats Faster 03 Jun 2014 » Don't Trust the DOM 27 May 2014 » Cancelling Cancellation 15 May 2014 » Lower Bounding the Space Complexity of One-Pass Algorithms 11 May 2014 » Storing Bandwidth with Quantum Teleportation 03 May 2014 » Storing Bandwidth with Superdense Coding 27 Apr 2014 » The (not) Quantum Laplace Transform 13 Apr 2014 » Puzzle: Deflipping a Quantum Coin 04 Apr 2014 » Unfathomable Bugs #8: Day to Day 31 Mar 2014 » Rule of Thumb: The Condition is the Message 27 Mar 2014 » Don't Make Javascript Equality Look Worse Than It Is 25 Mar 2014 » Bad Ideas #1: Java-Style Methods in Objective-C 18 Mar 2014 » Positive Bias and Testing 16 Mar 2014 » Puzzle: Encoding the Remaining Card 11 Mar 2014 » Ordering Cyclic Sequence Numbers 07 Mar 2014 » Building your own Quantum Fourier Transform 01 Mar 2014 » [Meta] A New Home 19 Feb 2014 » What Quantum Computers Do Faster, with Caveats 09 Feb 2014 » Naming Things: Fail-Useful 29 Jan 2014 » Detecting Simple Cycles Forming, Faster 22 Jan 2014 » Third Party Bit Commitment 10 Jan 2014 » Angular Velocity is Simple 31 Dec 2013 » Collection Equality is Hard 22 Dec 2013 » **Deadlocks in Practice: Don’t Hold Locks While Notifying**17 Dec 2013 » Brute Force Parallelization 11 Dec 2013 » A Year’s Worth of Opinions about Objective-C 03 Dec 2013 » Referencing Substrings Faster, without Leaking Memory 26 Nov 2013 » Not Crying Over Old Code 19 Nov 2013 » Exploring Universal Ternary Gates 12 Nov 2013 » Impractical Experiments #2: Securing Peer to Peer Fog of War against Map Hacks 05 Nov 2013 » Achieving Exponential Slowdown by Enumerating Twice 29 Oct 2013 » Using Immortality to Kill Accidental Callback Cycles 22 Oct 2013 » Cancellation Tokens (and Collapsing Futures) for Objective-C 15 Oct 2013 » Visualizing the Eigenvectors of a Rotation 08 Oct 2013 » Collapsing Futures in Objective-C 01 Oct 2013 » Bug Hunting #1: Garbled Audio from End to End 24 Sep 2013 » Impractical Experiments #1: Representing Numbers as Polynomials 17 Sep 2013 » Implementing Quantum Pseudo-Telepathy 09 Sep 2013 » Turn On Your Damn Warnings 03 Sep 2013 » Big-O Made Trivial 02 Sep 2013 » Unfathomable Bugs #7: The Broken Oven 27 Aug 2013 » Solomonoff’s Mad Scientist 26 Aug 2013 » Yearly Blogging Roundup #1 20 Aug 2013 » What isn’t a Monad 13 Aug 2013 » Searching a Sorted Matrix Faster 06 Aug 2013 » How to Read Nested Ternary Operators 30 Jul 2013 » My Bug, My Bad #4: Reading Concurrently 23 Jul 2013 » Whole API Testing with Reflection 16 Jul 2013 » Optimizing a Parser Combinator into a memcpy 09 Jul 2013 » Don’t Treat Paths Like Strings 02 Jul 2013 » **Breaking a Toy Hash Function**25 Jun 2013 » Counting Iterators Lazily 18 Jun 2013 » Unfathomable Bugs #6: Pretend Precision 11 Jun 2013 » My Bug, My Bad #3: Accidentally Attacking WarCraft 3 04 Jun 2013 » Collapsing Types vs Monads (followup) 28 May 2013 » Collapsing Futures: Easy to Use, Hard to Represent 22 May 2013 » Eventual Exceptions vs Programming in a Minimal Functional Style 14 May 2013 » The Mystery of Flunf 07 May 2013 » Explain it like I’m Five: The Socialist Millionaire Problem and Secure Multi-Party Computation 02 May 2013 » Computer Science Blows My Mind 23 Apr 2013 » Transmuting Dice, Conserving Entropy 16 Apr 2013 » Rule of Thumb: Ask for the Clock 09 Apr 2013 » Rule of Thumb: Use Purposefully Weakened Methods 02 Apr 2013 » Rule of thumb: Preconditions Should be Checked Explicitly 26 Mar 2013 » Intersecting Linked Lists Faster 19 Mar 2013 » My Bug, My Bad #2: Sunk by Float 12 Mar 2013 » Repeat Yourself Differently 05 Mar 2013 » Grover’s Quantum Search Algorithm 26 Feb 2013 » Followup to Non-Nullable Types vs C# 19 Feb 2013 » Optimizing Just in Time with Expression Trees 12 Feb 2013 » **When One-Way Latency Doesn’t Matter**05 Feb 2013 » Determining exactly if/when/where a moving line intersected a moving point 29 Jan 2013 » Emulating Actors in C# with Async/Await 22 Jan 2013 » Making an immutable queue with guaranteed constant time operations 15 Jan 2013 » Improving Checked Exceptions 08 Jan 2013 » Perishable Collections: The Benefits of Removal-by-Lifetime 01 Jan 2013 » Decoupling shared control 25 Dec 2012 » Decoupling inlined UI code 18 Dec 2012 » Linq to Collections: Beyond IEnumerable<T> 11 Dec 2012 » Publish your .Net library as a NuGet package 04 Dec 2012 » When null is not enough: an option type for C# 30 Nov 2012 » Unfathomable Bugs #5: Readonly or not 27 Nov 2012 » My Bug, My Bad #1: Fractal Spheres 20 Nov 2012 » Working around the brittle UI Virtualization in Windows 8 13 Nov 2012 » Encapsulating Angles 06 Nov 2012 » Unfathomable Bugs #4: Keys that aren’t 30 Oct 2012 » How would I even use a monad (in C#)? 23 Oct 2012 » Useful/Interesting Methods #1: Observable.WhenEach 16 Oct 2012 » Unfathomable Bugs #3: Stringing you along 09 Oct 2012 » Anonymous Implementation Classes – A Design Pattern for C# 02 Oct 2012 » Tasks for ActionScript 3 – Improving on Event-Driven Programming 24 Sep 2012 » **Non-Nullable Types vs C#: Fixing the Billion Dollar Mistake**17 Sep 2012 » Unfathomable Bugs #2: Slashing Out 10 Sep 2012 » Abusing “Phantom Types” to Encode List Lengths Into Their Type 06 Sep 2012 » Constructive Criticism of the Reactive Extensions API 29 Aug 2012 » Unfathomable Bugs #1: You can have things! You can have things IN things! You can have … 05 Jun 2012 » The Visual Studio goes away 14 May 2012 » .Net’s time traveling StopWatch