Hackers: Heroes of the Computer Revolution

As a software engineer for more than 20 years, I have seen how computing has evolved since the beginning of internet age. A couple of months back, I heard one of my seniors passionately speak about his computing experience from the 80s that evoked my curiosity on early computer revolution. My search for an authority on this topic ended with the best-selling book by Steven Levy about hacker culture published in 1984 – Hackers: Heroes of the Computer Revolution.

The intriguing element of the book is “Hacker Ethic” – in Steven’s words, it was a philosophy of sharing, openness, decentralization and getting your hands on machines at any cost to improve the machines and to improve the world. He narrates computer evolution from mid 1950s till 1984 from a hacker perspective, covering people and machines that might not be well known to people from the internet age.

For software engineers of current millennium who take CPU speed at gigahertz and memory at terabytes for granted in 64-bit machines, it is unfathomable that predecessors from this hacker era created wonders with a tiny fraction of these resources in 8-bit machines. Assembly language programmers were a celebrated lot and they innovated by hacking primitive microprocessor-based computers with machine language!

Steven explains how “Hacker Ethic” evolved over three decades starting from the closed community of early mainframe hackers on time share terminals at MIT, to the open community of self-made hardware hackers out of their garages at Silicon Valley, finally paving the way for game hackers. This forms the three parts of the book that I have summarized in the picture below.

I have watched several videos on personal computing revolution and particularly enjoyed Triumph of the Nerds. But reading a book is always a unique experience as it gives an opportunity for imagination. As I read this book, I felt as if I was sitting beside the hackers and watching them code. While computing has changed a lot over generations, one aspect has remained just the same – hackers always push computers to the limits and their hunger for more has driven the industry forward!

Blockchain

Blockchain is a distributed ledger that is used to record transactions of a digital asset such as bitcoin. It has been one of the most talked about technologies in the 2010s, continuing to be popular for its tamper-proof design even after bitcoin became notorious for its price vagaries.

Blockchain became a mainstream term since 2014 with applications across several industries being explored – to store data about property exchanges, stops in a supply chain, and even votes for a candidate. I have been following blockchain for many years and finally got some hands-on experience on Ethereum while completing a Pluralsight course.

In this blog, I have listed key blockchain terms / concepts with brief description and also summarised the development environment used:

  • Blockchain is a chain of digital data blocks, with each one containing:
    • Information about transactions such as date, time, amount, price, etc.
    • Unique code called a “hash” that distinguishes a block from another. This is generated by a hashing process.
  • Hashing: an algorithm performed on data to produce an output that can be used to verify that data is not modified, tampered with or corrupted:
    • Length of output always the same.
    • One-way: the hash cannot be converted back into the original key.
    • Digital fingerprint that allows verifying consistency.
  • Obfuscation and Encryption provide data security to blockchain.
  • Key features of Blockchain: Immutable, decentralized, verifiable, increased capacity, better security, faster settlement.
  • Blockchain can be public (like Ethereum) or private (like R3 Corda).
  • Top implementations: Ethereum, Hyperledger Fabric, Ripple, Quorum, R3 Corda.
  • Distributed Applications (DAPPs) architecture using Ethereum: Blockchain encapsulates shared data and logic related to transactions while client is responsible for interface, user credentials and private data.
  • Payment for transactions is made through “gas”.
  • Transactions contain information on recipient, signature, value, gasprice, startgas and message.
  • A consensus mechanism is required to confirm transactions that take place on a blockchain without the need for a third party. Proof of Work and Proof of Stake are the two models currently available to achieve this.
  • Proof of Work is based on cryptography, hence digital coins like Bitcoin and Ethereum are called cryptocurrencies. Cryptography uses mathematical equations that are so difficult that only powerful computers can solve them. No equation is ever the same, meaning that once it is solved, the network knows that the transaction is authentic. Although Proof of Work is an amazing invention, it needs significant amounts of electricity and it is also very limited in the number of transactions it can process at the same time.
  • With Proof of Stake, miners can mine or validate block transactions based on the amount of Bitcoin held by them. This way, instead of utilizing energy to answer Proof of Work puzzles, a miner is limited to mining a percentage of transactions that is reflective of ownership stake.

Development environment:

Ethereum uses a programming language called Solidity, which is an object-oriented language for writing smart contracts. Solidity plugins are available for popular IDEs. I used the following setup:

  • IDE – Eclipse with YAKINDU-Solidity Tools / Visual Studio Code
  • Node.js Package Manager – npm
  • Windows Package Manager – chocolatey (installed from Powershell as administrator)
  • Node.js Windows Build Tool
  • Local ethereum test server and emulator – Ganache / Test RPC
  • Dev & Testing framework – Truffle Suite
  • Crypto wallet & gateway – Metamask
  • My practice code – https://github.com/gsanth/experiment/tree/master/ethereum_experiment

To summarize, Blockchain’s potential as a decentralized form of record-keeping is enormous. From greater user privacy and heightened security to lower processing fees and fewer errors, blockchain technology will continue to see applications across several industries. However, it is easy to get carried away by blockchain’s apparent potential and get into technology overkill. So, it is important to understand the pros and cons of blockchain, and ensure we leverage it for the right use cases.

ProsCons
Decentralized (difficult to tamper)Technology cost for mining
Improved accuracy (no manual effort)Low transactions throughput
Reduced cost (no third party charge)Poor reputation (illicit activities)
Transparent Technology