Category — Geek stuff
Save me from Sales reps!
Never mind the quality, feel the width
I work in IT Support, so you’d think I’d have some pretty funny stories about customers, and I do. Customers are contradictory, capricious, carping, and other words that begin with “c” (yes, sometimes even that). But, you know, I would take a difficult customer any day over a Sales rep.
Sales, sales, sales. They say we can’t do without them but there are times when that’s patently untrue. Recently, I got off the phone with a Sales rep handling a large utilities company. The man had never met me, or spoken to me before, but that didn’t stop a kind of patronising tirade that basically put all the blame for a current issue at the feet of the company (that is, the company both he and I work for) and absolutely none at the feet of the customer. This is despite the fact I had investigated the issue and found issues and missteps on both sides.
Last month, I had the “pleasure” of attending the call with two Sales reps (the account is rather large). When a couple of us from Consulting and Support pointed out that, in fact, the customer had — in public — said A, B and C, directly contradicting our own analyses of what had gone wrong in a particular situation, our esteemed sales-oriented colleagues had the gall to suggest that while those were the words that were said, we were deficient in “not reading the body language correctly”. At several phone conferences??!! You guessed it; it was Our Fault once again.
These two accounts have one thing in common. The Sales teams are putting together substantial proposals for future business from the customers concerned. So, while they have an all-expenses trip to Bora Bora on the cards, everything that goes wrong at the customer’s site is our problem. They just want to swan in, host lunches and expense it and, in the meantime, leave us with the heavy lifting. Next time, I’ll ask if I get a cut of their commission for making their job so much easier.
Sales reps will do anything to make a commission, and that includes selling their peers, and the company that pays them their salary and bonuses, down the river if need be. I remember the rep who sold a customer ten servers, but only charged them for three support licenses. “Just rotate the licenses to whatever box is giving trouble,” he told the customer, “and that way you’re 100% covered.” Or the rep who didn’t sell any Support at all, but still assured the customer that bugs would be fixed. Guess who used to cop the irate overseas phone calls while he was off in Hawaii getting a suntan?
And there’s the whining. “Oh why can’t you give them X and Y free of charge? They have the potential to turn into a Very Important Customer, and you’re being an obstacle by insisting we follow the rules.” And I have a company-paid holiday hanging on this, doncha know?
And then there’s the shifting of blame. Because, of course, it’s never Sales’ fault that they can’t estimate their way out of a paper bag. “We lost the deal because Consulting didn’t come up with a competitive value proposition.” “If Support Services hadn’t demanded pre-conditions from the customer, we would’ve won the deal.” “Legal didn’t vet the agreement within the accepted time-frame.” It’s never, ever the fault of the Sales rep. Listening to them (and I used to have some small lever of control over a regional Sales team at one point), you’d think they were nothing more than dandelion flowers of fate, prey to every capricious whim that dares blow their way. Poor darlings.
Of course, ever since I’ve decided not to take any more bullshit from the Sales reps I’m forced to deal with, not one has contacted me. Typical, isn’t it? You finally work yourself up to scorching the bastards where they stand, and they don’t front up at all.
February 22, 2010 No Comments
Apotheker leaves SAP; I’m at Novel Spaces; Cougar excerpt up soon
Come back Leo, all is forgiven!
You may remember that in February of last year, I did a bit of a post on SAP poster-boy, Leo Apotheker. Most notably, besides his name, I honed in on his speech where he essentially bitch-slapped SAP’s partners.
What I unfortunately didn’t know at the time, which would have made the post a little more titteringly delicious, was that this must have been one of Leo’s first speeches as SAP’s Biggest Wiggest. (I know, I know, it’s his name. It’s making me giddy.)
Well, The Register has now reported that Leo has left SAP. Key phrases include “surprise departure”, “leaving the top job, and the company board”, “immediate” resignation, and “contract not extended by mutual agreement”.
Wonder if the partners Leo slighted had anything to do with it? Hmmmmm.
(ADDITIONAL: ZDNet tells me that Leo had poor “internal staff ratings” , and Bloomberg adds that his “market changer” BusinessByDesign offering (a monthly subscription model that he must have pitched before being made CEO, judging by the timeline) will be implemented “three years later than planned”. I’d also like to think that dissing every partner out there in the marketplace didn’t help.)
If you’ve wandered over here on Wednesday morning, US Eastern time, you’ll also find a post from me up at Novel Spaces. I continue to be awed by the range of experience in the crew and can only manage some small, derivative prose in their presence.
And I’m finishing up the edits for Singapore Sizzle, my new short story to be released by Total-E-Bound in May as part of the “Cougars & Cubs” anthology. With any luck, I’ll have an excerpt up at my website soon.
February 10, 2010 No Comments
Overpriced IT consultancies
The other side of the coin
So, last week I tackled the problem of Melbourne Transport as an example of how a lot of government departments take the easy way out of labyrinthine structures that have been patched, broken and re-patched over time. That’s not to say that only government departments face this. I’ve been confronted plenty times by private companies who, instead of using an opportunity to streamline their business, just push it to “the software” to implement.
But, of course, I’m not letting the software companies off the hook either. Going back to Friday’s example, the myki system is “almost three years late and $350 million over budget.”
There aren’t too many industries where you actually get paid MORE if you screw up. Consider a project. You bid for it at, say, $100million for one year’s work. You do the work, you get paid. That’s it, end of story.
BUT….
Consider a project. You bid for it. In the second month, the business decides they need Additional Features A, B and C. You say okay, for an additional $20 million. But, at the end of the year, not only aren’t Features A, B and C in the new system ready, but the new system itself — the core functionality — isn’t ready either. “It’s all your fault,” the software consultancy firm/company tells the customer. “If you didn’t want to shove in extra work (aka “scope creep”), this wouldn’t have happened.”
Now, the company has two choices. It can either tell Software Consulting Company to take a hike … with $120 million down the tube. Or it can grit its teeth and just tell Software Consulting Company to get on with it. And, three years and $350 million later, you still get a half-wonky system.
It’s also a problem of size. There are some very big consultancy companies out there. Are *you* going to tell them to piss off? No. And they know it. So it can actually pay for them to be as inefficient as possible as a way of gouging more money out of the customer. I do believe that’s where all these expensive consultancy “partners” show their true skill — not in technical stuff, but in knowing just how far they can push the customer, how much schmoozing they can do, how many honeyed lies they can tell, so they can squeeze more and more money out of a “fixed-price” contract right up until the moment when it’s about to go sour and — at that point — they deliver The System. Everybody breathes a sigh of relief, the press releases get announced, and the consultancy firm moves into the Maintenance phase of the project to “fix” all the problems they didn’t plan and design properly in the first place (billed on a time & materials’ basis, natch!).
Nice work if you can get it, and about a dozen companies worldwide have it completely sewn up, baby.
February 8, 2010 No Comments
Opportunities and new software systems
HOW do you structure your price plans?
I’ve been following the myki debacle in Melbourne recently via The Age newspaper. According to this article, the introduction of a public transport smart card is “almost three years late and $350 million over budget.” Ouch!
Admittedly, as an IT geek, I have a bias, but let’s take some general principles and see what we find.
Melbourne is divided into zones. Fair enough; most cities in the world with a public transport system have zones. Melbourne also has a system of buses, trains and trams. That’s not too onerous either. There is also a “NightRider” discount service offered only on weekend nights. O-kay. And there are two-hour tickets which are only valid from the next hour from the time you validated your ticket plus 2 hours. (So, it’s always better to validate your ticket at, say, 12:05 than at 11:55.)
Children three and under may travel for free but ONLY if accompanied by a parent or guardian. (How to tell without flashing the kid’s birth certificate, and your own bona fides, at every station booth and inspector along the way?) But, while children 16 years of age and under don’t need a concession card, they’re allowed to travel on a concession fare. If you’re the holder of a Health Care Card, you can travel on concession but your dependents can’t unless they’re 16 or younger. Pensioners can not only travel on a concession but get free travel across two zones but only on a Sunday. If you’re a student … well, let me just quote from the appropriate Metlink page:
16 years and under
If you are a student aged 16 and under (and don’t travel with a Student Pass) you can travel on concession fares. You do not need a concession card.17 years and over
If you are a student aged 17 and over, you must carry a valid concession card.Travelling with a student pass
If you are a primary or secondary student travelling with a Victorian Student Pass or Regional Transit Student Pass, you must also have a Victorian Public Transport Student Concession Card with your pass number endorsed on your concession card. The pass and concession card must be carried at all times when travelling.
If you’re a senior in Victoria, you get a reduced fare for travel in two zones. BUT if you buy 5 Senior tickets in a bundle, you get an added discount. And you get the Sunday pass thing that the pensioners get AND you also get sent two off-peak travel vouchers in the mail each year. And War Veterans/Widows also get concessions but, by this time, I’m starting to get pooped.
Hullo! What’s that? Peak versus off-peak? Oh darn, you had to bring that up, didn’t you? Yes, there peak and off-peak fares, as well as weekly, monthly, and yearly options.
Now, and I’ve only hit the high points here, go code that.
If you get the impression, from reading all the PDFs and FAQs at the Metlink site that the fare structure began quite simply and then just grew like topsy, I don’t think you’d be far wrong.
So, when the opportunity comes up to completely revamp the public transport system of Melbourne, what is more likely to happen? A company gets asked to implement the fee structure as is? Or the business takes the opportunity to cut through all the dead wood, streamline the process and then ask developers to code a sleeker system?
Yep, you guessed it. Any option that involves public money and doesn’t require any business analysis is O-KAY for a government department. After all, it’s only Victorians’ money. We’ve had commuters docked hundreds of dollars and, in the article I link to at the beginning of this ramble, three lucky commuters found AU$167,000 on their smart card (dubbed myki). It’s an ongoing, slow-motion (forgive the pun) trainwreck.
Travelling by public transport is already a hassle. And, in Melbourne, it was quite expensive, considering the number of service cancellations commuters had to put up with. Why not keep the zones, have only two classes of fares (full and concession), say special deals on Sundays and get rid of the rest? Oh, and bring down the average price of a ticket from $10.60 (for a daily ticket across two zones) to, say, $6.00?
I can see transport operators going apoplectic as they read this but, then again, I don’t think public transport should ever be privatised. It really isn’t working that well in Singapore, contrary to the propaganda (more on that in another post). And it doesn’t work well anywhere where a company is forced to run services that run the gamut from sardine to deserted, is penalised for bad service, AND has to make a profit on top of that. Something has to give and it’s usually commuter satisfaction.
So, I’d love to see public transport move back to nationalisation. I consider it a basic and critical service that’s provided to citizens and an especially important one in these times of environmental consciousness. Public transport should be affordable for all, simple to understand and strategic in vision, which means thinking beyond the figures of an annual report. But I fear that would take some real thinking and I doubt most government departments are up to it.
Next week: Lest you think I’m blaming the customer for all ills, tune in on Monday for a walk on the other side.
February 5, 2010 No Comments
We need tech knowledge in tech workers
Geeks for a geek industry
Sore point so it’s likely I’ve blogged about this before. Just as you wouldn’t take a person off the street to do surgery, you also shouldn’t take a person off the street to manage, maintain or control an IT project. I was getting used to all the people who wouldn’t know a pre-test loop from a post-test, but didn’t realise how prevalent the issue was till recently.
Picture the scene. A customer has logged an issue. It’s been assigned to an engineer in a different time-zone. Uh-oh, problem due to working hours. Let’s read up on the issue. Hmmmmm. Interesting. Wonder if I could talk the Tech Support Duty Manager into shifting to a local time-zone by appealing to her/his geek-sense?
Gary: Hi, this is Gary, the Duty Manager. (Not his real name.)
Me: Hey Gary. Say, I have a bit of an issue with one of my customers. They’re after a shift to a local engineer due to time-zone issues. I believe they called earlier with that request?
Gary: Yes, I’ve had a look at that but it isn’t a really serious issue. Priority is always given to production crash customers.
Me: Sure, but I think this could be resolved very quickly if we transfer it. See, I think the solution is already waiting and just has to be given to the customer. We could get the issue wrapped up today.
Gary: Really?
Me: Let me explain it to you and maybe you can also sanity-check my thinking?
Gary: Okay.
Me: I’ve been reading the internal notes on this issue and Engineering essentially provides a simple solution. First, they say the solution can come from Technical Support, and not necessarily them.
Gary: Yep, I read that bit too.
Me (going into greater detail but this is essentially the gist of it): Great. Then, they provide a script. If the script produces a particular result at the customer site (which it did last night), Engineering says to back-up the production system and apply that same script to Production. To me, that sounds like we are very close to a solution if only someone from this time-zone could call the customer and talk them through it. What do you think?
Gary: Well, everything you said sounds reasonable but, to be honest, I’m not a technical person so I wouldn’t know.
And BANG! my entire argument went straight out the window. No issue shift. Pissed off customer. Not very delighted customer tech team having to work back late every night. And a pretty incredulous Support liaison (that’s me). Has it fallen this far that a phone call to a decision-making representative of Technical Support — and let me say it again, just in case you didn’t get it the first time … decision-maker in TECHNICAL support — elicits the excuse that that senior decision-maker cannot make the decision because he’s “not technical”? I still, a couple of weeks later, can’t quite come to grips with the fact that making a technical argument to a technical manager on a technical issue won’t work because the manager Doesn’t Understand A Word That I’m Saying!!!!
And this is a technical field I’m supposedly working in? The mind boggles.
February 1, 2010 1 Comment
I hate taking vacations
A week of crises rolled into one morning
Do you know why? Because, no matter how well you plan things, something always blows up on the day you’re due to leave. This year, I thought I had things handled. There was a customer with an issue that they escalated on the Wednesday that NEEDED to be resolved by Friday afternoon. I don’t blame the customer as I completely understood their situation and knew they didn’t have any room to manoeuvre. Then one of the Support managers had a bright idea, pitched it, it worked, and everyone relaxed into their chairs, exhausted but happy, late Thursday afternoon.
That was it, I thought to myself, that was The Diabolical Issue That Haunts Every Leave’s Eve. For once, I had beaten the curse and was ready to slow and shut down (after writing the Support manager a heartfelt thank-you email) the following day.
Nope. That was only the teaser, the Universe taunting me like one of our kids does with a feather on a stick in front of Fluff.
Late last night, the real Diabolical Issue hit my Inbox. And, now, on the eve of my leave, I’m trying frantically to contain it. (Yes, this post will be short as a result.)
But, you see, it never fails. If I didn’t take any leave, I could handle it. But, because of a tangle of conflicting circumstances, it’s big and ugly and I only have a few hours to bed it down before the customer goes screaming to my employer demanding my head on a platter. And I don’t blame them for that either (well, not fully), because they’re in a scary place and opportunities to set expectations have been missed. I could wish they’d be a bit more reasonable, but we haven’t been working together long enough for me to be able to have that conversation with them. I could wish they’d take responsibility for their own issues, but a bit of a dependence has occurred and now’s not the time to have that tough talk with them either.
I hate taking vacations.
December 18, 2009 1 Comment
Update on Linux Journal issue
So who’s Carlie Fairchild? She was the purported publisher of Linux Journal who commented on my last post. Well, stalwart readers, we know enough about scams to know to always, but always, look a gift horse in the mouth, so I searched on Carlie’s name and came up with the following from the Linux Journal website (cross-referenced, natch, with other search results, so you can be assured of intertube hygiene):
Carlie Fairchild, based out of Linux Journal headquarters in Houston, Texas, joined Linux Journal in March 1995. As publisher Fairchild sets the publication’s overall direction including editorial, marketing, circulation and advertising sales.
Leading the business development and direction of the company, Carlie focuses on strengthening Linux Journal’s leadership role in high-tech publishing.
Over the past ten years, Carlie has been active in many industry associations, including the Magazine Publisher’s Association (MPA), Linux International, USENIX, and the National Trade Circulation Foundation (NTCFI).
So, the comment from Ms Fairchild was on the up and up. I do apologise to her for even briefly doubting her word but there’s only the careful and the economically deceased in this modern world and I hope she understands.
Having said that, Ms Fairchild proved herself to be an extremely courteous and understanding correspondent. The bit you should know, oh overseas readers of Linux Journal, is the following:
[W]e just honest to goodness don’t appear to have your credit card on file any more to refund it to. When that happens, our subscription fulfillment house issues a check for the refund. But that being said, I’m with you that this just doesn’t work well for anyone outside of the U.S. so I’m now going to raise this issue with them and hope to get the policy changed for the future — there’s got to be a better way to do this. So at any rate, thank you for raising this point. I’m on it. [my emphasis --ksa]
Within minutes of confirming that a Paypal refund would be a fine substitute, the refund amount hit my account. (I did send her a scanned copy of the cheque, so she’d know I was on the up and up as well.)
THANK YOU, MS CARLIE FAIRCHILD OF LINUX JOURNAL MAGAZINE!
So, if you’re in the same boat, I suggest a bit of a song and dance about it and you should get some satisfaction. And let’s hope the policy gets changed before it gets to that point for you.
Now, if only the backward businesses in Malaysia (that also execute the same credit-card-pay/cheque-refund trick) would have even a fraction of Ms Fairchild’s professionalism, then I’d be a happy little camper. (I know, nothing ever pleases me, does it?)
October 29, 2009 No Comments
Linux Journal sucks!
I’m a geek girl. I love Linux. I subscribe to Linux magazines (although, due to budget constraints, only one at a time). Having been a Linux Journal subscriber for a little while, I decided that it was time for a change (to the European Linux Magazine), so I cancelled my subscription. Okay, here are the relevant facts:
- Linux Journal is a US publication
- I am an overseas subscriber
- They know I’m an overseas subscriber, because I pay overseas subscription rates
- I paid for my subscription using a credit card
After I cancelled the subscription, the refund for the period still outstanding came back as a cheque, drawn on a US bank!! As the very nice lady at the local bank told me, cashing a US cheque in Malaysia would be useless because the fees involved would actually exceed the cheque amount (USD16 approximately).
It’s not the amount, it’s the principle of the thing. If I purchased goods via a credit card, why can’t I be refunded in the same way? A US cheque smacks of nothing more than sheer arrogance. Live outside the country? Cancelling a subscription? Too damned bad!
The upshot of this is that I have a useless cheque and Linux Journal has essentially made a $16 profit off my subscription. If every other overseas subscriber is shafted in the same fashion, it can add up to some serious money and, meanwhile, Linux Journal tells us all to go whistle. I wasn’t aware of this aspect of the magazine before I cancelled, but now I’ll make sure to warn everyone off Linux Journal. It’s bad enough that we have to pay substantially extra to have our copies shipped to us overseas. To have to also put up with such meanspiritedness afterwards is just rubbing it in.
IN OTHER NEWS: I was blogging at Novel Spaces yesterday on Church and the atheist. And I got comments! Wow! Why not join in?
UPDATE: Rikki Kite was kind enough to drop me a line, pointing out that my link to Linux Magazine was wrong and actually points to another, web-only publication. Oops! Sorry, LM! Link has been corrected. I’m also more than happy to invite any other geek girls (and their admirers) out there to Rikki’s blog that highlights women in open source. It’s called ROSE BLOG and is here. Thanks Rikki!
October 28, 2009 2 Comments
It’s like Joseph Stalin versus Adolph Hitler
So, Google’s scalable cloud suffered a 6-hour outage the week before last. The Reg had a great article on this, outlining the contrast in strategies between Google (Teh New Ebil) and Amazon (Teh Well-Established Ebil). It’s a bit like trying to figure out which you hate less — swallowing broken glass or trying to do trampoline acts on it.
In any case, what with all this Web 2.0 hoo-ha, every company is trying to get their foot in the door, charging for cloud apps. The problem with cloud apps, though, is that once you tell your clients that the software on their desktops is redunant then — and there’s no telling how unreasonable human beings can get — people expect the software in their clouds to actually be, er, available.
Now, Amazon had a significant outage with its cloud apps last year as well. And it lasted two hours longer than Google’s. But the way it was handled was completely different.
Amazon provided specific details on what bugs led to the crash. Google said:
There was a serious issue in one of the App Engine’s datacenters.
No, really? Amazon highlighted shortcomings in their own code. Google, um, didn’t. Sumfin’ didn’t werk, seems to be about the gist of what they disclosed. As for ensuring similar mistakes don’t happen again, they said the following:
The team has been actively working on a solution in the medium-term that would allow us to switchover data centers immediately without consistency problems.
Can I tell ya something? I don’t even feed that level of bullshit to my customers! And what the hell is “medium-term” supposed to mean anyway? Tomorrow? Next year?
Ted Dziuba says that “the App Engine main product page has a prominent link to the terms of service at the top, and no link or contact information for support.” So I went there to check it out and Ted’s right. In Linux world, choosing “Community” means going to a customer forum where your questions can be answered. In Google world, it means joining the developer community. And while there is a “System Status” link, all it shows is that everything is peachy (or not). Not even a Live Chat link to a bored AI, much less a support email or phone number.
What is the world coming to, I ask, when Amazon — despised, “overpriced for overseas customers”, “gobble everything in its path” Amazon — actually handles a situation better than “don’t ask us about our algorithms”, “oh everything is opt-out didncha know?” “do no evil? yeah right” Google? What hope is there for humankind? We’re doomed! Doomed, I tell you. If you want me, I’ll be under that off-grid rock over there.
PS The Book Depository is making its move into North America, fronting Amazon on its own turf. I love the Book Depository (they don’t charge shipping anywhere in the world!) and wish them all the best.
July 13, 2009 No Comments
What’s with all the pre-emption already?
The USA seems to have an unhealthy obsession with pre-emptive everything nowadays. First it’s a foreign defence policy predicated on pre-emptive action. And now it’s pre-emptive quitters. Say, weren’t you the country that gave us “Minority Report”, lecturing us on the dangers of pre-emption (at least, that’s what I think it said … forgive me, my attention was focused on Tom Cruise’s nose. I’m shallow like that)? So what’s with Google lately?
In case you haven’t heard, Google have developed an algorithm that identifies quitters before they resign. According to the Wall Street Journal and The Age:
Google examined data from employee reviews and promotion and pay histories to try to identify which of its 20,000 employees were most likely to leave the California-based company.
Having worked in the USA, I know that once you walk past those office doors, the company owns every skerrick of employment-related piece of data that pertains to you, so I’m not surprised that they even did this. However, I am surprised by Edward Lawler, director of the Center for Effective Organizations at the University of Southern California, who is quoted in the WSJ article as saying Google is “clearly ahead of the curve” in taking “a more quantitative approach” to personnel decisions.
Good grief! Hasn’t this been one of the major problems in this world? The trumpeting of the quantitative over the qualitative? Since when is taking a “quantitative approach” to human beings a better thing? It’s certainly a simpler thing. A thing that looks good in presentations. A number that can make a manager angling for a promotion look damn fine. But “ahead of the curve”? I doubt that.
Recent Predator drone strikes in Pakistan have killed over 600 people. (Fact) The Pentagon estimates that the number of al-Qaeda operatives killed in such a way has been 7% of the total casualties. (Fact) That’s taking the quantitative approach to something. The military and governments of the world do it all the time to obscure very real human suffering, and it’s vile and pernicious and dehumanising.
If I am the manager of someone, then it’s my job to know whether someone is dissatisfied with their work. Reducing a skill of people management and motivation to a damn algorithm (and I say that being a lover of algorithms) is one of the most heinous things I’ve ever heard of. And here’s a newsflash. Not everything in the world can be reduced to numbers.
Let’s say I have a boring job, have not had a promotion in years, no pay raise, and feel I’ve been under-appreciated. According to Google, I’m going to leave. However, I am looking after an invalid parent and have three small children. Am I going to leave? Maybe. I may either have really had enough … or I may figure that a bird in the hand is worth two in the bush.
But then I win a lottery jackpot. Am I going to leave? Maybe. I may try a life of leisure and hire help for my parent and a nanny for my children … or I may try investing it all and keep going to work because that’s the only place I have friends.
But then I go to the casino on the weekend and blow it all at the blackjack table. Am I going to leave? Maybe. Easy come, easy go, and it’s off to work I go on Monday … or I may decide that this is really the straw that broke the camel’s back and it’s going to empower me to give my old company the boot.
And so how, pray tell, given the plethora of permutations that make up our lives, is Google’s thin slice of knowledge of me via its HR records going to determine the correct answer at any given time? However, what bothers me more about the Google algorithm is not so much that it will identify potential quitters, but that the real agenda is to pre-emptively identify those who are “dissatisfied” and put those people on the A-list when the inevitable cycle of “restructuring” cuts rolls around. It’s an easy way out, you see. Why bother trying to make the workplace better when you can just get rid of the ones most likely to be unproductive?
I’d say, thank dogs I don’t work for Google, except I have the feeling that such unmitigated trash (and you know how high-level managers love trash dressed as “a decision-making tool”) will become part of every company’s arsenal in the near future (thus netting Google some additional licensing revenue, I’m sure). And don’t even think of being honest with your manager during your next performance review. That way lies the pink slip. Thanks again, America!
May 22, 2009 No Comments
