This is what happens when voters don’t understand economics

In college I never understood why you were allowed to be a Political Science major without taking any Economics courses. Isn’t it true that money is power? Isn’t politics primarily concerned with protecting and distributing wealth? There are some social issues like education or abortion that seem at first to fall outside of the realm of economics; but Freakonomics shows us how even there, quantitative economic analyses yield important insights.

I only took one Political Economy course and no pure Political Science classes, so arguably I didn’t try very hard to find answers to these questions. But at the very least, I didn’t see how you could have a complete discussion of political issues without bringing economics into it.

In a previous blog post I mentioned a brilliant history teacher who didn’t understand the importance of campaign finance reform. Was he a product of an educational system that allowed people to take no economics classes?

In a heretofore-unrelated line of thought, I also couldn’t understand how Republicans managed to get re-elected by working class voters after repeatedly cutting taxes for the wealthy and cutting services for the working class. I wasn’t satisfied with the easy answer, “there are a lot of dumb people in this country.”

One of my co-workers grew up in rural Indiana. He said he started voting Democrat after moving to Seattle, but his family all voted Republican. Why? He said they weren’t dumb, but “they just don’t know any better.” I was still left wondering, why not? And what exactly don’t they understand?

What’s the Matter with Kansas? by Thomas Frank essentially describes how most of “conservative America” does not believe economics is an important part of politics. The Republican rhetoric is as follows. Anyone who tells you that you deserve more money is insulting you by insinuating that you don’t have enough money (and by extension, insinuating that you are a failure). And anyone who makes arguments based on economic theory you don’t understand are pretentious “elites” who are simply inflating their own egos and insulting you by insinuating that you’re dumb. Why else would they be talking about math, when the issues that really matter are moral issues that they disagree with you about, like abortion and the right to bear arms.

What really struck me, in other words, is that the Republican narrative crucially depends upon widespread ignorance of basic economic theory.

From this perspective, Bill Clinton’s famous rallying cry “It’s the economy, stupid” seems in some ways genius (put the focus back on economics); but also feeds easily into the rhetoric (“he’s calling you stupid”).

Frank points out that the amazing thing about Marxism and Communism historically is that they got everyday people interested in economic theory. Today in America that is not the case. Economics is being systematically belittled by politicians. The system is really quite extraordinary—politicians funded by the wealthy get elected by the working class majority to enact “morally correct” policies which actually turn out to benefit the wealthy. All of this while blaming other politicians for the actual deteriorating prospects of working class Americans.

My case for why we should teach Economics 101 in the first year of high school has never been stronger.

Prejudice against applied science

C. P. Snow wrote in 1959:

Pure scientists have by and large been dimwitted about engineers and applied science. They couldn’t get interested. They wouldn’t recognize that many of the problems were as intellectually exacting as pure problems, and that many of the solutions were as satisfying and beautiful. Their instinct… was to take it for granted that applied science was an occupation for second-rate minds.

I have found this unspoken prejudice to still be alive and well in academia. All through my education, my teachers and colleagues and culture at large contributed to my notion that software engineering was a boring occupation for second-rate minds. No one said that to me directly, just as no one says “black people are inferior to whites.” But both can be implied in the everyday ways that people talk about each other.

Of course, now that I am a software engineer, I indeed see that much of what we work on is as intellectually exacting as pure science, with solutions as satisfying and beautiful.

Apps are the next medium

In recent months, App Store “apps” have continued to explode in popularity. iOS apps are currently being downloaded at twice the rate of digital music tracks from the iTunes store, with the average iOS user downloading five new apps per month. App developers have received $2 billion in revenue over the first 31 months (and that does not include ad revenue).

Horace Dediu recently made the important point that not only are apps here to stay, they are the next important medium. Apple designed iOS such that apps take over the whole device, each one “magically” transforming it into an object with a whole new set of capabilities. The device becomes a map or a compass or a video camera or a textbook or a game or a credit card or a newspaper or a radio or any new combination thereof. This new medium can be used for both art and productivity; charity and industry; form and function. It is not a fad. It is rather the logical next step for human-facing software.

Like music and movies, apps can be bought and sold as if they’re objects. The iTunes store already sells more music than any other physical or online retailer. The App Store is poised to become the de facto provider of consumer device functionality.

As this medium gains traction and more artisans learn how to create apps, I think we will find that we’ve only just scratched the surface of what is possible.

Compiled Software is Here to Stay

I sometimes hear claims that the web browser and web apps will replace traditional operating systems (like Mac OS X) and compiled native applications (such as iPhone apps). In particular, Google is developing a new operating system based solely on their Chrome web browser; and Palm/HP smartphones similarly use an operating system based on web technologies.

But while these web technologies are great and useful for many things, compiled software is here to stay. This is because the most innovative applications often require the most processing power and the latest features of a platform — attributes that can only be achieved with compiled software. Meanwhile, the networking technologies used primarily by web applications today can also be utilized by compiled software. Because of this, the most innovative user experiences are usually going to be compiled. And I think that’s bad news for web-only operating systems.

A little background

When I say “compiled software,” I’m talking about any application that is technically compiled and optimized for a particular hardware system. This includes most desktop Mac and Windows applications, native iPhone apps that you get from Apple’s App Store, and anything else that is written for a particular processor chip/operating system combination.

The alternative is called “interpreted” software. Examples include standard web pages (HTML, CSS), fancier web applications (JavaScript, Flash, etc.), Java applications (both web applets and desktop versions), and programs written in newer languages such as Python and Ruby.

Whereas compiled software translates programmer code into computer instructions at the outset before you even download the application, interpreted software translates into computer instructions in real time as you use the application.

The advantage of the interpreted approach is that it’s easier to run on many different devices. Since the translation to computer instructions happens at the last minute, you can write a program once and then run it on any processor / operating system that knows how to do the translation. (A web browser is one such “translator.”) In some cases, it can also be easier to write interpreted software.

The compiled approach, on the other hand, has significantly better performance. Converting to machine instructions requires processor time and uses up battery power. When you do all this work before you even ship the software, the app runs faster and drains less battery. It’s even better if the software is specifically optimized for the device (for example, taking advantage of special graphics chips).

“Fast enough”?

I did some performance tests six months ago and found that web applications run about three to 50 times slower than native compiled applications, depending on the task. Although incredible strides have been taken to narrow this performance gap, the gap is fundamentally here to stay — the tradeoffs between interpreted and compiled software are simple facts of computer science.

But, the argument goes, today’s or tomorrow’s powerful computers are “fast enough” to support many useful web applications despite the performance gap. And at face value, this is perfectly obvious. We had spreadsheets 20 years ago on machines that were literally a thousand times slower. You would certainly hope that we could replicate that functionality with web apps today.

And at any given point in time, it’s hard for us to imagine what we could possibly do with even more powerful computers. (Bill Gates famously once said, “64K should be enough for anyone.”) One of the easiest things to imagine doing is taking advantage of the new speed to allow web applications to run faster. The thinking goes as follows: “the performance gap is only 3-50x. So in [2, 5, 10] years, when computers are [3, 50, hundreds] of times more powerful, web apps will perform just fine, and take over from desktop apps.”

But history has shown that we have always been able to take advantage of more processing power to accomplish tasks that were previously impossible, if not unimaginable. For example, Apple famously transitioned the personal computer from a word-processing and personal-finance machine into a “digital hub” for your music, photos, and videos (all of which require substantial processing power to manage). Only now, almost a decade later, do web apps have the necessary horsepower to manage our digital media. And Apple is now in the process of bringing these higher-horsepower tasks to mobile devices.

Ongoing research in computer science makes it clear that this historical trend will continue. For example, “machine learning” algorithms for applications such as games, speech recognition, augmented reality, and many others all perform increasingly better as they are allowed to use more and more processing cycles.

The most innovative emerging applications will tend to be the ones that can make use of the most processing power now. For these applications, there is no such thing as “fast enough.”

“Write once, run anywhere”?

Cross platform frameworks come with the promise of letting you develop a single application that can be run on any supported platform. You write one code base, and the framework does the hard work of making your app work everywhere.

The problem with this claim is that each platform is different. If the differences were merely cosmetic, it wouldn’t be a big deal — make them look like Mac buttons on the Mac, Windows buttons on Windows. But new devices like the touchscreen iPhone and iPad make it clear how limited the whole notion of cross-platform compatibility is. User interfaces designed for mouse and keyboard simply don’t work well on a touchscreen. Interfaces designed for large screens don’t work well on small screens. Even with very similar platforms (e.g. Mac and Windows), there are subtly different UI paradigms that cross-platform frameworks usually fail to respect.

Each platform also has a unique set of available features, which limits the possibilities for cross platform frameworks.  As Steve Jobs put it,

The [cross platform framework] may not adopt enhancements from one platform unless they are available on all of their supported platforms. Hence developers only have access to the lowest common denominator set of features. We cannot accept an outcome where developers are blocked from using our innovations and enhancements because they are not available on our competitor’s platforms.

Apple later relented, allowing apps to be built using cross-platform frameworks. But Jobs’ drawbacks still apply. Apps that use these frameworks are constrained to yesterday’s feature set.

Web applications face these same constraints. In theory, they can run on any web browser, whether it’s Mac, Windows, Linux; Safari, Internet Explorer, Firefox; laptop, tablet, or smartphone. But in practice, web apps have to be adapted to truly meet the needs of each platform (for example, Gmail and many other sites have smartphone- and iPad-specific versions).

For billions of websites, the least common denominator set of features is plenty. But if you want to write innovative software (as distinguished from innovative content), chances are that the features you need will not be readily available on all of the relevant platforms. For these important applications, “write once, run anywhere” is a myth.

“Cloud computing”

The user experience of installing and running software has traditionally been much better on the web than on desktop operating systems. Consider: from any internet-connected device in the world, one need only type “facebook.com” to access a powerful, extensive social networking application. There is no need to start a download, find it, decompress it, install it, and run it. Web applications are discoverable and viral since they can be shared with a simple URL.

But there is no reason in principle why compiled apps can not also be delivered in this way. Apple has demonstrated this with its App Store’s integrated download process. They could go even farther by letting developers split up their applications into discreet chunks that only get downloaded when necessary. The downsides of this browsing experience would be exactly the same downsides as on the web: the intermediary downloads can be slow, the internet connection can be broken, etc.

Web applications are also touted for their ability to push out updates immediately without the user needing to do anything. But this can (and should) be applied to native apps too; in fact, Google has finely honed the upgrade process for its Chrome web browser so that patches are securely downloaded and installed without the user even noticing.

There is no reason that compiled software cannot take advantage of all the “cloud” features that the Internet enables. Compare Google Docs, the productivity web apps, with Microsoft Office, the dominant compiled version. As I see it, the advantages of Google Docs currently are:

  • Easy to access from any computer
  • Easy to collaborate in real time and share documents with others
  • Free (supported by advertising)

The interesting thing about this list is that these advantages once again do not depend on the web browser platform. Indeed, many of the most important iPad and iPhone apps are native clients to back-end web services (e.g. Twitter, Instapaper, Flipbook, NPR, etc). Not only do these apps make it easy to collaborate and share and view advertisements, they also take advantage of being compiled to provide innovative, responsive, battery-conserving user interfaces.

Conclusion

Ben Ward wrote, “If you want to build the most amazing user interface, you will need to use native platforms. A single vendor’s benevolent curation of their framework will always outpace the collaborative, interoperable developments of the web…. But the web will always be the canonical source of information and relationships.”

What will be the fate of platforms based around interpreted-only software? It already seems pretty clear that WebOS smartphones are not going to survive. The performance tradeoffs are too dramatic on tiny, power-hungry mobile phones. I suspect Chrome OS will fare at least a little better, because web apps on cheap laptops can now do most of what mainstream users need, with a user experience that’s not terrible.

Chrome OS targets essentially the same market as the iPad — people who have only light computing needs or who want a secondary, more portable computer. Apple has shown that it’s a viable market. And for now, most web apps have been designed for a mouse and keyboard (rather than touch). Chrome OS’ dearth of viruses, fast startup, and assumed price point below Apple puts it in a decent position.

But Chrome OS will never come close to replacing systems that are based on compiled software. Even if most of your computer time is spent in a web browser, why sacrifice the native applications that can do more with the same hardware? Games that are more responsive and more realistic; photo managers that are more powerful and flexible; office apps that use less battery; social media clients that are optimized for your screen size? Those native applications already exist on iPad, alongside an excellent web browser.

Today you can edit HD video on an iPhone via a native app; it will be years before the same experience is possible with web apps. And the cycle will continue — the video editing of today is the real-time artificial intelligence of tomorrow. Anyone who wants to be near the cutting edge will choose the products that have the new and exciting features.

I appreciate the simplicity of reducing everything to a web browser. But the iPad demonstrates how much more you can do with tightly integrated, compiled software running on relatively cheap and battery-constrained processors. Expect more web-like features to make their way to future iPad software, such as automatic upgrades and data synchronization. Expect web apps to remain important for lowest common denominator tasks. And rest assured that compiled software is here to stay.

Many of the ideas in this article are based on links and analysis I read on Daring Fireball and asymco over the past six months.


Update: Technology Review magazine published an essay by the CTO of the Opera web browser which follows the line of reasoning that web technologies will be “fast enough” in the future to overshadow native apps. I wrote a letter to the editor. (Update: they published part of the letter in the magazine!)

One of the things I like most about the articles in Technology Review is that they consider technology within the real-world context of business and politics. The authors rarely get lost in technological hype that ignores practical obstacles.

I thought Håkon Wium Lie’s notebook contribution “Web Wins” (TR March/April 2011) was an unfortunate exception to this norm. He concludes that “native apps will become a footnote in the history of computing.” Even allowing some room for hyperbole, this statement is foolish. Native applications have been the norm for decades on personal computers; similarly, native software has dominated the history of mobile devices since the earliest cell phones and PDAs. Even if the majority of apps do become web-based in the future, calling this long history a “footnote” borders on the absurd.

Worse, however, is that Lie’s argument is a purely technological one. He argues that new web technologies “handle many computing-intensive tasks” that now allow web applications to approach the performance of existing native apps. But any student of disruptive innovation theory can tell you that technological innovations tend to start out in proprietary systems where the full software and hardware stack can be tuned to meet the needs of the new application. Web standardization will always lag behind these path breakers. By the time today’s new web technologies become standard, the next wave of native applications will have emerged in areas such as augumented reality and machine learning, and it will take another few years for web technology to catch up.

There is plenty of room for debate about the extent to which important software will be ported to the web. But it would be delusional to believe that native apps will go away altogether.


Update 2: John Gruber points out:

We should perhaps use “web app” to mean any app that is built around HTTP communication, and “browser app” to mean a kind of web app written in HTML/CSS/JavaScript which runs in a web browser. Things like iOS and Android Twitter clients are web apps, in my mind, they’re just written using platform-native toolkits.

“Browser app” seems like a reasonable choice of terminology to me.


Update 3: Matt Gemmell wrote an interesting article comparing native apps and browser apps from the perspective of frames of interaction — how many windows you have to “reach through” to get at the app itself. He argues that the cognitive cost of this nesting negatively impacts the user experience for browser apps.


Update 4: (Oct, 2011) Apple has released a suite of “iCloud” services whose primary goal is to bring web-like data synchronization to native apps.


Scale successes

“What is the ratio of the time I spend solving problems to the time I spend scaling successes?”

-Chip Heath & Dan Heath

Trying on old ideas

“Old ideas… do not vanish, and when there is a crisis, and people lose hope… they fetch them out and try them on again.”

-Theodore Zeldin

Meta-moderation

I like to say, “moderation in all things — but not too much.”

In other words, keep your moderation in moderation. This sort of sounds like a paradox, but I don’t think it is. Obsessing over moderation is just as unhealthy as obsessing over anything else. You end up worrying about whether your life is perfectly in balance. It shouldn’t be! It should get a little out of whack. Maybe even a lot out of whack, every now and then!

I think this is just the sometimes-overlooked deeper meaning of moderation.

p.s. In chaos theory terminology, I think this concept is related to the chaotic boundary between uniformity and randomness, which is self-similar at all scales. Moderation modulating moderation (modulating moderation, and so on). Uniformity taking hold and then randomly switching to a different uniformity. Randomness that is uniform — usually. But that’s a blog post for another day.

Toleration is not enough

Gandhi’s life confirms that toleration is an insufficient remedy even when practiced by a very exceptional man.

This is from Theodore Zeldin’s excellent book An Intimate History of Humanity. The chapter it came from points out that despite Ghandi’s incredible charisma, intellect, and patience, his mission was ultimately a failure. He wanted English colonialists and native Indians to live together peacefully — to tolerate each other. The peace did not last.

Zeldin finds that tolerance works when times are good. But as soon as there is a shortage or conflict of interest, those who were tolerated quickly become the bad guys. The finger-pointing begins and the conflict escalates.

What is needed in the long run is respect.

The recent movie Invictus shows how rugby symbolized Nelson Mandela’s deep respect for white citizens and their culture. In one scene, Mandela insists that his team of bodyguards should include an equal ratio of white and black officers. This demonstrates to the country that Mandela respects the white officers so much that he trusts them with his life; in turn, the white officers demonstrate their respect for the president by protecting him. Like Ghandi, Mandela led by example. But Mandela realized that toleration was not enough; respect was necessary for lasting peace.

I find this insight surprisingly applicable to everyday life. It’s easy to fall back on toleration when times are good. I’ve seen this (and have sometimes been guilty) with roommates and coworkers. When interaction is minimal or interests are aligned, things go smoothly. But as soon as opinions differ or hard constraints arise, there is escalating conflict and extreme difficulty at reaching consensus or compromise.

Respect is harder than toleration. It requires understanding and empathy. It requires a willingness to embrace truths that are not your own truths. Humility.

The lesson here is to learn to recognize the difference between tolerance and respect, which can often look similar on the surface.