Ready-to-handness, and bed.

So here’s an interesting study done on a sample size of one (me). I’m pondering a blog entry, and I have two ways to write it. I can (a) get up, walk to the study, unlock one of the Linux laptops waiting patiently, fire up the LiveJournal web page and then type, on a proper keyboard. And it’ll be a fast machine, with a sprightly web browser to find interesting and relevant links.

Or, (b), I could use the LiveJournal app on the iPad. Which means two-finger typing on a screen keyboard, fighting the autocorrect. And a slow browser, with the sluggish copy-and-paste that iOS 5 has brought to the original iPad (thanks, Apple, I was worried the iPad was too fast before you released iOS 5). So, in terms of the actual task I want to do, no contest.

But (b) means I don’t have to get up yet. And the iPad’s already here. And I’m comfy. Damn.

Posted via LiveJournal app for iPad.

Absolument Disparu, Like Mother’s Mink

The title today being a quotation from Nigel Molesworth’s serious and worthwhile autobiographies, which you either know or you don’t.

The guys over at Penny Arcade experience the Lesson About Backups that hits us all, eventually.  I’ve long believed that there’s an axiom of computing (of the practise, not the theory) that states:

You will only truly understand how important backups are when you realise that you don’t have one, and that because you don’t, you have lost something now irretrievable.

At that moment, one becomes enlightened, though it is probably not nirvana that you reach.  However, experience, it is said, is cheap at any price and doubly so when someone else is paying.  So I took a quarter of an hour to quickly run through the many and varied backup systems here and at the office, verifying that they’re working as they should.  Conveniently enough, there’s a gap of ninety miles between the two; sufficiently large that any natural disaster capable of affecting both would leave me with other priorities than recovering backups, like basic survival in a post-holocaust wilderness, for example.  Thus backups run between the two sites, overnight, replicating all critical data.  That’s in addition to the suite of tape drives in the office, and the Linux mirrored array that holds duplicates of the family photos and digital documents from the working PCs here.

I don’t think I’ve ever heard a genuine geek say that backup system is too redundant.  At least, nobody who’s been through their own Lesson About Backups.

He’s More Machine Now Than Man

Or, combining Exchange and PostFix to form a hideous cyborg being.

This useful article popped up on OSNews about avoiding the need to pay mucho dinero to upgrade ageing Exchange 5 setups by using PostFix (or some other secure MTA) to insulate Exchange from the wild and woolly Internet.

At our main office we have an old NT server (SBS to be exact) running Exchange 5.5.  It came as part of an original IT installation I inherited when I joined, together with a web-proxy-only Net connection over ISDN for which the installers charged an extortionate fee per month (as well as ISDN dialup charges).  One day I’ll have a little rant about how unsurprising it is that many small businesses don’t trust IT companies when ripoffs like that are so common… but not today.  Anyway, the problem I had was that the users were throroughly wedded to Outlook, when we switched to a sensible Net connection I had no intention of having the NT server and Exchange directly connected.  My previous job had included a huge mix of NT and Unix servers and I’d had the unpleasant experience of watching the Microsoft kit fall before the onslaught of vulnerabilities like sandcastles under an incoming tide.  I wanted something reliable and robust between the Net and NT.

The first job was to liberate an old machine and put RedHat on it (this was so long ago that RedHat 6.1 was current).  Next, Squid proxying to make the most of the (initially limited) bandwidth.  Then PostFix to deal with all incoming and outgoing email.  I used the redirect facility in ipchains to force all outgoing SMTP connections to port 25 to be rerouted through PostFix (thus giving me a way to at least track any trojans with built-in MTAs).  The NT server was moved behind this firewall system onto the LAN and Exchange was set to use Postfix for all outgoing mail.  All incoming mail was also routed to Exchange (after spam and virus filtering).  The users all keep their Outlook mailboxes and shared calendars.  All is well.  I’d migrate everyone to IMAP or even POP mail access, but frankly there’s no benefit to them and a lot of work for me.  So Exchange can stay, at version 5.5.

One of the many criticisms of MS operating systems is how often they need to be rebooted, but after this migration the NT server has actually been extremely stable.  It’s been rebooted after the odd IE update[0], but otherwise it’s run alongside a brace of Linux machines quite happily.  If only I could manage it by command line instead of VNC-over-VPN, I’d be even happier.

[0] Worth pointing out that it’s never used for web browsing, except to download the occasional update from Microsoft.  That in itself reduces the risk of exposure considerably.

Have It Your Way

…As Burger King allegedly say.  Pondering customizability.

The inscrutable Raymond Chen has an blog called The Old New Thing, in which he (as a Microsoft person) posts on many detailed and interesting topics related to the internals of Windows.  Even if you’re a Unixite so fervent that your car has a command line, it’s worth reading to see why certain things in Windows are they way that they are.  He has a recent entry on Why can’t the default drag/drop behavior be changed? (in Explorer) which highlights something I was thinking about recently; the twin and somewhat opposed worldviews regarding interfaces.

When, in the past, I’ve run Linux desktops[0], I’ve spent happy hours playing with the myriad subtle and singular configuration options that let me set it up just how I like it, with all my favourite key and mouse combinations spread across all the applications that I need to use.  Windows, naturalmente, doesn’t let me do that.  It works how it works.  The rationale for this, according to Raymond is:

[customization] removes some of the predictability from the user interface. One of the benefits of a common user interface is that once you learn it, you can apply the rules generally. But if each user could customize how drag/drop works, then the knowledge you developed with drag/drop wouldn’t transfer to other people’s machines.


Infinite customizability also means that you can’t just sit down in front of somebody’s machine and start using it. You first have to learn how they customized their menus, button clicks, default drag effects, and keyboard macros.

I’m not sure where I’d stand on this point.  I like things the way I like them, but I also hate sitting down at an unfamiliar system and not having things ready-to-hand.  Perhaps it’s a question of ownership of the machine in question…

[0] No axe to grind here, it’s just that all my Linux systems are servers these days.

Those Sodding Puzzles

The perceptive Tom Hume posts about getting puzzles onto mobile phones.  Our own mobile project(s) are beginning to ramp up heavily (we’re even recruiting, so if you know a ZPT-literate web designer who might want a job, let me know), but not in the direction of puzzles.  I think it’ll be interesting to see how someone approaches the problem of making a phone interface do anything as nice as a piece of paper with a puzzle on.

Like many other Brits, I’ve been caught up to some extent in the frenzy of Sudoku.  And being, at the very core of my head, a programmer, I’ve been pondering algorithms for solving them.  I’m not about to post any Python or Java to help here (not yet, at any rate), but what might be useful to others is this worksheet.  The idea’s very simple; the bottom sheet has all the possible numbers for every square shown.  Cross them out with a pen/pencil as they become evidently impossible.  As Sherlock Holmes said, when you eliminate the impossible, whatever’s left must be true.  Although he was a sociopathic junkie, really.  And didn’t do sudoku.

We Do Not Live In Textbooks

Firefox lead Ben Goodger posts on the well-explored topic of perfection vs. the real world, or Pragmatism vs. Perfection as it might more snappily be captioned.  Apple chose to cut corners in the way they fixed bugs in the Safari rendered.  This did not meet with approval from the KDE team trying to remerge the fixes back into their tree.  Apple chose getting code to customers over doing the job perfectly.  That’s their prerogative, based on their needs.  The KDE team are likewise entitled to their opinions, which are based on their priorities.  Friction occurs when one team assume that their own worldview is axiomatic; that it is a Rule Of The Universe, rather than just one way of seeing the world.

A while ago, I was talking over database design with a contact.  I talked about the way in which the database for one of our projects was defined (this is something I’ll post more about; it’s a big project announced at E3 on the 17th, so when real-time passes that date I’ll be allowed to say more).  He was pretty scathing about it.  “This is all wrong”, he said, “it’s not normalized properly”.

My response was to point out the reasons for its existence; that it held the data for a project which had started more than eighteen months ago and at that time had been heading in a rather different direction.  That the requirements for the data had changed radically.  That the budget for the whole project was tight and that, most importantly of all, the system had delivered what was required when it was required.  In other words, it works, and works well, despite differing from his preferred Right Way To Do It.  That it doesn’t meet his textbook definition of the perfect database structure is not really that important a factor.  Sure, given the time to redo the whole thing from scratch we’d have used a different approach; but this is true of every project, everywhere.  Until you’re done, you won’t know the best way to do it.  The real world, which pays the bills, gets the casting vote.

Beer being the excellent social facilitator that it is, we moved on from the point of potential disagreement and ended up considering the many ways in which the pursuit of perfection can lead software engineers astray.  The perfect toolkit that is unusable because of its complexity.  The perfect operating system that tries to be all things to all users and ends up having to violate its own axioms[0].

I’m a great believer in pragmatism, having worked (in my younger days) on a system that strove to be perfect and grew to be a monster, never quite meeting the actual needs of the users because of striving for the stars.  Aim at the heavens by all means, but that’s a direction, not a goal.  Because we all fall short of perfection.

[0] Just to forestall the usual rash of rude emails, I’m referring to Windows here – the GUI is the axiom and Microsoft’s recent conceding that a command-line shell is a good (and maybe even better) way to control remote servers is the violation of that axiom.  You can, of course, insert your own Un*x-based example, should your personal opinions be more suited to it.