Deep Thought

2008-12-08 19:00:00 -0500


It’s not often you get to see a merge this awesome:

155 files changed, 9382 insertions(+), 918 deletions(-)

\m/ >_< \m/

New version of Tempo is live! We’ll have more to say about it here tomorrow morning.

Check it out


PingMe Updated

2008-12-07 19:00:00 -0500


Tonight we made the following adjustments to PingMe:

  • When you specify a ping without a year, and the date has already passed this year, the parser assumes you mean next year and adjusts the schedule accordingly.
  • Our follow-back code for Twitter should be a bit more reliable.

More to come in the weeks ahead, stay tuned.


FAILCamp Continued: Word List Fail

2008-12-07 19:00:00 -0500


Over the Summer, Stephen and I attended the excellent RubyFringe conference in Toronto, hosted by Unspace. One of the best events was FAILCamp, hosted by Joey Devilla. In FAILCamp we all shared our stories of failure, big and small. It was an interesting way to get to know everyone and to share strategies for working through screw-ups and taking something decent away from them.

So, in keeping with that experience, we’re going to share a bit of FAIL; today’s story is brought to us by the PingMe Address generator.

Batman-Shark-gif

When we need to provide a user with a remote e-mail address on one of our services, we usually want it to be somewhat obscure to that it would be difficult to guess, like red99ballons@gopingme.com. The user can change it, but we set an initial one for her as a convenience, and include it in the welcome e-mail. The design goal was to ensure the address was somewhat random, but somewhat easy to remember, so we’ve been using a big word dictionary to smash two words together with a number in between. We do this as a security measure to prevent attacks that would try to deliver spam using PingMe’s messaging transports

Now, as you might expect, we did go through the dictionary to take out some words that would pose obvious problems. But we missed a really obvious one and weren’t as imaginative as our address generator can be, and as a result we got a pretty angry letter yesterday:

I won’t be using your sevice as it lacks professionalism. Scroll to the bottom of this e-mail and look at the generated pingme e-mail address. – Frank [not real name]

Ouch! Fail! Apparently Frank had been assigned asshole38dirks@gopingme.com, something that we really ought to have caught.

Taking a real close look at our word list I started seeing lots of possibly problematic combinations with regular words in the dictionary: “closet55bugger”, “douche44monger”, “goat11fakir”. Now some folks are probably fine setting their own address, or clicking the “suggest another” button, but some folks are bound to be a tad more sensitive.

So I started going through the word list looking for any classic cusses that we might have missed, but also things that might be sensitive to some folks and are just best avoided. While I was doing this, two important things occurred to me:

  1. I need an intern.
  2. I can’t guess at every potentially disastrous or offensive word combination in the dictionary. No way.

Everyone’s got different quirks and different cultural backgrounds, and I honestly make a poor censor. The chances of me personally (or even a team of three of us) knocking out every word that might lead to disastrous results in a list of thousands are very poor indeed. I’m willing to bet that this is an NP problem, but I’m not about to draw up a proof.

I don’t think the problem here is that we are using a large dictionary, nor do I think we really should have to cleanse the list. The trick is to get the obvious offending words out of the way, and to also provide the user with a bit more context. In Frank’s case, he doesn’t know that these are two random words, he didn’t have any exposure to the process by which it was selected. Adding something like this to our welcome message will probably cut down on this lack of understanding in the future (I hope):

If you’d like to create Pings on the road, add luft99balloons@gopingme.com to your mobile’s contacts and your e-mail address book. This address was generated randomly to protect you from SPAM. If you find it undesirable you can change it at any time on your profile page in PingMe.

You can’t make everyone happy (would that be NP-Complete?), but a little clarification can go a long way.

So that’s our story of fail. Perhaps we can make a meme of this – have you any stories you want to write-up and share? Feel free to post links in the comments.

Update: Question to our users: Would anyone like to see purely random addresses like we generate for Tempo? There we use use a pretty long series of random numbers converted to Base26, so they end up looking like “nadxtk@gopingme.com.”

Later Update: I almost forgot: the FAIL address assigned to the user was asshole38dirks@gopingme.com.


Service Announcements

2008-12-04 19:00:00 -0500


On Sunday, Decemeber 7th at 9:00pm EST we’ll be performing a maintenance and reliability update on PingMe, so the web interface will be temporarily unavailable, possible until 10pm EST, although we expect things to go a bit quicker than that.

On Monday, December 8th at 9:00pm, we’ll be moving the beta version of Tempo to the main site so that it will be come the default interface. The web interface will be temporarily unavailable and any existing sessions will be closed, requiring you to login the next time you visit the site.

We’re very excited about that second one, been a long time coming! After months of vetting and feedback from our users, the new user interface for Tempo will become the default.

PingMe is getting a patch to take care of setting dates in the next calendar year without having to specify the year, and code that improves our follow-backs on Twitter.


Just a suggestion

2008-12-04 19:00:00 -0500


Don’t publish API documentation in PDF and then disable copy & paste.

But if you do, please don’t use images for the code examples on your web documentation.