Category — Geek stuff
Quick update on the Humble Indie Bundle
Go here to buy a bundle of 5 indie games. Name your price! You have four days!
I see that the average prices paid by various users is also up on the link given above. As of 17:35 this Friday afternoon, payments are as follows:
- Windows users – average paid – $6.82
- Mac users – average paid – $9.61
- Linux users – average paid – $13.65
All I can say is, YOU CHEAP WINDOWS BASTARDS! Wwwwhhhhyyyyyyyy? I mean, you’re already used to paying through the nose for all things software, right? Same with the Mac users, who are a category of people who’d rather spend their last dollars on a pair of Jimmy Choo’s rather than food, thus resulting in the most fashionable corpses around. It’s us freeloader Linux users who demand software for…y’know…FREE! And yet our payments are double (let me repeat that…DOUBLE!!!1111) that of the Windows users and fifty percent more than that of Mac users (as of this writing). You cheap, stingy bastards. That’s all.
PS And to preclude the obvious argument of: “But, there are almost double the number of Windows purchasers as Linux, so it all evens itself out in the end”, no it doesn’t. You did not go to the page saying to yourself, “Oh let’s see the breakdown of the three platforms vis-a-vis the purchase price average…. Hmmm, okay, I shall then compute the necessary purchase price to lend a degree of equilibrium to the entire buying process.” No you didn’t. So none of that sophistry, kid.
May 7, 2010 No Comments
Indie game bundle: pay what you want!
As you know if you’ve been following this blog for any length of time, I love independent game developers. And doubly so if the game kicks serious bottom (like Gish). So I was triply delighted to find out about a game bundle put together by indie game developers. It’s called the Humble Indie Bundle. Cribbing shamelessly from the wolfire blog, this is how it works:
PAY WHAT YOU WANT. Five games are included in the bundle: World of Goo, Aquaria, Gish, Lugaru HD and Penumbra Overture. You can pay what you want for them and have to do this before you download the games.
Please remember though, we’re just humble indie developers and the more you contribute, the easier it will be for us to make awesome games in the future.
CROSS-PLATFORM. Number two of the reasons that convinced me. All these games are available in Linux, Mac and PC flavours! Oh yeah!
NO DRM. As if you need yet another reason to buy the bundle, there is NO DRM on any of the games.
NO CORPORATE MIDDLE MAN. Every cent you pay goes directly to the developers. Oh, and two other parties….
BUYING THE BUNDLE HELPS CHARITY. You have a choice when paying to have some or all of your proceeds go to two charities: Child’s Play (which donates toys, games, books and cash to sick kids in hospitals in a variety of countries) and the Electronic Frontier Foundation, the activist organisation for protecting the public at the electronic frontier.
The games are:
- World of Goo: A physics-based puzzle construction game that has won awards for innovation and technical excellence.
- Aquaria: OMG, what utterly beautiful graphics. Go here to see the trailers if you don’t believe me. The Wast and I were mesmerised and so will Little Dinosaur be when she gets her princess paws on this one.
- Gish: Ah, the story of a ball of tar who follows his kidnapped owner, hoping to save her from Teh Ebil. It’s a love story of the ages. We bought this for The Wast a couple of years ago, but I’m overjoyed to see a Linux version so that I can play it and waste even more time not writing. Gish also has user levels (like the other family favourite, Dr Lunatic Supreme with Cheese (over 1,200 levels!) from Hamumu), so you can download dozens of new levels to play.
- Lugaru HD: Killer rabbit with skillz goes head to head with brainwashed bunnies and ravening wolves.
- Penumbra Overture: First-person horror. The Media page shows some pretty creepy (but not violent) stuff.
The Penumbra series’ central character, Philip, is realistically vulnerable, while enemies are fierce and intelligent. Any object can be picked up and thrown in defence, but the end result might only be to buy some time, or more likely, anger enemies further. Avoiding, outwitting and sneaking past enemies entirely provide the best chance of survival.
HAVE I CONVINCED YOU? READY TO BUY? Go here to find out more and buy. And seriously, for five games, you can do better than the average payment which is roughly US$8, right? NOTE: You only have four days to take advantage of this offer!
May 7, 2010 2 Comments
The despair in IT resumes
My bitch of a friend
I was sitting having a coffee with a friend in Singapore recently. Let’s call her Gwen. Gwen is in an enviable position for someone in IT. Her company recently won a large deal and she has the responsibility to ramp up a team of developers, negotiate deliverables and deliver the first phase of a system by the end of the year. I used to live for opportunities like that. Gwen, however, was rather glum.
“I’m going to get a reputation as a complete bitch,” she told me morosely, stirring her coffee.
“Why?”
“I have to build a team, right? Well, I went through about forty resumes last night.”
“And?”
We’re always told how high-tech Singapore is. How much more advanced it is compared to its neighbours, and how it always attracts only the best. Creative. Innovative. Fast. Tech. Dynamic. I was happy to pick Gwen’s brain because I was curious as to whether the facts lived up to the hype.
“Most of them are useless,” she told me.
I raised my eyebrows. “How so?”
“I’m after C++ developers,” she said. “They have to already know their stuff because we have our first deadline in a matter of months. I don’t have time to mollycoddle anyone.”
I nodded.
“Well, out of the forty resumes, seven have Computing degrees.” She frowned. “What’s that work out to? About fifteen percent?”
I shrugged. “Yeah, something like that.” I actually yearn for times when I don’t have to do any thinking and, as far as I was concerned, Gwen was going to be the one doing the heavy lifting in this conversation.
“The rest…,” she shook her head. “All I’m getting from India are civil engineers and all I’m getting from China are chemists and mathematicians. That doesn’t mean they’re not smart, but how would they like it if I tried to build a bridge or come up with a new malaria vaccine? I wouldn’t last a week! Yet, according to them, they’re now software developers.”
She sighed. “So what am I supposed to do now? If I employ a chemist to do programming, sure, they might be able to do some robot stuff but how will they know how to code their way out of a sticky problem? If I say to one of them, ‘okay, I want you to write a web app but what are you going to do to stop an SQL injection?’, they’re not going to know where to start.” She raised her voice. “Why are they even applying for a job which they’ve never trained for?”
“Eighty-five percent, huh?”
“Clueless,” she said. “In desperation, I interviewed several of them. They don’t even know what a left join is. And that’s not all. You should see the salaries they’re expecting.” She paused. “How much does it take to live in Singapore?”
“Well, obviously more than I have which is why we don’t live in Singapore,” I quipped.
But Gwen was impatient and waved away my feeble joke. “Right, right. But how much?”
“For a single professional? Maybe four thousand a month for a start, and that’s only if you can find an HDB flat to rent. For a family, you can’t do much with less than seven or eight. Not if you’re a foreigner.”
“And a good starting salary for an IT developer?”
“Oh, I don’t know. Good results at Uni. Maybe a year’s commercial experience. Six maybe for a junior?”
“That’s what I thought.” Although my confirmation seemed to make her even unhappier.
“Do you know how much they want?” she finally asked.
“Who? The Indians and Chinese?”
“Yeah.”
“Not a clue.”
“Two and a half to three.”
“Thousand a month?”
“Yep.”
“To live in Singapore?” I gaped at her. “Are they nuts?”
“You can see what happens, can’t you?” Gwen told me, sipping her coffee. “Some bridge builder or maths teacher comes along and says they’ll do C++ or Python or Java or whatever coding you want, and they want less than three a month for it. Who’s going to look that kind of gift horse in the mouth? It has a knock-on effect, though. Take me. What happens when it’s time to move on? There’s so much downward pressure on IT salaries that I’ll be earning less money with more experience as time goes on. And what about my project? HR only has to read over the same CVs to complain about how I’m only picking the expensive candidates.”
She stared at her coffee. “No matter which way I look at it, I lose. If I pick only the IT-qualified guys, I’m going to get reamed for running a too-expensive project. If I pick chemists, I’ll get reamed for missing our milestones. Either way, I end up looking like an absolute, incompetent bitch.”
I didn’t know what to say because Gwen was completely correct. All I could do was agree with her, but that would make her feel even worse.
“I’ll get another round of coffee,” I said and temporarily escaped.
March 22, 2010 3 Comments
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





