Archive

Frank Drake

Today I learned…

  • Dr. Frank Drake wrote the so-called Drake Equation to estimate how many intelligent life forms we have the potential to make contact with in the entire universe. I had heard of this equation before, but didn’t know anything about Dr. Drake.

.NET, Personalities

This is going to be the first post in what I hope to be a practically daily account of things I’ve learned that day. Sometimes it could be just one thing, or many things… But I guess we’ll find out.

Today I learned…

I Hate You, Microsoft

Can I be the only one who hates Microsoft Script Debugger as though it killed my own father? Despite Microsoft’s lead in the browser market (perhaps more likely due to IE’s bundling with Windows than IE’s actual superiority as a browser, but nevertheless) and their long-standing and well-respected support of the development community through things like Visual Basic, IIS/ASP, and .NET (both for standalone as well as web development), they are so far behind the mark in website debugging that it hurts.

I have become so accustomed to using the Firefox add-in “Firebug” to peek into JavaScript code that I am practically helpless without it. I remember a day when Microsoft Script Debugger used to open to the actual line of code with an error in it, but I guess those days are over (or it only works for debugging local ASP). Now clicking “Yes” on the script error dialog when asked “Do you wish to debug?” opens up Microsoft Script Debugger to some completely different script that isn’t even on my website. Very helpful.

Without being able to debug, I have to pepper all of my code across several libraries with alert() statements and just hope that I can figure out the state of affairs inside this twisted, illogical browser.

Thank you, Microsoft. I wouldn’t be nearly this unhappy if the browser you shoved down everyone’s throat was actually halfway decent.

Ambien CR (the “CR” Stands for Hypocrite)

I just love these commercials for prescription drugs that we’re forced to sit through nowadays. You can’t watch the morning news (which is the extent of my television experience these days) without being recommended salves, ointments, pills, injections, and inhalers for virtually any malaise on the minds of the modern individual. The flaccid penises, stuffy noses, socially anxious, and now the insomniacs of the world have found solace in drugs through extremely polished advertising campaigns.

I won’t get into the fact that your doctor probably knows better what drug suits your particular medical history and body chemistry than a commercial animated by the same people who do the Super Bowl in-game graphics, but one commercial in particular really got me thinking. It was a commercial for Ambien CR, the new prescription “sleep aid,” which is essentially a sleeping pill. Their disclaimer states:

Until you know how AMBIEN CR will affect you, you shouldn’t drive or operate machinery. Be sure you’re able to devote 7 to 8 hours to sleep before being active again. Sleepwalking, and eating or driving while not fully awake, with amnesia for the event, have been reported.

Let me put this in simpler terms. Number one, you shouldn’t drive while you’re taking Ambien CR. Number two, you may go driving while you’re taking Ambien CR and you won’t remember it. How reassuring! At least I won’t know that I took the car out for a leisurely 4 AM spin until I wake up the following morning, stumble into the kitchen, and see that my car is parked across the front lawn covered in all of my neighbors’ patio furniture.

That’s like a medical disclaimer that says, “If you value your life and the lives of those around you, do not consume milk while taking this product. By the way, this product has been reported to cause insatiable thirst for milk.”

Hooray for big pharma!

OS X Uses BSOD As PC Server Icon

I, personally, laughed aloud when I opened the “info” window for a PC server I was connected to yesterday.

BSOD!

The oh-so-familiar blue and white pattern that appears on that clunky, beige CRT monitor seals the deal on one of the cockiest inside jokes I’ve seen from the Apple developers yet. Good game!

MySpace Goes Mobile, Remains Slow and Buggy

If you thought the excruciating load times, frequent page errors, galleries of cat photos, and abysmal site design of MySpace were only meant to be enjoyed in the comfort of your home, think again. T-Mobile and Danger, the maker of the popular Sidekick phone cum hiptop-communication-center, have partnered to bring a mobile version of MySpace to the device. According to Chris Ziegler (via Engadget), it’s “…more than a simple mobile web portal, offering real-time status, profile editing, photo management, and communication with other members…” which likely means that it’s a cleverly disguised pile of dog crap much like its desktop-sized big brother.

Did anyone else find it offensive that a website run by nearly 100 people (a figure reported some time before the site’s acquisition by News Corp.) could be so full of poor code, crippling bugs, and perform only slightly worse than sites run by one person? The acquisition by News Corp has done little to improve the state of affairs in MySpace-land and has only increased their advertising deals 500% and riddled the site with enough promotional material to strangle an ox.

I’m glad I passed on the Sidekick and went iPhone!

Bees Hurt, Apple Warns

There is such a lack of charisma and personality in your average knowledge base article. Granted, some information is very serious and calls for a staid and solemn description, but even in the absence of humor, there is always room for the comforting human touch of a skilled writer. Corporations have, for at least a decade, moved steadily away from the colloquial and into the crystal clear, yet icy and inhospitable waters of antiseptic technical writing.

Except, apparently, for Apple. Reproduced in full, for convenience:

As if it were a swarm of bees, you should stay away from the SyncServices folder in Mac OS X 10.4. Removing or modifying anything in it—or in subfolders within it—may cause unexpected issues. This folder is located in your Application Support folder, in your Library folder, in your Home folder.

Deleting or modifying things in the SyncServices folder may cause unexpected results such as:

  • Duplicate contacts in Address Book or appointments in iCal.
  • Data loss in Address Book or iCal.

Important: Any lost or duplicate data could propagate to other devices and computers via iSync and .Mac sync. This means data could be lost on other computers.

What would likely be considered by most businesses to be far too colloquial an expression for a technical article lends a familiarity to this information that, for me, makes it seem all the more reliable. I, like many consumers of knowledge base articles, appreciate the notion that there are human beings working behind the curtain and that they aren’t being hypnotized by corporate mind-control rays.

I appreciate Apple’s willingness to talk to its customers the way they would like to be spoken to and to achieve an effective balance between information and personality. Such practices are increasingly rare.

Blocking Ads Is Not Unethical

I just love this debate going on about AdBlock Plus, the Firefox add-in that allows a web surfer to block virtually all of the advertisements on the web. Failing to discover which users might have AdBlock Plus installed in their Firefox browsers, some webmasters (decades later, I still love this word) are now blocking Firefox entirely, redirecting users to this cheesy page instead.

Fundamentally, this scuffle reminds me of The Butter Battle Book by Dr. Seuss. In that story, two groups of androgynous furry creatures are at odds because one group butters their bread on the top and the other butters theirs on the bottom. The cause for their animosity doesn’t relate to the AdBlock debate, but the ensuing battle can be seen as a metaphor for every conflict waged in technology since the earliest days of human civilization.

Each of the two groups of furry people create progressively more outrageous devices to attack the other with what seem like small rubber balls. A simple slingshot gives way to a multiple-slingshot, then a device to catch the opponent’s rubber balls and launch them back, and so on, until they finally create a device that is cleverly metaphorical for the atomic bomb and find themselves at a total impasse.

Similarly, websites can only block Firefox if they know you’re using it, so adjusting the UserAgent string and the certain responses or structures returned or available through JavaScript trivially masks that fact. Firefox detection and AdBlock detection schemes will simply get more complex and consequently the masking countermeasures will, too. It’s a futile battle.

The moral of the story is this. As a webmaster, you simply cannot completely control the way your content is manipulated and displayed within your visitors’ browsers. You can follow best practices and accommodate the majority’s needs, but fundamentally the content is malleable. Once the data leaves your server through that pipeline we call the Internet, it is at the whim of the end-user.

So what are the implications for online advertising? Chris Soghoian over at C-NET tries desperately to wrap his infantile brain around the discussion in an article entitled Who blocks the (ad) blockers? (on C-NET Blogs). His conclusion is that blocking advertising on a website is essentially theft because you are using their resources and consuming their offerings without “paying” by being exposed to their ads. No matter how valid that point may be from a sterile, legal perspective (e.g. by viewing this site you agree to be bound by the terms of the viewing contract which stipulates that you must be continuously bombarded by our advertising, yadda yadda), it’s not a very friendly way to do business.

When ReplayTV was “sued … out of existence” as Soghoian said, it represented the first step toward the obsolescence of the “block ad.” TiVo and the cable companies’ homebrew DVR boxes allow viewers to effortlessly skip over advertising, and they do.

Advertising is a symbiotic relationship. Advertisers expose their consumer base to information and hype about their products or services, and those consumers who find the products or services interesting or valuable may purchase them. Exposing people to products they are interested in is a public service. Consumers want to buy things and companies want to sell things, so it’s just a matter of connecting the two. Effective advertising is that which efficiently exposes potential consumers to the products or services being sold without becoming such a burden that they want to block them.

Again, ReplayTV was the harbinger of the fall of block advertising. Soon, mark my words, all advertising on TV will be replaced by product placement. Technology exists to make block advertising obsolete because nobody actually wants to watch it. It is the job of the advertiser to find a delivery method that is effective, and part of the effectiveness formula is whether users will find a way to avoid, block, or skip over it because they are too annoyed or too disinterested.

Ignoring the fact that all Firefox traffic on the face of our planet amounts to about 15% on a really, really good day, and that the number of Firefox users who are actively using AdBlock Plus or a variation on it is much smaller than that, I truly believe that advertisers should see this as a wake-up call.

Boy, Is My Face Red

So then I discovered that the functionality I was trying to add to bsflite was kinda, sorta, maybe already there. Way to read the entire help output, smart guy.

That left only a couple of features I really wish bsflite had. One is more robust tab completion, such that screennames could be partially completed out to the next difference, the way bash does it. Another is deleting the last word on the line with Ctrl-W, also the way bash does it. I’m in love with bash, you know.

Since I’m about as good at C programming as Stevie Wonder would be at tennis, I thought that if I wanted to tackle one of those features, I’d have to go with the easier one. So, Ctrl-W word deletion it is!

I jumped the gun on the thing and had a semi-working prototype up and running, which I posted to the project page on Sourceforge just before realizing that it is full of bugs. Back to the drawing board I went, writing a test harness and experimenting with pointers and strings until I was really pretty darn sure it would work.

At which point it did not work.

As it turns out, the third time is the charm, and I really think I’ve gotten it to a workable stage. I was able to make it segfault once, but I haven’t yet figured out what caused it to do that, so for what it’s worth, here it is. Without further ado…

The bsflite 0.82 word delete patch

The Joys of AIM

AOL Instant Messenger is really the last remaining shred of AOL’s former monopoly. Once folks realized that they didn’t need AOL to get on the Internet, and that the Internet itself, through search engines and portals, could give them basically the same stuff they got from AOL for at least half the price, they dumped that service like a ton of bricks. In their scramble to rebuild the empire they once enjoyed, AOL introduced AOL Instant Messenger, which has now become completely entrenched in the world of instant messaging.

Despite the alternatives, including the big names like Yahoo!, MSN, and Google, not to mention Jabber, etc., most people mean AIM when they say “IM.” That being the case, huge numbers of third-party clients have been released to give access to the AIM network from other platforms and using different interfaces. In OS X, Adium takes the cake. For Windows there’s Trillian. In Linux, of course, gAIM. But if you want to use a console client (because it makes you three times as 1337), you have a choice.

The forerunner in the console AIM client race is nAIM (I believe it is short for ncurses AIM, invoking the name of the console input/output library it uses, ncurses). But I have had spotty luck with it myself, either because it’s in a development rut or because of my particular system setup. nAIM crashes a bit for me and so on. On top of that, it’s very friendly and colorful, but that doesn’t work for everyone in every situation.

So I found “bsflite,” a very lightweight client written in C that compiles on most *NIX platforms (check the bsflite Sourceforge page for more). I started using it and I like it very much. It’s fast, it’s simple, it gets the job done. Except for one thing…

The basic interface concept of bsflite is a simple prompt with all other messages and status information dumped into the screen from bottom to top. In order to send messages and do other things, you enter a single-character command followed by any parameters. For example, to send an IM, you enter “m” followed by the user’s screenname. There is some tab-completion, but it only works once you’ve typed enough of a name to be unique and on top of that, if you are talking with just one person, you have to type at least the first few letters of their name over and over.

So I came up with a pretty simple solution that allows you to press tab on an empty line to pop up the command to send a message to the last person you sent a message to. In other words, if you enter “mfavoritefriend How do you do?” and then press tab on a blank line, you will get “mfavoritefriend” with a space after it so you can enter another message.

The change was really simple, so if anyone uses bsflite and wants to hook it up, here is the patch

This patch is for bsflite 0.82. Other versions may not be quite the same and the patch is for the main file, bsf.c, so be wary of that.