Thursday, July 31, 2008


It seems pretty obvious that someone who calls himself The Tech Curmudgeon should be blogging about ... well, blogging, among other things.

The fact is, I still consider myself a newb n00b in the medium, though I'm trying to catch on as quickly as I can. My first reaction, as I'm sure is true for a lot of people, was "Why would I want to read about a lot of other people's favorite TV shows, or restaurants, or laundry detergent or whatever?"

After some serious introspection, I realized that I don't. But there's a lot of other good stuff out there that is interesting to read. In fact, I'm interested in stuff I didn't even know I was interested in ... didn't even know existed!

The other problem is that it's an infinite time pit. If you start reading blogs, you'll inevitably want to follow links to see what the posters are talking about, and that will get you started on other blogs, and so on. When you read a book or a newspaper or magazine article, you eventually finish it (unless you're like me, and they just pile up, half read, on the coffee table.) On the Internet, nothing ever ends. I don't have a workaround for that problem, I'm afraid. I suppose having a day job helps, but it's still too easy to get caught in a never ending train of link chasing.

And there's the quality thing. I heard about a few sites that offer blog recommendations, but they offer zillions of them! lists thousands of blogs, covering every topic in the spectrum of human thought. is supposed to help you find all the blogs relevant to your interests, but what if you're interested in everything? Everyone's so paranoid about all the personal information that Google is hoarding, but I say "Good for them. Figure out what I'm interested in (which has eluded me), and show me that!"

Finally, there's the well-known conundrum of authority on the Internet. How do you know any of this is true? Someone publishes some inaccurate information, and it gets linked to and copied all over the known universe within hours. Now, there appear to be multiple sources corroborating the bogus news, giving it the appearance of truth. (Nothing to worry about here. Readers of this blog get pure, unvarnished opinion, not biased by facts.)

So, I guess the logical conclusion is that blogs suck. I'm glad not everyone feels that way.

Wednesday, July 30, 2008

Oil Drilling

Lifting the ban on offshore oil drilling is like searching for spare change under the couch cushions. If you're lucky, you may get some temporary relief, but it doesn't solve the basic problem.

Actually, I guess it's more like buying a bunch of used couches in order to look under the cushions.

Tuesday, July 29, 2008

Mad Men And Even Madder Men

I grew up in the era depicted in the popular TV show Mad Men. Back then, advertising was the number one game in town. It was almost a cliche ... the corporate, suit-and-tied junior exec was in advertising. The number of books and movies portraying the advertising business is staggering. Movies like Lover Come Back, Good Neighbor Sam, and Mr. Blandings Builds His Dream House, along with TV shows like Bewitched, all revolve around the ad business. So it's no surprise that shows like Mad Men fill us with nostalgia for those cut-throat, back-stabbing days when advertising was the prestige business in America.

Well, guess what, it still is. In the high-tech world, hardware companies like DEC and IBM were eclipsed by software giants like Microsoft and Adobe. Now those, too, are overshadowed by companies like Google, a company whose business is ... selling ads.

Monday, July 28, 2008


As someone who's earned a substantial portion of his living in the print industry, I've been concerned about the long-touted, but scarcely evident, demise of print. As I've been hearing for decades, paper is going to disappear. Everything's going to be digital.

One has only to glance in my office, or that of most of my co-workers, to see that paper is not going to disappear anytime soon. But even if it were, as I've told myself, there's always packaging! They still need to print packaging!

But packaging, or at least printed packaging, is also a by product of brick-and-mortar shopping. There's no need for slick boxes in the on-line shopping world. Snazzy graphics, and even animation, can be used on a Web site to hawk products that could be shipped in plain cardboard cartons.

But it's not happening anytime soon. Packaging design is still as important as, if not more important than, product design. Take the iPod Touch. It comes in a cute little box with John Lennon's picture on it. (This is, in a way, Apple's gloat at having achieved the ultimate triumph of form over content by winning the Apple trademark away from the Beatles' company, Apple Corps)

And then there's the welded plastic clamshell packaging that covers so many consumer items these days. These packages, designed to lacerate your hands when you try to open them, minimize the printed surface area to a small card inserted between the halves of the shell. Luckily, there's hope for their extinction.

When CDs first became popular in the early 1980's, there was actually a campaign of popular opinion to get rid of the long box, a 6" x 12", shrink-wrapped cardboard box that housed the plastic jewel box containing the CD. Theoretically, the purpose of the long box was to allow retailers to display CDs in bins designed for vinyl records. But in a more innocent and idealistic age, people actually had the audacity to resist this blatant waste. Now, we buy DVDs in cases with almost as much wasted space ... and they're plastic!*

But this, too, shall pass. Already, people are saying "CDs?," "DVDs?" Don't you just download everything? Even books, perhaps the most perfect example of packaging and content combined, are being replaced by downloadable digits.

When I can download all the food and clothing and furniture and recreational equipment I've bought recently, I'll be happy to give up packaging.

* In a classic example of ineptitude, the plastic shell cases for DVDs have notches which should enable you to get your fingers on the edges of the DVD. However, most manufacturers of these cases evidently failed to understand the purpose of these notches, and so blocked them with a little ridge that makes grabbing the disc by its edges impossible.

Friday, July 25, 2008

Feature Priorities

One of the most interesting interview questions I've heard is: What should a snack vending machine be like in 5 or 10 years?

There are loads of possibilities. If something's out of stock, the machine should direct you to the nearest machine that has that item. It should recognize your RFID and automatically highlight choices fitting your preferences (or dietary restrictions!) It should offer different items based on time of day or season of the year. It should be accessible from the desktop, so you order what you feel like, and the now robotic machine delivers it to you.

I've spent some time mulling this question. I considered outlandish possibilities, like a machine that prepares your snacks to order, or one that automatically supplies nutritionally correct items at the appropriate time.

But I've decided there's one overriding feature I'd like to see in the vending machine of 2013.

It should work! It should give you the damn item you paid for.

Thursday, July 24, 2008

Where Am I?

I ordered a GPS system on-line, but it got lost in the mail.

It eventually did show up, though, and immediately won my heart. To begin with, I hate driving. I hate traffic. I hate searching for parking spaces. I hate idiots who pull out in front of me, and even bigger idiots who stop to let the lesser idiots pull out. But most of all, I hate not knowing where I'm going. So, after a particularly frustrating attempt to find my way back to my hotel after a baseball game, I decided to get a GPS.

The infatuation was immediate. That calm, enticing voice is so soothing, it's better than transcendental meditation. The almost unflappable way it warns me of upcoming turns, and then repeats the instructions just when I need them, is so seductive I've started purposely making wrong turns just to prolong the conversation. I'll change routes and shoot down one way streets just for another word from my guide. I keep trying more and more outlandish routes to try to evoke some surprise ... some emotion ... anything!

But I think it's on to me. When I've ignored some instruction, I now detect a definite peevishness about the way it says "Recalculating..." If I've been particularly heedless, I get long periods of silence as I sail past obvious shortcuts. And if I commit some really egregious fault, like making a wrong turn at the very end of my trip, I get veiled threats in the form of hospital locations.

But disconnecting is not an option. I can no longer live without it. I guess I'll just have to give in and do what I'm told.

I've gotta go now. It's time for a drive.

Monday, July 21, 2008

hello, world

Brian W. Kernighan and Dennis M. Ritchie introduced their C programming language to the world in a 1978 book obliquely titled The C Programming Language. They opened with a 3-line program that simply prints "hello, world" on the screen. (Remember, these are the days of terminals and command line programs, and the screen was what was endearingly called stdout.)

In an earlier post, I waxed nostalgic for the software development world of 30 years ago, so I thought it would be entertaining (for me, at least) to consider what it would have been like to be the maintainer of this program over the past three decades.


First, the greeting itself would have to translatable into different languages, so the program would probably be modified to read the greeting string from a file on disk. That way, translators could localize the string for different places without having to modify the code.

Since the location of the string file would probably vary from one installation to another, we'd need some way to identify the file with its site-specific path. This could be done with an environment variable or a resource file on a *n*x system, or a .ini file on Windows. (The registry was still years away). On the Mac, perhaps it would be stored in the resource fork. A more general approach would be to put the string in a database, so it's value could be retrieved via a query. This could be implemented in the then new SEQUEL (later SQL) query language.

Now, of course, a string with 8-bit characters can only represent some Western European languages, so we'd have to enable the program to support 16-bit characters, and make the corresponding changes to the resource files and/or database. Since it's inefficient to use 16-bit characters all the time, the program would have to test the language to determine whether to use 8-bit or 16-bit representations. We also need fonts which can display the necessary characters in all the languages we'll be using.

Also, since we now have workstations and personal computers with graphical user interfaces, we'd want to display the greeting in a window, instead of just on a terminal screen. In fact, Charles Petzold did include a sample "Hello, Windows" program in his book, Programming Windows. It was about 60 lines of code.


So by now, it's time to convert the code to C++. This will, of course, make it easier to maintain, and it's just generally cooler. For the C++ implementation, we'll want to have classes for the display window and for the string, to hide all the ugly implementation details of multiple string formats, and of differing window systems.

We should probably also make it client/server based, so we can ... uh, ... well, just 'cause that's the way to go. We'll have a "hello, world" server, hwserv, which will keep track of who needs to be greeted, and will display the appropriate greeting. The server can keep the database of greeting strings, and query each client for the appropriate language to use.

But now, of course, there's that World Wide Web thing to consider. Some clients will just be using various Web browsers, and we'll have to use Perl CGI scripts to create dynamic HTML pages containing the suitable greeting.

Of course, we also want to use relevant meta-tags, so that search engines can find our page. We'll probably also consider commercializing the page (Surprisingly, displaying "hello, world" doesn't bring in a lot of money!) by including ads. And we'll need counters and statistics to know how many people are actually seeing our greeting.

Now that we think about it, the Perl CGI scripts are pretty slow. We'd be better off using downloaded Java applets, or possibly JavaScript, to determine the local language and select the greeting string. Unfortunately, just downloading Java applets is slow, and JavaScript doesn't work the same way from one Web browser to another.

We also need to implement security so only those who are entitled to be greeted can receive our greeting page, and so that the site itself is not subject to hacker and denial-of-service attacks.


Downloading all the possible greeting strings in all languages is really unnecessary. It would be more efficient to determine the language and then fetch a short XML representation of the appropriate string, using AJAX.

Since our greeting must be state-of-the-art, we're going to create an animated sequence to display the "hello, world" graphic via Flash. We can use ActionScript to animate the text, which will be generated on-the-fly in the appropriate language.

But wait! This needs to run on a cell phone! Of course, it will have to display correctly, regardless of the size and orientation of the screen.

And it needs to be position-sensitive, via the built-in GPS chip, so that you automatically get the appropriate greeting string for the current location of the phone.

And there must be an audio version, so it's accessible to the vision impaired ...

And it should be touch-aware ...

And it should work over WiFi or 3G networking ...

And ...

And ...

And ...

hello, world

Monday, July 14, 2008


I can't remember if I've already posted on this or not. If so, I'm sure this take will benefit from the increased wisdom and experience I bring to bear. Or not.

This month marks a personal anniversary. As of this month, it's been 30 years since I started working full-time in some form of software development or other. (I know ... I've previously said that anniversaries, and especially round-numbered ones, are artificial and meaningless, but let's go with it here.) So, reflecting on three decades of software development, I see much that has changed, and much that has not.

When I started, we worried a lot about the memory and processor speed constraints of minicomputers. As soon as those resources became virtually unlimited, we started developing software for workstations, and again had to worry about memory and processor speed. By the time workstations became virtually unlimited, we were developing software for PCs. Guess what. And now it's cell phones and hand-held devices. What's next? Implants?

After a year at my first full-time job, at a big Wall St. brokerage company, I got a job at DEC, then the coolest computer company around. DEC was like being in college, but making money. I joined DEC in the New York office. There were about 20 of us software specialists, all using a single VAX 11/780 as our main computer. We connected via VT-100 terminals, and did everything with command line programs. Now I have many times that amount of computing power and memory in each of my pockets, not to mention my Mac, Windows and Linux desktop machines, my camera, etc., and it's not enough!!

When I started, we wrote programs to solve problems. I would estimate we spent about 80% of our efforts on finding the best solution to the problem, and getting it to work reliably and efficiently. The other 20% was spent on integration ... getting the program to be compatible with other software, to provide compliant interfaces, and generally to play nicely with other software.

Now, it's the opposite. We spend about 20% of our time actually solving the problem at hand, and the other 80% on making sure everything is translatable into every human language, compliant with the latest Microsoft interfaces, Web compatible, accessible, interoperable, scalable, scriptable, and just about every other kind of -ible or -able.

Gordon Moore observed in 1965 that the number of transistors we can fit on a chip doubles about every two years. By extension, this Moore's law is widely taken to mean that the capability of any given technology doubles about every two years, or at some astonishing rate. I don't think anyone has yet quantified how quickly our expectations about technology increase, but it's got to be at least 4 or 8 times the Moore's law rate. (Ok, we geeks are stuck on powers of 2.) It's a major news story when it takes people a few hours to download and install over 200 megabytes of new iPhone software. We complain if an email to the opposite side of the earth takes almost half a minute to send. We gripe about spending a few dollars for a first person shooter game for our cell phones.

One thing I've learned in 30 years: Computers will never do what we want!

Tuesday, July 8, 2008

Mute Buttons

On another blog, Ideas Great and Dumb, I celebrate with humorous rhymes and short essays some of the most important ideas in history. However, I'll take an opportunity here to discuss one of the lesser, but still important ideas ... the mute button.

TV has basically become a resource. TV flows around us, through fiber and cables, microwave signals and broadcast airwaves, like an enormous river. And, like a resource, this vast flow of stuff has to be harnessed and controlled to be put to the service of humankind.

One of the most useful of these controls is the mute button. This is what makes commercial TV bearable. Not only does it allow you to suppress the multi-decibel volume jump when commercials come on, but you can play fun games by filling in your own dialog for the commercials. The stupid little animated gecko can now talk about how his British accent makes him a hit with the ladies. And that herd of Verizon stalkers with their Geeky-looking leader can now be recognized for what they are.

But the power of the mute button depends on the ability to un-mute the sound when the show comes back on. Normally, this is pretty simple. Just watch for the reappearance of your favorite characters. But lately, the networks have resorted to a dastardly trick ... they advertise the very show you're watch DURING THE SHOW. Imagine! You're sitting watching Family Guy, and suddenly, there's a commercial for ... Family Guy! What the deuce? How are we supposed to deal with that? All over the country, millions of remotes are suffering prematurely worn out mute buttons from these false alarms. Millions of Americans are startled out their stupor, causing elevated heart rates and other stress-induced medical conditions.

To heck with wardrobe malfunctions. The FCC should be all over this.