My SD Forum Talk Blogged

Last week I gave a talk at the SD Forum Web Services SIG. This was a great crowd, with lots of questions. I love interacting with the audience when I talk; its the best way to know that they are grokking what I say. My standard PowerPoint has about one hour worth of material. It took me about 2.5 hours to get through it that night, which was great. I had a similar experience at the Boston Dot Net User Group last year.

Frank Cohen of the PushToTest blog wrote an excellent review of my talk.

Wielding the Blog-O-Sword

Ok, now this is a weird story, but I think its worth telling.

I went to Silicon Valley to visit with lots of developers and to talk at the SD Forum Web Services SIG earlier this week. Things didn’t start off well. My planned 8:20 AM departure from Seattle turned into a 10:00 AM departure, thanks to bad weather and a maintenance problem. These maintenance problems are becoming a regular annoyance when flying Alaska Airlines.

Anyway, I got to San Francisco Airport (SFO) over 2 hours late, and it was raining cats and dogs. In order to save my employer a bit of money, I chose the cheapest rental car I could find, taking it in preference to our “preferred” vendor because it was half the price (about $31/day). After waiting a long time, the el cheapo shuttle van shows up and takes me to the place. I get there, and present my license and credit card so that I can get my car and be on my way.

The clerk looks at my record and tells me “You are too late, we expected you two hours ago, and I cannot give you this rate anymore.” The accumulated frustration from the endless delays on what started out as a simple trip start to boil in my stomach, and I grit my teeth and braced for the worst. I tell him that I don’t have authorization to spend any more than $31 per day on the car, and that’s that. He stands his ground. Bile rising, I stand my ground and think for a second.

“Ok, dude, ” I tell him. “You’ve got two options. Number one, you can give me the car at the price you agreed to. Number two, you can take me back to the airport, and I’ll find another car. However, I have to tell you that I run a really popular web site, and I will be happy to tell all of my readers just how bad the service is here at this particular location.”

He thought for a second, while the impact of my world-wide blogging ability slowly settled in. I could see him realizing that a few simple words from me could utterly ruin him, his agency, and perhaps the entire rental car company. I saw him quiver, as he realized that I was indeed that Jeff Barr, and that my blog really was that popular. In his head he weighed the tradeoff, a few dollars per day vs. my considerable Page Rank, Alexa Rank, and writing skills. He saw a bleak future before him, and he knew I had won.

“Alright, you can have the car this time. But next time [as if] you need to call first if you will be late.”

Victory was mine, and I put my Blog-O-Sword back into its sheath, ready to wield it again when next faced with an intrasigent clerk.

Had a good 2 days in the valley, ending with a great Italian dinner at Kuleto’s. Rushed to make my 8:20 PM flight, only to endure repeated delays and an actual departure at 11:30 PM. Alaska Air has been my favorite airline for a long time, but they are rapidly using up my supply of goodwill. There are not a whole lot of choices when flying SEA to SJC or SEA to SFO.

Blocking Trackback Spam Using WordPress 1.2

Every day I get a number of trackback spams that I have to delete manually as part of my morning email processing ritual.

This morning I got tired of doing so, and put a quick hack into WordPress to block trackbacks which contain the most common words. This took just a minute, and I think it will make a difference.

The code works for WordPress 1.2 (I have not had the time to upgrade to 1.5 yet). The modifications are in wp-trackback.php . Simply open up this file, and add the new lines as shown in bold, below. This is at line 25 in my copy of the code.

…… if (empty($title) && empty($tb_url) && empty($blog_name)) { // If it doesn’t look like a trackback at all… header(‘Location: ‘ . get_permalink($tb_id)); } // Trackback spam if ((strstr($excerpt, "casino") !== false) || (strstr($excerpt, "poker") !== false) || (strstr($excerpt, "phentermine") !== false)) { header("Location: " . get_permalink($tb_id)); } if ((strlen(”.$tb_id)) && (empty($_GET['__mode'])) && (strlen(”.$tb_url))) { ……

Be careful not to disturb anything else, and save the file. That’s all you need to do. If new types of trackbacks (with different subjects) start to appear, isolate the appropriate word and plug it in. The safest way to do this is to copy the line which contains the test for ‘poker’, paste it immediately following the original line, and adding the new “bad word”.

Online Car Shopping

I’ve been browser-shopping for a new car, and I have to say that many of the online shopping sites could use some help. Most of the sites assume that you know what car you are looking for before you get there, and provide little in the way of comparison matrixes, multi-dimensional searches or grouping within a vehicle type.

I started shopping without knowing what kind of car I wanted, how much I wanted to pay, or what features I needed.

Despite the money they’ve spent on TV advertising, I found the Vehix site very painful to use. There was no “man in the box”, and the Flash-powered UI was distractingly rich. Also, once I choose a make and model, I couldn’t go back one step. I had to reset the selector in order to continue. Very poor, especially for a Flash application.

CarsDirect was slightly better, with some decent buying guides.

I thought that some of the Toyota models looked interesting, and spent some time pricing out a Matrix. Then I found this very helpful comparison chart:

At a glance I was able to see all of the models and prices, and I learned a lot about Toyota’s entire product line very quickly. By clicking on the left I could have sorted the chart by MPG ratings or by the number of passengers.

This big-picture overview was just what I needed to get started. Nicely done, Toyota!

Ajax, Dojo, Ajaxian, Sajax, etc.

With the advent of modern “version 6″ browsers such as IE6 and Firefox, web developers found that the implementations of JavaScript, XML, DHTML, and the DOM (Document Object Model) were good enough to support some serious client-side programming without the need for a plethora of hacks or code specific to one particular browser.

Building on this, applications such as GMail, Zuggest, Google Suggest and Google Maps use a new interaction style that people are calling Ajax, short for Asynchronous JavaScript And XML. Despite the fact that this is a trademark, the term seems likely to stick. There’s been some controversy about the name, and a proposal to call it CADEX (also a trademark).

It appears that Ajax is the name of choice, and that’s fine. From what I can tell, the term was coined by Jesse James Garrett, in this article. It has already been turned into an adjective, with the advent of the Ajaxian blog.

There are already some useful toolkits to simplify this style of programming:

For PHP Perl, and Python, SAJAX is the way to go. SAJAX exports marked server-side functions into JavaScript that can be called from the page, in effect creating bindings to go from JavaScript to PHP, Perl, or Python.

There’ also Dojo, which looks flexible, but a bit more abstract.

Podcasting Stuff

Podcasting is a relatively new phenomemon, and I’ve only had time to listen to a few so far.

It reminds me of AM talk radio for some reason. Back in the 80′s, newly married and house-poor, I bought a Dodge Dart from my father-in-law for something like $200. The radio was AM-only, and I had to use needle-nosed pliers to tune it. Once I found a good station I tended to stick with it. I used to listen to Bruce Williams, Dr. Gabe Merkin, and others. Later, I got a better car, and was able to tune into Bruce (again), and Art Bell.

Ok, so now back to the present. Podcast brings together cheap storage, high-bandwidth connections, portable MP3 players, and people with something to say.

For example, my onetime co-worker Dave Schappell recently did his “Early Retirement Dot-Com Guy Podcast“. The sound quality is high, and Dave is focused yet informal, and quite entertaining. When his wife calls in mid-cast, Dave answers, talks to her, promises to edit it out, but doesn’t. He doesn’t say “call me back, I’m podcasting,” or anything like that. His recitation of the email from overstock.com is worth the 14 MB download all by itself.

Dave recently created a Seattle Podcasting Meet-Up, and I’ll try to get to one soon.

Finally, Syndic8 has been tracking RSS enclosures for a long time. I recently added a “River of Podcasts” page, featuring the newest podcasts in 6 languages (English, Spanish, French, Japanese, German, and Dutch). Some people are casting things besides audio, such as images, video, and even PowerPoint presentations.

Visual Basic Developers are Revolting

That’s the title of this article over on ZdNet. In fact, the developers are probably pleasant people, and this is either an attempt at humor, or a British-ism that doesn’t mean quite the same thing here in North America.

What’s happening is that developer who still use VB6 want Microsoft to continue to provide support for the VB6 non-managed programming model. They clearly know and like this model, and they have to maintain and support code written to it.

A9.com Search Integration

Jeff Bezos rolled out a new feature for Amazon’s A9.com at the ETech conference today. Using a simple extension to RSS, any search tool can be plugged in to the A9 search.

I have already done this integration, and you can now see the results of a Syndic8 feed search as another column on the A9 home page!

To see this in action:

  1. Visit a9.com.
  2. Click on the link titled “Add Columns to your Search Results”:
    Add Column to A9
  3. Scroll down until you find “Syndic8 RSS & Atom Feed Search”; it looks like this:
  4. Press the Add button.
  5. Return to the main page and do a search. Here’s the result column after a search for chocolate:

Hot Stuff

A couple of months ago we saw a FoodTV segment about a pepper farmer in Eastern Washington. Starting small, he now produces hundreds of tons of pickled peppers every year. Last Friday I was walking through the PCC market and saw his peppers, Mama Lil‘s, on the shelf. The bottle was a bit pricey, $8.99 for a moderately sized bottle. It was evening and I was getting hungry, so I bought it and took it home. We opened the bottle Friday night. By mid-day on Sunday, it was empty! For a while we were civilized and ate them on crackers or in omelettes. Ultimately, though, we ate them directly from the jar. Now, it looks like I can save a lot of money by ordering an entire case at the site.

In other food news, I am pleased to see that Tabasco is now selling gallon jugs of all of their flavors. In the past, the only sauce available in this size was the original. Now you can get the habanero, garlic, and jalapeno sauces in the convenient family size.

Maybe my family is abnormal, but we go through an entire regular-sized bottle of this stuff in about a month. Sometimes I just soak a piece of break with it. Tastes great, and it even makes m y back feel better — the capsaicin is a natural muscle relaxant.

All USB 2 PCI Cards Are Not Created Equal

I bought an iPod earlier this year so that I could sample the very interesting PodCasts that I am now collecting on Syndic8 (here).

My desktop PC is old but servicable (dual 800 Mhz Pentium III, 1.5 GB of RAM, 2 LCD monitors). However, it does not have a USB 2 port. I used the iPod through the existing USB 1.1 port, with less than stellar results — lots of popup warnings, and some very slow data transfers.

I bought a Belkin 4 port USB 2.0 card from Office Depot, and slammed it into the machine. I loaded the drivers, rebooted a couple of times, and I figured I would be up and running. No dice, my once-reliable machine would blue screen whenever I so much as thought “USB”. I removed the card and returned it.

Last week I was at CompUSA and looked for another card. I found several, but it was clear that they all used the same chipset as the Belkind card. Even the board layout looked the same, with the same capacitors in the same locations on the boards from the various manufacturers. I was about to give up, and then I found an Adaptec USB 2 Connect board. It had the same chipset and layout as the others, but I figured what the heck, and bought it.

Took it home, slammed it in, loaded the software, and it has been fine. Adaptec included a very cool user-level application called USB Control. This fine application maps out and displays the entire set of devices attached to each USB port, as you can see in the picture:

Adaptec USB Control

So, the moral is, even if the hardware looks the same, the software may not be! The new card has been working fine, my iPod is now chock full of music, and I can get the pictures off of my phone a lot more quickly.