Made in Spare Time

NFTs: a deep dive

Creating my first NFT collection

Okay. So. NFTs have been popping up everywhere online and I’ve been genuinely curious about the whole NFT process. In order to learn more about NFTs, how they work, and whether they’re something that can be useful, I decided to take a deep dive and generate my own NFTs. This is an article about what I’ve learned about NFTs and my process of creating my first NFT collection.

What is an NFT?

The term NFT is an acronym that stands for Non-Fungible Token. To better understand that let’s first look to the definition of what fungible is:

Fungible: adj able to replace or be replaced by another identical item; mutually interchangeable.

Fungible is something that can easily be replaced. Non-fungible is something that can’t be duplicated. So, an NFT is a token that cannot be duplicated. Period.

How do NFTs work?

NFTs are based around a phrase that constantly gets floated around: the blockchain. In order to understand how NFTs can be useable, we need to talk about the blockchain. You’ve probably heard about bitcoin, dogecoin, ethereum, cryptocurrencies, or something of that nature in the news or online. These are all systems that operate on what is called the blockchain.

The blockchain is fairly simple when you stop trying to think about it too much. Essentially, it’s a ledger of a bunch of records that a bunch of different computers all get together and agree is accurate. That’s it. It’s just a running ledger.

When we’re talking about cryptocurrencies, all that we’re doing is keeping a log that is accessible by any computer on the internet and we can see when somebody transfers a coin or, in the case of NFTs, a token to another individual.

The way that we can make sure that this is reliable is having a bunch of computers verifying that each transaction is legit. If “A” is transferring a token to “B”, the computers check to see if “A” actually had the token to begin with, and if they all agree, creates a new line in the log that says that the token that formally belonged to “A” has been transferred to “B”. Now, that the transfer has been completed and that result has been shared with the rest of the blockchain, if “A” were to later try and tranfer the token to “C”, the computers would check the history of the ledger and go “Nope, ‘A’ already gave that away. ‘A’ cannot give away the token again.”

When we’re looking at NFTs, we’re looking at tokens that are representations of other objects. They can be real world objects but in most cases, they are digital objects. Like this JPEG: A JPEG

This picture is a picture that anybody in the world can currently download if they have internet access. When we’re talking about NFTs we’re not talking about owning the actual picture file. Anybody could copy and paste the file and have an exact duplicate.

But, an NFT gives you a token that says “This token represents the original image that was actually created. There can only be one of me in the world because I am ‘non-fungible’” and the blockchain will agree and say “This is the only token that represents that picture”.

It may sound dumb. But it’s the only way that somebody can directly assign value to digital artwork.

In the real world, we don’t have any magical devices that can just copy and paste real world objects and create an exact duplicate down to the atomic level. If we did, it’d be hard to give any value to something like the Mona Lisa. If we were able to just duplicate the Mona Lisa it would lose its value because value is based on scarcity. There can only be one true Mona Lisa.

That’s not the case for digital artwork. There can be a trillion exact copies of the JPEG above and every one of that would mean that the picture wouldn’t hold any actual value because anybody can have it. So, to give the picture value, we must introduce scarcity. And to introduce scarcity, we assign the picture a token that can’t be duplicated. A token that is non-fungible.

Welcome to the world of NFTs.

How can I get into NFTs?

So now we know what an NFT is. The next question is, how do we get an NFT onto the blockchain. To do that, we need to connect to the blockchain, and create a line in that running ledger saying “Hey! This Token is now a thing that can be shared!”

To do that, there are several marketplaces that allow you to upload your digital files and they will go through and generate the NFT on the blockchain for you. In my case, I’m using one of the most popular marketplaces for this process: OpenSea.

How I made my first NFT collection

Before I upload something to OpenSea to get my hands on all this NFT madness, I first needed to have something of my own that I could assign NFTs to. For this, I wanted to do something geeky and something creative.

The idea

To get some inspiration for my future NFTs, I started exploring around OpenSea a little to get a feel for what the marketplace generally liked. There is an abundance of procedurally generated avatars that look like they could be profile pictures. But there are also collections of digital art that look more akin to traditional artwork that we know from the likes of museums.

I started thinking about using my programming skills to create a program that procedurally generates images that look more like traditional art.

But I didn’t want to just take an image and put a filter over it that makes it looked like it was created with brush strokes and call it a day.

I wanted to simulate the actual creation of this work of art. So, I needed something that was relatively simple.

That’s when I thought of Jackson Pollock.

Jackson Pollock’s Convergence

Jackson Pollock’s drip paintings are something that I felt that I could actually mimic in a digital representation. I didn’t have to worry about recreating actual forms like bodies or landscapes. But I could still create a piece of art that could evoke an emotion.

And that lead me to my next thought: what was I going to try and capture with this artwork? Emotions.

I started researching online about emotions and found an interesting article that explained that researches at UC Berkeley had identified 27 distinct categories of emotion. With that in mind, I wanted to make a program that would take these 27 emotions and generate digital drip paintings in the same style as a Jackson Pollock painting!

The program

I’m going to do an in-depth write-up on how exactly my programming project ended up working and my thoughts about going forward with the project. But for discussion purposes here I’ll lay out what my program does at a basic level to generate this artwork.

First, the program takes a list of keywords as an input to begin generating art. For my current project, I provided the 27 distinct categories of emotion for the program to look at.

Next, the program searches for an image online that matches to that emotion. It currently uses Pexels to search for images because I know that every image on that website is royalty free and this isn’t somehow going to come back in bite me.

After getting a base image, the program runs a color selector algorithm on the downloaded image and selects the 6 most common colors that are displayed in the image that is the representative of our keyword. This gives us our color palette for the paint drips.

The next step is we generate some random values using our keyword as a seed for the random number generator to be used in the process of simulating the paint drips including how many paint drips will be simulated.

After we get our color palette, and some basic numerical values for the paint drip simulator, I feed that data into the simulator and let it run for the few minutes it takes to generate every image.

I’m going to be 100% honest here. I originally set out to build the paint drip simulator all on my own. But in the process of researching the math and physics that would go behind this generator, I found this great resource. Tom Booth created this wonderful program that simulates paint splatter, paths, points, the motion of flicking paint across the canvas, and even creates a nice output of the image.

The beautiful thing is that with some tweaking of the code (that’s shared under the MIT License so I can use it and modify it), I can input the parameters that I had generated above and boom I have a programmatically generated image of paint drips in the style of a Jackson Pollock painting that is a representation of the keyword that I provided to the program!

This one is based on the emotion “Amusement”!

Amusement Drip Painting

The collection

After I generated an image for each of the 27 human emotions, I set out to uploading them on OpenSea which was a relatively straightforward process.

I created a profile by connecting a crypto wallet that I had previously opened in past projects exploring crypto.

I uploaded each of the images one-by-one providing a description of each image.

And, I lumped them all in the same collection that I titled: Dripping with Emotion.

Et voilà!

My first NFT Collection of generative art is officially on the blockchain and I’ve listed the first piece of art on a timed auction on OpenSea!

See my the first of my paintings in Dripping with Emotion collection below!