RSS Feed
Dec 17

Trying to Close a Lingo Account: My Horror Story

Posted on Thursday, December 17, 2009 in Personal, Technology

I used Lingo for a few years without any problem. I never had any reason to contact their customer support until deciding to cancel my account.

Canceling my Lingo account was an absolute nightmare. In the end I spent nearly three hours on the phone before I was finally able to speak to someone who would process the cancellation.

I never spoke to anyone in their Cancellation Department. Honestly, I’m not sure that that department has any employees. In the end it came down to a war of attrition. I had to wait on hold and complain vigorously enough that they finally decided I was serious about wanting to close the account.

Many companies understand that when a customer calls to cancel, they have an opportunity to save that account. After this dreadful experience not only will I refuse to do business with Lingo again, I’ll tell everyone I can to avoid them like the plague.

Below is the log that I kept while trying to cancel my account. I’ve done a little grammatical cleanup from the notes I originally posted during the phone calls.


Several weeks ago I made the decision to close my voip account with Lingo in favor of just using my cell phone. I got a new cell phone for my house and transferred my phone number from Lingo to my cell provider. Now I’m trying to cancel my Lingo service… what a joke. As I started writing this I’d been on hold for exactly one hour.

Friday, December 17th:

  • 11:30am – I first called Lingo. I listen to the recorded message and navigate their menu system to talk to Customer Service.
  • 11:46am – I waited on hold for 16 minutes before talking to a guy who took my account information and put me back on hold.
  • 11:47a – He’s going to transfer me to the cancellation department.
  • 11:52a – The guy asked for a callback number. The cancellation department is too busy to take my call. From the way that he is talking about it it sounds like the cancellation department is one person who is out to lunch. He said that someone would try to call me back in the next 48 hours. I told him that this was unacceptable because I don’t want to continue paying for service that I’m not using. He’s going to try again so I go back on hold.
  • 12:02p – He still can’t transfer me because no one is available to take the call. I ask to speak to a manager and am placed back on hold.
  • 12:03p – The manager is too busy to speak to me. I tell guy that I’ll hold for the manager.
  • 12:06p – I finally get to speak to a supervisor. I express frustration about this situation and ask what she can do to help. She is very nice but absolutely no help at all. She says that there is nothing she can do except continue trying to transfer my call. Because I have no other options, I agree.
  • 12:37p – I’ve been on this call for over an hour now and am still on hold. I should have used a landline for this call. This is chewing through my cell minutes.
  • 12:50p – Lingo wins this round. It’s easy for me to sit on hold while I’m working at my desk but I have to go to a meeting. I am extremely frustrated!

December 22nd: my second attempt

  • 9:09am – Called Lingo back. Went through their menu system and am on hold again.
  • 9:20a – got a recorded message saying that they are too busy to take my call and asking me to please call back during normal business hours. According to their website, they’ve been open for over two hours already today (Mon – Fri: 9AM – 9PM EST)… this is normal business hours!
  • 9:21a – I call back and am again placed on hold.
  • 9:33a – I got the recorded message again and was disconnected. I called back immediately. I really wish that their hold music had more than just one song being played over and over and over…

Gotta love their “Terms and Conditions“:

Cancellations will only be accepted via phone through Lingo’s Account Management Department at the toll-free number listed on the first page of your invoice, and will be effective upon the date that you cancel with a Lingo Account Management Representative. You will be given a cancellation confirmation number by the representative. Service cancellation requests by mail, e-mail, fax, equipment return, or any other form of non-telephonic communication requests will not be accepted.

We only accept cancellations by phone. Also, we don’t answer calls to that phone.

  • 9:44a – Disconnected again. Called back again. I guess that their system is programmed to hang up on me every 11 minutes.
  • 9:55a – Disconnected again. Called back again. I guess that it’s more likely that the system hangs up on me after being on hold for 10 minutes. The extra minute is probably just the time it takes me to call and get back in the queue.
  • 10:06a – Disconnected again. Called back again. At least I was smart enough to route the calls through Google Voice this time so I’m not using my cell’s minutes.
  • 10:17a – Disconnected again. Calling back again. I think I’ll try connecting to the billing department again (that’s who I spoke with last Friday). They still put me on hold for the Cancellations Department but at least I didn’t have to keep calling back.
  • 10:26a – Spoke to a Customer Support Representative. She verified my information and then put me back on hold. She gave me instructions on how to call back “just in case we’re disconnected.” What a joke.
  • 10:32a – a manager is on the line. She said that since I’ve been on hold for so long and since I had spoken to a manager on Friday that she would cancel the account for me. On Friday I was told that the manager I spoke with didn’t have the authority to cancel an account. I don’t understand her logic for finally accepting the cancellation but I really don’t care. Just close this account! I asked her for a confirmation number and was put back on hold while she processes the cancellation.
  • 10:36a – The manager processed the account and I have just sent me an email with the cancellation confirmation. This process has been an absolute joke!

The moral of this story: Don’t signup for service with Lingo. It’s not worth it.

Jul 17

Installing RMagick on Ubuntu 9.04 (Jaunty)

Posted on Friday, July 17, 2009 in Technology

Installing the RMagick gem can be a huge headache. Reading the HOWTO on the RMagick site is enough to make anyone nervous. Thankfully the process is much easier on ubuntu however; you only need three commands.

DISCLAIMER: I’ve only tested this on Ubuntu 9.04 (Jaunty) server.

$ sudo aptitude install -y imagemagick
$ sudo aptitude install -y libmagick9-dev
$ sudo gem install rmagick

And you’re done! You can verify the installation using this irb command, taken from the RMagick HOWTO:

$ sudo irb -rubygems -r RMagick
irb(main):001:0> puts Magick::Long_version
This is RMagick 2.10.0 ($Date: 2009/06/19 22:07:05 $) Copyright (C) 2009 by Timothy P. Hunter
Built with ImageMagick 6.4.5 2009-06-04 Q16 OpenMP http://www.imagemagick.org
Built for ruby 1.8.7
Web page: http://rmagick.rubyforge.org
Email: rmagick@rubyforge.org
=> nil

Jul 14

Installing git on Ubuntu 9.04 (Jaunty)

Posted on Tuesday, July 14, 2009 in Technology

Last night I was working on a new ubuntu 9.04 server on ec2 (it was ami-0d729464 from http://alestic.com if you’re interested). Installing git via aptitude would have given me an older version so here’s what I did.

$ sudo apt-get build-dep git-core git-doc libssl-dev
$ wget http://kernel.org/pub/software/scm/git/git-1.6.3.3.tar.gz
$ tar -xzf git-1.6.3.3.tar.gz
$ cd git-1.6.3.3/
$ ./configure
$ make all doc
$ sudo make install install-doc
$ git --version
git version 1.6.3.3

May 11

Changing the default shell on iPhone

Posted on Monday, May 11, 2009 in Technology

I wanted to change the default shell on my iPhone. Unfortunately chsh wasn’t available.

[10:40][root@iPhone:~]$ chsh
-bash: chsh: command not found

I next thought to modify /etc/passwd but, according to the file’s header, that’s not going to help.

[10:41][root@iPhone:~]$ cat /etc/passwd 
#
# 4.3BSD-compatable User Database
#
# Note that this file is not consulted for login.
# It only exisits for compatability with 4.3BSD utilities.
#
# This file is automatically re-written by various system utilities.
# Do not edit this file.  Changes will be lost.
#
nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false
root:*:0:0:System Administrator:/var/root:/bin/sh
mobile:*:501:501:Mobile User:/var/mobile:/bin/sh
daemon:*:1:1:System Services:/var/root:/usr/bin/false
_securityd:*:64:64:securityd:/var/empty:/usr/bin/false
_mdnsresponder:*:65:65:mDNSResponder:/var/empty:/usr/bin/false
_sshd:*:75:75:sshd Privilege separation:/var/empty:/usr/bin/false
_unknown:*:99:99:Unknown User:/var/empty:/usr/bin/false

Finally I found /etc/master.passwd. I just modified root and mobile to use /bin/bash instead of /bin/sh and on my next login I was using bash!

[10:41][root@iPhone:~]$ cat /etc/master.passwd 
##
# User Database
# 
# This file is the authoritative user database.
##
nobody:*:-2:-2::0:0:Unprivileged User:/var/empty:/usr/bin/false
root:5IS3K.2i/ciLw:0:0::0:0:System Administrator:/var/root:/bin/bash
mobile:NhbBgPU3IOnek:501:501::0:0:Mobile User:/var/mobile:/bin/bash
daemon:*:1:1::0:0:System Services:/var/root:/usr/bin/false
_securityd:*:64:64::0:0:securityd:/var/empty:/usr/bin/false
_mdnsresponder:*:65:65::0:0:mDNSResponder:/var/empty:/usr/bin/false
_sshd:*:75:75::0:0:sshd Privilege separation:/var/empty:/usr/bin/false
_unknown:*:99:99::0:0:Unknown User:/var/empty:/usr/bin/false

Mar 23

Strange Crash in OS X: securityd

Posted on Monday, March 23, 2009 in Technology

A few days ago my Mac started having problems. I would be in the middle of some task when it would suddenly refuse to launch any new applications. Whenever I tried to launch any app, it would bounce a few times in the dock then exit.

As far as I could tell, any apps that were running when I got into this problem state would continue working fine. The OS would never completely freeze but I noticed that my CPU started being monopolized by CrashReporter. I tried killing that process but it would just immediately relaunch and peg the CPU again. I looked inside /Library/Logs/CrashReporter/ and saw that a new crash log was being created about every three seconds. The crash logs were for many different applications but none of the stack traces was useful. I had trouble spotting a pattern to what might trigger the problem.

Once my box was in the bad state I tried to ssh in to see if I could gather any useful information. SSH would prompt me for a password but it always denied access saying that I had entered an invalid password.

The only way out of this state was to restart the machine. When I tried to reboot, OS X would successfully log out but then get stuck on a blue screen. I would see the indeterminate NSProgressIndicator for a few seconds then it would disappear for a few seconds then come back again. I was forced to power cycle the machine.

I finally noticed that when this problem occurred, the first crash log was always for securityd. /Library/Logs/CrashReporter/securityd_2009-03-23-204700_macpro.crash:

Process:         securityd [22]
Path:            /usr/sbin/securityd
Identifier:      securityd
Version:         ??? (???)
Code Type:       X86 (Native)
Parent Process:  launchd [1]
 
Date/Time:       2009-03-23 20:47:00.211 -0600
OS Version:      Mac OS X 10.5.6 (9G55)
Report Version:  6
 
Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000001000000
Crashed Thread:  0

This information finally led me to the solution.

The problem was that securityd would crash then any app that needed to authenticate was unable to do so. One newsgroup noted that the problem could be temporarily solved by relaunching the process:

$ launchctl load /System/Library/LaunchDaemons/com.apple.securityd.plist

After a bit more searching I found a permanent answer in a mailing list archive: Keychain access crashing on SecKeychainFindGenericPassword. The solution was incredibly simple (and completely unintuitive). I had to remove the file /var/db/CodeEquivalenceDatabase and reboot. That’s it!

The thread offers more details but basically, “that file [/var/db/CodeEquivalenceDatabase] has gotten corrupted and runs securityd into an endless memory-eating loop that (usually) ends up running your system out of memory and into the ground.”