This phrase was coined by the statistician George E. P. Box to describe probabilistic models, but it also perfectly encapsulates all the mental models we use to make sense of the world around us.
Human time and attention are scarce, and the universe is extraordinarily complex. As a result, we are forced to operate under imperfect mental models, also known in psychology as “heuristics.” Regardless of our level of understanding of any given subject, these models and ideas are necessarily erroneous or incomplete. The deeper one dives into any one subject, the more obvious George Box’s aphorism becomes.
Perhaps nowhere is this more readily evident than programming, where one of the most foundational principles is that of abstraction. To the visitor of a website, no knowledge of code is required to click links and input information, just as one doesn’t need to understand combustion engines to drive a car. We might have an approximate mental model of how they work but not an accurate one.
Similarly, web developers themselves need not understand the intimate workings of TCP/IP and the other core protocols on which the internet is built in order to build applications on them. We regularly use and incorporate software written by others in our own applications without ever knowing how they actually work. Software development, and technological advancement more generally, can thus be thought of as building on top of a series of these nested “black boxes,” with each box containing an even more abstracted-away mystery.
To those who haven’t invested the time to truly master the innerworkings of a particular technology, it might as well work by magic. The deeper you dive, however, the more the magic falls away.
This is what Jimmy Song did for me and the various other students of his workshop, Programming Blockchain: strip away the magic.
As a contributor to the Bitcoin Core repository and former vice president of engineering for the early bitcoin wallet software Armory, Jimmy Song is well known in the cryptocurrency space.
Through his regular written and video content, he’s established himself as a vocal figure in crypto, one who is passionate about improving bitcoin.
He also isn’t shy about sharing his opinions on what’s needed to do that:
“Training more developers is the biggest bottleneck in the ecosystem.”
Enter Programming Blockchain, Song’s flagship effort to give interested developers a deep crash course into the fundamentals of how the magic behind bitcoin and the blockchain actually work. Finite fields, elliptic curve cryptography, transaction parsing and validating proof of work are just some of the topics covered.
“It’s like a water hose of information for two straight days,” explained Song.
As a web developer fascinated with the wider implications of cryptocurrency for the last several years, I couldn’t resist.
Since blockchain is a global technology and phenomenon, it’s fitting that such an ambitious endeavor to demystify it is itself global in scope. The locations for Programming Blockchain vary widely, having been held and scheduled for areas as disparate as China, California, North Carolina and Israel.
“If the idea is to make more developers, I want to do this in as many jurisdictions as possible.” explained Song. “By doing this in different areas of the world, I am hoping developers in different areas of the world create more things. Having more businesses start in different jurisdictions reduces risk for bitcoin.”
The latest iteration of the workshop took place in Tampa, Florida. While not the most internationally recognized city, Tampa is home to a vibrant cryptocurrency community and the newly opened BlockSpaces, a co-working space dedicated to blockchain projects which played host to Programming Blockchain.
Choosing Tampa as a location paid off. This latest iteration of Song’s in-person instruction was his largest yet with 30 students. While some of these developers naturally hailed from the Sunshine State like myself, others had flown in from various locations including Washington D.C., California, and Brazil.
Blockchain is the hottest buzzword in tech, one that’s being thrown at everything. Surveying the ICO and blockchain landscape, you can find a project or startup for every use case from health data to banana tracking. No matter your problem, blockchain is the solution to your ills.
But what actually is it, how does it work, and what makes it so special?
It’s common to hear that blockchain is “the technology behind bitcoin,” a distributed and tamper-proof database which could be leveraged in many other applications. It’s also common to hear that like AOL or MySpace, bitcoin could quickly be overtaken by competitors who better leverage this technology.
But blockchain is so new and inherently different that all analogies aimed at simplifying it or the crypto ecosystem quickly fall apart in their usefulness.
Blockchain’s uniqueness makes it exceptionally difficult to understand because try as we might, we possess no preexisting conceptual pigeonhole to fit it into. By extension, it is exceptionally easy and tempting to project upon it a panacea for every problem without any clear idea of how it will help.
We take descriptions of the blockchain’s emergent properties such as “immutability” and “decentralization,” and often seem to conclude these are magical passive properties of blockchain which can be dragged and dropped onto any application. But there is no such thing as magic, and even the most seemingly benign assumptions made when thinking about cryptocurrencies and blockchain can be surprisingly off.
Take even the very concept of a bitcoin, which is itself nothing more than an abstraction. The bitcoin protocol tracks units of value only in satoshis, not in bitcoins. What many know as the “smallest” unit is actually the only unit in the protocol…