Who Wants to be a Web 3 Developer?
A humble collection of ideas for the blockchain-keen developer
Hello, friends!
Even the mildly curious amongst you would have noticed that it’s been ages since I updated this newsletter. I have my reasons, but it’s not an excuse not to apologize.
I am sorry.
But (!) exciting things have been happening. I’ve spent almost the whole of March frantically pushing code into the repository of a DAO I truly believe has the power to have outsized impact on the blockchain developer landscape. Most of my evenings have been spent in meetings, and most of nights have been spent staring at VSCode until my fingers start to cramp and my eyes water.
This is the life I begged for, so I cannot complain. We’re getting very close to launching the MVP, which is why I have some time to come up for air (to write this here newsletter).
Keep your eyes peeled, fellow developers interested in working with/on the blockchain.
Stacks, stacks, stacks.
What’s the conventional wisdom for getting involved in the blockchain as a developer? Something involving Solidity, I’m sure. At least, that was the case for me. I’ve pored over Solidity By Example, CryptoZombies, dApp University and BuildSpace (personal favorite) and Figment Learn (disclosure: I am affiliated with Figment).
The grand thing about this is that within a day or two you can have your first smart contract kicking about on the testnet. You could write a fully operational NFT minting contract, borrowing from tested OpenZeppelin libraries and from the battle-hardened formulaes of some of the more successful minting contracts around (hello, on-chain SVGs!).
It’s a heady feeling. The sort of thing that makes you tweet ‘this shit is easy!’
Soon, if you keep at it — and this is the part to watch — you start to wonder what’s next. You’ve hit the peak, and coming down the trough, you realize there has to be more to the blockchain than writing smart contracts.
I liken this condition to the first time I wrote my first to-do app in JavaScript. I was exhilarated for a day or two after which the sheen wore off and I started to wonder ‘well, what happens now?’
That’s a good place to be, I’ve decided on your behalf. Writing a minting contract is a neat trick, but at this point there are only so many modifications to the basic design of a minting contract one can make. You’re more or less writing a highly advanced form of the equivalent of ‘hello world’.
To broaden your horizon, you now need to get into the world of stacks. In lieu of the jargon, think of it like this: EVM-compatible blockchains have been around long enough that we now have the equivalent of web 21 APIs sitting on top of them. APIs for file (and cloud) storage, indexing, streaming data, authentication and identity, off-chain data management and interactions, governance, and so on.
More granularly, start to think about exploring the protocol layer, infrastructure layer, use-case layer and the access layer. The sprint goal here is to transverse these layers all on your own by building a simple demo application.
A handful of articles have been written about the web 3 stack. I especially like Nader Dabit’s2.
Because the web 3 ‘stack’ is not something that exists in any tangible form, there’s really no ‘best’ practice for what you should or shouldn’t do. Because of this, you’ll thrive best if you’re an adventurer and a thinker: what can you combine and repurpose to get closer to your objective?
In less abstract terms, if you wanted to build, say, your own version of an escrow service connected directly to a decentralized freelance interface, what combination of things would you use to achieve your goals? On this road lies a lot of documentation-reading and GitHub issue reporting, but that’s not new to us, is it?
Lately I’ve been exploring Bundlr (as a link to Arweave), Ceramic (for data composability, the full extent of which I haven’t quite grokked yet) and Solana (think of this as my current choice for a protocol layer).
It’s very reminiscent of the kind of thing you’d do in Web 2, and so this gives me more satisfaction. For a very long time I wondered what one could do beyond writing smart contracts, but thinking in terms of stacks broadens your horizons — or at least makes you think beyond reinventing the wheel at a fundamental level.
What I’ve been consuming
By Scott Alexander, whose thoughts (on anything) I enjoy. Here, he muses on the notion of being a ‘people’, a reflection triggered by Vladimir Putin’s assertion that the, ah, people of Ukraine aren’t really a people.
Proof of Work versus Proof of Stake? Choose your fighter (podcast)
Before listening to this, I took it for granted that Proof of Stake (validators as opposed to miners) was vastly superior to Proof of Work protocols. My opinion is generally unchanged, but I now have some perspective that gives me a much more balanced view here (I hope). A Bankless podcast.
The GitHub repository for the Udacity Blockchain Nanodegree
I consider this some form of auditing, having arrived from ConsenSys’ open-sourced version of their blockchain developer bootcamp. Primary objective: to study what is the commonsense structure of a blockchain developer education curriculum today.
By Eloquent JavaScript. A refresher never hurt anyone.
Optimal Autonomous Organizations
Opening gambit: DAOs are highly inefficient. Tough to argue with that. Next step: borrowing fire from an oft-overlooked but clearly Lindy organizational entity: the corporation.
Read it a couple times before, but it just seemed right to re-read it recently, you know? Plus it is a living document.
I wasn’t kidding about the auditing thing.
The Story of Next.js (video)
I actively began writing Next.js this month and a number of its design considerations fascinate me, so when Tyler (of uidotdev) made this video, I absolutely had to watch it.
Is HTML a programming language? (video, and spoiler: yes, it is)
Heydon’s Webbed Briefs project needs no hype, honestly. Go see.
Find More Ways to be an Outsider
It’s tough, but kewl.
Write code that is easy to delete, not easy to extend
Can’t confirm if this is great advice, but I’ll let you know it makes you write code faster (*apprehensive music starts unbidden*)
Justin explains why you should start a DAO (podcast)
It’s not even self-promotion if you think about it. It’s on-theme.
I’m sure I read and watched and listened to more things, but I didn’t keep thorough notes, so all you’re getting is what’s fresh in memory. I ought to do better. I will do better.
Until next time, keep striving.
— mogwai
I don’t mean these behave like web 2 APIs (even though many of them do), but that they embrace the idea of APIs (and, for that matter, blockchains): composable interfaces that you can combine and work with to create infinitely new products and services.
Incidentally a great resource for getting started as a web 3 developer.
Your writing is awesome. You inspire me a lot.
Is there a non-engineering approach to learning web3?