Monthly Archives: August, 2012

Who should really be suing Apple?

Dickon’s comment on my last post reminded me of another post from four years ago.

Imitation is the sincerest form of flattery, they say, but it can also be the most expensive.

Dear Apple, a billion dollars would be nice, but I think the Broadband Phone team would probably settle for some nice new MacBook Pros…


Before and after

John posted this lovely image from CultOfMac, showing phone designs before and after the iPhone.

As he says, imitation is the sincerest form of flattery…

How you can actually find things with Spotlight

Mac tip of the week…

The Spotlight search engine is a really useful feature of Mac OS X, providing an easy way to open your files, email messages etc. But suppose you want to do something other than open them: how do you find out where they actually are? Is it showing you the copy on your internal drive, or your external drive? What other things are in the same folder? Can I copy it onto a flash drive?

A quick note for new Mac users: the ‘Option’ key is labelled ‘Alt’ on some keyboards.

Using Little Computers to control Big Computers

Here’s my latest Raspberry Pi-based experiment: the CloudSwitch.

I don’t discuss the software in the video, but the fun thing is that the Pi isn’t dependent on some intermediate server – it’s using the boto module for Python to manage the AWS resources directly.

I decided to build the app slightly differently from the way I would normally approach a little project like this. I knew that, even for this very simple system, I would have several inputs and outputs of various kinds, some of them with big delays, and I wanted to make sure that timing hiccups or race conditions didn’t ever leave the lights displaying something that didn’t represent reality.

So this is only a single python file, but it runs several threads – one that looks for button presses, one that monitors and controls the Amazon server, and one that handles the lights – including flashing them in various patterns. They interact with the main thread using ZeroMQ messages, which is a lovely way to do inter-thread communications without all that nasty messing about with semaphores and mutexes.

Update: Here’s the very simple circuit diagram. The illuminated buttons I used have LEDs which take a little more power than the Raspberry Pi can really drive, so I put a couple of NPN transistors in there. It really doesn’t matter too much what they are – I used the 2N3904.

Keep the customer notified

Here’s a handy utility for those using Mountain Lion’s new Notifications system (something I find I rather like despite never really getting on with Growl).

It’s called ‘terminal-notifier’ by Eloy Durán, and it lets you send these from the command line. So, for example:

   $ terminal-notifier \
     -message “Shall I compare thee to a summer’s day?” \
     -title “Morning greeting” -execute “open”

This pops up a little notification, and clicking on it will take you to the BBC weather forecast for Cambridge.

You could put the command all on one line – I’ve just split it up with backslashes for readability. It’s easy to install terminal-notifier from the command line with:

  $ sudo gem install terminal-notifier

Now, as an illustration of why it can be useful, I wanted this for a particular purpose:

I’ve been experimenting more and more with Multimarkdown, since so much of what I write ends up in HTML, and the markdown syntax is a convenient way to create it. I have an Automator service which takes the currently selected text, for example in a blog post text-entry field, parses it as Markdown, and replaces it with the HTML equivalent. I’ve assigned it a keystroke, so typically I’ll just do Cmd-A to select everything I’ve typed and Ctrl-Alt-Cmd-M to convert it to nice HTML. Very handy. It’s how I wrote this.

Just occasionally, however, I might want to go back to the Markdown version, so before conversion the selected text is also copied into the clipboard. This is the kind of quick temporary backup that becomes second nature if you have a clipboard history utility. But it’s easy to forget this has happened.

Now, I can just add a quick extra line in the automator script and I get a little pop-up to remind me, which vanishes again after a few seconds:

Thanks, Eloy!

Here’s what the Automator service looks like, in case anyone wants to do something similar:

Learning from the disaster

Most of you have probably heard by now about how the technology reporter Mat Honan’s accounts were hacked and how he lost his Google Mail, his Apple and Amazon account, his Twitter account and the contents of his iPhone and laptop. All in under one hour.

What’s fascinating about this story is that we know how it was done: there was no heavy brute-force attack on weakly-encypted passwords, no SQL injections on his company’s website. The hackers had no animosity towards him; they didn’t know who he was, they just liked his three-letter @mat Twitter ID. In other words, this could easily happen to you too!

If you haven’t heard the story, then I recommend listening to episode 364 of Security Now, which you can get from here or here. The discussion starts 30 mins into the programme.

You should probably listen to this if you, say, use the Internet…

Quote for the day

This one's from Douglas Adams.

There's a set of rules that anything that was in the world when you were born is normal and natural. Anything invented between when you were 15 and 35 is new and revolutionary and exciting, and you'll probably get a career in it. Anything invented after you're 35 is against the natural order of things.


Applications Open

A guy who worked on Mac repairs and maintenance told me a good way to test whether a Mac’s hard disk is working reliably. “Oh”, he said on the phone, “you can kinda stress-test it by opening the Applications folder and doing Cmd-A Cmd-O”.

It took me a moment to click just what he was saying: Cmd-A selects everything in the folder. Cmd-O opens things that are selected. In the case of apps, it will run them. So these two quick keystrokes will try to launch, simultaneously, every app installed on your machine.

“It usually takes 5 minutes or so, depending on the machine”, he continued. “But if there’s something wrong with the system this will usually find it.” Yes, I said, I imagined it would.

Now, I admit I haven’t tried this with my machines yet, but I did try it last time I was in the Apple store. And it’s a really good way to demonstrate the difference between hard-disk- and SSD-based machines!

Two things worth knowing if you try this experiment:

  • One of the things that will open at some point in this process is Time Machine. So your world will disappear into a star field until you close it!
  • Quitting 30 or 40 apps can be a pain unless you know the Cmd-Tab trick: if you’re doing Cmd-Tab to switch between apps, you can tap ‘Q’ while still holding down Cmd to quit the app whose icon is currently highlighted. Typing Q lots of times is a good way to quit lots of apps quickly.

Cloud Control

While computing in the ‘cloud’ brings us a lot of good things, there’s one area in which it is often not very strong: longevity.

For me this is most apparent as I peruse the archives of my blog — in which, for example, none of the Google Video clips can now be played — or look back at tweets from a couple of years ago which often linked to things using the URL-shortening service, many of whose links already no longer work.

And my last company, Camvine, used Google Apps for Business. The company has now gone, and so, with its Google account, have all the associated documents and emails. Thousands of them.

It’s easy, at the time, to think “I can link to this safely, or store my documents safely here, because Google isn’t about to vanish overnight”. Well, all of the service providers I’ve been tripping over in looking through my archives are still around. But for one reason or another, the links no longer work.

It’s obvious, but it’s worth repeating: Using, or linking to, someone else’s service, may be a good strategy for today, but don’t rely on it for anything you might want to access tomorrow. The only data I can be sure of is on servers I run (and backup) myself.

Customise app defaults with AppleScript

Nobody likes AppleScript. Well, almost nobody. It’s an attempt to make a programming language look like a natural language, which means that knowing what constitutes valid syntax in any given situation is almost impossible. I once suggested that what the world really needs is a Perl-to-Applescript translator, because Perl is a language that’s pretty easy to write but impossible to read, and AppleScript is easy to read but impossible to write. The syntax is a bit dependent on the apps with which you’re trying to interact, too, and the debugging options are exceedingly limited.

But the most annoying thing is that, on occasion, it’s exceedingly useful, and there aren’t really good alternatives for the kind of things it can do.

So just in case anyone out there is googling for this kind of thing, here’s how I made it change the default options on a dialog box that I use every day.

I’ve been inspired by David Sparks’s e-book Paperless, and my new-found fondness for the kind of things you can do with the Hazel utility, to get a better, more automated workflow for scanning in documents.

A key component, of course, is that you want them to be OCRed so that you can search for them, or search within them, later. I want something that does this automatically, or can be made to do it automatically, when a scan ends up in a folder on my disk, with minimal manual intervention. Good OCR programs are fairly costly on the Mac – Abbyy FineReader, at £79, is generally agreed to do the best OCR job, but the Mac version is not very scriptable. PDFpen, at £47, does a reasonable job and has better scriptability, and if I were starting now I’d probably use that.

But a while ago I splashed out on NeatWorks, which has good OCR, plays nicely with my wonderful ScanSnap scanner, and provides a complete filing system for my documents, with flexible metadata options. It’s a nice package. But the problem is that I no longer want a complete filing system for my documents – I want to do that myself.

So for the moment I’m using NeatWorks to capture my scans, OCR them, enter some metadata and then export them as PDFs to the folder where Hazel and other things take over. They typically stay in NeatWorks for about a minute.

OK – that was a long run-up to explain why I regularly – often several times a day, do File > Export… and get this dialog:

At this point I can almost just hit [Return], except for one problem: the default is to export all the items in the currently selected folders and I just want to export the thing I last scanned. So every time I do this, I have to switch from keyboard to mouse, click the little radio button by ‘Selected items only’ and then carry on.

AppleScript to the rescue! I used Automator to create a service that just applies to NeatWorks and runs the following AppleScript:

This runs ‘File > Export…’, clicks the appropriate radio button, and then clicks the Export… button.

Finally I used the Keyboard section of System Preferences to assign a keyboard shortcut to this service.

Now, I drop some paper into the scanner and press the button on the front. NeatWorks pops up and OCRs it. I type in a title, document date and any other keywords I fancy, then just hit my magic keystroke and check the name and folder before hitting return to save.

At that point, Hazel takes over and does something like “if this file was created by NeatWorks, and has a name containing the word ‘Telemarq’ and the word ‘receipt’, then file it away in the appropriate folder of my receipts directory with a suitably reformatted filename”.

Organisations don’t think, people do

“Can we arrange a time for a conference call with you?”, said the enthusiastic email that landed in my inbox last year from some company’s marketing department. “We're very excited to tell you about our new viral videos!”

To which my response, of course, was that if they were really viral, they wouldn't need to tell me about them!


I thought of this while watching Euan Semple's keynote from the State of The Net conference in June, which, in contrast, has a gentle, understated style yet includes some nice ideas that come from years of careful thinking about corporate communications, both internal and external.

Euan Semple is the author of Organizations Don’t Tweet, People Do.

Curiosity has Landed

On Aug 5th, the Curiosity rover landed on Mars. I hadn’t really absorbed, at the time, just what a technical achievement this was: not so much getting the thing to Mars, but landing it safely and ready to roll shortly after it hit the Martian atmosphere at 13,000 miles per hour. It weighs nearly a tonne. The Jet Propulsion Lab had, of course, made CGI simulations showing how the process would work, in advance of the landing, but in this brilliant piece of video editing they intercut it with footage of the control team on the ground celebrating its arrival. I suggest you turn the volume up and watch it full-screen.

Rose’s aunt used to work at JPL, and, when I visited many years ago, one of the directors made an offhand comment which basically amounted to a job offer. At the time, it was all very quiet, and though I was interested in the work, the elderly rows of SPARCstations tracking satellites didn’t grab me as particularly thrilling. Now, however, there can’t be many organisations that could put together a recruitment video like this!

© Copyright Quentin Stafford-Fraser