Thursday, November 29, 2012

How buildings learn... and automakers do not

Stewart Brand, in his book How Buildings Learn, analyzed buildings ... and identified ideas that are applicable to all sorts of systems. He noticed that buildings consisted of multiple layers, some which change easily and some of which are difficult to change. (For example: the furniture inside of a building is easy to change, the plumbing fixtures less so, and the locations of plumbing fixtures are even less easy to change.)

The idea of "layers of change" works for systems other than buildings. Just about any non-trivial system has layers of different change.

Automakers have, I think, failed to learn this lesson.

Recent models of automobiles now include wonderful electronic goodies such as navigation systems and interfaces to cell phones. But I fear that the automakers have designed these goodies in a low-change layer -- they expect their electronic additions to last the lifetime of the car.

The problem is that electronic gadgets are "cycled" on a more frequent basis than automobiles. The average life of a cell phone is something under two years; the average life of a car is quite a bit longer. (My automobile is twelve years old, and still in good shape. But my driving is less than the norm.)

The disparity of these two cycles means that a few years after the purchase of an automobile (yet well before the end of its useful life), the "goodies" will seem outdated. (Think about the usefulness of an iPhone 3 in today's world.)

I suspect few car owners will be happy with out-of-date electronics, especially if the (then new) phones cannot talk to their cars. I also suspect that automakers will upgrade systems only in exchange for large sums of money, and possibly not at all.

The lesson here applies to software. Most software systems exist in layers, some easy to change and others less so. Simply tacking on another layer is not enough. We must consider the technologies involved and our customers' desire for new generations of technology. Failing to do so will result in the equivalent of a modern-day automobile with outdated electronic gadgets, whatever that equivalent is in software. It also results in unhappy customers, or whatever that equivalent is in software systems.

Saturday, November 17, 2012

Off the top of the screen

In a recent conversation with a (somewhat younger) colleague, I uttered the phrase "scrolled off the top of the screen". I wanted to convey the notion of information that was not available at the present, but was available in the past.

As I used the metaphor, I realized that my (somewhat younger) colleague had most likely never used an honest-to-goodness real text-only terminal. With today's large-memory computers and graphic environments, the ability to scroll up and see previous content (for some types of windows) is taken as granted. But in the old days, when computers were large boxes locked away in secure rooms, users interacted with terminals, and terminals had limited memory and limited display capabilities. So limited that they displayed text in only one font and had no scrolling. (What you saw was all that there was.)

On these terminals, new text (usually) appeared at the bottom. When the screen was full of text and new text appeared, the top line was removed, all remaining lines were moved up one line, and the text appeared in the new, now blank, line at the bottom. This action was called "scrolling", named so because it mimicked the action of terminals that used paper in long rolls.

It strikes me that the verb "scroll" was kept when windowing environments displayed text that could be moved up and down.

But I digress. Let us return to the notion of information that is not available at present, but was available in the past.

Consider the programming skills needed to build data structures. I spent a good deal of time in college developing, testing, and debugging programs that built data structures and sorting algorithms. Today, such structures are baked into languages. Perl, Python, Ruby, C#, Java, and even C++ with its STL extensions all have data structures and sorting, available to the developer essentially "for free".

Asking an aspiring programmer to build such structures seems a waste of time, similar to asking an author to build their own typewriter or a taxi driver to refine their own gasoline. We have better things to do than to re-invent elementary constructs that are available (and debugged).

These skills of data structures have scrolled off the top of our collective screen. At least for the general developers.

General developers do not need to learn these skills. (Nor do they need to learn assembly language, or the ASCII code, or proper writing for programming sheets.)

But someone has to remember them. Languages like Python have these constructs, but they are available because someone put them in the general library. The Python language rests on the Python library, which in turn rests on libraries common to multiple languages, which in turn rest on functions provided by the operating system which in turn rest on functions private to the operating system. But there is an end, a definite stopping point. It is not "elephants all the way down".

Some language engineer must be available to add basic constructs to the language, and that means that some engineer must know the concepts. Skills may scroll off the top of the screen for the typical developer, but as an industry, we must retain them.

We're going to need an attic.

Tuesday, November 13, 2012

Which slice of the market can you afford to ignore?

Things are not the same in computer-land. The nice, almost-uniform world of Windows on every desktop was a simple place in which to live. With one set of development tools, one could build an application that everyone could run.

Everyone except for those Apple folks, but they had less than five percent of the market, and one could afford to ignore them. In fact, the economics dictated that one did ignore them -- the cost of developing a Mac-specific version of the application was larger than the expected revenue.

Those were simple days.

Today is different. Instead of a single operating system we have several. And instead of a single dominant version of an operating system, we have multiple.

Windows still rules the desktop -- but in multiple versions. Windows 8 may be the "brand new thing", yet most people have either Windows 7 or Windows XP. And a few have Windows Vista!

Outside of Windows, Apple's OSX has a strong showing. (Linux has a minor presence, and can probably be safely ignored.)

The browser world is fragmented among Microsoft Internet Explorer, Google Chromium, Apple's Safari, and Mozilla's Firefox.

Apple has become powerful with the mobile phones and dominant with tablets. The iOS operating system has a major market share, and one cannot easily ignore it. But there are different versions of iOS. Which ones should be supported and which ones can be ignored?

Of course, Google's Android has no small market share either. And Android exists in multiple versions. (Although most Android users want free apps, so perhaps it is possible to ignore them.)

Don't forget the Kindle and Nook e-reader/tablets!

None of these markets are completely dominant. Yet none are small. You cannot build one app that runs on all of them. Yet building multiple apps is expensive. (Lots of tools to buy, lots of techniques to learn, and lots of tests to run!)

What to do?

My suggestions:

  • Include as many markets as possible
  • Keep the client part of your app small
  • Design your application with processing on the server, not the client

Multiple markets gives you more exposure. It also forces you to keep your application somewhat platform-agnostic, which means that you are not tied to a platform. (Being tied to a platform is okay until the platform sinks, in which case you sink with it.)

Keeping your application small forces your application to a minimal user interface and a detached back end.

Pushing the processing part of your app insulates you from changes to the client (or the GUI, in 1990-speak). It also reduces the development and testing efforts for your apps, by centralizing the processing.

This technique has no surprises, perhaps. But then, it also requires no magic.

After all, which market segment can you afford to ignore?

Tuesday, October 30, 2012

BYOD can be easy with tablets

The "bring your own device" movement has caused quite a bit of heartburn among the corporate IT and security folks. More than is necessary, I think.

For those unfamiliar with the term "bring your own devices" (BYOD), it means this: employees select their own devices, bring them to the office, and use them for work. Such a notion causes panic for IT. It upsets the well-balanced apple cart of company-supplied PCs and laptops. Corporations have invested in large efforts to minimize the costs (purchase costs and support costs) of PCs and laptops. If employees were allowed to bring their own hardware, the following would happen (in the thinking of the corporate cost-minimizers):

  • Lots of employees would have problems connecting to the company network, therefore they would call the help desk and drive up support costs
  • Employee-selected hardware would vary from the corporate standard, increase the number of hardware and software combinations, and drive up support costs

And in the minds of IT security:

  • Employee-selected hardware would be vulnerable to viruses and other malware, allowing such things behind the corporate firewall

But these ideas are caused by misconceptions. The first is that employees want to bring their own PCs (or laptops). But employees don't. (Or at least not the folks with whom I have spoken.) Employees want to bring cell phones and tablets, not laptops and certainly not desktop PCs.

The second misconception is that smartphones and tablets are the same as PCs, except smaller. This is also false. Yes, smartphones and tablets have processors and memory and operating systems, just like PCs (and mainframes, if you want to get technical). But we use tablets and smartphones differently than we use PCs and laptops.

We use laptops and PCs as members of a network with shared resources. These laptops and PCs are granted access to various network resources (printers, NAS units, databases, etc.) based on the membership of the PC (or laptop) within a domain and the membership of the logged-in user of domain-controlled groups. The membership of the PC within a domain gives it certain privileges, and these privileges can create vectors for malware.

Smartphones and tablets are different. We don't make them members of a domain. They are much closer to a browser on a home PC, used for shopping or online banking. My bank allows me to sign on, view balances, pay bills, and request information, all without being part of their domain or their security network.

How is this possible? I'm sure that banks (and other companies) have security policies that specify that only corporate-owned equipment can be connected to the corporate-owned network. I'm also sure that they have lots of customers, some of whom have infected PCs. Yet I can connect to their computers with my non-approved, non-certified, non-domained laptop and perform work.

The arrangement works because my PC is never directly connected to their network, and my work is limited to the capabilities of the banking web pages. Once I sign in, I have a limited set of possibilities, not the entire member-of-a-network smorgasbord.

We should think of smartphones and tablets as devices that can run apps, not as small PCs that are members of a domain. Let the devices run apps that connect to back-end servers; let those servers offer a limited set of functions. In other words, convert all business applications to smartphone apps.

I recognize that changing the current (large) suite of business applications to smartphone apps is a daunting task. Lots of applications have been architected for large, multi-window screens. Many business processes assume that uses can store files on their own PCs. Moving these applications and processes to smartphone apps (or tablet apps) requires thought, planning, and expertise. It is a large job, larger than installing "mobile device management" packages and added new layers of security bureaucracy for mobile devices.

A large job, yet a necessary one. Going the route of "device management" locks us into the existing architecture of domain-controlled devices. In the current scheme, all new devices and innovations must be added to the model of centralized security.

Better to keep security through user authentication and isolate corporate hardware from the user hardware. Moving applications and business processes to tablet apps, separating the business task from the underlying hardware, gives us flexibility and freedom to move to other devices in the future.

And that is how we can get to "bring your own device".

Friday, October 26, 2012

The Microsoft Surface is an Office tablet

People compare Microsoft's Surface tablet to Apple's iPad. Some favor the Surface, others favor the iPad. But this is a false comparison.

Both the Surface and iPad are tablets. But they serve two different markets. The iPad is designed for consumers; the Surface is designed for businessmen.

The iPad is easy to use. It has lots of games and consumer-oriented apps. One can play music, read books, and play games. One can get apps for banking, for reminders, and for adjusting photographs. But it doesn't have apps for the workhorses of today's office: the Microsoft Office programs.

The Surface is designed for the office. It comes with 'home' versions of the Microsoft Office products, and 'real' versions are promised. (I suspect that the difference is mostly one of licenses.)

The Surface is less a general tablet and more a "tablet for running Office". It also happens to run other programs, but don't let that fool you. It's primary purpose is to be the tablet platform for MS Office. The innards of Windows RT use a number of old Microsoft technologies -- just the things needed to run the Microsoft Office suite.

As a specialized tablet, I expect that MS Office and the MS Surface will grow in parallel. New versions of MS Office will take advantage of new features in Windows RT and Surface tablets. Enhancements to tablets will be designed to support new versions of MS Office.

Heck, using this logic, Windows RT is simply a platform on which to run MS Office. It is an "Office operating system".

Saturday, October 20, 2012

Tablet fever? Take two tablets and call me in the morning

Microsoft announced their first tablet offerings, and the response has been positive. Enough people have submitted orders for the low-end model to sell out.

This shows two things:

First, it puts Microsoft in the top tier for the tablet market, and shows that people take Microsoft seriously. A number of manufacturers have produced tablets (Motorola, Acer, Dell, and even HP) the sales of non-Apple tablets have been tepid. By providing a tablet that sells out (even before it is for sale), Microsoft joins Apple and Google in the ranks of "suppliers of desired devices".

Second, that the interest in tablets is not an Apple phenomenon. Apple fanboys may lead the way for iPad sell-outs, but they had nothing to do with the Microsoft Surface sales. That interest is coming from a different part of the market.

Perhaps I am putting too much weight on this one event. It may be that Microsoft produced a small number of the low-end Surface tablets (the higher-end Surface tablets are still available). It may be that people are buying the Surface tablets as an experiment, or for corporate pilot projects, and the initial demand is higher than the "true market".

People (rightfully) point out the failures of Microsoft's phones, Zune, and Kin offerings. But those products never gained traction in the market, and none sold out -- much less prior to shipping.

There is interest in the Microsoft Surface tablets, and I believe all tablets. Apple and Microsoft get a lot of attention from brand recognition. Google does too, when it ships devices.

I think we are about to undergo a case of "tablet fever", with tablets becoming the most desired device. It should make for an interesting ride.

Thursday, October 18, 2012

No more PCs for me

This week I decided to never buy a PC again. I currently have four, plus a laptop. They will be enough for me to transition to the new world of tablets and virtual servers.

This is almost a bittersweet moment. I was there prior to the PC, when the Apple II and the Radio Shack TRS-80 were dominant (and my favorite, the Heathkit H-89 was ignored). I was there at the beginning of the PC age, when IBM introduced the PC (the model 5150) and everyone absolutely had to have them. PCs were the new thing, a rebel force against the established (IBM) mainframes and batch processing and centralized control. I resented IBM's power in the market.

I saw the rise of the PC clones, first the Compaq and later, everyone. I saw IBM's attempt to re-define the standard with the PS/2 and the market's reaction (buy into Compaq and other PC clones).

I saw the rise of Windows, and the change from command-line programs to GUI programs.

Now, I have seen the (Microsoft Windows) PC become the established computer, complete with centralized control. The new rebel force uses tablets and virtual servers.

I am uncomfortable with Apple's power over app suppliers for iOS devices, and Microsoft's power over app suppliers for Windows RT devices. I am leery of Google's power, although the Android ecosystem is a bit more open that iOS and Windows RT.

Yet I am swept along with the changes. I use an Android tablet in the morning, to check Facebook, Twitter, and news sites. (A Viewsonic gTablet, which received poor reviews for it's non-standard interface, yet I am coming to like it.) I use an Android smartphone during the day. I use a different Android tablet in the evening. (Although I am typing this on my Lenovo laptop with a Matias USB keyboard.) While I have not moved everything to the tablets, I have moved a lot and I expect to switch completely within a few months.

My existing PCs have been converted to the server version of Ubuntu Linux, with the one exception of a PC running Windows 7. I suspect that I will never convert that PC to Windows 8, but instead let it die with dignity.

I was there at the beginning, and I am here at the end. (Of the PC age.) Oh, I recognize that desktop and laptop PCs will be with us for a while, just as mainframes stayed with us. But the Cool New Stuff will be on tablets, not on PCs.