There is a theme to some of the comments which I wish to rebut. Essentially the theme is that Apple products really are not that good and they sell well only because Apple does such good marketing. The implied assumption here is that if you buy Apple's products, such as the iPod, you are just a sucker fooled by Apple's marketing campaign. Since I have bought Apple products because I thought they were the best products available for my needs, I see these statements as declaring that I am also a sucker and lacking in any real tech smarts. Essentially I feel like I am being called an idiot.
I remember when this debate was between Linux and PCs, and the Linux crowd was trying to argue that nobody should need to run Microsoft software to do their jobs or get things done. This was at time when you could not get Linux to legally read a DVD or use algorithms to do reasonable font rendering. Of course, these limitations were because of licensing issues, some of the most useful software productivity features were protected by commercial licenses or patents. The Linux advocates would argue that I should not be running such software in the first place because it was not "open" software. But that is a different argument. I have far more sympathy for the argument that running Linux is a superior moral choice. But arguing that Linux was a better OS for getting my job done was nonsense.
I am going to come at my argument in a backwards way. Instead of touting features of the iPad, I am going to describe artfully chosen limitations. The biggest limitation is that a developer cannot develop an application that can run as a persistent multi-threaded process. Any application that is not being used at any current moment is torn down and a new one instantiated. This is even more limited than the old Windows 3.x OS with its event driven model for task switching (for those you who don't remember -- Windows 3.x had only one running thread and all applications shared memory). Another limitation is that applications cannot use a shared file system or use shared libraries. You cannot build an application out of other applications or write applications whose purpose is to interact with other applications in useful ways. A user cannot even freely write code for their own application, build it, and run it.
For anybody who likes to tinker with their computers (I consider myself somewhat in that breed, I do programming for a living), this seems almost mind boggling stupid. But there is a method to this madness.
So what do you get back for these choices.
1. A very stable device that does not need to worry about applications doing semi-permanent bad things to your computer requiring a reboot. It is not stable just because applications have a hard time doing bad things, but the basic logic of behavior is so simple that you can "audit" and control it in a way that you cannot control a standard modern OS. This eliminates tangled logic scenarios that come up when you have interactions between device drivers, OS interrupts, glitches in hardware, and complicated applications. Also, it is far easier to write protections against hostile software, especially if you control the distribution of all software for your device.
I think many in the Slashdot crowd underestimate the importance of stability in a portable device. I reboot computers all the time because of glitches of various sorts. It is true that the OS is rarely to blame, it might be the device driver for my mouse, or a disk glitch, a misbehaving network router, or a bad application but generally such issues are fatal. And because of the complexity of the OS, the OS really has no chance at diagnosing the true cause of the problem.
That is not something I will tolerate in a lightweight portable device used for limited but useful activities. I have heard rumors that Android phones, once you start trying to run some of the same application that make the iPhone popular, have far more problems with various issues, such as unwanted battery run down for processes that do not properly terminate, or misbehavior from rogue or badly written applications. Now, I know some that love their Android based phones because they can program them the way you can program for any OS, but that is of no utility for those using those devices in boring (from a "techie" sense) but highly productive useful ways.
2. You are forced to push the real labor for GUI, multimedia, application deployment, event handling, and so on into the OS. You cannot insist that the application fulfill these functions because the applications are so tightly locked inside their software jail. This forces uniformity and consistency of behavior from all applications written for the device. There is a predictability in what the applications are unable to do. On a real OS, it is quite possible for end users to feel that they have no real clue what the software they are running is really doing or what the consequence might be if they ran the software in unusual configurations or settings. Of course, you also cannot have positive pleasant surprises as well. But for smallish devices that are used constantly for limited but important activities, that is a small sacrifice to pay for consistency of usage patterns.
---
So though this may sound counter-intuitive, I feel the real genius of the iPhone, iPod, and iPad is in what they cannot do and not in what they can do. Of course, there are some things Apple's software can do that nobody has matched. For example, only Apple has found a way of accurately guessing your intent when you press your over-sized thumb on a crowded display of small little letters. This may sound small, but in someways it is everything. It places the iPhone (and brethren) into an elite status clearly differentiated from the rest.