metrocat

Adventures of the Watkins family

Lies

by Jeff Watkins on

First, there are the lies that form the grease for society: “That shirt looks terrific on you”; “Sorry, we can’t come to your BBQ, we have a prior engagement”; “No of course, there’s nothing wrong with listening to Nickel Back”. So long as you keep your real feelings to yourself, no one will ever be hurt.

We grow up knowing about “white lies”, and accept them as generally harmless. They’re lies. And you should be slightly ashamed, but you’re not really hurting anyone. At the worst you’re trying to smooth over an awkward situation.1

Second, there are the lies that you tell about yourself: “I didn’t sleep with him”; “I didn’t spend the money we were saving for vacation”; “I got rid of all that stuff”. No matter how clever you are, sooner or later, the truth will come out.

Lies about yourself aren’t about smoothing over an awkward situation. They’re about getting yourself out of trouble or getting yourself something undeserved. When the lie is finally discovered, you’ll only wind up in more trouble.

Finally, there are the lies you tell about others: “She’s cheating on her husband”; “He’s stealing from his boss”; “He abuses his daughter”2. Lies told about others are insidious, because the people who hear them may never hear the truth. And believing the lie, they may tell others. There may literally be no way to undo the damage done by telling a lie about someone else.

It’s probably safe to say we all lie. I’m guilty of telling social lies and some lies about myself. When Molly was 5, I lied about her age in order to get her into a water park in Mexico. She was one month short of the cut off and it would have been a shame for her to miss out on the opportunity to ride the zip lines. But really, I didn’t want to miss out on the fun of taking my daughter to the water park.

Sometimes it’s a struggle to be honest and set a good example for my daughter. I’ve explained the three kinds of lies to her, but I’ve also suggested the right answer for her at this time is to just always tell the truth. It isn’t always the easiest answer, but it’s always the right answer.

But I can say with some pride, I have never told a lie about another person. Such behaviour is inexcusable.


  1. Sometimes, it can be hard to know whether a lie qualifies as social grease or not. For example, when the police officer stops you for a broken tail light, which you’ve been meaning to fix for ages, is it only grease to say, “You’re kidding? I had no idea my tail light was out.” Probably greasy. Even the old “The Check Is In The Mail” chestnut is likely to qualify as social grease. Because while you’re no doubt hurting someone by delaying payment, it isn’t the lie that’s hurting them.

  2. It still counts as your lie if you pay your lawyer to say the words.

Welcome Felicia and Edison

by Jeff Watkins on

We’re pleased to welcome Felicia and Edison to the Watkins family. Molly and I adopted them last Sunday and they’ve been slowly settling into a routine here at the Watkins Compound.

It’s delightful having kittens around the house again. I’ve had the pleasure of teaching them to hunt toes under the comforter–much to Anna’s delight.

Both Felicia and Edison are your basic black cats, but Edison has a tiny tuft of white on his chest, which makes him look quite distinguished. Especially when he’s flopping off the bed. Felicia is quite a bit smaller than her brother. We’re plumping her up with regular feedings of kitten food with the occasional treat of a can of fish.

Molly is thrilled with the kittens. Although they’re still a bit timid, they’ll play almost as long as Molly will. Their favourite routine is when Molly sticks a string down the back of her pants and parades around the house trailing kittens.

For someone who professes to dislike writing unit tests, I seem to be writing a lot of them. In addition to the tests on my Markdown converter, this evening I started building a template engine. The syntax will be similar to Liquid, but of course, it’ll be written in Objective-C.

The scanner now has a host of tests covering everything from blank strings to incorrectly nested expressions. It’s possible I’ve missed some cases, but when the bugs crop up, I’ll write tests to make certain they stay fixed.

Unit Tests Suck, But They're So Important

by Jeff Watkins on

I’ve been working on a little Mac application in my limited spare time. The component I’ve been tackling lately involves conversion between Markdown text and an NSAttributedString. There’s no good way to test the process, but what I’ve settled on is the following:

  1. Convert from Markdown to NSAttributedString
  2. Convert from NSAttributedString back to Markdown
  3. Convert from Markdown to HTML
  4. Convert the original Markdown to HTML
  5. Compare the result of step 3 and step 4

Normally, I hate writing unit tests. Even with a firm grasp of cyclometric complexity, it’s still a pain to figure out how many tests you need to write and what each test should actually test. But in this case, John Gruber already put together a pretty decent suite of tests for Markdown. All I need do is run each source file through my conversion test.

Right now, out of 19 tests, only 12 are failing. After I add support for HTML encoding unicode characters (which isn’t really necessary if you declare your content to be in UTF-8, but nevertheless) the rest of the errors relate to whitespace wrapping in HTML. I’m going to try adding some sort of HTML tidying to the test to see if I can losslessly massage the HTML to be more similar.

Update: After adding support for encoding non-ascii characters and piping the HTML through tidy, all tests pass.

Doing Battle With Chase Bank

by Jeff Watkins on

Today I spent almost two hours on the phone with Chase Bank trying to get my money back. Being on the phone for that long is bad enough, but I had to call twice, because the first time, I was put on hold and abandoned for more than 30 minutes until I finally hung up.

I was calling to find out what had happened to two online bill payments to Molly’s former after school care facility, CDC. Both payments were for $664. The first payment was on 14 December and the second on 23 December. When I spoke to the folks at CDC, they assured me the payments hadn’t been received.

With a paper check, you write the check, seal it in an envelope and mail it to the merchant. If something goes horribly wrong and the postman assigned to deliver the mail is sucked into an intergalactic vortex and never seen by humans again, you can simply write another check and try again… because the money never left your account.

With Chase fuck-you!-customer Online Bill Payment, you schedule the payment, Chase removes the money from your account, magic happens, and the merchant is paid. In this case, the magic didn’t happen and the merchant didn’t get paid. TWICE.

There’s an important point to remember: before delivering the payment, Chase removes the money from your account.

So for the last 39 days, Chase has been gleefully earning interest on $1328 of mine to which they had no moral right. They had the original payment of $664 for a whopping 48 days. From what I was told today, they wouldn’t have automatically refunded the money until they received the misaddressed mail. And if the check was never returned by the Post? Well, it would be my responsibility to ask for the money back.

Fuckers.

The first customer dis-service drone happily issued a stop payment on the two checks. She then informed me that Chase would continue holding onto my money for up to five more days. Perhaps they realised I would only spend it on frivolous things, like Molly’s tuition or replacement tires for the Mini Cooper. I expect Chase has far more important uses for my money. After all, they’ve become accustomed to having it floating around in their coffers for the last 39 days.

I asked, politely, for her to pass me along to her supervisor. She put me on hold for about five minutes — presumably to punish me for not accepting the moldy crumbs of comfort Chase Bank so graciously offered me. Her supervisor came on the line, she repeated the party line: no return of my money for up to five days. She was unmoved by my request that because Chase Bank had already had plenty of time with my money, I really would rather have it back immediately.

I asked, slightly less politely this time, for her to pass me along to her supervisor. She was very abrupt. She said her supervisor was in a meeting and she’d have to put me on hold. I waited on hold for more than thirty minutes before it became abundantly clear I was being punished once again.

I called back. This time I was livid, but I tried to continue being polite. After all, it wasn’t this new person’s fault I’d received such horrific “service” on the previous call. First I asked her to share with me my call tracking number.1 The new woman wanted to put me on hold while she consulted with someone; I explained how I’d been left on hold by the previous batch and I was unwilling to be put on hold again. She patched in someone from another department. I repeated my story, again. Again I received the standard response: up to five more days before my money and I could be reunited.

Once again I explained they had already had the pleasure of my money’s company for 39 days (48 days for the first batch), I missed my money and really felt it was time for it to come home. I reiterated that there wasn’t any conceivable reason why the payments wouldn’t have arrived at the merchant had they been sent. Clearly, the party at fault here was Chase Bank. It was therefore, rather unfair that after screwing up two payments in a row, they would be unwilling to refund my money immediately.

I think this new woman was cornered. It was abundantly clear I wasn’t going to accept Chase Bank’s gracious offer to continue hosting my money in their vast corporate coffers, nor was I going to hang up, nor could she put me on hold and abandon me there2. Finally, she relented and issued me an immediate refund.

I guess what I don’t understand is why Chase withdraws the money from my account before making the payment. They’re a bank for crying out loud. If they need to send a paper check, instead of printing out a generic check, put my account information on it. Of course, this would be obvious if Chase Bank actually gave a rat’s ass about its customers.

On 4 February, the CD we have associated with these accounts will mature. That’s when we’ll cease being Chase Bank customers. I don’t know where we’ll be taking our (meager) bushel of cash, but it won’t stay with those fuckers at Chase Bank.


  1. In case you’re not aware, all customer “service” centers have software that assigns each incoming call an unique number. If you have this number, you can use it to link subsequent calls to the previous call. In my case, if I was put on hold and abandoned again, I’d be able to pinpoint by whom.

  2. Because I had the call tracking number, the next person I called would be able to look up who did it.

Recent Photos

The rest of our photos are on flickr. You should go take a look.