“Nexus is the name of the humanoid robots in Blade Runner. Taking this name discloses Google’s strategy: To turn Android into an indistinguishable part of our lives. Nexus are stronger and weaker at the same time, they are us on speed. A prosthesis or Surrogate (to bring another movie reference). Our technology systems will become a prosthesis, and as such not only ubiquitous and seamless but also versatile to changes. Ubiquitous and seamless we are working on, in the terms of affective computing and responsive design, but versatility is still a big issue. In a world changing faster and faster, the Achilles heel of contemporary technology is change.”
That’s the
paragraph I forgot to mention in my W-Jax Keynote. This is going to be a post on what I
meant with that example of the prosthesis. It would
have continued on how Android is facilitating change, with message driven API’s
and data update functionality; on how Google wants to introduce Web Intents and
cloud providers start early concepts of application and data versioning. Let’s
leave this aside for a while. Let’s talk about mobile apps and how we could
start to embrace chance in them.
There should be no extremely complicated mobile apps from user perspective. Not
due to platform or performance restrictions but context restrictions. What you
want to use on mobile devices should be the
happy case. Mobile Applications should allow deep-diving into information because "the value of interfaces today is the information it wants to present", even simple rules can get you anywhere. In Desktop interfaces with an exact mouse pointer, every page can contain multiple actions. With mobile and tablets, this actions have to be morphed into flows (which can be event- and gesture-triggered). That's why I think metaphors of urbanism are better suited to describe mobile application architecture then concepts derived from, in the end, military structures.
This flow is the link to the left out paragraph above. I am not a believer in Singularity, and I do not think we will end up in a Blade Runner world. In it's current state it's much more likely that the technology will be so resistant to change that we will have to learn to innovate completely without out. Luckily, some systems, like Android, start to introduce concepts of flows, messaging - generally, versatility. This can only be achieved by decoupling data representations from functions and human interfaces, for instance by leveraging CQRS, Mixed-Model-Mobile-Apps or ROCA. All of those three towers (I would draw them 90° turned to what we call tiers today because they would be accessible from everywhere) would be decoupled, freely linkable and versioned. The technology itself would become a truly representative tool. Just like the Nexus, but focused on what computers can do best: data and functions.
This flow is the link to the left out paragraph above. I am not a believer in Singularity, and I do not think we will end up in a Blade Runner world. In it's current state it's much more likely that the technology will be so resistant to change that we will have to learn to innovate completely without out. Luckily, some systems, like Android, start to introduce concepts of flows, messaging - generally, versatility. This can only be achieved by decoupling data representations from functions and human interfaces, for instance by leveraging CQRS, Mixed-Model-Mobile-Apps or ROCA. All of those three towers (I would draw them 90° turned to what we call tiers today because they would be accessible from everywhere) would be decoupled, freely linkable and versioned. The technology itself would become a truly representative tool. Just like the Nexus, but focused on what computers can do best: data and functions.
I imagine
something like Erlang actors, OSGi or Server-Side-JavaScript (think Cocktails
or Calatrava) to exchange business logic. A concept where data and logic can be
exchanged seamlessly and across versions; a concept that could up to this point
not make it into any statically typed programming platform. However there is a
chance that Java (after JRebel, Jigsaw and Nashorn) could natively support
versioned interfaces one day, maybe together with richer declarations for layers, tiers or towers. That fine day might be the brink of a new era of pervasive computing.