-
Amazing customer service
In contrast to AT&T's customer service or lack there of, my wife had a great experience with Amazon's customer service. She purchased a case of Teddy Puffs for our son and when we received them, the expiration date was less than 6 months away. The boxes we have bought in the store expired about a year after we bought them. Amazon quickly refunded our money (about $32) and said we could keep them as they can't take back food. I was amazed at the response as AT&T won't give me my $20 back for their mistake (I still haven't heard from a supervisor). My only recourse will be to fight the credit card charge.
In any case, Amazon is definitely the first place we'll look to shop.
-
Unacceptable anti-spam system
A user contacted me about an issue this morning (basically a corrupted download of ReceiptWallet which most people would just re-download it and be done with it) and when I replied to the message, I got an anti-spam challenge that sent me to a link. The link brought me to the following form:
First off, on my web site, I say that I don't click the links to verify that I'm a human (I did this time because I was curious). Second off, look at how much stuff they want me to fill in. This is completely unacceptable. Is EarthLink's spam filtering not as good as Google's? Google's works quite well for me and I don't have to inconvenience people with this kind of baloney. When are people going to learn that these challenge and response systems just piss people off. I had my own system many, many years ago and stopped using it as it prevented legitimate people from sending me email.
-
(Not) leading by example
Today my wife and I were driving home from dinner and had just gotten on I-5 south to get to 163 North when she saw a San Diego County Sheriff's Deputy driving with a cell phone to his ear. Yes, this is illegal in the state of California! If he had been seen by a highway patrol officer, he should have been given a ticket (the city of San Diego has a 30 day grace period, but he was on the freeway). However, it is completely unlikely that he would have been pulled over. What is this behavior teaching others? Are law enforcement officers exempt from the laws? I'd hope not, but sometimes they act like they are. While on the topic, yesterday I saw a San Diego Police motorcycle officer make a right turn on red without even stopping. Now if I had done that, I would have been pulled over, but this officer (who didn't have his lights and sirens on) decided to break the law. Could I or should I file a complaint about either of these incidents? I have the identification number of the Sheriff's car, so I could file a complaint, but it would take too much of an effort to do so. (If someone from the Sheriff's department wants to contact me, I'd be more than happy to supply the information about this.
-
Finding bugs automatically
A colleague pointed me at a tool called LLVM/Clang static analyzer which is supposed to find bugs in code automatically. I was skeptical at first as how could it do it? Well, after running it on a few projects, I quickly became a believer! While it finds some stuff that isn't technically bugs, it did catch a number of memory leaks that I'm actually ashamed to have found in my code. Some of my old crufty code had leaks in it and a few places where I misunderstood memory allocation caused me to revisit them (turns out that most of the sample code I've found dealing with NSManagedObject subclasses also has memory leaks). I'm going to make sure to run this on all my projects; I need to put a better front end on it so I don't always have to type in the command and remember the syntax.
It took me awhile to get it to say that some of my projects were "bug free"; it uses function names as indicators as what should retain memory and what should not. There was a function GetSomeValue which returned a CFStringRef that had to be released by the caller. CF convention says that the caller does not have to release an object if the function name has get in it. I had to switch the name of the function to CopySomeValue as CF convention says that the caller must release an object that has copy or create in it.