Retail appliances

I had occasion after the turkey dinner yesterday to muse a little on computers and software in the retail channel. My brother-in-law-to-be was waxing lyrical about the TiVo he’d just bought, and rather than restrict my thoughts to just that device, I started thinking about the retail channel as a whole for these computer and software driven one-use devices.

First, we have the TiVo, essentially a Linux box with some TV hardware, a big hard disk, and some fancy software. It’s certainly a one-use device: it "merely" enables you to record TV programs and play them back. (I’m deliberately minimizing discussion of the features of TiVo here; my intent is not to market it to you.) Despite the fact that it’s a pretty standard PC, there’s been no attempt to make it available for other uses. And, there are other set-top boxes out there that perform the same kind of function, some better than others, some with extra features, all based on PC hardware as far as I know.

Second, we have the Apple iPod. A tiny computer with a hard disk that is designed for one thing and one thing only: playing digital music. The latest version is a color device and doubles as a digital photo album. But why is an iPod so popular when modern PDAs can also play music?

Third, we have the Xbox and the other game-playing consoles. A device that can only be used to play games (although, it must be noted, many people have hacked the Xbox, thereby enabling it to do other things). Compare that to a standard PC, which can also play games, but has so many other uses as well.

Fourth: cell phones. These are a great appliance, although they are starting to become more and more flexible in the sense that their OSes are opening up to other software. But as they become more flexible, we are in a great danger than their optimized-for-phones keypad will disappear (for a touch screen, perhaps), or grow (with extra buttons).

Last, there’s calculators. To be honest, a calculator’s functionality, including graphics, could be done equally well with a PDA. (On my Clie, I use a programmable RPN calculator app called MathU Pro that mimics HP calculators.) But calculators are still being designed and sold.

My thought here is why do these appliances or one-use devices fare so well? After all there is nothing more flexible, more able to have multiple uses than a standard PC or PDA. I think it has to do with that very flexibility. We want our appliances to be designed for their stated purpose. We don’t want the appliance to be flexible, because with flexibility comes the inevitable blurring of functionality and increased complexity. Imagine if the iPod used a Palm-like handwriting recognition engine with a touch-sensitive screen. It could then possibly be used for far more than just playing music. But it would lose that impressive geared-for-one-purpose-and-do-it-well user interface.

Another benefit of appliances is that they seldom crash. There’s no other, possibly rogue, software running on these machines. Their operating system is optimized for one purpose. It used to make me laugh when I worked in Las Vegas, walking down the strip and seeing the giant displays outside the Paris casino showing a Windows 98 blue screen. Using a PC to drive these displays seems innocuous enough, no? Imagine how much better they would run if there were an appliance that did the same job.

So I can see appliances continuing to have a great market share compared to "special" software on a standard PC that mimics the appliance’s function. And I can foresee that Linux will have a big role here: it’s easier to produce a specialized OS for a device with Linux than anything else.

I realize that Microsoft is trying with Windows Media Center and Windows Mobile to target these appliance markets, but their big problem is that it’s the hardware manufacturers who dictate the agenda here. Suppose, for example, that someone, HP say, were to provide a photo printer with a photo editing function. You slip your camera’s memory card into the printer, and through a tuned-to-photo-editing user interface you can tweak the contrast, brightness, and color balance of the photos and remove red-eye and crop the image and all that fun stuff before printing. Do you think that would be a big seller? Do you think it would be running Windows under the hood? To me the answers are yes and no.

Long live the appliance! Now, how do I get a piece of the action?

Ten Annoyances in Delphi 2005

These CodeFez editorials are fun. The best part is when I get comments from humor- and sarcasm- impaired people who take things far too seriously. I get a good laugh out of folks like that.

One of the common comments I get is that I am a “Delphi Bigot”. Well, that stands to reason, since that is the name of my blog. But somehow they fail to see the tongue-in-cheek nature of the moniker. Many miss the slight sarcasm, biting satire, and good-natured ribbing in some of my articles. Some have even gone so far as accuse me of being the “Borland Information Minister”.

So, in a effort to dispel the notion that I am a raging Borland Sycophant, this week’s column is entitled “Ten Annoyances in Delphi 2005”. This is probably a once in a lifetime experience, so arrive early, as supplies are limited!

So, without further ado, here they are:

  1. Those dang blue balls cover up line numbers. I would have loved to have been at that meeting. “Hey, we have this new line numbering feature. Let’s cover up the line numbers with blue balls!”

  2. No "Make Region of Selected code" option Code folding is cool, but not so necessary in Delphi. What is cool is folding regions. Unfortunately, there is no way to select a block of code and turn it into a {$REGION} Oh well. Actually, I’m growing fond of typing, scrolling down, and typing again.

  3. "Build All Projects" doesn’t have a shortcut key. Back in the day, CTRL-S, CTRL-F9 was good enough. Now, with assemblies, multiple projects, C# and Delphi in the same project group, why, a simple compile isn’t really good enough. Build All is the future!

  4. Select Tools|Options… Look at the horizontal scroll bar in the treeview control. Be annoyed. Argh. Double Argh! One of my pet peeves is non-resizable dialogs that we should be to resize. Things are better in Delphi 2005, but still have a way to go. (Once the holy war against non-resizable dialogs has been won, the crusade will move on to getting the IDE to remember the sizes of dialogs that have been sized.) Anyway, that dang horizontal scrollbar on the bottom of the Options dialog bugs the heck out of me. Why couldn’t size that treeview a few pixels wider to make that thing go away?

  5. I overshoot those dang tabs on the bottom by just a little bit, and my Windows taskbar pops up. Up and down and up and down goes my mouse. Tabs on the top, tabs on the bottom. Since I have my Windows taskbar set to auto-hide, one pixel too far and BOOM, up it pops, and I have to wait for it to go down. Can’t those tabs at the bottom be somewhere else? Anywhere else? (And while we are at it, could there be any more annoying feature than the Windows taskbar when it won’t recede? This happens all the time. And how about that application that pops up the taskbar, insisting on being paid attention. “I’m not going to stop blinking and I’m going to keep your taskbar popped up until you look at me!!!!’ Who thought this was a good idea?)

  6. No "Close All Open Files But Not The Project" option in editor I know this is considered blasphemy in the Delphi community, but I’ve taken to using the “Default” desktop with everything docked into one big window. This allows me to unpin the Object Inspector, Project Manager, etc., and bring them out on demand. Well, in my normal course of working, I frequently end up with tons of code editor pages open, and sometimes I’d like to close them all and just sort of start over with one page. Well, there is no way to do this except to hit the little black ‘X’ on all the code pages. “Close All” closes the entire project, and that’s not what I want.

  7. The "Highlight Current Line" feature is really annoying. I suppose some people like this, but I find it incredibly annoying. I like a dark background in my Code Editor, and there simply isn’t a color that I can choose for the highlighted line color that doesn’t make this feature bothersome in the extreme. It utterly obscures the text caret, so I have no idea where my typing will go. And to make matters worse, there isn’t one place to turn off the "Highlight Current Line" feature once and for all. You have to switch it off for every individual file type. Argh!

  8. And while we are at it, the bracket matching “feature” is really, really annoying. This one I truly hate, and I cant understand why anyone like this. Try this: Drop a button on a form. Double-click on the button. Type “ShowMess” an press CTRL-Space. Then select “ShowMessage” from the list. Now, is the cursor where it is supposed to be, right in between the parentheses? Huh? Are you sure? Move it around. Now are you sure?

  9. No way to get the IDE to easily open a plain ol’ *.pas file. If I am working on a Delphi project and click on the Open button, it should assume I want to open a *.pas file, not a .bdsproj file, or whatever. That’s what Open Project is for. And to make matters worse, the drop-down filter box has a selection named Pascal Project (*.pas) that doesn’t merely open a *.pas file, it opens it as a project! Don’t pick that one when you have to go through the annoying process of dropping down the combobox and selecting the *.pas filter. (More “while we are at it”. Is there anything more annoying on the Standard VCL pallete tab than the dreaded combobox? Who likes these things? Click, find the scroll thumb, scroll, scroll, scroll, find what you want, click on it. Oops! I clicked on the wrong one! Start over! There has to be a better way that this.)

  10. Class Completion isn’t keeping up with the times. As much as I hate to admit it, we Delphi developers have to make some concessions to the tyranny that is the Common Language Specification (CLS). One is the definition of property assessors. The CLS requires that all accessors begin with ‘get_’ and ‘set_’. (Is there a more commonly used, difficult to type, and utterly unnecessary character than the underscore?) Well, Class Completion doesn’t provide this when filling out property declarations, and I think it should.

There you go. See? I’m not a total sycophant!

Note to the humor impaired: The above article contains sarcasm, humor, and a touch of satire. Please read the definitions of those words carefully before commenting or sending emails. And by the way, this very notice itself contains that very stuff, too.

Note to Allen, Corbin and the gang: I love and admire you guys. You all are my heroes. Really. Seriously. No hard feelings, right?  Right?