Disable Mac OS Lion’s “Zooming Windows” feature


 defaults write NSGlobalDomain NSAutomaticWindowAnimationsEnabled -bool NO

That’s all folks!

Disable Mac OS Lion’s “Restore windows” setting on an individual per-application basis

The “General” PreferencePane in Lion’s ‘System Preferences’ windows contains a “Restore windows when quitting and re-opening apps” item. However, sometimes this behaviour does’t make sense – after a reboot I found, for example, that the OS X Installer had re-launched and was asking for a package to install!


HP TouchPad Review

Even though I’ve never owned a webOS-based device, over time I’ve followed with interest the various Mobile OS options out there – and webOS certainly seems to have some great ideas. In many ways, webOS is significantly more functional than Apple’s iOS – but is the HP TouchPad good enough as a consumer product to carry through this advantage?

I’m lucky enough to have been allowed to borrow a new TouchPad (model HSTNH-129C), and these are my thoughts after an afternoon’s usage.

HP TouchPad Marketing Image


Mid-2011 MacBook Air processor comparison: Core i5 or Core i7?

I’ve been promising myself for some time now that – as my current MacBook Pro has started to fall to pieces after three year’s perfect service – I would upgrade to a lighter, much more portable MacBook Air as soon as they received a Sandy Bridge processor update.

There is a nice overview of the available options at TechonoBuffalo, whilst MacWorld and Bare Feats are the first places I’ve seen with useful(*) benchmarks. Furthermore, the ever-reliable Storage Review has an interesting set of figures for the (excellent) performance of the new Blade SSDs.

However, what I’ve been unable to find elsewhere (and even wikipedia isn’t overly useful, in this case) is any quantitative comparison of the two MacBook Air processor options: For the 128GB 11″ model, the Core i7 processor is a £150 (~15%) extra for – on the face of it, a 200MHz (a fifth of an iPhone 4 or iPad, or 12.5%) speed increase.

There must be more of an advantage, surely?

As it turns out, the answer is yes and no…


AirPlay support for Logitech Squeezebox devices

On Friday 8th April, ShairPort was released. Containing the private key from a reverse-engineered Apple AirPort Express, this allows unlicensed/homebrew devices to act as AirPlay target speakers – e.g. allows iTunes, iPods, iPads, and iPhones to use them as an output device.

Immediately, the obvious thought is to add AirPlay support to Logitech/Slim Devices’ Squeezebox Server software so that the excellent Squeezebox devices can be used as remote speakers.

(As an aside, I’ve had my 3rd generation Squeezeboxsince they were introduced in 2005, and it is without the highest quality and most used gadget I have, still going strong and as useful as ever more than five years later!)

After a few false-starts trying to configure ALSA to record the digital output of the host’s soundcard, the latest release of ShairPort provides a perfect solution to lossless audio reproduction, without even needing a soundcard.


e-mail autoresponder using procmail

It may have taken way too many hours, and may have descended into a maze of twisty little passages, all alike, but after fighting various permissions issues and procmail‘s general intransigence (I still can’t work out what determines whether procmail will perform variable-interpolation on shell commands, or why it doesn’t like even multi-escaped square brackets in shell invocations…) here it is in all it’s glory: A procmail-based auto-reply system.


More fun with NSStrings in Objective C

Sometimes, it’s the simple things which can be the most handy. Here’s a quick category on NSString to allow all characters within a set (NSCharacterSet *illegalCharacterSet or NSCharacterSet *symbolCharacterSet, say) to be easily and efficiently removed. This fills a gap in between the stringByTrimmingCharactersInSet: and stringByReplacingCharactersInRange: withString: & stringByReplacingOccurrencesOfString: withString: methods, which only act upon the ends of the receiver or require a continuous range or fixed string respectively.


Working around the lack of an RTC battery on ALIX system boards…

The ALIX 2c3 system board the forms my traffic-shaper has one irksome weakness: it lacks an on-board CMOS/RTC battery to maintain the time when the system is shutdown.

This is a more significant problem than it sounds since, for starters, the fsck tools for the ext2 filesystem, by default, treat a timestamp in the future as a failure – and disk checks have to be performed almost immediately on system start, so there is no opportunity to raise networking and start an NTP dæmon.


ALIX USB support

I have a PC Engines alix2d3 single-board computer – a really nice compact system with an AMD Geode processor, 256MB RAM, compact flash storage and three 10/100MB network ports – acting as my traffic-shaper and network gateway. Since this machine is extremely reliable, always on, and has spare USB ports it seemed like a sensible place to plug in the USB cable from my new UPS. There have been several power-cuts recently (some due to external factors, and some due to a dodgy toaster!) and the time spent recovering filesystems from unexpected restarts was starting to become inconvenient…


Fixing window titles where directory names contain extended characters…

This one may be a little esoteric, but I’ve always configured my ~/.bashrc to set $PS1 in bash to a simple ‘$ ‘, but show all relevant information in the terminal (or screen) window title.

This is generally fine but, on OS X at least, if a directory name contains an extended character such as ‘Æ‘ then what actually happens is that all characters are sent to the window title except for the extended character, which is pre-pended to the prompt for the following line. Being a double-byte character, this then confused the shell’s line-editing abilities, and characters have a tendency to disappear if the cursor keys are used for editing.

After suffering with this for several months, this interesting problem reached my needs-a-fix threshold and I decided to do something about it 😉