Skip to content

Moving towards a typographic user interface

There’s a lot of noise about the iOS7 UI, unsurprisingly. Some nuts are screaming about betrayal, and kill the fanboys; also, unsurprisingly. For me, some things I like, some I don’t – some of the icons look too stripped back, the font grates on me; but that’s because similar ultra light fonts have already been heavily used by designers who have put it within clunky user interfaces. Continue reading ›

How To Swear Proper

Or: authentic British usage of swearwords

This is really simple; just use “fuck”/“fucking” as punctuation as well as emphasis.

Disclaimer: my native dialect is West London, which to my ears has the most unpleasant of the London accents. However, I went to a public school, and most of the time I sound close to RP (Received Pronunciation, or “BBC English”), but with a slight nasal twang. Continue reading ›

Learn lisp

I’m a big proponent of the #pragprog adage that you should learn a new programming language every year, but I have sadly lacking at putting it into practice, despite having an early advantage (BASIC, Fortran, Algol 60, APL, Pascal, Forth, COBOL, , IBM assembler, 6502 assembler, etc). Then in the early 90s I had started to move forwards again, with C and Objective C, and I came across the great lisp wars. Now it is 20 years on, and I’ve taken to (slowly) learn lisp. Continue reading › Word List

Here is a little utility to assist solving Letterpress games.  It comes largely (almost entirely) from an article on Stack Overflow.  It uses /usr/share/dict/words for the word list, and requires a initial stage to convert this into an anagram dictionary for efficiency.  Even so, it still takes a minute to run on my recent iMac.

Continue reading ›

Tagged ,

DODOcase Durables – iPhone 5 Wallet

DODOcase are responsible for the lovely Moleskine-like iPad cases and the texturally delicious BOOKback, and when they produced a new line of cases for iPhone/iPad/MacBook Air, I ordered one for my new iPhone 5 immediately.

The case consists of a khaki (they call it “sage”) waxed cotton sleeve lined with orange cotton material (some of their web pages talk about felt, but this isn’t), with a bridle colour (tan) leather wrapper forming a pocket on either side. There is a label sewn inside, and some orange stitching on one side, which is a nice visual touch. It’s pretty, and the wax isn’t the thick layer you find on Barbour and Belstaff jackets that covers everything you touch for a very long time.

My phone slips in very easily, and would slip out equally easily if I held the wallet upside down, which I don’t – this isn’t a problem. The two pockets I am using to replace a card case and money clip, so one hold two credit cards (and could hold an id easily enough as well), and the other hold a few bank notes. There are still a couple of cards left in my card case, but I don’t really need to carry them.

I had intended to carry the wallet in my front jeans/trousers pocket, exactly where I carried the card case and money clip (but with the iPhone in the other front pocket), but it hasn’t worked out that way, as the wallet with the iPhone is significantly larger. As a result, I have mostly moved the wallet to a jacket inside breast pocket. I can easily slip the iPhone in and out of the wallet without removing the wallet from my jacket pocket. This has been convenient so far; I will probably experiment with putting it back in my trouser pocket and shuffle around my pen-knive and handkerchief to find the optimum fit.

With the iPhone out of the case, the cards would easily fall out of the wallet if held upside down; with it in the case, they are a snug fit. This is unlikely to be a problem with my usage pattern, although I would advise owners to be careful of leaving the wallet sitting on a table, etc – exactly as with a normal wallet.

I find it useful to stow my iPhone “head down”, meaning with the connectors (headphone jack and Lightning connector) showing, as then I don’t have to remove it to charge, and can listen to music with the iPhone still in the wallet and in my pocket. I have noticed it occasionally turning on as I put the phone back in, which could be my fumbling, but I suspect is the top edge on/off switch being activated from the “head down” insertion. This isn’t a problem at all, as I keep a passcode active, so no butt-dialling.

I’ve had it for over a week now, and I like the overall feel; the materials are indeed durable and the leather feels luxurious. There is some sign of a patina starting to form on the leather, and the waxed cotton should do the same.

The quality of the materials and manufacturing, as expected from DODOcase, is excellent. As it isn’t an exact match for my previous use pattern, as is replacing several different items, I still have to fully adapt to its use, but I am confident that will happen in time. I like it: a lot.

Update: 18 January 2014.

I still like the things about the case that I liked originally: it looks and feels good.  It is true that it has worked its way to a much looser fit, with a new iPhone 5S and much use.  During that time I also tried some other cases: the TwelveSouth SurfacePad, and the Saddleback Leather iPhone5 Case.  In short, the SurfacePad is very slimline, but when open and folded back, the front cover blocks the camera; and the Saddleback Leather case is still new, but very appealing.

I think I have settled on using cases, rather than wallets or covers for the iPhone.  I want the protection from coins and keys, but I also want free access to the phone, so a removable case is my preference.  On those factors, the DODOcase is good: but the Saddleback Leather case is better.  Any change like this has ripple effects: I have moved to a SimpleWallet for cash and cards, rather than a (only slightly larger) card case plus money clip.  Trying to combine the functions with the DODOcase was the triggering step, but the loose hold on my phone, and the fact that the cards and case are only half covered in the case pockets made me go back to the wallet and case combo.


Device Sizes

There’s been blog chatter over this since Tim Bray posted his blog entry, and this is something I have had strong opinions about since the Newton, and even earlier (remember Steve Ciarcia’s lunchbox CP/M computer in Byte? It seems highly unlikely that anyone does).

Continue reading ›

Student Recipe Book

This page is a set of links to my “student” recipe book. These are Pages documents shared on, and can be viewed, downloaded in various formats and printed. The basic idea is to create a collection of student friendly recipes that are nutritious, cheap to make and simple to prepare. Continue reading ›


How To Buy Things

Which applies to everything, although this is an approach that I discovered (as did many other people) when dealing with very expensive software.

The Wrong Way

This is how most people buy things. Find a list of “features” (features are attributes of a product, and could be anything; true, false, or utterly fictional); then find an alternative product, and measure the length of the two lists. Buy the one with the longest list.

This is wrong because the buyer has no personal involvement in decision making, and swallows whole the tales of the sellers, who obviously have a vested interest in selling their product, by beating a competitor. This is what causes the phenomenon of the people who believe the last person they spoke to, ignoring all others. No discrimination is applied, and this approach will fail.

The Half Right Way

Do you know someone who always buys the cheapest comparative product? We all know someone like this. It’s a poor way of making a decision, but it’s the way governments do it, as well as shoppers in some supermarkets – the cheapest ones, obviously. This approach fails because it doesn’t consider value.

At its heart, value is something very simple. Is it worth more to you than it costs? When “worth” is easy to calculate, which it often is for a business; say, the number of man-months to write a program, or to build a new office, then that decision becomes simple, and anyone in a position to make that sort of decision should know enough about driving a spreadsheet (or a calculator) to be able to reduce the decision down to numbers, to a simple profit or loss.

But when making a decision over two packs of vegetables in a supermarket, or two brands of beans, you have to weigh the worth to you, or your family, or better taste, better nutrition, and better ease of use. Sometimes this can be a clear decision, but more usually it isn’t. in these cases, what works best is to have previously considered the relevant factors, and decided on their priority.

The Right Way

Gather lists of features. Consider them all, and separate them into three parts: “must have”, “nice to have”, and “irrelevant”. Then match each product against these lists. If only one product hits all of your “must have” features, then you know what to do. If more than one product has them all, then you can take into account the “nice” features. If no product has them all, then you can either reassess your feature lists, or (more sensibly) decide not to buy.

This is extremely simple. An easily led person can skew the lists to favour one competitor, but then it becomes obvious to everyone who is cheating, and how. This works for big decisions as well as small, everyday ones. Sometimes a decision seems hard, but becomes obvious when you understand which features are important.

Hiring – how to ignore the guidelines and get it right

I’ve been a hiring manager for twenty years (low ’80s to low ’00s), but I haven’t done any hiring in the last (almost) decade, and I’m disappointed how things have changed in the software industry over that period.

I was hiring for technical support and programmer positions, ranging from IBM assembler and mainframe MVS experience to Java and Objective-C programmers; sometimes this would have been mainstream qualifications, and other times not. I did a good job of this; thinking back, most of my hires received a substantial promotion not long after joining – a real promotion, but just moving from a trainee grade to another; and some left to join Apple and other significant employers. I didn’t like that much, but I think it shows that my hiring approach was working.

Current practice seems to be to require applicants to jump through humiliating hoops to prove their current knowledge of existing technologies – JavaScript, C++, .NET, where the hoops are basic algorithm tests. But this doesn’t get anywhere near the real issues. However, I have the Internet, search engines, auto-completing syntax aware IDEs, and an excellent collections of books; and with new technologies coming out all the time, keeping up with the best solutions can be a full-time job. The exam approach just isn’t a good one; in fact, getting the right employee with this approach can only be a matter of luck, where the hiring manager effectively ignores the guidelines, knowingly or not.

I don’t want a new employee who will be bored with their routine work – I want to stretch them, and I want them to learn on the job; in fact, if they won’t be regularly learning, they are wrong for the job, and I don’t think I can emphasise this enough. I’m not alone in saying this; if you read any of the books and blogs over the last ten years, you’ll have seen this time and time again. So what’s going wrong?

My strategy was simple: I wanted to hire people like me. Specifically, people who can think, can learn, and were motivated to achieve. I also had a hiring trick: my benchmark, if you like, was (and is) the classic hacker, as described in the appendix to Eric Raymond’s Jargon File (see here). The Pragmatic Programmer book covers the same ground from a different direction, but the conclusion is just the same.

SOE Status: iPhone app for monitoring SOE game servers

SOE Status is in the App Store now ( Link is to the UK store, US store link is:

This takes the data from the new SOE status page at and displays it on your phone; you can select data for a single game and refresh that display if you wish.

It runs on iPad as well as iPhone – it probably won’t run on iPhones using OSes older than 4.1. Now that it’s shown up in the store, there’s a couple of minor tweaks I will make and resubmit. Any suggestions or bug reports are welcome.