Alastair’s Place

Software development, Cocoa, Objective-C, life. Stuff like that.

Inflation

Apparently CPI inflation is now 5.2%, with RPI at some 5.6%. The Bank of England is supposed to set interest rates according to its inflation target of 2%. It even says this, quite clearly, on its own webpage:

Each member of the MPC has expertise in the field of economics and monetary policy. Members do not represent individual groups or areas. They are independent. Each member of the Committee has a vote to set interest rates at the level they believe is consistent with meeting the inflation target. The MPC’s decision is made on the basis of one-person, one vote. It is not based on a consensus of opinion. It reflects the votes of each individual member of the Committee.

Yet, month after month, the MPC has voted consistently against raising interest rates.

Note that the MPC committee is not supposed to vote to set rates according to anything other than inflation. It isn’t supposed to care one jot about anything else, and while it does explain that there is supposedly a lag of “about two years”, the data consistently shows an upwards trend over a much longer period. Put another way, going by the data, interest rates should have been higher in the past, and should be higher now.

New Projects Page

I’m still in the process of re-organising things, so a lot of the site is going to have broken links for a while (sorry; it’s just a fact of life, until I can extract all my old posts from Movable Type).

However, there are a few pieces of software that are hosted here, and so I’ve made a page dedicated to those and set up links so they’ll still be available.

Been a While

It’s been quite a while since I last wrote a blog post on my own site. Partly this is because I’ve been busy with work. Partly it’s because I’ve been busy with life. Mostly it’s been because I haven’t had the time to configure a server to host it since we moved the company site to its current location.

One might retort that I could just have set something up on TypePad, or Blogger or some such, and that’s true, but it doesn’t really provide the kind of service I’m after. So I waited, thinking that eventually I’d get around to organising myself another server with MovableType on it. Of course, this never happened (too busy), so the situation persisted, and in the meantime I’ve built up quite a few things I wanted to say, but didn’t really have anywhere to say them.

Then, just the other day, we received the sad news that Steve Jobs, the visionary behind Apple, NeXT, Pixar and all of the great work that flowed forth from those companies, died. Sure, I posted something brief on my company’s blog, but more than that doesn’t seem appropriate for that location.

Anyway, in the meantime, Matt Gemmell had been talking about changing blogging platform as a result of persistent performance problems with WordPress, and indeed had actually switched to Octopress. MovableType, my previous blogging platform of choice, doesn’t suffer from the performance issues that plague dynamic blogging software such as WordPress, but Octopress does offer other advantages, especially the fact that posts are stored in plain text files, under version control.

So, I’m switching. This does mean that it might be a little while before my website settles back down again, and I’m intending to move one or two things about a bit. Plus I’m vain enough to want my blog to look unique, so now I have a new blog theme to design. But hey… it’s all fun.

Finder-like Icon View Source Code

So I said ages ago (here too) that I’d release the source code for a Finder-style icon view that I had sitting around on my disk.

Yesterday, while listening to the speakers at the first day of NSConference, I managed to find the time to tidy up what I had and to make it build and run properly on Snow Leopard.

The code isn’t perfect — I can think of lots of things that need doing to get it to the stage where I’d want to use it myself in an app — and because it was started way back in 2005 and slowly tinkered with over time, I’m sure there’s plenty that could be tidied up too… but it does provide a lot of examples of using all kinds of Cocoa functionality, some of which is not so obvious until you’ve tried it once or twice.

Anyway, it’s available under an MIT-style license from Google Code.

Avatar 3D

Earlier today I went to see Avatar 3D over at the Vue Cinema in Eastleigh. James Cameron has a pretty good track record, but I won’t deny being a little worried that the film might concentrate too much on special effects at the expense of the story, but I was very pleasantly surprised.

It would be very easy for the 3-D effect to become the centrepiece of a 3-D movie, but it seemed as if it was carefully thought out. Nice touches included the fact that some of the humans’ display devices were themselves displaying images with depth and the various things floating in the atmosphere (including the Atokirina’ and the dust after the destruction of the Na’vi Hometree).

The only thing really wrong with this type of 3-D right now is that you can’t focus anywhere other than where the camera is focused. Of course, fixing that is incredibly difficult, since you’d need to be able to adjust the focal length for specific areas of the image in the projector, not to mention adding the requirement of being able to film everything in every shot in perfect sharp focus in the first place.

Pandora itself is amazingly beautiful, particularly at night with all of the bioluminescence, and it really is difficult not to marvel at the amount of work that went into designing the lush and importantly believable landscape of the Pandoran forest and its native wildlife.

Anyway, it’s a wonderful film; let’s hope James Cameron gets to make a sequel. Let’s also hope that unlike the Alien series (which has been fatally marred by the awful Alien Resurrection, not to mention a certain amount of stupidity in the AvP films), the studio knows when to call it quits.

3-D Secure Woes

So far over the past week, we’ve had two people tell us that they think some sort of scam is going on via our website after their bank decided to ask them for something stupid as part of its 3-D Secure (Verified by Visa/MasterCard SecureCode) implementation.

The first one was a U.S. bank that decided it’d be a great idea to ask its customers to enter their Social Security Number into a web form on the Internet. U.S. citizens are understandably very wary about giving out their Social Security Numbers on-line, particularly on websites they don’t recognise, and it also seems that the bank in question apparently hadn’t mentioned to the cardholder that it might go and ask them for this information during a card payment transaction, resulting in a worried e-mail to us asking if it was some sort of scam.

The second incident involved a credit union that had told its members that it would never ask them to enter their credit union member number online. And then it did, in its 3-D Secure authentication form. Again, we get an e-mail asking us if it’s some sort of scam.

Most of these problems seem to be due to inept security policies at U.S.-based card issuers. At the very least if you are going to enroll your customers’ cards for 3-D Secure, you need to make sure they know what to expect when they see the Verified by Visa or MasterCard SecureCode boxes appear. Otherwise it’s actually a major security risk, because someone could set-up a site that pretends to use VbyV or MCSC and asks for information like Social Security Numbers that can then be used for credit fraud.

Upgraded to Movable Type 5

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.