If you’re hoping to read about Cantographs being a technically sophisticated generative art project, you’ll be disappointed. If you want to read about it being a snapshot of a sea change in how creative coding is done, I’ll tell you how it came to be.
This project began when word was first starting to spread about Canto – a new Cosmos EVM-compatible chain built (rumor had it) by some Based developers. If you’ve read up at all about my personal history with $BASED, you can imagine that I was excited but cautious. If I’ve learned anything, it’s that I usually don’t understand the mechanics and implications of complex financial crypto machines like this until long after everyone else has learned it and exploited whatever weaknesses there were. I liked the rhetoric of the descriptions of this chain, though, and when all else fails I at least admire the attempt to try to talk about more equitable systems. Whether $Canto is prepared to be that for people in reality I just don’t know.
Anyways, I’d heard a bit about this chain. Knowing the intimate connection with Based and seeing that NFT smartcontracts were just beginning to be developed there, it didn’t take a genius to see there would be some demand for Ghouls-related tokens there. Colin Platt was screwing around in the Based Ghouls chat dropping crazy re-rendering SVG tokens as NFTs and generally impressing everyone with how playfully he could execute novel smart contract functions. It didn’t hurt that he was the richest man in the world. Colin was involved in some capacity working on smart contracts on Canto, and so I reached out pretty early on just to sort of get ahead of the thing and try to herd some cats in a direction I thought that *someone* would attempt if it wasn’t the actual Based Ghouls team.
The early CANTO pitch-deck materials had some very cool Terminal / ascii art flavored design that eventually made it into the site. Ascii style things is an absolute mood. The earliest demos of designs for Cantographs were very terminal-inspired and had more complex compositions.
If you’re into NFTs and art, you may be peripherally aware of collections like DOS PUNKS by Max Capacity or DOS TRASH BIRDS. With all due respect to the artistry of these collections (and they did curate and create neat stuff) the Playscii program by JP LeBreton has been a real staple in ascii art since he released that program. It really is an incredible piece of software that uses some algorithms to not just analyze pixels but it seems like it actually evaluates structures and processes them into different retro computing character sets. I haven’t even looked at the code for it. LeBreton has made it clear he is vehemently against NFT artwork. In my opinion this is a real shame because he has so much to offer the artists of the space and in turn people seem to just want him to be paid instead of co-opted. It is what it is though, and LeBreton’s relationship with blockchain enthusiasts has soured. This put us in a unique place, however, where what was obviously the best and most immediate solution for making cool ascii Based Ghouls was one that we had mixed feelings about, ethically. Nevermind that we (the Based Ghouls “team”) disagreed with LeBreton’s reasons for disliking NFTs – it felt wrong to leverage his software to create something against his wishes – even if it is open source. That was just our decision – I am actually a member of the DOS PUNKS DAO so I’m obviously not hardcore against it in general.
So we decided to try some other things in the same direction. We worked on this and that and animated and static effects – just typical art project R&D. This is all happening during the advent of AI-generated art going from a trickle into a flood, and the launch of chatGPT. I am not a coder by trade. Despite having launched an artblocks collection – my limitation is that I can write cute For() loops and While() functions and generally do programming logic, but a lot of the heavy lifting just isn’t something I enjoy enough to master, and certainly not something I’m usually paid to do professionally. It took me a long time to research all the functions and math tricks and logical patterns and loops that were built into something as technically simple as autoRADs on artblocks was. The real virtuoso generative artists are doing things with emergent patterns and noise functions and flow fields and god-knows-what-else that I just do not have the sophistication to work on. This, I think (they never said), is why my artblocks project is a Factory release and not Curated. I’m fine with that.
That last bit may have felt a little self-absorbed, but realizing these limitations about myself means that I wanted to try a new approach. I had heard rumors that you could use OpenAI and chatGPT to experiment with code. This was something of a revelation to me. As a father with young kids, it’s hard to figure out what your kids will need to know to be successful in life: they are not growing up in the same era that all your experience of growing up came from. Do you teach them to type or will voice-to-text be flawless? Surely you have to at least teach them to move files around, upload things, manage their own data? Will they need to code to do technical work – or does openAI mean that they just need to be able to describe what code does?
When I was teaching I used to tell my students they needed to learn the correct terms for things or they could never google them to find out more. That’s not really the case anymore if chatGPT can figure out what you mean by description. Likewise, all the difficult work of figuring out what programming functions do the things you imagine and memorizing their names is less important if the description of those functions can summon the basic code. I hope we don’t abuse that too much building infrastructure in the future – but for a simple creative project why not?
So I jumped in openAI and asked the sandbox mode to write a few short programs for me like “create crystals in processing” or “write code to convert images to sin waves” and things like that. The simpler the request the better the answer usually was, and if you know a language well enough to police the AI syntax and have some ideas of what can and can’t be done – you can start making neat stuff pretty fast. If you know your way around well enough to start piecing together functions you’d figured out in the past (like saving or prompting for file inputs) you can build a lot of functions quickly around one new thing that you didn’t know how to do before. It was as simple as this: I didn’t want to use Playscii, so I asked openAI to write a new image to ascii conversion function. It came up with one that sort of worked (after I fixed some syntax) and I took the basic principle of it and expanded it to have lots of variation, to choose from different character sets or random ranges of characters, to change the padding and spacing based on font sizes, basically just being creative and expansive with a basic new idea.
I was really enjoying what I could create with this pretty quickly. I stumbled into some aesthetically pleasing character set and spacing combinations at different thresholds and whenever I found one I really liked I’d save it. In the end, Cantographs had character sets labeled:
Nephilim are huge and kind of hard to make look nice. Telos is purpose, simple and direct – straight lines and forms. Construct refers to the lines that build structure, and it’s a Neuromancer thing. Hash gets fuzzy around edges (drug culture references seem cool and hashes are obviously blockchain-related). Encrypted uses some random functions and it doesn’t work the same way twice, so I imagined it was encrypted by the random function that it called making it. Jack of Diamonds is because there’s diamonds (duh) but Jack of Diamonds was also the nascent Russian Avant-Garde group in the early 20th century. Starets was the first character set I built, and the satisfaction that one provided was a guide to me for when one was ready: a starets is a spiritual guide in Russian piety.
I spent hours after that using various programs I had written and functions in Adobe programs and just generally throwing the kitchen sink at creating interesting circles. Why circles? If you haven’t picked it up, I have a running mystical theme in my modernist geometry. Designers like Bruno Munari insist that the circle is associated with the divine. On the other hand, they just look nice – we don’t need to make everything meaningful to enjoy it, do we? Designing these circles and saving them out with batch layer exports also surprised me: Adobe has a known issue with exporting layers where random pixels exist despite being invisible and deleted in the original file. At first I was really annoyed. Then I realized that these mistakes, “artifacts” of failed exports made interesting design flourishes – like sun flares or something. I kept some of them as neat details. That meant there were now clean and “artifacts” designs – and when I tried sending finished designs back through the ascii or processing with multiple character sets – or just generally breaking or duplicating processes, I decided that those more complex renders should be called “transcended” since they had transcended the basic concept.
I talked with Colin some more here and there and kept him updated on my progress – which was mostly me enthusing and sending a bunch of random PNG files. He said that I needed to come up with the .json for these – the metadata files. It may surprise you that I didn’t really know how to do this – my partner Tartaria Archivist coded the json portion in Node js for my artblocks drop. Hashlips art engine generates JSON for art you stack from PNG folders – but I wasn’t stacking anything, I had finished sort-of-generative artwork that had different qualities but wasn’t being built programmatically like that. I was doing so much manually that I figured I could name all of these, and if I could come up with a way to process those filenames into json data automatically I could maybe work that out (too much room for human error trying to code and save that many documents by hand). I’m dumb though, and was just lucky that I had learned the basics of using node JS to help with some Glitchforge.xyz programs from Tartaria. I spent more than a week trying to figure this out – which I’m sure a professional could have done in 5 minutes. It eventually occurred to me to just ask openAI again for simple things like “read directory and save filenames to an array in nodejs” and then work it out from there. So I did things like that, and in about another week of hard work afterhours I had a working script to generate metadata based on splitting filenames. Nothing profound.
So then I sat there and surveyed the whole collection and just named the colors of the backgrounds, the palettes of different Cantographs – grouped them by vague concepts and references like “vibes” (soft greens, turquoise, oranges prevalent, yellows relaxed) or “neo-tokyo” (slightly warmer than Snowcrash, cyberpunk blues and pinks and whites and cyans). These traits are descriptive rather than prescriptive – meaning there wasn’t a program that was fed color palettes and named traits – but these are aesthetically evaluated and named as consistently as one person naming a thousand art pieces can be. There’s also cases where the non-glowing version of something fit into a different theme than the glowing version when the colors were ignited. Hopefully all the json was processed correctly, but there’s bound to be an error in there somewhere I should think, despite our testing, so hopefully that will feel like a misshapen action figure or something that’s interesting.
The end came incredibly fast: I told Colin I thought I was done and had a system for the metadata worked out. We shared some files back and forth and he sorted out the blind mint system pretty quickly, told me my json data was incorrect but a friend had already fixed the formatting and it would work. What I thought would take weeks took just a couple days and we launched. I was just lucky that it took me that long to figure out everything and make it and the market went from not even existing when we began to being a hot place looking for something to latch onto. I hope that people enjoy the art for it’s own sake. I’m thrilled that the idea has become popular that it’s “The Based Ghouls Art Clique” that knows how to make cool things – because I have several friends who are just that, and I can’t wait to see what kind of art and collectibles they bring to Canto and the crazy memetic artistic soup that we’re all exploring together.