The Problem of Abstraction Journalism doesn’t really serve people effectively when it comes to technology. Most journalists have a layman’s understanding of how technology works and few of them have ever written a line of code. Even when a journalist takes the time to understand a fundamental issue in technology like The Atlantic’s James Somers, an editor comes along and gives his article a misleading and techphobic headline. Such is the case with the article: “The Coming Software Apocalypse” in September’s issue. (link below) Somers has written a long and insightful article about one of the biggest challenges in technology today. Namely, that writing code introduces a layer of abstraction into the act of creation. Except in some innovative new development platforms, coders need to guess at what their code will do and then test it in practice and iteratively get it right. As they test their code, they are unlikely to anticipate every use case or combination of actions. The more complicated the task, the less likely they are to anticipate problems. Even a detailed set of requirements can’t anticipate every eventuality in an as-yet unwritten system. Simple systems can be relatively bug free. But complicated systems become progressively buggier. Unfortunately, our most important systems tend to be the more complicated variety, like airplane computers or car systems or Amazon’s cloud hosting service. Different solutions to the problem of abstraction have emerged. For the aviation industry, Esterel Technologies allows developers to model how their changes will work in the real world. At Amazon, the use of TLA+ (Temporal Logic of Actions) uses principles from Logic and Set Theory to development a more accurate understanding of true requirements. In my experience, developers are more comfortable with Test Driven Development which involves creating small tests for each action within a system. This allows for them to immediately test if any given change to the code breaks something since one of the tests will immediately throw off an error. I agree with Somers that all of these issues will grow more serious over time as code “eats the world.” I further agree that it’s all back-traceable to the abstraction of writing code. But I don’t agree with Somers’ editor that this is evidence of a coming software apocalypse. Why does this matter? Let’s leave aside software developers for a moment. The challenge that technology creates for our society is technocracy. Most people have little understanding of how everything works nowadays. It used to be I could build my own radio or fix my own toaster, but now code runs everything. That means that for the vast majority of people everything from the phone in their pocket to the systems that change the stop lights from red to green look like magic. That creates a dangerous division between those who know and those who don’t know. It’s a bad look for an egalitarian society. Many worthy organization attempt to overcome this issue by bringing code into all classrooms. But the issue is fundamentally one of abstraction. It’s too damn hard for a non-expert to look at code and understand what it does. We need to remove the layers between code and its creations. But we need to do this for the benefit of the layman, not the expert. In a nutshell: Coding is hard and that’s a problem. Read More What Monopoly? GAFA, the big four of technology (Google, Apple, Facebook, Amazon), have had a crappy year. They have been accused of being monopolies, stifling competition and electing a deeply unpopular demagogue to the presidency. Increasingly, people have woken up to the unparalleled scale and influence of this fearsome foursome and are demanding action. Benedict Evans of Andreessen Horowitz in a recent blog post entitled “The Scale of Tech Winners” illustrates in a series of graphs how GAFA’s dominance crushes that of Wintel or IBM (the dominant forces in earlier technological eras.) Further, he points out that these “super-evolved organisms” have learned the lessons of disruption that toppled these earlier giants. They innovate rapidly, disrupt their own platforms and introduce new technologies. Unlike Microsoft who maintained its position in the 90’s by releasing mediocre technology and then bundling it with their core system to eliminate competitors, each member of GAFA tries to win by providing better technology to consumers. As a result, they don’t show the normal patterns of bureaucratization and defensiveness that one would expect from large companies. Why does this matter? GAFA is dominant. GAFA controls a great deal of the technology landscape and has a huge influence over our economy. Viewed as a monolithic entity, “big tech” is a much greater threat to the interests of the average citizen than Standard Oil ever was. Only, GAFA is not a monolithic entity, no matter how we choose to acronymize it. Google, Apple, Facebook, and Amazon compete with one another first and foremost. Their interest in the rest of the technology landscape is only incidental to that competition. With certain, well-publicized exceptions (hiring agreements), these companies don’t behave like a consortium at all. The currency of their competition is users. Meaning, that the one single thing they value above all else (including revenue) is us. They fight for our love. There will always be people in our society who reflexively distrust scale in the marketplace. There are plenty of good reasons for that distrust. But it is not currently clear to me that GAFA is bad for consumers. Four huge, well-funded companies competing for our patronage sounds a lot like a free market to me. In a nutshell: Declaring that four competing companies are a monopoly seems to stretch the definition of monopoly to the breaking point. Read More Blockchain Banking The basis of the Rothschild banking fortune was trust. Mayer Amschel Rothschild sent his sons to the important European capitals of his day – London, Paris, Vienna, Frankfurt, and Naples. At the time, it was nearly impossible to transfer funds across national boundaries unless you physically carried it in a box filled with gold. But the family Rothschild could trust one another. If a nobleman deposited his wealth with a Rothschild brother in Vienna, he could draw on that credit from another Rothschild brother in London. One would have thought that we would have learned the lessons of successful banking since the 18th Century. However, transferring funds across national borders can still take days or weeks. This problem is especially acute in developing countries that have a less robust banking system. IBM has partnered with Blockchain startup Stellar and payments company Kickex to create a blockchain-based transfer system for cross-border payments. This is a perfect use of the blockchain technology, which allows for the transparent and smooth transfer of assets in a trustless environment. Why does this matter? Imagine you are a farmer in Brazil. You have a large crop of coconuts you would like to sell. There is a huge market for coconut water in the United States. You should be able to sell your coconuts and make a healthy profit. Unfortunately, you have no way of selling directly to an American company since you can’t understand the myriad complexities of Brazilian trade regulations. Without any options, you sell your entire crop to a middleman for a very low price. The middleman buys up the harvests of a large number of farmers like yourself and navigates the complex system to sell the product up north. Your family stays poor. You cannot afford to have your children leave the farm to go to school so the cycle of poverty continues for another generation. Cross-border payments may sound like something that should only concern large multinational banks like HSBC or Chase, but the complexities and delays of the current international banking system create needless inequities and suffering. If that farmer knew he could receive payment through the blockchain based system IBM is working to set up, he suddenly has much more flexibility. These days technology gets a bad rap. But every once in awhile, it can make the world better. In a nutshell: The ability to trust makes people’s lives better. Read More