Background

A few months ago, Mayank convinced me to get some Ether (Ethereum cryptocurrency) because it was going to go on a bull run, thanks to high-profile companies backing Ethereum by joining the Ethereum Enterprise Alliance (EEA). So I did. And that event did happen – including Microsoft, Intel, MasterCard, Cisco, JP Morgan and the State of Andhra Pradesh, and yes, Ethereum went through a bull run (to $336 per ETH, as of this writing).

That’s when I started going down the rabbit hole of the cryptocurrency space 😬

What is blockchain, cryptocurrency and Ethereum?

The way I understand it is that cryptocurrency is digital money. So why is it different from PayPal or Paytm? Because this is not a national currency like rupees or dollars, this is a currency “for the people, by the people, of the people”. No government has sanctioned it or vouches for it. Sounds nuts, right?

But that’s what so exciting. Think of how people tinkering with technology can start a transformation like Steve Wozniak designing the Mac or Tim Berners-Lee creating the world wide web. People are now tinkering with creating a virtual currency that nobody can control, except by the participants agreeing to make changes, which makes it democratic and hence chaotic at the same time.

A good introduction to blockchain is this video by Gavin Wood, one of the cofounders of Ethereum.

For a visual introduction to the parts of a cryptocurrency, see this video by 3Blue1Brown:

To know what is Ethereum, see WTF is Ethereum?

Blockchain @ Berkeley

So all this got me curious about things at an implementation level (yep, it’s an ongoing theme with me). So, again, via Twitter, when I read that Blockchain @ Berkeley was hosting an Ethereum dev bootcamp, I signed up!

Note that I could have probably learned the same stuff online such as going through the Blockchain @ Berkeley’s Decal videos, etc. I just preferred a 2-day immersion, so I went to the in-person course.

The first day was an introduction and tons of questions by the audience. Everything from architecture to economics and incentives to security. Then we got an introduction to Solidity language and used the Truffle framework to practice writing a simplistic ecommerce shop smart contract.

It is scary that Ethereum-based software, i.e. software that is also money and a financial system is being built on Javascript. No wonder our instructor said “the worst language you’ll ever use”. If you thought Javascript ecosystem was wild, Ethereum gets even wilder. There is some hope in the form of best practices codified as a library and other such wonders of open source code communities.

Also, Ethereum founders are shifting focus from the solidity language which is javascript-y to a new language called viper (that also runs on the Ethereum Virtual Machine) which is python-y. Maybe there’s a moral in there somewhere…

The second day was an overview of oracles, web3.js, metamask, security (how not to ICO), authentication. There was so much to absorb here.

Special thanks to the instructors Ali Mousa and Collin Chin for a useful course. In fact, they had just finished a smart contract project on an internal supply-chain system for Airbus, and had plenty of practical advice to offer.

Dangers

There are many dangers lurking such as cryptos being disinflationary, so be careful with investing in ICOs.

Also, question the value of building something on the blockchain. Maybe only advantage of something being a decentralized app is lack of censorship.

What does it all mean

The idealist in me really wonders if all of this is really happening. People are actually working to decentralize the web and on top of that, raising more money democratically than traditional venture capital via Initial Coin Offerings (ICOs). Even creating new kinds of venture enablers. But I do wonder about actual user adoption though. I guess this is a “build it and they will come” excitement.

There’s still a long way to go to make the development tools and the ecosystem better and safer though. Every podcast I’ve heard describes the current state as the “dialup days of decentralized web (web3)”.

Even then, all the nerds are excited. Why? Because we are so used to accessing databases like Facebook or Google via the Internet, this is the first time that we have a database built as a protocol on top of the Internet, and hence it is decentralized. And this database can act as money and a financial system, which means money can be democratized which has never happened before. There’s a reason why kings and governments are the only ones who can print money – because it means power.

Now take decentralized database and decentralized money and put decentralized smart contracts on top of it (via Ethereum) and you can get two parties to do business with each other without the need for trusted third-parties, like banks! Smart contracts will destroy the current idea of a legal system, the current idea of a law firm and of a lawyer. Take it one step further and you can run entire companies on Ethereum – everything from cap table, governance, fundraising, payroll, accounting to bylaws and running entire communities. Maybe someday we can replace “don’t be evil” with “can’t be evil”. Consider me mind-blown. The proof in the pudding is that right now you can work with a freelancer via an Ethereum-based platform.

In short, the blockchain will replace networks with markets and the arc of the internet is bending back towards decentralization.

If you don’t know what is machine learning, just know this from Francois Chollet (creator of Keras)’s “Deep Learning with Python” book:

Classical programming vs. Machine learning

After attending the AI Frontiers conference at the beginning of this year, I was amazed, fascinated and befuddled at what actually is machine learning and deep learning and all of the associated buzzwords at an implementation level. I wanted to learn more about this. So, on a whim, I downloaded the TWiML podcast to listen during my commute and happened to be listening to an interview with Siraj Raval. Next thing you know, I checked out Siraj’s YouTube channel and followed him on Twitter. On Twitter, he kept talking about big news coming up in a few days, and turns out that he was co-creating the Udacity’s Deep Learning Foundation course (a MOOC). I was excited by Siraj’s and Mat’s intro video, and I immediately signed up and waited in trepidation.

The good part about the course was that there is a weekly schedule of lessons and projects. As I keep saying to friends and colleagues, nothing in the modern world ever gets done without a deadline (don’t tell your boss that).

The bad part was that the course was literally being built while we were enrolled, so we would see a mad rush by the instructors to write and create the content every week for the upcoming week, which was okay by me, because getting introduced to a topic that has only become feasible in the recent years and making it accessible in a way for people who don’t have Ph.D in machine learning, was exciting and I was grateful.

In the first few weeks, we dove into Anaconda (I’ve been doing Python for 10 years and had never heard of it), Jupyter notebooks (again, had never paid attention to or used it before), and started learning about perceptrons and neural networks. I was lost in the first few weeks. The course was advertised as 3 hours / week which was clearly insufficient, I had to spend like ~15 hours/week to catch up on the course and make sense of it all.

Like a tortoise, slowly I caught up, and reading Andrew Trask’s brilliant introductory book which was the course’s prescribed text book, I started understanding a little. We started off mostly with supervised learning, where we provide the training data set and the expected output. The lessons got into higher gear with learning convolutional neural networks (CNNs) and recurrent neural networks (RNNs). The way I understood is that CNNs are useful for working on the full input such as individual images, because you’re extracting and condensing patterns with several layers and getting a condensed representation of the full input. RNNs are useful for sequences where there is a dependency such as text, where a sentence can depend on a previous sentence.

Whenever motivation was low, Siraj’s videos kept the enthusiasm and fascination flowing!

The projects also kept me going throughout the course because that’s where the understanding is really put to the test. Since I was taking copious notes during the course, I was forced to pay attention to the details, and that helped a lot during the project.

The lessons combined with the great idea of using a forum and dedicated forum mentors who guide you on questions that you have, about both lessons and projects, was just a perfect learning environment. I can’t thank the forum mentors enough.

The last topic of the course was generative adversarial networks (GANs), a type of unsupervised learning, which is actually a relatively recent concept, the paper came out in 2014! It applies game theory to neural networks to make two neural networks to compete with each other, the generator creates new patterns and the discriminator (trained on real data) decides whether it is realistic enough or not, forcing the generator to create realistic data after sufficient training.

Unfortunately, life happened, and I was delayed by a month to work on the last project. So it took immense effort to get back into the groove. The project was to generate faces! Imagine that! That invigorated me and was so glad to finally see this screen:

Graduated!

There was plenty of other concepts we learned along the way such as autoencoders and reinforcement learning, it would take an entire article to list all the concepts we encountered.

I’m thankful to Udacity for this course, I could see that not all students were satisfied with this course, but this course was oh so worth it for me. Getting introduced to data science, machine learning and deep learning in a few months has been a gruelling and happy experience.

I signed off in the course slack community with this:

Slack sign-off

I’m not confident enough yet to create my own projects (e.g. data preparation) or compete in Kaggle, but I hope this is just the beginning. After all, it’s a brave new world of machine learning!