Automation vs. ownership

“Where once workers enjoyed their work but were unable to produce enough to give themselves leisure and material satisfactions, now they are gaining the leisure and material satisfactions while losing the enjoyment of work.”

-Melvin Kransberg & Joseph Gies, By the Sweat of Thy Brow (1975)

Being too clever

“Everyone knows that debugging is twice as hard as writing a program in the first place. So if you are as clever as you can be when you write it, how will you ever debug it?”

-Brian Kernighan

Don’t reinvent the world

“Our job is not to reinvent the world; it’s to take stuff that we know exists already — but hardly anyone’s got it — and get it out to them.”

-Steve Jobs, 1997 [link]

It’s all about managing complexity

When I was working on a natural language processing system at Johns Hopkins during the summer of 2005, I remember having a minor epiphany: I realized that the strategy our research team was using was essentially just a way of converting an intractably complex problem into a series of computable smaller problems. It didn’t take me long to make the jump to realizing that this is an essential part of all science and engineering.

I was reminded of this when watching a Steve Jobs video recording from 1997 (via daringfireball). Steve is talking about why he thinks better developer tools and APIs are so important to progress (around 25 minutes into the video):

It’s all about managing complexity. It’s like scaffolding, right? You erect some scaffolding and if you keep going up and up and up, eventually the scaffolding collapses of its own weight. That’s what building software is. It’s how much scaffolding you can erect before the whole thing collapses of its own weight. It doesn’t matter how many people you have working on it — doesn’t matter if you’re Microsoft, with 500 people on a team — it will collapse under its own weight.… These [new developer tools] allow you to not have to worry about 90% of the stuff you worry about, so that you can erect your 5 stories of scaffolding, but starting at story number 23 instead of starting at story number 6. You can get a lot higher.

This is related to the fundamental notion of abstraction, and to “the mythical man-month” (which Steve also references). It’s a good reminder.

In a related section, Steve responds to a question asking about how visual programming tools might fit into this. His answer (around 42 minutes in):

Here’s the deal. The way you get programmer productivity is not by increasing the lines of code per programmer per day. That doesn’t work. The way you get programmer productivity is by eliminating lines of code you have to write. The line of code that’s fastest to write, that never breaks, that doesn’t need maintenance, is the line you never had to write! So the goal here is to eliminate 80% of the code that you have to write for your app. That’s the goal. So along the way, if we can provide vizi-this and vizi-that and visual this and visual that, well that’s fine, but the high-order bit is to eliminate 80% of the code. When you ‘draw the line’ in interface builder, you’re eliminating code of one form. But that only goes so far. Maybe we can go further. I’ve seen a lot of demos of things that try to take it all the way back into the algorithmic part of the codebase, and none of them have ever been any good. If there are any good ones out there, show them to me — I’d love to see them.

In other words, abstraction is far more important to productivity than whether a language is visual or textual. Making languages visual is only a win if it can help solve the “higher order” issues: bugs, maintenance, and complexity. Steve’s 1997 claim is that he has not seen compelling demos of this in the visual programming space.

I think this is crucially important to keep in mind when thinking about visual programming languages that could be generally adopted. They have to provide an advantage in terms of abstraction. It seems that so far the opposite has been true: abstraction has been the main weakness of visual programming systems.


I finally finished reading the NYTimes article about the likely negative effects of eating too much sugar. People eat a crazy amount of sugar from an evolutionary perspective. The conclusion of the piece is that the science is still not conclusive, but the scientists say, “Sugar scares me.” There are likely links not just to diabetes but to many forms of cancer. And the story has the makings of a credible conspiracy because so many huge food industries would be devastated by sugar being labeled as a toxin.

Anyway. We’ll see what happens. In the meantime, I’ll aim for moderation, as usual.

Artificial intelligence will come gradually

It is worth remembering that artificial intelligence will not arrive suddenly and dramatically as it sometimes does in science fiction, but rather will happen gradually over time. It is unlikely that a computer program will on a specific day pass a Turing test as if it’s a black and white distinction; instead, programs will gradually pass the Turing test with an increasingly higher success rate.

It has long been noted that the trouble with being a researcher in artificial intelligence is that whenever a task becomes well understood enough to automate on a computer (such as playing chess or recognizing human faces), the task no longer seems so intelligent. This will continue to be the case as artificial intelligence progresses. For example, driving a car or taking a good photograph will no longer be judged to require cleverness or sentience.

After all, humans are just one data point along a spectrum of intelligence and intelligences. Computers will surpass our various capabilities at different times and with varying price tags. When artificial intelligence does arrive, it is likely that we will fully realize it only in retrospect, in history (e)books.

The cloud is part of the app

With so many people now watching for Apple information leaks and rumors, their big announcements rarely contain big surprises anymore. However, there is usually a twist or two that no one foresaw, because few are as good as Apple at radically simplifying their products and services.

For me, the twist today was that the cloud is not some separate thing that you have to manage and think about. Instead, it is simply a feature of an app.

Because existing cloud providers offer third-party services that are sold separately, these providers have no choice but to emphasize the cloud as a separate thing. For example, Dropbox—probably the most elegant user experience out there—gives you a special folder on your file system that you can drag files into to tell Dropbox to sync them with the cloud. All files that live in that folder are automatically synced. Because of this, Steve Jobs told us, “Some people think the cloud is just a hard disk in the sky.”

Alternatively, some cloud services are integrated with web applications. For example, Google Docs stores your documents in the cloud and lets you view and edit them using a web browser. (Indeed, Google’s general goal seems to be to move all computing into the web browser, so not just your data but also the apps themselves live in the cloud. I’ve written previously about why I think that is shortsighted.)

Apple’s new “iCloud” offering brings to native apps the cloud integration that we’ve previously only seen with web applications. Moreover, it does this so seamlessly that the user is not really supposed to think about it at all. At Omni we spent a long time wondering how Apple was going to solve the problem of document sync in their iWork apps on the iPad. Then, last week, they shipped updates to those apps with no sign of cloud sync. What we didn’t realize was: that conspicuous absence was the whole point. The synchronization happens automatically, invisibly. There is no need for any user interface at all. Any file updated on one device is updated on all devices within seconds.

To make iCloud even more invisible, it’s free. There need be no user interface associated with paying. There need be no decisions about value and purchasing. You log in once when setting up the device, and that’s it. From then on, your various devices simply feel more like different views onto a single device. The automatic syncing makes it easier to operate the devices, not more complicated. You can spend less time managing the device and more time thinking about your content, your work, your friends.

There are bound to be remaining issues with sync conflicts, offline access, data plan limits, etc. But fast internet access is becoming widespread enough that this seamlessness does not seem out of the question.

The cloud is part of the app. The app is part of the cloud. If an app is cloud-enabled, that just means all devices automatically stay up to date.

When students realize who school is for

“When teachers are judging them, students will sabotage the teacher by not trying. But when students understand that school is for them—a way for them to grow their minds—they do not insist on sabotaging themselves.

“In my work, I have seen tough guys shed tears when they realize they can become smarter. It’s common for students to… adopt an air of indifference, but we make a mistake if we think any student stops caring.”

-Carol Dweck (Mindset, p.201)