1. Tickets are expensive. If you want to watch a pre-determined outcome try professional wrestling, it’s a lot better value.
2. Spot fixing will lead to match fixing. Once you’ve got the players to accept illegitimate money for anything then you’ve got them. Their moral compass is compromised already and you can always blackmail them if they refuse.
3. The governing bodies are incapable of restoring order. They’ve proved this time and time again. When it comes to raising money from television, or from you and me, they are slick professionals. When it comes to acting in the interests of sport they are clueless.
4. The governing bodies have no interest in restoring order. Cricket is a small and incestuous world. The governing bodies are run by people with commercial interests in particular outcomes. This is inherently unhealthy but it has been institutionalized so nothing is done about it. No player or paying customer has any say in who governs the sport they love.
5. The only recourse we have is financial. Throwing eggs at players won’t achieve very much. A drop in income for the ICC would achieve a great deal. If people stop paying to watch cricket because they are disgusted at what they are watching then something will be done. The governing bodies will act to protect their revenue stream.
This is all we can do. It’s a dangerous policy; once people turn off from cricket it will be hard work to restore interest. But the paying customer has no other lever to pull except withdrawing his custom.
I don’t have a Sky Sports subscription but if I did I wouldn’t be renewing it until I knew what I was paying for. I certainly won’t be buying tickets for international cricket matches until the game is in a better state.
Next: what can be achieved by a cricket boycott?
Quick links: Source code | Email address validators head-to-head
This is a post for IPv6 geeks and people who care about email address validation. That’s probably not you, so I’m warning you that it gets a bit nerdy below. YHBW.
People keep saying the IPv4 address space is going to run out Real Soon Now but it’s still the protocol you are using right now to connect to the internet. It’s still working. When I was at school many years ago, I was told that oil would probably run out before the year 2000. People who believed this started investing in Alternative Energy such as solar power, wind power and, least successful of all, wave power. Most of the early investors lost their money, I guess.
The Alternative Energy of the internet is IPv6. This is the solution that people designed when they first thought the IPv4 address space was in danger of running out. It’s still a minority sport even though your Windows PC has it installed and running. It’s talking this language to nobody though. Even if you have a few computers at your house, the router you use to network them together is still only talking IPv4.
IPv6 is there and it’s real. One day we might start using it. Until then it remains a laboratory curiosity.
But it’s a valid part of an email address. So if you want to validate somebody’s email address in your registration form you shouldn’t go rejecting jon.postel@[IPv6:1234::cdef] just because it doesn’t match the usual first.last@domain.com format. It’s a valid address. Check out RFC 5321 if you don’t believe me.
OK, let’s assume you actually clicked that link and read the RFC (I won’t tell if you don’t).
Now tell me whether this is a valid address: jon.postel@[IPv6:1111:2222:3333:4444:5555::7777:8888]
The answer according to the bible of SMTP is no. I quote the comments to the definition of ipv6-comp: “The “::” represents at least 2 16-bit groups of zeros. No more than 6 groups in addition to the “::” may be present.”
But let’s look at the bible of IPv6, RFC 4291: “The use of “::” indicates one or more groups of 16 bits of zeros.”
So RFC 4291 appears to disagree with RFC 5321. Thanks, IETF. Which should we use as our authority when validating email addresses? Perhaps RFC 5321 is documenting a special case of IPv6 that only applies to SMTP transactions. Hmmm.
Fortunately just when we feel like banging John Klensin’s head against RFC 4291 or (frankly) anything solid, along come Seiichi Kawamura and Masanobu Kawashima to our rescue. The brand-new RFC 5952 gives us clear guidelines about the use of the double colon in IPv6 addresses:
The symbol “::” MUST NOT be used to shorten just one 16-bit 0 field.
Phew. We have clarity at last.
Or do we?
Remember Jon Postel’s Robustness Principle? “Be conservative in what you do, be liberal in what you accept from others”. How might we apply that here? RFC 5952 still accepts the authority of RFC 4291. It is a recommendation for how IPv6 addresses might be standardised when written as text. The robustness principle would suggest we should ensure our own addresses conform to RFC 5952, but we should accept any addresses that conform to RFC 4291.
My conclusion is this: my own validator is_email() will accept as valid any address that conforms to RFC 4291 (even though that is contradicted by RFC 5321). It will raise a warning if the double colon elides only one zero group.
As a final personal note, I would say that an address of the format ::1111:2222:3333:4444:5555:6666:7777 is nonsense. It’s valid according to RFC 4291 but it contains 8 colons. That’s just silly. I think it’s clear that the only sensible use of the double colon is to elide two or more zero groups and I certainly agree with RFC 5952 that that should be the standard.
Quick links: Source code | Email address validators head-to-head
Thanks to my correspondent Michael Rushton for bringing my attention to this issue.
Email validation version 2.1
Quick links: Source code | Email address validators head-to-head
I’ve had a lot of correspondence about is_email(), the free PHP email address validation software that I maintain. The principle topics of debate were the edge cases where an email address is technically valid but extremely unlikely in the real world.
Examples of this sort of address would be “”@example.com or benedictXIII@va – the first because it doesn’t contain any text to identify the mailbox and the second because it’s at a Top Level Domain.
Both these addresses could exist but neither is likely to. If a user entered one of these addresses into your registration page it is much more likely to be a typo than a real address.
So in the first versions of is_email() I made the decision to call these address invalid because they were unlikely. It was this decision that generated most of the correspondence.
My learned correspondents were right. The purpose of is_email() is to determine whether an address is valid or not. It should not be rejecting valid addresses – this is the most common fault of other ways of validating email addresses.
But I wanted to identify unlikely addresses without declaring them invalid. For this reason I added a Warning feature to is_email(). Without losing any backward compatibility, I have enabled it to return a diagnostic code that identifies either the fault (if it’s invalid) or the reason it’s unlikely to be a real address (despite being valid).
This has allowed me to make it a true validator – it follows the RFCs as precisely as I can make it – without losing real-world usefulness.
is_email() version 2.1 was released yesterday. Try it. Let me know if it works for you.
Quick links: Source code | Email address validators head-to-head
Please ignore
EAVB_MNLZDRRTGM
The Digital Economy Act
I don’t climb aboard many bandwagons – there’s usually enough passengers already – but the confluence of the forthcoming UK general election and the hasty passing of the Digital Economy Act encouraged me to do some research into what was being done in our name at Westminster. I intend to use my vote and I want to do so with a bit of background knowledge.
If I’m going to get on this bandwagon it will be with information from primary sources as far as possible. Received opinions are as useful as second-hand food. So at the bottom of this post is a handy list of things I’ve read. If you want the facts, stop reading now and read those documents instead. What follows is my amateur opinion: your opinion is just as valid so go form one.
- The Digital Economy Act 2010 means that your ISP can be forced by OFCOM to hand over details of your internet activity to the holder of intellectual property rights if a court of law thinks you have committed a breach of the copyright law. A court order is required for this – it’s in the Act and it’s in OFCOM’s Terms of Reference document they published in response to the Act. If your ISP hands over your details to a third party without a court order then that’s a commercial decision for them, not a legal obligation. Check out your ISP’s policy on this.
- If a rightsholder makes enough accusations against you to reach an OFCOM-determined threshold then OFCOM can oblige your ISP to take “technical measures” against you. These measures include disconnection or any other limiting of your service. OFCOM must believe these measures will be effective before it can impose the obligation on the ISP, which presupposes that OFCOM believes there is merit in the accusations.
So it’s all down to OFCOM. The law gives it the opportunity to act in the interests of the rightsholders, the service providers or the subscribers. Or all three if it gets its policies dead right. It will conduct itself in accordance with a code yet to be drafted. It could draft such a code itself or it could adopt one proposed by somebody else, including copyright holders.
The draft code will be published by May. Popular activity (albeit sometimes hysterical) has made sure that some bad amendments were dropped during the debate on the Bill. Legislators are aware that the internet community is vociferous and includes some influential people.
There’s a good chance the draft code will be OK, but the price of liberty is eternal vigilance. OFCOM promises to engage with consumer groups as part of the consultation process before the code is submitted to the European Commission for approval – how effective that is depends on continued pressure from actual internet users.
Bibliography
- The Digital Economy Act 2010
- OFCOM Measures to Tackle Online Copyright Infringement: Terms of Reference
- Digital Economy Act wiki
- Wikipedia article
- BPI Heralds Landmark Digital Economy Act
- BIS official guidelines: Online infringement of copyright: libraries, universities and wi-fi providers (PDF)
- Hansard record of the Commons Second Reading of the Digital Economy Bill
Three members of my World’s Best All-Rounders table have been in action since my last post. Here’s how the table stands today (all current players in bold):
| Player | Matches | Runs | Bat Av | Wkts | Bowl Av | Ct | X-factor |
| GS Sobers (WI) | 93 | 8032 | 57.78 | 235 | 34.03 | 109 | 3370 |
| JH Kallis (ICC/SA) | 137 | 10843 | 54.76 | 261 | 31.55 | 155 | 3192 |
| AW Greig (Eng) | 58 | 3599 | 40.43 | 141 | 32.20 | 87 | 1985 |
| TL Goddard (SA) | 41 | 2516 | 34.46 | 123 | 26.22 | 48 | 1550 |
| BM McMillan (SA) | 38 | 1968 | 39.36 | 75 | 33.82 | 49 | 1359 |
| KR Miller (Aus) | 55 | 2958 | 36.97 | 170 | 22.97 | 38 | 1313 |
| IT Botham (Eng) | 102 | 5200 | 33.54 | 383 | 28.40 | 120 | 1193 |
| Mushtaq Mohammad (Pak) | 57 | 3643 | 39.17 | 79 | 29.22 | 42 | 1102 |
| Asif Iqbal (Pak) | 58 | 3575 | 38.85 | 53 | 28.33 | 36 | 963 |
| SM Pollock (SA) | 108 | 3781 | 32.31 | 421 | 23.11 | 72 | 947 |
| ER Dexter (Eng) | 62 | 4502 | 47.89 | 66 | 34.93 | 29 | 840 |
| ST Jayasuriya (SL) | 110 | 6973 | 40.07 | 98 | 34.34 | 78 | 761 |
| Imran Khan (Pak) | 88 | 3807 | 37.69 | 362 | 22.81 | 28 | 633 |
| GE Gomez (WI) | 29 | 1243 | 30.31 | 58 | 27.41 | 18 | 490 |
| JDP Oram (NZ) | 33 | 1780 | 36.32 | 60 | 33.05 | 15 | 376 |
| JR Reid (NZ) | 58 | 3428 | 33.28 | 85 | 33.35 | 43 | 374 |
| Graeme Swann (Eng) | 18 | 563 | 31.27 | 85 | 29.67 | 10 | 367 |
| N Kapil Dev (India) | 131 | 5248 | 31.05 | 434 | 29.64 | 64 | 313 |
| MH Mankad (India) | 44 | 2109 | 31.47 | 162 | 32.32 | 33 | 311 |
| Shakib Al Hasan (Ban) | 19 | 1127 | 33.14 | 67 | 31.82 | 8 | 266 |
| A Flintoff (Eng/ICC) | 79 | 3845 | 31.77 | 226 | 32.78 | 52 | 263 |
| CL Cairns (NZ) | 62 | 3320 | 33.53 | 218 | 29.40 | 14 | 206 |
| IK Pathan (India) | 29 | 1105 | 31.57 | 100 | 32.26 | 8 | 119 |
| DL Vettori (ICC/NZ) | 99 | 3925 | 30.90 | 319 | 33.95 | 55 | 108 |
Graeme Swann‘s X-factor has plummeted below 400 and he has slipped a couple of places in the table. Shakib’s runs did better justice to his batting skills and he has leap-frogged Andrew Flintoff. The match shows how volatile the X-factor is – perhaps it’s a bit too highly leveraged.
Results from the Chittagong test match
Two members of my World’s Best All-Rounders table were in action in the test match at Chittagong that finished this morning. Here’s how the table stands after the match:
| Player | Matches | Runs | Bat Av | Wkts | Bowl Av | Ct | X-factor |
| GS Sobers (WI) | 93 | 8032 | 57.78 | 235 | 34.03 | 109 | 3370 |
| JH Kallis (ICC/SA) | 137 | 10843 | 54.76 | 261 | 31.55 | 155 | 3192 |
| AW Greig (Eng) | 58 | 3599 | 40.43 | 141 | 32.20 | 87 | 1985 |
| TL Goddard (SA) | 41 | 2516 | 34.46 | 123 | 26.22 | 48 | 1550 |
| BM McMillan (SA) | 38 | 1968 | 39.36 | 75 | 33.82 | 49 | 1359 |
| KR Miller (Aus) | 55 | 2958 | 36.97 | 170 | 22.97 | 38 | 1313 |
| IT Botham (Eng) | 102 | 5200 | 33.54 | 383 | 28.40 | 120 | 1193 |
| Mushtaq Mohammad (Pak) | 57 | 3643 | 39.17 | 79 | 29.22 | 42 | 1102 |
| Asif Iqbal (Pak) | 58 | 3575 | 38.85 | 53 | 28.33 | 36 | 963 |
| SM Pollock (SA) | 108 | 3781 | 32.31 | 421 | 23.11 | 72 | 947 |
| ER Dexter (Eng) | 62 | 4502 | 47.89 | 66 | 34.93 | 29 | 840 |
| ST Jayasuriya (SL) | 110 | 6973 | 40.07 | 98 | 34.34 | 78 | 761 |
| Imran Khan (Pak) | 88 | 3807 | 37.69 | 362 | 22.81 | 28 | 633 |
| GE Gomez (WI) | 29 | 1243 | 30.31 | 58 | 27.41 | 18 | 490 |
| Graeme Swann (Eng) | 17 | 557 | 32.76 | 79 | 29.55 | 10 | 483 |
| JDP Oram (NZ) | 33 | 1780 | 36.32 | 60 | 33.05 | 15 | 376 |
| JR Reid (NZ) | 58 | 3428 | 33.28 | 85 | 33.35 | 43 | 374 |
| N Kapil Dev (India) | 131 | 5248 | 31.05 | 434 | 29.64 | 64 | 313 |
| MH Mankad (India) | 44 | 2109 | 31.47 | 162 | 32.32 | 33 | 311 |
| A Flintoff (Eng/ICC) | 79 | 3845 | 31.77 | 226 | 32.78 | 52 | 263 |
| Shakib Al Hasan (Ban) | 18 | 982 | 30.68 | 63 | 31.38 | 8 | 191 |
| CL Cairns (NZ) | 62 | 3320 | 33.53 | 218 | 29.40 | 14 | 206 |
| IK Pathan (India) | 29 | 1105 | 31.57 | 100 | 32.26 | 8 | 119 |
| DL Vettori (ICC/NZ) | 98 | 3789 | 30.55 | 316 | 33.56 | 55 | 112 |
Both players enhanced their reputation as bowlers, particularly Swann with 10 wickets in the match. Neither did much for their all-rounder credentials though. Shakib’s 5 runs in the match in particular being a poor reflection of his batting skills.
Sorry for the outage since Sunday. I moved the contents of this blog away from wordpress.com because I didn’t want to pay for another year’s hosting there when I have a perfectly good host elsewhere.
The move of the blog contents took 5 minutes.
Releasing the sub-domain blog.dominicsayers.com from the clutches of wordpress.com and getting SiteGround to set it up took 48 hours.
Lessons learned:
1. If you’re thinking of choosing a new hosting provider, try to get a look at the hosting control panel first. I’ve now had three faults with SiteGround that were simply because their tools don’t work.
2. I chose to keep my Name Server management away from SiteGround because their tools (a) didn’t work and (b) didn’t let me view or edit my DNS records explicitly. Don’t nanny me if I don’t want to be nannied. Because my name servers are not under their control, this broke some of their other tools. How about testing this stuff before releasing it, people?
3. SiteGround tech support are helpful and responsive.
Other things I’ve noticed: some of the WordPress plug-in writers have stopped maintaining their plug-ins. Is WordPress a dying platform? Is blogging a dying art?
I mentioned to a friend that I thought the iPhone presented the same dangers as Internet Explorer 6 did when it was released. I sense that this point is not as obvious as it seems to me, so here goes with a brief explanation of what I mean.
Internet Explorer 6 was a major advance on its predecessors as an application development platform. What’s more it was effectively ubiquitous – Microsoft gave it away with Windows and everybody had Windows.
In the corporate environment, this meant that IT departments could write client applications for the browser instead of using Visual Basic or worse, Java. These browser-based applications needed no roll-out programme and no desktop provisioning – both expensive headaches.
Whoopee! said corporate IT departments, and rushed to develop applications for the new platform.
Roll the clock forward to today and the folly of that approach is clear. Corporates are now stuck using those same client applications because either they can’t afford to develop new ones, or they bought a third-party application that is still business-critical, or the developers have left the company and they simply dare not touch the code. And those applications only work on Internet Explorer 6 because it turned out it wasn’t a de facto standard after all, it was a proprietary cul de sac.
So I sit every day at a desk in a bank, trying to use Internet Explorer 6 in a world where most people have given up trying to retain compatibility with this out-dated platform. And around the world there are millions like me whose employers or clients are saddled with this dinosaur because of an expensive mistake made years ago.
Why do I believe we are in danger of making the same mistake again?
The number of applications developed for the iPhone is astonishing. People develop for this platform because it is better than its predecessors. And although it is not quite ubiquitous, it certainly has a market share that makes the potential audience for an iPhone application very attractive indeed.
This has not escaped the notice of corporate IT departments. I imagine client applications for the company CRM system are being developed right now for the mobile salesforce of thousands of companies.
And so history repeats itself. The iPhone is a proprietary platform whose future is not yet clear. It could set a de facto standard for future mobile platforms. Maybe. I think it more likely that Android and Windows Phone 7 will go their own way. And corporates will have bought into applications for a platform that will go away before the business requirement does.
By all means buy or write applications for the iPhone, but please factor in the cost of replacing those applications in a few years. I don’t want to be carrying round a five-year-old iPhone in 2015 just because my company depends on an application that only runs on that old thing.
Graeme Swann
Shakib Al Hasan‘s century in the recent test match against New Zealand means that Graeme Swann is now the only member of my all-rounders table without a test match hundred to his name.
This brings into question whether Swann’s presence in the table is due to his being a genuine world-class all-rounder or, on the other hand, a statistical anomaly.

In my first post I talked about what makes an all-rounder. The underlying principle is that the player should merit selection as either a batsman or a bowler. If he is unable to do one or the other for a given match, is he still worth picking?
On this basis I think calling Swann an all-rounder is a bit of a stretch. If he couldn’t bowl he wouldn’t play. His usual batting position is 9, which he may feel is unfair but reflects the consistent opinion of a number of captains and coaches since 2008.
So why is he in the table? My batting criterion is an average over 30. If I raised this to (say) 35 I would be excluding Ian Botham, Shaun Pollock, Andrew Flintoff, Kapil Dev and Chris Cairns. All world class all-rounders according to conventional wisdom.
His average reflects the number of not outs in his 21 test innings. Here is how his average has changed since the start of his career:
I think it will settle in the low- to mid-thirties for the remainder of his career. The peak of 45 was a result of two significant not-out innings in 2009 (63* against West Indies and 47* against Australia) and I don’t think he’ll approach those heights again. But if he keeps above 30 he’ll stay in my table.
So are the criteria wrong? How can I exclude a player like Swann when his figures bear comparison with the best of all time? All I can think of is excluding players who bat at 9, 10 or 11 in the batting order. This seems even more arbitrary than my existing criteria and I don’t like it much.
Any ideas?
