Posts

Showing posts from April, 2026

Provenance Over Aesthetics: Why the Origin Story Matters in Generative Art

Image
Here's the situation that made me rethink the whole project. In 2024 someone could generate a thousand "unique" artworks in an afternoon with Midjourney. By 2026 those tools are faster still. If anyone can make infinite images, then the question that actually separates one piece from another stops being "is this pretty?" and becomes "why should I believe this is scarce?" The answer, I came to believe, is provenance — not aesthetics, not rarity traits, not a floor price. The verifiable origin story of how a thing came to exist. This post walks through the reasoning and the mechanics. If you're building generative art, whether or not you care about quantum computers, I think the question of provable process is the one that's going to matter for the next few years. The provenance problem Anyone can generate art now. A teenager with a free Stable Diffusion instance can produce photorealistic paintings. A Python script with three libraries can ...

SHA-256 for Developers: Turning Quantum Noise Into Deterministic Seeds

Image
Every piece in Quantum Genesis starts with a quantum measurement — a probabilistic event that produces a distribution of bitstring counts. But art generation needs a single, fixed seed to reliably reproduce an image. The bridge between probabilistic quantum data and deterministic art is SHA-256. What I want to show here isn't just what SHA-256 is. It's the specific way we use it, because the naive version has a subtle bug I hit the first time: the order of the measurement results matters for reproducibility, and if you get that wrong your "deterministic" seed stops being deterministic. This is the corrected pipeline, with complete Python code you can run yourself. What a hash function is A cryptographic hash takes input of any size and produces a fixed-size output. Three properties are what matter: Deterministic — the same input always gives the same output. On any machine, in any language, forever. One-way — given the output, you can't reconstruct the inp...

Getting Your Collection Visible on OpenSea, Step by Step

Image
Once the contract is deployed and the tokens are minted with metadata on IPFS, the next step is making them discoverable somewhere people actually browse. For us that meant OpenSea, and the process turned out to be less obvious than the one-and-done marketing made it sound. This guide is the step-by-step I ended up following, using our own collection ( Quantum Genesis on Polygon) as the running example. The good news if you're on Polygon, like us: listing a token for sale is gas-free for the seller because it's a signed off-chain order, not a transaction. Before you start Make sure these are in place first: A deployed ERC-721 or ERC-1155 contract — OpenSea auto-detects contracts on Ethereum, Polygon, Arbitrum, Optimism, Base, Avalanche, and other supported chains. Minted NFTs — tokens must exist on-chain; OpenSea reads directly from the blockchain. Metadata on IPFS or a reliable host — each token's tokenURI must resolve to valid JSON with name , description , imag...

Quantum Computing for Beginners, Without the Physics Degree

Image
I learned quantum computing the way I learn most things: by getting my hands dirty before the theory stuck. I didn't start with a physics degree — I started with Qiskit and a bunch of broken circuits. This post is the version of that journey I'd hand to a fellow programmer: a mental model you can actually use, followed by code you can run on real hardware today for free. If you can write Python, you can write quantum circuits. The math is genuinely fascinating, but Qiskit and friends abstract enough of it that you can build things immediately and pick up the theory along the way — which is exactly what we did for Quantum Genesis. Bits: what you already know Your laptop runs on bits. Each bit is 0 or 1, and everything your computer does — rendering this page, playing audio, running code — is billions of 0s and 1s shuffled around very fast. A byte is 8 bits and holds 256 values (2^8). A 64-bit processor handles 64 bits at a time. It's deterministic and predictable: set a v...

The ERC-721 Metadata Standard, Readable End to End

Image
The most demoralizing bug I hit early on wasn't in the smart contract — it was a blank card on a marketplace. The token existed, the contract was correct, and yet nothing rendered. The problem was metadata: one malformed JSON field and the whole display chain silently breaks. That's why I care about this standard more than the hype around it. An ERC-721 token is, at its core, just a number owned by an address. Everything people actually see — name, image, description — lives in a separate metadata file that the contract points to. This post is a working reference for getting that metadata right, from required fields to the display types that control how marketplaces render your traits. I'll use our own Quantum Genesis metadata as the concrete example throughout. How ERC-721 metadata works The token is just a number (token ID) owned by an address. By itself it has no image, no name, no description. All of that lives in metadata — a JSON file the contract references thro...

Polygon versus Ethereum for an NFT contract, from the gas bills up

Image
When we set out to put the Quantum Genesis collection on-chain, the first question wasn't about art or metadata. It was: where do we deploy? The answer looks obvious in hindsight, but only because we sat down and counted the actual costs before writing a single transaction. We minted 100 pieces on Polygon for roughly $1 in gas. The same operations on Ethereum mainnet would have run us $500 to $2,000 depending on the day. That gap shaped every decision that followed, so I want to walk through the numbers we saw and the tradeoffs we accepted along the way. Fair warning up front: Polygon is not a strict upgrade over Ethereum. It's a different security model with real compromises. Our reasoning was that for recording ownership of generative art, those compromises were acceptable. Here's the comparison that convinced us, and the cases where I'd make the other choice. The numbers that mattered Ethereum gas is a moving target, so any figure you read is a snapshot. A stand...

Choosing colors for generative art with HSL, not RGB

Image
My first attempts at generative art produced colors that physically hurt to look at. The problem wasn't randomness — it was that I was picking RGB values straight from a random number generator. RGB is how screens display color, but it's a terrible interface for design decisions. Want a "slightly warmer" version of a color in RGB? You'd be guessing at how much red to add and blue to remove. Want a pastel palette? Good luck computing that across three channels. HSL (Hue, Saturation, Lightness) maps directly to how people actually think about color. Once I switched my generative pipeline to think in HSL and only convert to RGB at the very end, every palette stopped looking like noise. This post is the mental model I wish I'd had, the five classic harmonies, and the Python that makes them repeatable — including how we feed quantum randomness into the whole thing for the Quantum Genesis collection. Why HSL wins RGB gives you 16.7 million combinations with no i...

The quantum gates that built our art, explained with Qiskit

Image
Every circuit we ran to generate the Quantum Genesis pieces is built from a small set of quantum gates. When I first picked up Qiskit, gates felt like abstract boxes on a diagram — I could run them but I didn't really get what they were doing. This is the walkthrough I needed back then, built the way I actually learned it: pick a gate, run it, look at the output, and only then believe the description. If you've never touched quantum computing, here's the one mental hook that makes everything else click: a qubit's state is a point on a sphere (the Bloch sphere), and each gate rotates that point. Different gates rotate around different axes by different amounts. A computation is just a sequence of rotations followed by a measurement that collapses the sphere to a definite 0 or 1. What quantum gates are In classical computing, logic gates (AND, OR, NOT) transform bits. Quantum gates do the same for qubits, but they operate on probability amplitudes rather than just 0s ...

Twenty lessons from minting a hundred quantum NFTs

Image
Quantum Genesis came together over 22 development sessions, from the first quantum circuit to 100 minted pieces on Polygon. Along the way we worked with two quantum platforms (Origin Quantum and IBM Quantum), three Python SDKs, two IPFS services, a hand-rolled Solidity contract, and enough debugging to fill a small novel. There was no blueprint for this. Every stage — hardware access, SVG rendering, metadata, the contract, getting it in front of people — came with its own set of surprises. These are the twenty lessons we learned the hard way, grouped by where they bit us. A few are technical gotchas; a few are process; a few are about how we thought about the whole thing. Quantum computing Lesson 1: pyqpanda3 will break your assumptions. Origin Quantum's Python SDK ( pyqpanda3 ) is a complete rewrite of the older pyqpanda . Different API, different class names, different default URL, and documentation that's almost entirely in Chinese. We lost a full session to discovering...