“I’m writing this in 2016. Now we’re living in a future that most developers in the 80’s would not have imagined.
Today we store our programs in repositories that keep a complete copy of every version of every file, on each computer that uses that code. Today we avoid conflicts with the copies of programming languages like Perl, Ruby, Python and NodeJS, that are built into our operating systems by keeping personal copies of their entire toolchains, including libraries – and frequently multiple versions because specific applications that we use are pinned to specific versions of the languages they’re written in.
Persistent storage is so cheap that when NodeJS’ npm utility installs a dependency, it also installs all of the dependency’s dependencies. So if you have 23 dependencies that all depend on
left-pad, you’re going to have 23 copies of
left-pad installed. To an 80’s programmer this sounds awful – crazy wasteful, but it saves npm from Microsoft Windows-style DLL Hell.
We have so much storage, memory, CPU power and bandwidth at our disposal that with Vagrant we copy entire installations of operating systems to our computers and run them simultaneously with the computer’s native OS.
And blockchain – the new sexy in the tech world – is a cryptographically secure distributed journaled database (which means you have a very high level of confidence that its transactions are accurate and complete, that you can see its history, and that there are many copies). Back in the resource scarcity days you’d assume that “distributed” meant pieces of it were scattered all over the place. Distributed today means that everyone has a copy of the whole thing, which is kept in sync. Because storage and bandwidth are so cheap and plentiful, why wouldn’t you?”