Saturday, April 30, 2011
Speaking in tongues
Wednesday, April 27, 2011
Drucker's Moron
We are beginning to realize that the computer makes no decisions; it only carries out orders. It's a total moron, and therein lies its strength. It forces us to think, to set the criteria. The stupider the tool, the brighter the master has to be... (the emphasis is mine)
Sunday, April 24, 2011
Single platform is so 90s
Life is complicated these days. There are three major PC platforms: Windows, OSX, and Linux. Targeting an application to a single platform locks you out of the others. And while Windows enjoys a large share of desktops, one should not ignore a platform simply because its market share is small. All it takes to ruin your single-platform day is for a large potential customer to ask "Does it run on X?" where X is not your platform. Telling a customer "no" is not winning strategy.
But life is even more complicated than three desktop platforms. Apple's success with iPhones and iPads, RIM's success with BlackBerry devices, and the plethora of Android phones (and soon to be tablets) has created more platforms for individuals. These new devices have not worked their way into the office (except for the BlackBerry) but they will soon be there. Androids and iPhones will be there shortly after a CEO wants to read e-mail, and declines the IT-proffered BlackBerry.
The single-platform strategy is no longer viable. To be viewed as a serious contender, providers will have to support multiple platforms. They will have to support the desktop (Windows, OSX, and Linux), the web (Internet Explorer, FireFox, Safari, and Chrome), smartphones (iPhone, Android, and BlackBerry), and tablets (iPad and Android). Their services will have to make sense on these different platforms; stuffing your app into a browser window and claiming that it works on all platforms won't do it. Your customers won't buy it, and your competitors that do support the platforms will win the business.
Wednesday, April 20, 2011
Web presentations for everyone
Sunday, April 17, 2011
The 3% solution
Saturday, April 16, 2011
Web 3.0 will make celebrities of us all
Sunday, April 10, 2011
If a C++ standard falls in a forest
Wednesday, April 6, 2011
Faster than a hand-held calculator?
A fried of mine recently gave me an old HP 35 calculator. For a geek like me, a true HP calculator is a kingly gift. I cleaned off some grime and replaced the internal batteries (a bit tricky but possible) and now have a working calculator.
While using it, I was impressed with the speed of its response. Even for the sophisticated operations, the answers are displayed immediately. (As in "before my finger is off the button".)
Thinking about the experience, I was impressed with this speed because I have been using various computers, and all have been sluggish. The computers are a varied lot and include a collection of operating systems. The hardware ranges from ten years old to just purchased, and the operating systems include Windows, OSX, and Linux.
All of the PCs, despite their youth or modern operating systems, are slow to respond. Launching a program on any of them (even Windows Explorer) sees a delay. (The Apple MacBook is particularly gratuitous with special effects of windows swooping up and down, but Windows 7 is not without its swoopiness.)
Yet the calculator, designed and built in the early 1970s, is faster than the computers of today. The HP 35 has a custom Mostek chip running at no better than 1MHz and probably slower than that, with perhaps 32 bytes of read/write memory and less than 1K of ROM.
Yet the calculator is much faster than the PC.
Comparing a hand-held calculator against a personal computer is awkward at best. The calculator is a specific-use device; the personal computer is a general-use device, capable of much more than arithmetic calculations. And if I run the calculator program on the PC, its response is just as fast as the calculator. (It's the launching of the program that takes time.)
I recognize than comparing the launching of programs against the operation of a calculator is unfair or even meaningless, much like comparing the taste of orange juice against the handling of a mini-van.
But there is a psychological effect here. I was impressed with the HP 35. I don't remember being impressed by a PC program in a long time. (The last PC software that impressed me was the setup program for the Apple Airport, and that was at least four years ago.)
Is it possible to create impressive software? Such software would have to be easy to use, have an elegant interface, and fast. (And correct.)
When building software, we tend to focus on the "correct" part of the requirements, and leave the "wow" factors out. The approach is utilitarian, and possibly efficient, but little more than that.
Sunday, April 3, 2011
Y2K is not dead
The problem with Y2K was that a large number of programs would have a defect (the same defect, or similar defects, as it happened) at the same time. It was the large number of programs affected at the same time that made Y2K the crisis what it was. (That, and our willingness to ignore the problems -- we knew about them since the 1960s -- until we had to address them.)
Saturday, April 2, 2011
The Opposite of Batch
Yet mainframes and personal computers have one element in common: Both have fixed resources. The processor, the memory, the disk for storage... all are of fixed capacity. (Changeable only by taking the entire system off-line and adding or removing components.)
Mainframes are used by many people, and the resources must be allocated to the different users. The batch systems used by large mainframes are a means of allocating resources efficiently (at least from the perspective of the hardware). Users must wait their turn, submit their request, and wait for the results. The notion of batch is necessary because there are more requests than computing resources.
Personal computers provide interactive programs by providing more computing resources than a single person requires. The user can start jobs (programs) whenever he wants, because there is always spare capacity. The processor is fast enough, the memory is large enough, and the disk is also large enough.
But personal computers still offer fixed capacity. We rarely notice it, since we rarely bump up against the limits. (Although when we do, we often become irritated. Also, our personal systems perform poorly when they require more resources than available. Try to boot a Windows PC with a completely full hard disk.)
The true opposite of batch is not interactive, but flexible resources -- resources that can change as we need them. Such a design is provided by cloud computing. With cloud computing, we can increase or decrease the number of processors, the number of web server instances, the memory, our data store -- all of our resources -- without taking the system off-line. Our computing platform becomes elastic, expanding or contracting to meet our needs, rather than our needs adjusting to fit the fixed-size platform. Perhaps a better name for cloud computing would have been "balloon computing", since our resources can grow or shrink like a balloon.
This inversion of shape -- the system conforms to our needs, not our needs to the system -- is the revolutionary change offered by cloud computing. It will allow us to think of computing in different ways, to design new types of systems. We will have less thought of hardware constraints and more thought for problem design and business constraints. Cloud computing will free us from the drudgery of system design for hardware -- and let us pick up the drudgery of system design for business logic.
With cloud computing, IT becomes a better partner for the business. IT can enable faster business processes, more efficient supply chains, and better market predictions.