Archive for October, 2008

You Say Netbook, I Say Smartphone

Wednesday, October 29th, 2008

According to CNET, HP is diving headfirst into the Netbook market. The interesting part of the article, though, is not so much about HP, as about netbooks in general, and how they are being marketed in Europe and Asia:

It’s a dramatic increase, and the difference is all coming out of Europe, the Middle East, and Africa (EMEA), where Asus and Acer have been incredibly aggressive about their Netbooks, the Eee PC and Aspire One, respectively. Of the 10.9 million units that are estimated to ship worldwide by the end of 2008, 8.1 million will go to EMEA, says IDC.

Acer and Asus have done well in the region, as evidenced by Acer’s quick rise to the top of the portable PC market there. But they’ve been aided by local telecom companies, who are subsidizing Netbooks in exchange for a signed wireless service contract. It’s a model that in the past few months has thrived in Europe.

Dell signed up Vodafone for this kind of deal on its Netbook, the Inspiron Mini 9 in September, but HP’s mostly been on the sidelines in this regard, and representatives for the company haven’t indicated if a similar deal with wireless providers are in the works.

Wireless service contract to subsidize a Linux-based device optimized for mobile Internet access. Other than the physical size of the device, how is this different from Android (and, Linux notwithstanding, the iPhone)?

At some point in the near future, somebody is going to put Android on a netbook-class device, and the shape of the future of client computing will become clearly visible. And the day that happens is the day that Microsoft’s desktop monopoly will be truly broken.

MVC Done Right?

Friday, October 17th, 2008

Model-View-Controller (MVC) is a design style that dates back (as so much does) to the pioneering work of the Xerox PARC facility. The idea is that applications should be separated into:

  • Model: the data that the application manipulates, and the fundamental operations it performs on that data
  • View: How the application looks to the user.
  • Controller: How user, view, and model interact.

(Yes, yes, I’m sure anyone who cares to can pick apart my definitions. Don’t care.)

The idea is, views change all the time (today it’s radio buttons, tomorrow it’s drop-downs), controllers change moderately (add a confirmation step, tighten up the authentication), and models hardly change at all (an accounting program isn’t going to change into an MMORPG). So isolate the fast-changing bits from the slow-changing ones. And also allow different specialties — database hackers, usability analysts, graphical designers — to put apply themselves to their own field exclusively.

How do you do that in web applications? The received wisdom of the day is:

  • Model: database + ORM (e.g., Hibernate, ActiveRecord)
  • View: templating language
  • Controller: application framework (Struts, Spring, Rails, etc.)

In other words, do it all on the server, all in one language (which, of course, fits all purposes, because it is the One True Language). Maintain separation of concerns with iron discipline and wishful thinking.

My own view:

  • Model: database + RESTful web service, delivering information in JSON
  • View: Static (X)HTML/CSS
  • Controller: Javascript/AJAX

The model code can be implemented in any server-side language: Java, C#, Ruby, Python, Erlang, whatever; it just needs to be able to talk to the database and send JSON over the wire. The view can be created in an HTML/CSS environment like Dreamweaver, with no worries about whether it’s compatible with the developer toolset. And the controller logic… Well, I’ve been playing with jQuery lately, and it may shock some folks to learn that coding client-side Javascript with a good compatibility layer library is actually fun.

Dividing tasks by physical location and implementation language creates a strict separation of concerns. Server-side code does not generate HTML. Controller code does not do SQL queries. View markup contains no executable code at all: there is no template language. There is zero possibility of the parts bleeding together.

Why wouldn’t this work? Am I missing something?

Ftrain on The Chilling Effect of IP Laws

Wednesday, October 15th, 2008

Paul Ford publishes an excellent essay on intellectual property laws, and the chilling effect they have on innovation, in Learning to Fear the Semantic Web.

As a bonus, it includes this lovely turn of phrase:

I believe, as in don’t-get-him-started, that…

I will now have to use this in everyday conversation on a regular basis. Consider yourself warned.