The Elegant Chaos Blog

August 06, 2012

I like this post by Matt Gemmell on how to manage your email.

He describes pretty much what I’ve been doing for the last few years.

I’m not as good as I should be about replying quickly to the people who do matter, but I’m considerably better than I used to be since I started being more ruthless about the others.

The only thing I’d add to Matt’s suggestions is to do the following:

  • make a group in Address Book / Contacts
  • add the important people to it
  • make a new Smart Mailbox that just shows mail from people in this group
  • change Mail’s badge to show the unread count from this mailbox
  • change Mail’s notification sound to only fire for this mailbox
  • reduce the frequency that it checks mail - does it really matter if you don’t get it for another half an hour?

In Mountain Lion, the new Messages app replaces iChat.

If you’re the kind of person like me who religiously keeps your email, chat logs, etc, but you have chosen not to do a migration of your data when upgrading to Mountain Lion, you’re going to be faced with the problem of how to import your old iChat logs into Messages.

It turns out that Messages stores logs in:


They appear to be the same format as iChat, so if you move your old logs into this folder, Messages will find them.

Alternatively, you can make a symbolic link to a folder elsewhere and put your logs in there. For example, this will rename the old Archive as “Archive.old”, then make a link to a folder called “iChat” in your Dropbox folder.

 > cd ~/Library/Messages
 > mv Archive Archive.old
 > mkdir -p ../../Dropbox/iChat
 > ln -s ../../Dropbox/iChat Archive

This just leaves the Archive.old folder lying around, but you could obviously move its contents into your new iChat folder then delete Archive.old.


We’ve been pretty busy in recent months, with a number of contracting jobs, including a bit of work with the lovely folks over at Karelia software.

Live music is dear to our hearts though, so we’re planning on taking some time out this week to attend the excellent Hebridean Celtic festival, which happens each year here in Stornoway, on the Scottish island of Lewis in the Outer Hebrides.

The festival is very much a labour of love, and although it attracts a large audience from all over the world, it’s run by a charitable trust. So when they came to me to ask about the possibility of doing an app, I was rather keen to get involved (although a little scared at how little time we had to get something ready for this year).

After a bit of nifty footwork, and a few anxious nights waiting for Apple’s review process, the result is this little app. Given the amount of time we had, we decided to keep it simple, but we’re rather pleased with the results. Hopefully, the festival organisers are too.


Apple are due to release OS X Mountain Lion soon.

One of the features included in it is something called Gatekeeper, which is intended to improve security. By default, when you install Mountain Lion, you will only be able to run newly downloaded applications if they have been signed by the developer, using an official Apple developer identity (note that you can turn this behaviour off, but that’s the default setting).

What this means in practise for you, with regard to Neu and/or Ambientweet?

If you’re using copies of Neu or Ambientweet downloaded from the Apple store, there will be no change.

In any event, there will be no change if you continue to use copies that you’ve already downloaded (ie on another machine or with a previous version of the system).

If you download the current version of Ambientweet (1.1) or Neu (1.2) from our website, they are currently not signed in the correct way, so Gatekeeper will complain about them. There is a way that you can tell Gatekeeper to make an exception, but that’s not really an ideal solution in the long term, so we’re preparing a quick update to bring Ambientweet up to version 1.1.1, and Neu to 1.2.1.

The only change for these versions is that they will be signed correctly and Gatekeeper will recognise them as legitimate.

If you want to test beta versions of these applications, they should be available later today from the beta software page. Barring any reported problems, they’ll then go live in the next few days.

Since the only purpose of these updates is to prepare for Gatekeeper, and since Gatekeeper already accepts applications downloaded from the Apple store, these updates will not be submitted to the store. If you’re using versions from the store, you can safely continue with versions 1.1 or 1.2 of Ambientweet and Neu respectively.

Proper updates, with more features, will arrive in due course, bringing the store and non-store versions back into line again.


My first desktop Mac was a IIcx, bought in about 1989, for the astounding sum of nearly £4000 (to put that in context, it took me a year of working between school and university to pay for it, and I could have bought a new Ford Fiesta for less).

Since then, as a Mac developer, I’ve owned and used many more, pretty much always the top spec of the current generation. There was certainly a time when having the latest, greatest desktop machine was essential (not to mention highly desirable for the sheer geeky joy of it).

However, since going back to indy development in 2010, I’ve only worked on my laptop, and I didn’t have a desktop machine at home for a good few years prior to that, despite regularly working from home on a big game with masses of data.

So the recent speculation leading up to WWDC about whether the Mac Pro would get an update, and the subsequent answer (“not really, well maybe slightly, but there’s something new coming next year”), lead me to ponder what I’d actually want. The four things that I can see a desktop might offer me are:

  • more power (processing and memory)
  • more storage
  • more screen real estate
  • the ability add custom hardware

The conclusion I came to is that with all of these things, what I actually want isn’t really a desktop machine at all.

Conceptually what I want is one or more black boxes (well, maybe shiny aluminium boxes), that I can plug into my laptop (or perhaps hang on the network), which expand its capabilities.

In performance terms, these boxes should behave as near as possible as if they were inside the laptop, hanging directly off the main system bus, but other than that, they really don’t have to be housed in one big lump under my desk.

Whether Thunderbolt is up to the sort of load this would impose, I don’t know. For storage, I suspect that it is, and solutions are already there.

To some extent screen real estate may be too, although I’m not sure what sort of external monitor the new retina Mac Book Pro will be able to drive in addition to it’s own monster display.

If it were possible to house additional video hardware at the other end of a Thunderbolt cable (maybe it is?), so that one could effectively plug in additional video cards via the cable, this would pretty much remove the need for a desktop Mac as a way to drive a silly numbers of monitors.

Similarly, custom hardware, encoders and input cards, and so on, can and should probably live at the other end of a Thunderbolt cable.

All of which just leaves processing power and memory.

Given the bandwidth requirements of both, it’s clearly unlikely to be possible to add these directly to a laptop as if they were on the main logic board, but I’d love to see Apple try to get as close as it could to that.

Wouldn’t it be great to have a Mac-Mini / Airport Extreme sized box that required little or no configuration and just made your laptop more powerful when you plugged it in?

To some extent, things like distributed compilation offer this already. We used to have a pretty excellent setup for the Mac when I worked at SI, distributing to a large number of high end Mac Pros, and it really improved the build times. I think that got a bit broken with Xcode 4 though, and since then I’ve tried it at home with limited results, but only attempting to distribute to a machine with pretty much the same power as my laptop.

Given the increasingly distributed and task oriented nature of the code we all write these days, an approach which we need anyway to take advantage of the multiple cores already in our machines, it seems like some sort of generic solution allowing us to scale up the power of a machine ought to be a lot more achievable now than it was in the past.

Data is the big problem - getting the right stuff to the right processor in a timely fashion is tricky (just ask anyone who’s ever written code for a PS3) - but it’s not insurmountable.

Abstractions like GCD and NSOperation are probably a bit too fine grained to be transparently parcelled out to an external processor, but if we had another abstraction for encapsulating slightly larger chunks of work along with the data needed to do them, we’d have a chance of making this sort of thing fly. Things like XPC could really help here, allowing whole abstract services to run without the client process having to know or care where.

Nothing I’m talking about is revolutionary of course, but packing it up in a really clean, modular, elegant way that can be used by pro-consumers would be. And who better to do it than Apple?