The web/cloud does not automatically make software "smart". <i>Programmers</i> make software smart. Everything else is an implementation detail.<p>Your addressbook does not automatically hook up with trusted friends to update because you just glossed over about five or six Certifiably Hard Problems such as a) proving identity, b) disambiguating names, c) trust, and d) doing it all with a GUI which will not cause a big-thinker-no-technical-skills-marketing-consultant to say "Why do the freaking engineers make it so I need a PhD in graph theory to use my freaking address book? How hard does an address book need to be? I put a name in once, I type it again, it comes back out? Sheesh, do your jobs, people!"
All the problems he's describing could be solved in about five minutes, if he were using Emacs' org-mode, bbdb, and VM-mode or Gnus to read mail. But only if he'd spent a couple hours learning them first.<p>There are tradeoffs with every kind of software. That little screenshot he posted is <i>beautiful</i>; time spent making a program beautiful is time not spent making it functional.<p><i>The ability to run these little utility programs on the command line is a great virtue of Unix, and one that is unlikely to be duplicated by pure GUI operating systems. The wc command, for example, is the sort of thing that is easy to write with a command line interface. It probably does not consist of more than a few lines of code, and a clever programmer could probably write it in a single line. In compiled form it takes up just a few bytes of disk space. But the code required to give the same program a graphical user interface would probably run into hundreds or even thousands of lines, depending on how fancy the programmer wanted to make it. Compiled into a runnable piece of software, it would have a large overhead of GUI code. It would be slow to launch and it would use up a lot of memory. This would simply not be worth the effort, and so "wc" would never be written as an independent program at all. Instead users would have to wait for a word count feature to appear in a commercial software package.</i><p><a href="http://adam.shand.net/iki/library/in_the_beginning_was_the_command_line/" rel="nofollow">http://adam.shand.net/iki/library/in_the_beginning_was_the_c...</a><p>Sorry, Seth.
It is stupefying that this article is written now, and there is not a single reference to semantic web, or artificial intelligence research.<p>This problem has been identified decades ago, years of research have gone into it, and some solutions have been identified. Granted, most solutions are not workable, precisely because they try to be too smart, which ends up not working either.<p>But just saying "why is my meeting scheduled at 2am?" or "why doesn't it recognize names?" or calling out "This is the end of dumb software!" is being dumb yourself. Seth could've at least done a little bit of research.
Unfortunately, often it ends up being very annoying when the computer tries to be smart. Not to say it can't be done, but the PC's helping hand is not always welcome.
If only Stalin's goons had had access to the top five people you talk with and where and when you meet them, all on a centralized network. They could have gone home early to spend quality time with their families rather than stake people out and interrogate them.
This has been solved. The solution is called DCI.
Data Context Interaction. A new paradigm where you design your software according to the end users mental model. Understand DCI and you should be able to craft software that makes more sense per usability. Trygve Reenskaug has explained why the traditional MVC is flawed.<p>ref. <a href="http://www.artima.com/articles/dci_visionP.html" rel="nofollow">http://www.artima.com/articles/dci_visionP.html</a>
His examples tend to focus on sources of data. Arguably, a desktop program doesn't have to care where its data comes from, and it doesn't even directly need web features to be smart.<p>For instance, what is the difference, really, between using address book data that's entered entirely manually by the user, and data that may have been partially synchronized from somewhere on the web? As long as it ends up in the format the program expects, it can appear "smart". The program itself doesn't need a sync feature, as long as <i>something</i> can sync that understands its formats.<p>So the issue, to me, is that programs just need more open data formats, and there need to be more handy services (like sync programs) that deal with those formats.
I honestly don't see what developing for the web does to encourage smarter applications? Is it things like "If I do this, I have to round-trip to the server over the WAN?" or "If I do this, I have to ask the asshole middle-tier developer for something?"<p>In fact, more and more desktop applications ARE web applications, they just don't use a web browser as a client. I suspect that Godin is a little bit off the curve here, and the moment is going to shift back toward the desktop (AIR and other sorts of things) where developers can build rich applications without having to hassle through the browser compatibility issues that can cripple teams.
One of the apps I'm working on solves his Address Book problem. It aggregates your interactions with others using the Spotlight database and by crawling your chat logs and (probably not in 1.0) interactions on sites.
Please say it ain't so. I love dumb software.<p>Every time I see dumb software (which is just about every day), my juices get going with all kinds of ways to do it better.<p>I became a programmer because I thought it would be fun and a nice living.<p>I remain a programmer because there is still so much to do. And thanks to dumb software, there probably always will be.
The first issue is not related to dumbness. It is handled usually with a pop up window that shows you the entire text when hovered.<p>Second issue can be handled as an option: "all my appointments are in business hours."<p>Maybe Seth Godin wants that infamous paper clip back: "I see you are drafting a letter. Let me help..."