Oh no

When designing the English character set, it was quite a bad idea to make the letter O (“oh”) look so similar to the number 0 (zero).

But what turned a bad situation into an absolute disaster was the introduction of the convention of pronouncing the number 0 as “oh” – as in “double-oh seven”, or the freephone number “oh eight-hundred”. At least if the convention had been to pronounce the number 4 as “dee”, one could potentially resolve the ambiguity by looking at the shape of the character. As things are, a vertically-stretched circle called “oh” can equally refer to the 15th letter of the alphabet or to the number zero.

Sentient beings can often infer whether a given ovoid is intended as a number or a letter from its context. But computers cannot, and in an increasingly computerised world, this is an increasing problem. A phone number entered as O800 123 456 can be succesfully interpreted by a human, but an unthinking machine will reject it as invalid. My friend who thought, for many years, that his postcode was “DE3 OAB” until I pointed out to him that the third character from the end had to be a number, had no trouble receiving mail handled by human operators, but would have struggled to resolve his delivery address on Amazon.

Here’s another tricky area: car registration numbers. Cars built between 1983 and 2001, are identified by a 6- or 7-character sequence comprising a letter, followed by two or three numbers, followed by three further letters. Those built more recently are identified by a 7-character sequence of two letters, two numbers, and three letters. Bearing in mind that the font in which these characters are printed does not clearly distinguish zeroes from ohs, it is quite impossible to judge whether car FO12ABC is 27 years old or just 3 years old. Unless the car is in front of you, that is.

And it’s not just zero and oh that can cause alphanumerical confusion. The uppercase letter I (“aye”) looks suspiciously similar to the number 1 (one), and to the lowercase l (“ell”). In fact, legend has it that the Queen utters sentences like “One would like to watch telly now” simply because she misread the “I” for a “1” a long time ago and has continued the habit ever since.

Here are several really useful free Mac apps that I’ve come across recently:

  • Macfusion (free). Lets you mount remote filesystems over SSH or FTP, and access them through Finder. Far nicer than using the ssh command in Terminal, or a third-party FTP client. Depends on OSXFUSE. Notes:
    • Finder does already provide FTP access (via “Connect to server…”), but it’s read-only.
    • In order to have write access over SSH, you’ll need to do the trick described here to map your local username to the username of your SSH account.
    • I find it convenient to place a link to Macfusion.app in Finder’s toolbar.
  • BetterTouchTool (free). Brings to Mac the excellent ‘aero-snap’ feature of Windows 7 (plus a few other nice features).
  • Spark (free). Lets you assign custom keyboard shortcuts. Really stable and powerful. Doesn’t look to have been updated for a couple of years, but still works fine on Snow Leopard.
  • VirtualBox (free). Run Windows or Linux on your Mac – and no need to dual boot. I’m staggered by how well this works.
  • BibDesk (free). I use this to manage my PDF library. Very powerful and customisable.
  • PDFNut (free). A PDF viewer with Chrome-style tabs. I only started using it yesterday, and I love it already.

In a recent research paper, I formalised some of my theorems in the proof assistant Isabelle, but left some of them as just proved ‘by hand’. I found it helpful to use a different ‘QED’ symbol depending on which method I had used.

Below is an enlarged version of the ‘three cubes’ symbol in the snippet above, together with the original Isabelle logo for comparison. The new symbol is designed to be suitable for black-and-white printing at a small size, and can be generated by the LaTeX code given below.


\begin{tikzpicture}[x=0.8mm, y=0.8mm, 
     baseline=-0.3mm, line join=round]
 \draw (0,0) rectangle +(1,1);
 \draw (2,1) rectangle +(1,1);
 \draw (1,2) rectangle +(1,1);
 \filldraw (1,-1) rectangle +(1,1);
 \filldraw (3,-2) rectangle +(1,1);
 \filldraw (2,0) rectangle +(1,1);
 \draw (1,0) rectangle +(1,1);
 \draw (2,-1) rectangle +(1,1);
 \draw (3,1) rectangle +(1,1);


One could even go a step further, and extend this idea into a potential new logo for Isabelle.

New Isabelle logo

The picture above is generated by the following LaTeX code.

\begin{tikzpicture}[x=4mm, y=4mm, baseline=6mm, 
     line join=round, draw=black]
\begin{scope}[every node/.append style={yslant=-0.5}, yslant=-0.5]
 \filldraw[fill=blue!25] (0,0) rectangle +(1,1); 
 \node at (0.5,0.5) {$\lambda$};
 \filldraw[fill=blue!25] (2,1) rectangle +(1,1); 
 \node at (2.5,1.5) {$=$};
 \filldraw[fill=yellow!25] (1,2) rectangle +(1,1); 
 \node at (1.5,2.5) {$\vdash$};
 \filldraw[fill=red!25] (4,2) rectangle +(1,1); 
 \node at (4.5,2.5) {$\alpha$};
 \filldraw[fill=red!25] (3,3) rectangle +(1,1); 
 \node at (3.5,3.5) {$\rightarrow$};
 \filldraw[fill=yellow!25] (2,4) rectangle +(1,1); 
 \node at (2.5,4.5) {$\forall$};
 \filldraw[fill=black!25!blue] (1,-1) rectangle +(1,1);
 \filldraw[fill=black!25!blue] (3,-2) rectangle +(1,1);
 \filldraw[fill=black!25!yellow] (2,0) rectangle +(1,1);
 \filldraw[fill=black!25!yellow] (3,1) rectangle +(1,1);
 \filldraw[fill=black!25!red] (4,-1) rectangle +(1,1);
 \filldraw[fill=black!25!red] (5,-3) rectangle +(1,1);
 \filldraw[fill=blue] (1,0) rectangle +(1,1);
 \filldraw[fill=blue] (2,-1) rectangle +(1,1);
 \filldraw[fill=yellow] (3,1) rectangle +(1,1);
 \filldraw[fill=yellow] (5,2) rectangle +(1,1);
 \filldraw[fill=red] (4,0) rectangle +(1,1);
 \filldraw[fill=red] (3,-2) rectangle +(1,1);
\end{tikzpicture}\hspace{4mm}{\Huge\bf Isabelle}

He has feet the size of rabbits.
He has feet the size of rabbits’.

Here is a crossword. Some clues are cryptic, and some are general knowledge. Good luck!

Crossword grid


5. Tunnel built by friend following vehicle? (6)

8. Whose tombstone in Vienna reads S = k log W? (6,9)

9. Pneumatic tool for RAF practice? (3,5)

11. Plant of the year? (6)

12. The heart, in Hebrew, is found in Jewish ale vessel (5)

13. Their work is provided by the devil (4,5)

18. Which Minnesotan city might appeal to a Czech? (3,6)

22. Which fabric originates from the French city of Nîmes? (5)

23. Which Renault engineer is famous for his curves? (6)

24. … (2,6)

25. Which former colony (flag pictured) boasts the world’s most livable city (according to The Economist) (7,8)?


26. Path taken by falling satellite (6)

27. Which institution, founded in 1458, has won University Challenge a record four times? (8)


1. Which British PM’s term as a transport minister saw the introduction of zebra crossings? (9)

2. By which computing phenomenon can x − y  > x be true for positive y? (9)

3. Largest French waterway avoids European capital to expose tributary? (4,5)

4. Loops around reel? (5)

5. Industrial building? (7)

6. Which country was represented by the first “perfect 10.0” Olympic gymnast? (7)

7. Objectivist philosopher, and yarn spinner? (3,4)

10. Prone to deceiving? (5)

14. German lies in gladioli (e.g. tristis) (5)

15. Investment in shrubbery? (5,4)

16. The solution is not to use any words (3-6)

17. As above (4,5)

19. Contemplate steep descent? (3,4)

20. Rope artist? (7)

21. What did chemical engineer Erik Rotheim invent in 1926 to help wax his skis? (7)

24. What is the website of the world’s oldest continuously-published encyclopedia? (2.3)

Update: I now know the description below to be inaccurate. See the comments section below.

Here is my guess at how the new HSBC SecureKey device works…

Each device has its own method for generating a long sequence of 6-digit numbers (example: divide the previous number by 13, add 5, and swap the second and fourth digits around). That method is known only to the device itself, and HSBC’s central database. That database stores, for each device serial number, (1) how that device’s sequence is generated, and (2) where the device is currently at in the sequence. When you press the green button after entering your PIN, the next 6-digit number in the sequence is generated and shown. When you type that number into the HSBC login page, HSBC updates its database to advance to the next number in the sequence, and checks that it matches the number you entered.

This process will eventually, after several years, exhaust the sequence of 6-digit numbers. Thereupon, the sequence will begin all over again.

A slight refinement is necessary. I can make my device get ‘out of sync’ with the HSBC database by repeatedly pressing the green button, but not trying to log in using the numbers it generates. To address this situation, the HSBC login page must accept not merely the very next number in the sequence, but any of the next, say, hundred numbers, and update its database accordingly.

I wanted to investigate a dodgy key on my Roland HP 136 Digital Piano, and found the web to be surprisingly unable to advise me on how to go about this. This post presents some information that I had hoped to find. (Follow this advice at your own risk, I merely claim that this worked for me.)

Opening the case

  1. Remove two screws from the underside of the piano …
  2. … then three screws from the back of the piano…
  3. … and then lift the lid. Result:

Removing a key

  1. Unhook the spring at the back of the key.
  2. Push a screwdriver into the slot (as shown in the photo below) and prise the key out.
  3. I found that in order to free the key completely, I had to slide the whole rack of keys backwards a little. This required removing several more bolts from the piano’s underside.

It turned out that the dodgy key was caused by a snapped hammer. I superglued it back together and it has been playing fine ever since.


Get every new post delivered to your Inbox.