December 22, 2004

Python .NET Productivity

In my previous post, I showed how new I am to Python and fell back into my comfort zone (.NET). Here's the same result using a pure Python approach (4Suite). from Ft.Xml.Domlette import NonvalidatingReader, PrettyPrint

def showEntries(feedUrl): """Lists the titles of rss items at the given url.""" doc = NonvalidatingReader.parseUri(feedUrl) for node in doc.xpath("//item/title/text()"): PrettyPrint(node)
if __name__ == "__main__": showEntries(sys.argv[1])
Posted by Christian at 12:30 PM | |

December 21, 2004

Python.Net Productivity

Python is a productivity booster. The .NET Framework is a productivity booster. It's amazing how productive you can be with Python.NET. from CLR.System.Xml import XmlDocument
from urllib2 import urlopen
import sys

def showEntries(feedUrl):
"""Lists the titles of rss items contained in the feed at the given url.""" fp = urlopen(feedUrl) rss = fp.read() fp.close()
doc = XmlDocument() doc.LoadXml(rss)
nodes = doc.SelectNodes("//item/title") for node in nodes: print node.InnerText
if __name__ == "__main__":
showEntries(sys.argv[1])
Posted by Christian at 11:44 AM | |

December 20, 2004

Comments Not Working

Something is hosed in MT. My blog is hosted by my buddy who has a really neat CAPTCHA plugin installed - except that my comments section doesn't have it. But it seems to be f'ing with my comments anyway. I pinged him on this a bit ago. If he can't get to it, I'll try to tinker with it on my own. In the meantime, feel free to post this on your own blog and trackback to me. Or send me an email: xmlblog A T gmail DOT com

Tried to fix it on my own, but alas I am not an admin and can't see his config to copy it to mine. I'm at Dave's mercy!

Posted by Christian at 05:53 PM | |

On Consumerism and Boycotts

During this season of mindless consumerism, you're likely to have a run in with a sales representative, or worse a store manager (see previous post), that doesn't value you properly as a consumer. Some people just don't belong to the cult of the customer. After all, it's not their money that's being lost. Over the course of the next few posts I am going to be exploring how the internet, especially blogging, can empower ordinary consumers like you and me (let's hope I don't have to be to be heard). After e-mailing the previously posted letter to City Furniture and getting absolutely no response from them for a few days, I've decided to turn the volume up on my megaphone. Here's the part where I'm going to ask my readers for help - something which I rarely do. Help me educate corporate America that customers are still #1 and that treating them with disrespect and incompetence can be costly. If you believe that a company ought to treat you right and deliver the goods they promised you without giving you the run around, please post a comment or trackback to this entry. Forward it to your friends and colleagues and help me generate some buzz. My boycott of City Furniture has commenced.

Posted by Christian at 05:09 PM | |

Some Companies City Furniture STILL Doesn't Understand Customer Service

Dear City Furniture,

I am writing to express my surpassing dissatisfaction with your company and its commitment to customer service. Since purchasing my home in April of 2003, I have spent at least $6,000 in your store. After much research, I had selected your store ahead of your competitors because of the quality of your goods. I furnished my living room, dining room, and master bedroom with items still available in your store today. Naturally, when my daughter wanted a new bedroom set for her birthday this past October, I marched straight down to City Furniture.

On October 9th I purchased a bed, dresser, nightstand, desk, and chair for my
daughter to the tune of $1,400. The sales representative was very helpful and scheduled the earliest delivery convenient for me. A few days before the scheduled delivery, my present issue presented itself. An agent of your company called to inform me that the order would be incomplete – the desk was on backorder for three weeks. I wasn't thrilled with the news, but I wanted my daughter to have her bedroom set and acquiesced. Weeks later, I received another call informing me of an unusual delay in receiving this particularly popular item. A new delivery date was scheduled. This process has repeated itself three times since then. Each time, your representatives eroded your
credibility with a newly promised, and missed, delivery date.

I'm sure you can understand how I reached the end of my rope this morning when I called to confirm the December 27th delivery date and was told the earliest the desk could be delivered would be the 30th. At this point I was certain we'd be well into the new year before my daughter would have an adequate place to do her homework so I decided to pay your store manager, Matt, a visit at your Tamarac showroom – about 10 miles out of my way.

Upon entering your store, I approached the nearest representatives and asked to see the store manager. "You came to the right place," I was assured, "My name is Matt. I'm the store manager. How may I help you today?" I asked Matt if there was someplace quiet we could sit down and talk for several minutes. He led me to a sales desk and I proceeded to relay the details of this saga to him. Having recounted my ordeal, I asked Matt what City Furniture was prepared to do about my situation and how he planned to restore the goodwill and credibility you had lost. What I was looking for at this point was for someone in a position of authority to give me his personal assurance of a realistic delivery date, to offer me an unmitigated apology for my repeated inconvenience, and perhaps even to offer me one of your freshly-baked chocolate chip cookies and a $25 gift certificate as a token of goodwill. Clearly, Matt had a different approach in mind when he informed me that if it was some sort of compensation I was after, I could just forget it. "Compensation?!," I asked aghast, "How about you just deliver the goods I paid for two months ago and stop giving me the run around. I held up my end of the bargain – you had your money before I left the store."

Allow me to digress for a moment to underscore the shortsightedness of Matt's comment. Here was a customer offering you a chance to save the relationship after having every right and reason to abandon your company forever and all he could think about was how much it was going to cost City Furniture to make me happy. I urge you to consider the fact that the and numerous other studies have found that the cost of acquiring a new customer is approximately 5 times the cost of retaining an existing one. Or, forgetting sales revenue for the moment, let's analyze the potential cost of negative PR. Additional statistics from the CRM association show that, on average, 17% of customers tell their friends and co-workers about positive retail experiences, while 41% talk about their negative encounters. Here is an excerpt from their website:

"It costs five times more the get a customer than to keep that customer. Customer acquisition (selling) is labor intensive and incurs substantial support costs in advertising and direct mail market research. Customer retention/customer service is by contrast highly equipment intensive and relatively efficient. A well-managed consumer affairs operation typically has a much higher "hit rate" in customer retention than field sales does in acquisition, because customers are identified very early in the process and the problem can be resolved to the customer's satisfaction before they switch to the competition. This not only demonstrates that it costs much less to keep customers than it does to get them, but also that it costs much less to save existing customers who are in danger of leaving than it does to capture new customers to take their place. An effective consumer affairs department is a high-yield investment in customer retention. The SOCAP publication, Corporate Guide to Effective Complaint Management provides details on how to determine the value of customer retention for your organization."

Let us return to the issue at hand. Matt next pulled up the inventory information for my daughter's desk. All the while he explained to me that there was a delay in the shipment because "Homeland Security is inspecting the cargo" and that I was not the only customer in this position. I reminded Matt that supply chain management is your problem - not mine - and that I hadn't stopped by to discuss anyone else's furniture. It is in City Furniture's interest to have proper
logistics software in place to help it set the right expectations with its customers and to avoid service complaints. At this point Matt informed me that the best he could do was to cancel the desk and refund me that portion of my money. I told him that if we were going to cancel the order, we'd be canceling the entire order of $1,400. He flatly refused to take back what he called "old furniture", got up and began processing my refund for $234. While waiting in amazement for Matt to return I gazed at the screen information that showed the pending deliveries of the desk. There were half a dozen other customers on the list with delivery dates ranging from the 18th of December – tomorrow – to the 30th of December. I'll afford you one guess which customer was scheduled to receive his desk dead last. This demonstrates to me that either this is not an isolated
incident or your agents routinely tell the customer what they think we want to hear just to get us off their case.

This outcome is wholly unacceptable to me. I have no use for a bed, nightstand and chair of one wood, color and style and a desk of another. I am now offering you the final opportunity to satisfy a customer who could be worth thousands to you in repeat business over the coming years. The alternative, of course, is for me to find alternative means of settling this matter beginning with a call to every consumer advocacy group in South Florida. This letter is an optimistic one. I sincerely hope there is someone in your organization that takes the following verbiage from you Customer Service pledge seriously:

"Our company gives the utmost priority to Customer Satisfaction. Our highly trained staff is ready to assist you with any questions regarding your purchases. Our goal is for you to have a wonderful experience with us from the start, and to keep you coming back for your future furniture purchases."

Sincerely,
Christian Romney

Posted by Christian at 04:58 PM | |

December 13, 2004

The Code Room

It's interesting to see three developers that never met before get thrown together in a room to solve a real-world problem. Things I found interesting: how the team self-organized around a "leader" personality, how one developer felt more comfortable in his language of choice, how development strength varied inversely with distance from the code view or wizards in Visual Studio, and how little experience these folks had with Whidbey. Check it the Code Room.

Posted by Christian at 10:21 AM | |