OK, so this will probably go wrong (usually does, thanks to the amount of customisation of the templates and the fact that my site is based on rather old template files now).
Great Day
OK, so yesterday sucked. One of my guys’ computers went wrong, and he cycles to work and had left his laptop at home, so I had to drive him there, in the rain, to pick it up (much to the irritation of his wife, who had been hoping to use it — but it is company property so the outcome of that discussion was pretty obvious at the outset). Then I spent ages on the phone trying to locate a replacement, until the extremely helpful chap at the Apple Business Store (hi Rod!) sorted me out with next day delivery on a new one.
Then I spent the rest of the day doing customer support. We all do that at Coriolis Systems; it’s good that we software developers get involved with real customers and see what the real problems are with our products. All too often people are divorced from the actual customers because they have (sometimes layers) of customer support staff in between them and the real world. We don’t. The downside of that is that it can be a bit of a drag at times, dealing with yet another “I forgot my password”, “My e-mail address is wrong” query, punctuated with occasional customer angry that “we didn’t reply” (translation: they, their IT department, and/or their ISP are not competent to run a mail server, but are trying to anyway, and have cunningly configured it to ignore/junk/bounce e-mail from us).
Anyway, the remainder of yesterday was spent doing that. We always get a lot of mail to deal with on a Monday, because we don’t work weekends, but I really don’t like not making progress with whatever else I’m working on.
Today, on the other hand, was great. Made plenty of progress with what I’ve been working on. It still isn’t perfect (just checked it remotely, and it’s broken :-)), but it’s definitely getting there, which is good news indeed, as it means I’ll soon be back working on what I was doing before (both more interesting and more fun, quite frankly).
Also managed to do a load of housework when I got home, so that’s good too. Surprising how much work it is to keep on top of all the housework, but I really do love living in my new house :-) :-)
Cross-process Semaphores With Timeouts on OS X
Someone on darwin-dev recently asked how to go about obtaining a cross-process semaphore that can be waited on with a timeout on OS X.
POSIX semaphores currently don’t support this feature on OS X; nor do System V semaphores. Mach semaphores do support timeouts (see /usr/include/mach/semaphore.h), but it isn’t immediately obvious how to pass one to another process.
Anyway, I thought I’d stick together a simple Mach server to implement named semaphores…
Update 2011-10-14
I’ve moved the code and most of the description to a new page, as that seemed better than leaving it here.
A Payment Card Fraudster’s Charter
From the BBC:
The scam is hard for police or other agencies to investigate because the individual sums of money involved are very small.
I wonder if the political class or the general public realise the implications of this situation, or the true scale of the amount of money that goes missing, entirely without police investigation for the simple reason that the amount is “too small”.
Fairly recently, we had a purchase put through our website from a customer in Paris, France. This customer used someone else’s card to make the purchase, and the owner of that card was understandably irritated and complained to their card issuer who, under the card scheme rules, returned the money, which was subsequently recovered from us along with a so-called “chargeback fee”.
The account on our website was locked and the licenses cancelled so they couldn’t re-activate the software if they needed to at any point in the future.
Subsequently, the same person made another purchase, using an entirely different set of card details belonging to another third party, who also complained at their card issuer, who returned the money as before, recovering it from us and resulting in another “chargeback fee”.
It is entirely obvious that this person has access to multiple sets of stolen credit/debit card details. It is equally obvious that the total amount that is likely to be at stake is many, many times the amount of any individual purchase. Yet when we asked the police to look into the matter, we were told that the French police wouldn’t investigate because the sum of money was too small1.
It should be immediately apparent to anyone with half a brain that this attitude results in the perverse outcome that even large-scale credit or debit card fraud involving multiple small transactions in foreign countries, ideally spread across many online retailers, will go undetected and more importantly unpunished, while vendors (particularly of digital goods and services, where the losses are almost invariably passed on by the card issuer) are unfairly penalised for being the final victims of this fraud.
This amounts to nothing less than a license to defraud and is, quite frankly, a disgrace.
1 In reality, I suspect that it is not the police per se, but rather a diplomatic agreement between the U.K. and France that cross-border crime below a certain value will simply not be dealt with, since, as I understand it, such cases need to be funnelled through the respective diplomatic services — though I am hardly an expert in this and I could very well be wrong.
Surprise Surprise, ISPs Are Angry…
Surprise surprise, ISPs are angry at suggestions that they will be forced to disconnect customers for copyright infringement.
This isn’t exactly news as far as copyright holders are concerned. We’ve known for ages, because of the capricious and unhelpful way that ISPs act when we ask them to remove illegal copies of our material, that they are, on the whole, supporters of copyright infringement. They may not admit it, of course, but since it drives use of bandwidth, encourages customers to use their services and results in a net revenue stream for them, it’s pretty easy to see why they would support it.
It’s also interesting to consider the comments of Rupert Goodwins, one of ZD Net’s editors. Interesting because the press, particularly the dead tree variety, has also been largely pro-infringement—as long as we aren’t talking about their content, anyway. Predictably, therefore, Goodwins trots out the ISPs’ tropes about how expensive and impractical it will be, how it might infringe peoples’ human rights, how there isn’t enough evidence that it’s really harming peoples’ livelihoods and so on. He even at one point talks about ISPs having to “cut off their own customers… for no reason”. Not to mention implying that the changes to the proposals have something to do with Peter Mandelson’s meeting with David Geffen.
Amazing How Dumb Some People Are
It never fails to amaze me just how stupid some people are. The row about the NHS that was started in the United States has led to the BBC starting one of their “Have Your Say” threads (which always seem to be full of the most depressingly banal rubbish), but in this case I just can’t help commenting myself; the thing that annoys me the most is posts like this one:
Hows this for the NHS - My Dad had a heart attack 2 months ago, within 4 minutes the paramedics arrived with in 25 mins we were in A&E and within 2 hours he was on a specialist ward, life saved! - All this for Free, Oh forgot it must be Evil! - MURRRHAHAH!!
Since then I have been so impressed by the NHS and their staff, I have been applying for jobs with them, even on less salary than I currently am.
This is one Brit with pride in our NHS and its staff
john s, wigan
where the commenter appears to think that the NHS is free. It isn’t. It’s free at the point of use, but that just means that we pay for it through taxation.
And boy, do we pay for it. Government spending on health is listed in the 2009 Budget as £119bn, much of which is covered by the £98bn that was collected in National Insurance payments. National Insurance, for those who don’t know, is an over-complicated form of income tax that is paid by both employers and their employees so that the government can increase it by a notional 1% and actually get 2% extra (of your gross salary) in tax. It’s widely criticised (and rightly so) as being a tax on employment, and the excuse for its existence is that it’s there to pay for the NHS and the state pension scheme1.
But it’s very unlikely that the health figure on that graph includes payments related to debt interest on NHS-related projects, or the costs of PFI, all of which must come from somewhere (hint: that’s your pocket, stupid). See, for instance, this or this. Quite a chunk of the £28bn of debt interest payments shown in the Budget will relate to these kinds of things. There’s also a very suspicious £72bn of “Other” shown in the Budget…
Anyway, even if we believe the figure of £119bn (and I don’t know about you, but I’m skeptical that that number is the whole truth of it), the NHS costs us each around £2,000 per annum (or between US$3,000 and US$4,000 depending on exchange rates).
In reality, not all of the population pays National Insurance; it’s only paid by those in employment, and even then not everybody pays. The Office of National Statistics tells us that 28.93 million people are currently in employment, so the figure per working person is more like £4,000 per working person, per annum, assuming that everyone pays which I’ve already noted is not the case. (For the benefit of U.S. readers, that’s between US$6,000 and US$8,000 depending on exchange rate fluctuations!)
Of course, we can also look at this another way, which is to consider what “the man on the street” actually pays in National Insurance contributions, including his employer’s contribution (which, whether he knows it or not, comes out of what his employer is prepared to pay for him to work there).
According to average weekly earnings figures from the ONS, in May 2009, average weekly earnings were £440. Using the NI tables HMRC publishes, we can work out roughly2 how much someone on average weekly earnings pays £36.30 per week in Employees’ contributions, and a further £42.24 per week in Employers’ contributions that they usually don’t see (though it still effectively comes out of their pay, of course). That’s £78.54 per week, or a little over £300 per month. Or £4,000 per annum. Yes, that’s right, a person on average income has to pay over £300 per month for the NHS (that’s US$450 to US$600 depending on exchange rates).
So is the NHS free? No, it isn’t.
How does it compare with the U.S.? That’s a difficult question to answer sensibly and I’m not really going to attempt to do so here. But I note that here in the U.K. it’s quite likely that a family of four will have two parents out to work, especially if both are on average incomes (in which case the total NI contribution is around £8,000pa, or US$12,000-ish), while the National Coalition on Health Care estimated that in 2008, employers paid on average US$12,700 for a health plan for a family of four. Again, as an employee you may only be expected to front up US$3,400 of that, but the rest still comes out of what your employer is prepared to pay for employing you.
There are lots of other factors, of course. While the NHS theoretically provides dentistry and optometry and so on, in practice those are usually paid for separately. And I know in the U.S. there are excesses, limits and co-payments to worry about.
1 Astute readers may notice that I have omitted the cost of the state pension scheme from the following discussion. This is true, however:
- The state pension provision is very likely to be significantly curtailed by the time many people currently paying for it reach retirement age.
- Since the healthcare spending figure of £119bn is in any case higher than the NI figure of £98bn, we may as well consider that all of the NI money is spent on the NHS for the purposes of our discussion. That, in fact, more money from elsewhere is also spent on the NHS simply further inflates the costs for the individual, so you might regard the figures later on as conservative estimates.
2 Calculating the actual figures for National Insurance can be quite complicated, thanks to everything from bizarre and mathematically unjustifiable rounding through to the plethora of exceptions and special rules that apply in one case or another. Here I have simply multiplied the amounts between the thresholds by the percentage rates.
Traditional Definition of “Beta”?
Daring Fireball comments that
— people thought that what Google meant by “beta” was what everyone else means by “beta”.
on the basis of this from Google:
…particularly those who subscribe to the traditional definition of “beta” software as not being yet ready for prime time.
Thing is, that isn’t the “traditional definition” of beta. Beta simply means that the software is undergoing an external test period of some description. It doesn’t imply anything about quality, and it never did.
If the version that was released as a beta turns out not to have any major bugs, it’s entirely possible that that same code (albeit with the beta tag removed) will subsequently be released.
I don’t know where this whole “not ready for prime time” thing came from—though I’ve seen mention of it before elsewhere—but it’s simply not true.
WWDC '09
Just a quick note that while I won’t be at WWDC this year, Chris Suter and James Snook will both be attending. They’re both very approachable so if you spot either of them and want to talk to them about something by all means go ahead.
New Home!
As I tweeted the other day, I am now the proud owner of a new three bedroom house over in Twyford (a small village near Winchester). I moved in a couple of weeks’ back now, initially on a camp bed and sleeping bag (it’s kind of exciting — I haven’t owned my own home up to now).
The developer, Hazeley Developments (tel. 01962 764500), is excellent, and in particular the project manager Simon Machola deserves some praise, both in terms of the specification and the attitude towards the development. If you have any need for new residential property, I would be quite happy to recommend their work.
Also, if you’re in the market for carpets or alternative flooring in the Southampton or Winchester area, I can thoroughly recommend Triad Carpets. I’ve been dealing with Ian and Kevin over at the Winchester branch, who have been nothing but helpful, in spite of my mucking them about a bit over the installation date for the remaining bit of carpet.
Not only did I have half their shop apart when I was originally choosing my carpets, but they went away and researched the best kind of underlay to use in my lounge (which has underfloor heating and therefore a tog limit). Plus, when installing the carpets originally, the builders found a water leak and so the carpet fitter very sensibly refrained from installing one of the bits of carpet (not something that would happen with some of the chains, I shouldn’t think) because of the amount of traffic through that area while he was there.
Anyway, it’s refreshing to find such great customer service, and they really know their stuff flooring-wise as well.
A few other things worth mentioning that I’ve bought and think are worth recommending:
Bosch BSG8PRO1 cylinder vac.
Expensive, but worth the money in my opinion. Even on half power, it’s still quite capable of sticking the vacuum head to the floor, and the construction oozes quality. I’m particularly fond of the swivelling castors on the base. (Yeah, I know, I sound like Kryten… they are nice though.)I’ve always had an upright in the past, but this Bosch has stronger suction, better construction (especially compared to the appallingly flimsy Dyson models), is smaller and lighter and comes with a good selection of attachments.
AEG Lavamat 16850 washer dryer.
Not cheap, but again worth the money. A-rated for wash performance, and B-rated overall which is something of a miracle for a washer dryer. It runs almost silent, and unlike many machines it only vibrates slightly on full spin. Oh, and it can actually dry clothes, if you’re using the drying programmes, which is a novelty for me as previous washer dryers I’ve used have been, well, useless.I.O. Shen knives.
Sharp seems to be an understatement. Sturdy handles and nice weight as well. I had an interesting time choosing these — there are lots of good sets of knives out there at various different price points. I think the I.O. Shens are a good compromise; I wasn’t going to shell out for e.g. Tojiro knives and I don’t really like Globals for the money. Henckels look OK, and there are even some cheaper ranges from people like Meyer that look fairly good. You could also look at the various Sabatier brands (but take care — there are lots of different companies selling knives marked “Sabatier”, and they do vary in quality).The only thing I will say is that the magnetic knife block doesn’t work quite as well for the bread knife as for the other knives, I think because the former is quite heavy.
Meyer Anolon Professional pans.
These are just genius. Nothing sticks, you only need a low heat to keep things boiling, they’re easy to clean (though you can’t shove them in the dishwasher, but then as I said they are easy to clean) and oven safe too.I originally bought a square grill pan from this range as a present for my dad, and I knew he liked it a great deal so I thought this was an easy choice.
</ul>I’ll close by saying a big thank-you to all of the customers who have purchased copies of iDefrag and iPartition. We aren’t some big faceless company — we’re doing what we do to make a living, and it’s sales of our products that mean that I’m able to fulfil my dream of owning my own home.
The original version of iPartition took me more than a year to write, working full-time entirely unpaid, and I’m still not sure how I found the time to write iDefrag and do all the customer support for iPartition as well… since then it’s been wonderful watching the products (and the company) improve and grow and also seeing the level of support from the Mac community for our work.
Icon View (Coming Soon)
For those of you waiting for me to publish the code for my icon view, I thought I’d post a brief update.
I’ve been working on adding keyboard support, which is now nearly complete. The only thing left to do before releasing the code is to add support for renaming items, just like in Finder.
After that, as promised, I’m going to enable the view for accessibility (it is currently completely devoid of accessibility code), so that we have a worked example of making this work for a complex custom view.