Posts

Showing posts from March, 2026

Screenshotting 100 SVGs to PNGs with headless Chrome on Windows

Image
We had 100 SVG artworks generated by quantum computers, and we needed PNGs to put on IPFS. SVG support across NFT platforms and wallets is inconsistent enough that we didn't want to rely on it, so the vector files had to become raster files. On Linux or macOS you'd type cairosvg.svg2png(...) and be done in five minutes. We were on Windows. It took considerably longer than that, and most of the "obvious" solutions quietly destroyed our art before I found one that worked: pointing headless Chrome at each SVG and taking a screenshot. The core problem SVG is XML, and converting it to PNG requires a real SVG rendering engine — something that parses the markup, executes gradient definitions, applies filters, composites layers, and only then emits pixels. That's the whole job, and the Python ecosystem's default tool for it is cairosvg , which wraps the Cairo 2D library: # This works beautifully on Linux and macOS import cairosvg cairosvg.svg2png(url="input...

Quantum supremacy in 2026 — a reality check from someone who ran real circuits

Image
I've spent real time with two of the most advanced quantum computers that are actually reachable over the internet: IBM's ibm_fez (156 qubits) and Origin Quantum's WK_C180 (180 qubits). We used both to generate the artwork for Quantum Genesis — running real circuits, collecting real measurement data, and turning quantum noise into abstract art. That hands-on time gives a different view of the field than most press releases do. This is that view: what "quantum supremacy" actually claims, where the hardware genuinely stands in 2026, what a developer can actually run today, and what I found running identical circuits on both platforms. What "quantum supremacy" really claims The term, coined by John Preskill in 2012, is narrow and specific. It means a quantum computer has performed a computation that no classical computer can do in a reasonable time. Not "could theoretically", but actually did it, with verifiable results. It doesn't mean...

Building the Quantum Genesis art generator: from measurement seed to SVG

Image
Quantum Genesis is 100 pieces of abstract art, and no human picked a single color or arranged a single shape. Every attribute was determined by a Python script fed with random data from real quantum measurements on IBM's ibm_fez and Origin Quantum's WK_C180. The machine hands back a probability distribution; the script turns that into a layered SVG composition. This post is the complete walkthrough of how that generator works — every layer of the composition, and enough code to build your own. If you're not interested in quantum hardware, the generator itself is fully portable to any random source; everything down to random.seed(42) behaves the same. The pipeline: seeds to SVG Four stages: Quantum Computer → Raw Measurements (4096 shots) → SHA-256 Hash (256-bit seed) → Python QuantumRNG (deterministic from seed) → SVG Artwork (layered composition) The quantum computer produces a probability distribution from 4096 measurement shots. We hash tha...

Writing a secure ERC-721 contract from scratch, without OpenZeppelin

Image
When we started Quantum Genesis I made a deliberate call that most people would probably talk me out of: we would not use OpenZeppelin. Not because it's bad — it's the opposite, it's the gold standard, audited and battle-tested — but because this project had a very specific shape. A fixed supply of 100 tokens, minted only by the deployer, no marketplace features. Inheriting the full OZ stack for that felt like pulling in a library to flip one switch. So we wrote every line of Solidity ourselves. This post runs through the contract's security decision-by-decision: why we skipped the library, the custom-error tradeoff, access control, reentrancy, the ERC-721 core, EIP-2981 royalties, and batch minting. One honest caveat up front: for production contracts holding significant value, OpenZeppelin is the safer bet, full stop. This approach made sense for our small, fixed-supply collection where we controlled the whole minting process. Keep that context through everything be...

Quantum Error Correction, or Why Your Qubits Forget What They Were Doing

Image
Every time I ran a circuit on IBM's ibm_fez to generate art for the Quantum Genesis collection, the results were never perfectly clean. There was always noise. Errors crept into every measurement, every gate operation, every qubit interaction. Most people read that as a problem. I turned it into the whole point of the project. But before I could appreciate the noise, I had to understand what it actually is. Quantum computers leak information. They forget. They are not like your laptop, where a bit stays a bit until you tell it otherwise. A qubit is a fragile thing, and the whole industry is spending enormous effort just trying to keep one honest. This post is about how that works — the error correction codes, why the naive "copy it three times" trick fails, and where the field actually stands today. Why qubits fail A classical bit stored as a voltage in a transistor stays 0 or 1 reliably as long as the circuit has power. Copy it a billion times and it won't deg...

Building a Quantum Random Number Generator with Qiskit

Image
Every random number your computer has ever produced is fake. That sounds dramatic, but it is technically true. Classical computers are deterministic machines. They cannot produce true randomness — only pseudorandomness , sequences that merely look random while being fully determined by an initial seed. Give random.seed(42) to Python and it will produce the same "random" numbers on every machine, forever. For most applications that's fine. But for cryptography, scientific simulation, and — as I found out — generative art, there are good reasons to want the real thing. A quantum random number generator (QRNG) exploits the fundamental indeterminacy of quantum mechanics to produce numbers that are genuinely, provably unpredictable. Not because the algorithm is complex, but because the universe itself has not decided the outcome until the moment of measurement. I built the QRNG in this tutorial for the Quantum Genesis collection, and it seeded all 100 pieces of art. Ever...

The Art Hidden in Quantum Noise: Why Decoherence Is the Medium

Image
Every quantum computer is in a war with the universe. The moment you prepare a qubit in superposition — balanced on that knife-edge between 0 and 1 — the environment begins to intrude. Stray photons, thermal vibrations, electromagnetic whispers from a cable three meters away. The qubit starts to forget what it was supposed to be. Physicists call this decoherence . Two timescales define the decay. T1 is the energy relaxation time — how long before an excited qubit falls back to its ground state, like a ball rolling downhill. T2 is the dephasing time — how long before the qubit's phase information dissolves into noise. On IBM's superconducting processors, both are measured in microseconds. Your circuit has a few hundred nanoseconds to run before the universe reclaims its randomness. I spent a lot of time fighting this noise while building the Quantum Genesis collection. At first I treated it like a bug. Then I realized it was the entire point. This post is about why I came ...