Top 4 Overlooked Technologies

Nick Doiron
Towards Data Science
5 min readJun 4, 2017

--

About a year ago, I “stepped out” of my usual work and traveled, freelanced, and wrote. It was an opportunity to read about new technology and experimental projects, which I’ve tried to continue to follow.

Out of everything that I read about, there are four technologies which stand out to me as important, or at least “big, if true”, despite being mostly unknown.

1. Adversarial Models in Machine Learning

Machine learning is everywhere in the tech media, on GitHub, and tutorials, but I found a particular interest for examples which run against the grain, adversarial machine learning. Since 2014 these methods have been used to analyze and confuse classifiers. Here, an AI that correctly identifies a panda is tricked (with higher confidence) that it is looking at another animal:

It gets weirder — last November, a demo crossed over to printouts:

Yen-Chen Lin’s Awesome Adversarial Machine Learning repo has a list of papers and resources.

OpenAI has a CleverHans repo which measures their models’ effectiveness against adversarial models. The thought is that while training a machine learning model, we should purposely introduce adversarial images to improve the model’s reliability.

2. Homomorphic Encryption

Homomorphic encryption is difficult to believe at first. You can send encrypted data to a server for analysis or arithmetic operations, without giving the server a key to the actual data.

I did a geofence project, where you find out if you are in a target-area without revealing your coordinates to the server. I used the Paillier cryptosystem, a partially-homomorphic system which has open source implementations in many languages on GitHub.
Other practical examples are currently few, but eventually you could search your encrypted email and documents in the cloud, or analyze medical records without exposing them (resolving HIPAA concerns).

QuarkLabs has a remarkable post which explains just about anything that you would like to know about fully-homomorphic encryption, which was first achieved in 2009.

There’s also this presentation from IBM Research and UC Berkeley:

Electronic voting using homomorphic encryption

3. Smart Contracts

People write a lot of nonsense about smart contracts, Ethereum, and blockchains, so I won’t ramble on about it so much. This meets my ‘unknown’ criteria for how rare it is to see smart contracts in the wild.

There is definitely interest in academia, certain areas of the tech community, and VC’s. Smart contract theorists have made interesting proposals in everything from gaming to refugee ID cards to basic income to Islamic finance. But only a few examples have become prominent and then flamed out. This mismatch in expected and actual outcomes has a few explanations:

  • Misconceptions about what smart contracts can and can’t do (see my previous post: Apps that Don’t Work in Ethereum). It is possible to write these apps as programs which communicate over the blockchain, but considering you need a website for a downloadable app, these apps could easily communicate over the regular internet or another P2P protocol.
    What matters in this field is creating a trustable, distributed contract.
  • Bugs, like the one which emptied the DAO and an exchange which recently lost Ether in invalid addresses (context: potentially 12–13 million USD effectively deleted).
  • Understanding Ethereum, blockchain, smart contracts, and newsworthy bugs. A bug written into one contract does not make others vulnerable.
  • Developer tools are lacking, so compiling and posting a contract into the Ethereum blockchain is much more difficult than it ought to be. Take a look at a ‘hello world’ example.
    I wrote a simple ‘word search’ game in Solidity and could not do anything with my code. I tried running my computer several days to download the Ethereum blockchain (which is constantly being attacked, meaning you must stop and upgrade geth), and I never got to a point where I could see my Ether tokens or submit the contract.

Some links:

  • Ether Studio was a reported IDE for smart contracts, but it no longer loads (?)
  • OpenZeppelin is a framework to build contracts in Solidity (JS-based language).

4. Verifiable Programming

What if we could know all the possible outcomes of our code before running it and blowing everything up? In mission-critical systems, engineers use specification languages to make an abstract model of their code. It has helped AWS discover new, unexpected bugs. This sounds interesting, but from posts like this I haven’t been able to get a mental picture, and determine whether I could apply it to my own code.

A recent post on TLA+ reminded me to look into it again. That is a good introduction, and so are these video lectures by Turing Award winner by Leslie Lamport. More discussion on Hacker News.

If time-consuming practices such as TDD and complex layers (such as Elm, a functional languages which compile to JavaScript) can become respected parts of the web development industry, maybe a more developer-friendly approach to verifiable programming would be A Thing.
Rust is a somewhat new language and its guaranteed memory safety has won over developers and allowed it to overtake C++ in a few areas. Could TLA+ or similar languages encourage their mindset to gain traction in the general developer world? There was this recent crossover of Rust and TLA+.

Graduated from this list: Quantum stuff

A year ago, I got a book about post-quantum encryption because it was so often overlooked. Now I see a growing interest in quantum computers and many Arxiv papers circulate on Twitter and Reddit. Last month Rigetti Computing (a YC startup) had a first Bay Area Quantum Computing Meetup.

I will be delivering a talk on quantum computing at Open Source Bridge this month, and my similar proposal to Revolution Conf lost out to another quantum computing talk. I can now believe that we have graduated to mainstream awareness!

Don’t miss the next one!

Each of these ideas could be a startup, and some already are! I know that developer tool startups are usually difficult to start and make profitable. But look at this post’s advice:

Build tools for a specific set of developers who don’t have the skills to build the tools they need. E.g., target new developers or people who code for only part of their jobs.

Build a network of modules whose interdependence creates exceptional value, far beyond what could be developed individually off the platform.

Given how machine learning, smart contract development, and encryption are still outside of most developers’ experience, and require significant setup (GPU hardware or an active Ethereum node) I think that new startups could gain a solid foothold in these technologies.

Verifiable programming is a trickier thing, but perhaps Amazon will sponsor TLA+ or a new language (not too hard to imagine, considering Mozilla’s support for Rust, or new languages from Apple and Google).

All in all, I think that these would be interesting skills to develop and keep in your developer toolbox.

--

--