Posts

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...