Colonel Mustard in the library with the lead piping: knowing when to stop

While doing my Masters, we were given a project that was to be done in pairs.  The aim was to use artificial intelligence (of sorts) to code a computer to act as a player in the game of Cluedo.  The language of choice: Prolog.  (I say choice in the loosest sense.  It was foisted upon us.)

Myself and my good friend Jorge paired up and took the task very seriously.  I learnt a huge amount about the strategy of Cluedo—it turned out that as a youngster, I had not used a jot of inference in playing the game, merely capturing in isolation each piece of information that had been given to me.  (As a youngster, I was shit at Cluedo.)  But once unleashed with this new-found knowledge, we came up with some kick-ass rules, one of which I was particularly proud of but which I couldn’t for the life in me remember some 15 years later.

We coded rule after rule, with multiple layers of logic deciphering any information provided to enhance the knowledge that had been gleaned to date; and yet more intricate logic determining which questions to ask, and who to ask them of.

But our program was shit.  We came last as far as I remember.  And here’s why.

The information aggregator worked like a dream.  But each time it was our turn to ask a fellow player (which was itself a competitor team’s computer) a question, we always selected the same player to ask, and we always asked the same questions.

The reason: it was my fault.  I’d come up with the beautiful, competitor-killing logic a couple of hours before the hard deadline, as I remember.  We had a brief discussion over whether we had time to code it up.  And we decided we would.  The discussion probably went something like this:

Jorge: shall we implement it?
Dan: hell, yeah!

So we coded like the wind.  And we got the code unit tested.  And it kicked proverbial ass.  And then, with moments to spare, we did some integration testing.  And it borked the whole “asking” logic.

Now if we had any sense at all, we would have grabbed the floppy disk (oh yeah, baby!) containing the version of the program that we’d saved immediately before the killer module had been incorporated, handed it to the professor, and done pretty well in the competition.  But in our haste (or speed, as the proverb oddly goes), we didn’t keep any such version.  Instead, we had no option but to submit our borked version of the program and watch the result.

It was like watching the words of a particularly annoying parrot flash up on the screen, a parrot that had just been briefed on the basics of Waddingtons’ flagship product.  Hell it was funny.  (Jorge always helped make light of moments like that.)  But at the same time it was so annoying: being so close to wiping the floor with our classmates (for that is what we would have done, natch), yet at the same time, being so far from that goal.

The big lesson I learnt from that experience was that deadlines are there for the client’s purposes, not your own.  Define an end time or date for development, either in your head or on a plan, and stick to it.  (Development here might mean coding, document production, analytics, basically any client deliverable.)  And make sure that this milestone is sufficiently ahead of the formal deadline to allow for all of the necessary post-development activities—be they testing, document review or simply document formatting.

Your boss will often try to push the milestone to the right.  In that event, push back strongly.  And if this is futile, warn them strongly of the potential ramifications.  For in this event 15 years ago, our (my) willingness to take on new requirements at such a time that didn’t allow for them to be fully tested compromised the entire project deliverable.  Don’t let that happen to you.

(Sorry, Jorge.)

If you like it and are able, pay for it

I wrote a post recently about the likely demise of certain media.  It focused on the proposition that while much media has traditionally been cross-subsidised by other, more lucrative revenue streams, the increasing transparency of non-profitable lines of business means that some of these media will close down.

Media owners are struggling.  Bobby Johnson has just announced that he has taken the Guardian up on its offer of voluntary redundancy, and will be leaving at the end of March.  The New York Times announced Wednesday that from next year, it will start charging for full access to its website.  And whenever I pop along to Wikipedia, I’m faced with a plea from Jimmy Wales for contributions towards the Wikipedia Foundation.  (As an aside, that’s no name for an internet entrepreneur.  David Filo, Jerry Yang, Sergey Brin: yes.  Jimmy Wales: noooo.)

It’s time we started to show our appreciation for what we like about the internet, from apps to content (in its broadest sense), and pay for or make donations towards these things.  I like Wikipedia, so I’ll contribute.  I like Freshbooks, so I’ve upgraded to the first tier of paid service, partly out of necessity, partly out of respect.  Flickr: ditto.  (And I happily pay my “TV” licence every year which helps fuel my love of the BBC News website.)

The one I’m struggling with is Google.  I pay for Google advertising through AdWords.  But I don’t pay for its core apps. offering, which I use heavily.  The issue lies in the fact that the charging model is per domain rather than per email account.  So the three or four temporary, administrative or lesser-profile accounts that I’ve set up all attract a charge.  I’d love to be able to upgrade my own account (and I’d happily pay for this privilege) without having to do so for the wider set of accounts.

So in summary.  If you like it, pay for it.  Otherwise, you may lose it.

How the BBC might personalise its content

I have a dream.

I’d like to be able to rate my interest in the categories in BBC News.  On a scale of 1–10, say.

Upon being published, the BBC will score every single story on an importance/significance scale of 1–10.  And articles will automatically be given a recency score, from 10 (breaking news) to 1, a couple of days old.

In putting together my personalised BBC News homepage, the BBC will multiply these three scores together for each article: my interest * importance * recency.  So each article gets a score out of 1,000.  And articles will be presented to me according to that score.

A similar methodology could be used for the BBC Sport site, with articles about sports I’m not overly interested in only coming to the fore when there’s little else going on, or if they’re sufficiently significant/recent to trump my content of interest.

Sound sensible?

iPhone star gazing

Alan wrote an interesting post about the Directgov Travel News app. for the iPhone, assessing its worth according to, among other things, the star ratings given by users.

The iPhone app. review system is somewhat flawed, in that you’re only prompted to review an app. if you delete it from your iPhone.  So the scorings are artificially low as a result.

If I see an app. that has an average of 4 stars, I’ve historically equated this to 80%; 3 to 60%; 2 to 40% and 1 to 20%.  But in fact, this is wrong.

When you rate an app., you’re invited to grade it from 1 to 5.  So the inability to give an application zero stars suggests that 1 equates to 0%, and 5 equates to 100%.  So 2 represents 25%, 3 is 50% and 4 is 75%.

Minor point, but worth documenting.  Or not.

Haiti: the need for a trusted charity donations app.

I need not echo the words that so many have already voiced with regard to the sympathy and the need to help Haiti.  Perhaps no one has voiced them more clearly than Jay Smooth here.

Soon after the devastating earthquake, there were requests for help, particularly for donations.  90999 was widely publicised on Twitter as a number to text, costing $10 plus the cost of the text.  And more recently, 70077 has been publicised similarly, allegedly aligned to the Disasters Emergency Committee, texts costing £5.  (I have not previously heard of this committee.)

I would like to donate.  But I have no way of understanding the authenticity of the organisations behind these text numbers.  And so I’m nervous about donating through them, both because they may screw me for way more money than I thought, and because I have no way of knowing whether the money will indeed go towards the disaster to which I think I’m donating.

Yet my phone is such a well-suited device from which to contribute.  It is convenient and it already has a direct debit (to O2, or to Apple) to support any contributions made.

There is a desperate need for an iPhone application released by a trusted body (possibly a charity, possibly the government, possibly Apple, even) within which users can donate to charities that subscribe, charities that are vetted by the trusted body with an independently-written description.

The application would be simple.  Click, choose or search for your charity of choice and enter a donation amount.  When prompted, enter your iTunes password (if this is indeed the authentication method of choice) after which you’re presented with a confirmation screen.  Close the application and then go about your business.

I would happily pay an extra £1 on top of every donation I make to fund the trusted body in its management of the charities on the application.  And I’m sure charities would happily pay a subscription to feature in the app.

Does it have legs?

Wessex County Council

I was asked at workto put together a scenario recently of someone in government wanting to do something.  (There were more details, but I won’t share them here.)

Within 24 hours, I put the scenario together.  I tried to give it a bit of reality so dreamt up a fictional character (Dave Clarke) and gave him a job title, the CIO of Wessex County Council.  (For those not in the know, Wessex was disbanded in 1066, its land divided among the followers of William the Conqueror.)

I sent the email to the two people who requested the scenario—from my own account, but all in Dave’s name.  Five paragraphs with a moderate amount of flowery detail.  I even added a email address to his signature, along with a fictional phone number, using the 846 local code saved by BT for use in films and on TV, much like America’s 555 prefix.

Despite the email coming from my own account, both recipients thought the email was a genuine request for help.  Both responded offering services to Dave.  (Dave’s chuffed to bits.)

Given my success in duping two people—a 100% success rate thus far, albeit entirely unintended—the next phase of the plan will be to roll out Wessex County Council.  Letterhead is currently being printed and we have put out fictional tenders for IT services and office space.  I’m expecting healthy levels of response to both.

We will, obviously, need to begin a major recruitment drive as we’re setting up from scratch to provide a wide range of services to a large, if non-existent population.

To do all of this, there will, of course, need to be significant funding provided by HM Treasury.  Again, I’m confident that this will be forthcoming.  It’s a crazy world, after all.

Skype: a review

I took a while to adopt Skype.  But now that I have the business need to use it, I love it, partly because of the business need, but mostly because the product has evolved.

I wasn’t happy when Skype tied me to my PC.  That’s not how people make/take or want to make/take calls.  They want to make calls with the freedom with which mobile technology has provided them.  And even if I’m sitting on my sofa talking to someone, I don’t want the hassle of an accompanying laptop or the inability to move around if I so choose.

I dabbled with Skype when we lived in the US, but audio only, and the above constraints meant that it was a less-than-pleasing experience.

But now: I love Skype.  I use it for both personal and work purposes, and I would be annoyed if it was taken from me.  I started using it again when I downloaded the Skype iPhone app.  It only works over wireless, and I started using it to call the US of an evening—during the US working day—while within the range of my home wireless network.  It allows me to call people directly from my iPhone contact list, and although not integrated into the phone functionality of the iPhone, it works just as well from the app.

I was recently sent an email confirming my Skype to Go number.  This is an outer-London number (based on the STD code) that I can dial from my mobile phone (now in my contacts), after which it invites me to enter the number I want to dial, complete with country code (“followed by the pound, or hash key”).  This new-found freedom means I can dial whoever I want from wherever I want (normal mobile reception allowing) for Skype rates.

To use this carefree, I use their auto-top-up feature which, similar to Oyster, tops my account up with a fixed amount whenever it falls below £5 of credit, emailing me a receipt in the process.  Beautiful.  Earlier today, I called a hotel in Luxembourg without even thinking about how much the call was costing me.  (I just looked it up: 1.2p per minute plus the cost of my London call (which was included in my “free” mobile minutes anyway.))

The only pain with the Skype to Go approach is that I have to write down or remember the number I want to call before calling Skype to Go.  But even this obstacle can be overcome through the ability to add speed-dial numbers to my Skype to Go number.

And finally, here’s the icing on the cake.  I tried calling my Skype to Go number from a landline today, to see whether it instead routed the call to my mobile.  It doesn’t.  But it did ask me to authenticate myself, after which I was able to make whatever calls I wanted.  From the landline.  Using my Skype credit.

All in all, I’m a convert.  I love it.

I’d like it if their next step was to enable cheap calls from your mobile to international numbers when abroad.  And there should be a way, in my opinion, of using my Wii’s internet connection to use Skype.  Now that would be fun.  Just sit on the sofa and you can talk to whomever you choose, and their voice comes out of the TV.  FTW.

Sharing needs de-duplication and context

There are a number of media out there at the moment that invite you to give some form of acceptance of a piece of content.  Google Reader allows you to star, like, share or email a post, or indeed send it to Facebook or Twitter.  And Twitter allows you to retweet stuff.  Add to this people’s ability to feed certain things (such as their Google Reader shared items) to other media (e.g. Twitter) and it adds up to quite a bit of confusion, and often lots of duplication.

I have a friend, for example, who is a “friend” on Google, who I follow on Twitter and who subscribes to some of the same websites as I do on Google Reader.  In some instances, I’ll be directed to a single post three times: on his Twitter feed, in my “People you follow” area of Google Reader, and through my own subscription to that site on Google Reader.  Other friends push their Twitter feed to Facebook and even have a weekly Twitter wrap-up, again resulting in the same content being “appreciated” three times.  Not good.

It would be useful if there was some way of suppressing content that I’ve already seen through another medium, but I suspect given the tactical ways in which this functionality has evolved, and the competition between the various medium owners, this is unlikely.

Also, Google Reader kindly tells me how many other people like the post, almost trying to give it some level of acceptance with which to cloud my own judgment.  I happen to like this, but the number in isolation is somewhat meaningless.  Twenty people liking one of my posts would be an unequivocal success (hell, one would be nice!); while twenty people liking an xkcd post would indicate low levels of appeal.  It would be much better to give this a more contextual score based on the number of subscribers.  Or better still, based on the number of subscribers that have thus far accessed it.  So if I have ten subscribers and get three “likes”, then this would be given the same score as 11,893 of xkcd’s 35,678 subscribers liking one of its posts.  And the post’s popularity score might be further weighted by the pull of my various followers.  So Seth Godin liking one of my posts would carry more weight than my liking one of his.

Just a thought.

Twitter: what to do with a follower

I’m after a piece of logic to work out what to do with “people” who follow me on Twitter.  There are three possible actions (or inactions) I should take for a follower:

Ignore is the action associated with accounts that are harmless but whose content is unlikely to be sufficiently pertinent to inspire me.  Block is for harmful accounts or those with few morals.  And follow back is saved for those accounts whose contents is genuinely interesting to me.

Now there are three pieces of information pertaining to the follower that should be sufficient to determine an appropriate course of action:

Those three pieces of data should be sufficient to work out whether to ignore or block them.  If the algorithm determines that neither action is appropriate, then I the decision whether to follow them back should be driven by me, as I’d be uncomfortable this being automated.

I’d be happy for Twitter to learn from my behaviour to figure out the most appropriate tuning of the algorithm for my tastes.  In the meantime, any suggestions for formulae for ignoring and blocking?