Hey there!
I hope your March month is going well! In this edition, I want to talk about my motivation for an NFT I’ve just launched.
So, the “Go Faster” book has been finished for about a month now, and I’ve been toying with the idea of self-publishing a hardback version. It’s actually surprisingly easy to do via one of the many print-on-demand publishers that exist.
However, the fixed costs are pretty high for the run size likely to be needed, so I expect it would be a loss-maker on a per-unit basis :(
But, it feels like another item on my “technical bucket list” - just like writing the Go Faster book itself was - after all, it’s not a real book unless it’s in print and has an ISBN (at least that’s how my mind works ¯\_(ツ)_/¯).
So, I’ve taken a different approach, one that requires only effort on my behalf, and not capital outlay, and instead launched an NFT (non-fungible token) collection for the book. The intention is that any proceeds of selling the NFT will go towards funding the hardback.
The collection which is now on OpenSea uses the theme “Goat speed” - which many of you have ribbed me about over the years - in good fun - and your comments, such as the one below, have often tickled me.
“Goat speed”? Is your substack about performance parts for Goats?
The Goatspeed NFT collection comprises twenty-five individual book covers which I hacked together using appropriately licensed SVG graphics. The rocket gopher was originally created by @egonelbre, and is part of several excellent go-themed graphics which are commonly used by the Go community. BTW you can find that artwork here if you want to use it yourself.
Each NFT has a link to an individual copy of the Go Faster book which uses that same artwork on its cover. The books, which are in PDF format, are stored in the decentralized file storage service IPFS. I used Filebase to provide simple access to IPFS.
Launching an NFT is quite an exciting project in itself and worthy of my technical bucket list, but I baulked at writing the Solidity smart contract myself ( I used to know a little about Solidity, but I didn’t want to risk it). Another job for 2023 - refresh my Solidity!
Instead, I used the OpenSea platform which makes it very simple to publish an NFT or indeed a collection of them. Two major benefits are the ability to edit the contract data before launching properly - allowing the amendment of the inevitable errors before the tokens are minted, and secondly, OpenSea offers a feature called “lazy minting”, which means you pay no Gas fees until sales of your NFT start to happen, so there’s no initial financial outlay.
And I’m glad I went the OpenSea route since I discovered I’d made mistakes in the metadata which accompany the NFTs. Those mistakes would have been impossible to correct had I published the smart contract myself. Instead, on OpenSea, I could delete everything and start again, since I hadn’t sold anything. It ruined my Saturday, but will teach me to take more care around blockchain immutability!
I used Golang to create the books. LeanPub is ok with me doing this as long as they don’t contain references to the LeanPub platform and the version being sold there. So I wrote a remarkably simple Go program, to strip the cover and second page from a master copy of Go Faster and then create twenty-five new books - all with their individual cover art and a new second page.
The program uses the excellent PDF manipulation package pdfcpu. The Go code itself - in case I’ve given you an NFT idea - can be found in this Github Gist :)
So that’s it, check them out and let me know what you think. I’m not expecting to make a fortune, but it was a fabulous learning process and one I’d encourage you to try if you haven’t - if only to say you’ve done it :P
Until next time!