Apple’s Model-View-Controller is Seeheim

Just reading the iPhone Cocoa developer docs and its description of Model-View-Controller. However, if you look at the diagram rather than the model component directly notifying the view of changes as in classic MVC, in Cocoa the controller acts as mediator, more like the Dialogue component in the Seeheim architecture1 or the Control component in PAC.

MVC from Mac Cocoa development docs

The docs describing the Cocoa MVC design pattern in more detail in fact do a detailed comparison with the Smalltalk MVC, but do not refer to Seeheim or PAC, I guess because they are less well known now-a-days.  Only a few weeks ago when discussing architecture with my students, I described Seeheim as being more a conceptual architecture and not used in actual implementations now.  I will have to update my lectures – Seeheim lives!

  1. Shocked to find no real web documentation for Seeheim, not even on Wikipedia; looks like CS memory is short.  However, it is described in chapter 8 of the HCI book and in the chapter 8 slides[back]

the long now … maybe

I was looking at an old posting of Anne Galloway’s @purselipsquarejaw.  The article quotes Stewart Brand1 and in particular:

“How can we invest in a future we know is structurally incapable of keeping faith with its past? The digital industries must shift from being the main source of society’s ever-shortening attention span to becoming a reliable guarantor of long-term perspective.”

The name Stewart Brand (above) is linked to http://www.longnow.org/10klibrary/library.htm.  Now the 10K in “10klibrary” refers to the Long Now Foundation‘s mission to look forward at least ten thousand years, including sub projects to look at long-term file format conversions; similar to some of the aspirations of the Memories for Life UK Computing Grand Challenge.

Unfortunately when you click the link to the 10K library entry …

Looks like the URLs are not going to last till 12000 AD

  1. Whole Earth Catalogue, How Buildings Learn, The Clock of the Long Now, etc.[back]

Royal Mail comes through

The Royal Mail has had a lot of bad press recently with strikes, postal delays and ‘modernisation’. However, it is easy to forget the revolutionary nature of the “Penny Post“: one price and one service to deliver anywhere in the country.  Living  in Tiree, one of the western Scottish islands, this is particularly pertinent.  Many carriers do not deliver here or only do so at a higher rate; those that do are often delayed waiting for the ferries, but so long as the plane comes in so does the post.

Our shower was leaking water and on Friday at around 12:42pm we ordered spare parts from Shower-Warehouse.  I had assumed that they would not arrive before I set off back to Lancaster on Tuesday morning and so it would be Christmas before I could actually do the repair.

But, at 1pm today, they were delivered

So top marks for both the Royal Mail and Shower-Warehouse and may modernisation never change the wonder of universal post.

back to Tiree

I’m on the ferry on my way to Tiree.  I’ve not been back home for nearly 8 weeks and have a long weekend before heading back down to Lancaster until Christmas.  Since I left in mid September I’ve slept in 19 different places and had 23 moves between places; however, my main home has been the camper van, a Ford Transit Auto-Sleeper Duetto, small enough to manoeuvre easily, but with everything on board from cooker and fridge to its own toilet and shower!

I’ve also not blogged since I was last at home. I have a half-written entry from Paris, I was at a lecture by John Searle in Eindhoven and really want to write about that, and I also need to write a retrospective on my sabbatical year, but not had a moment; indeed on my office desk is an iPhone, which has sat waiting to be unpacked for the last 2 months, no time even to play :-/

Perhaps over the next few days I can catch up with the half-written blogs amongst the unanswered email, overdue papers, and pressing admin; and also take some time to appreciate the sea and wild wind.

escape from distraction

Last week I was away in Cornwall and lost (but later found) my phone, so was both without a phone and with no internet connection … and it was amazingly liberating. My life is driven by the never ending stream of incoming mails and while in principle I could ignore them, in fact I find myself constantly breaking off what I do and seeing what has come in.

This reminded me of a Times article Haliyana pointed out to be a couple of weeks ago “Stoooopid …. why the Google generation isn’t as smart as it thinks“. We make a virtue of the never ending stream of interruptions that assail us; “multi-tasking” we call it, but in fact they not only mean we are less focused, but are possibly loosing the ability to concentrate at all.

While reading the article itself I found myself fighting not to want to follow the numerous links to other stories that littered the Times online page … and I would like to tell you more about it, but I never managed to read to the end before succumbing to the next interruption.

Basic Numeracy

When the delayed SATS results eventually arrive, I’m sure there will be the regular navel gazing at the state of basic numeracy and literacy in UK schools. But what about those who were in primary schools 30 years ago?

This morning on BBC News Channel an interviewer was talking to an economist from the City. They were discussing the reduction in bank lending (a fall of 3% during June, with 32% year-on-year drop ) and its implications for the housing market and the economy in general. The interviewer asked if it was accelerating and the economist agreed, mentioning how the year-on-year drop had gone from 10% in one quarter to 20% in the next and now over 30%.

Of course these figures are all based on a year-on-year average that includes the period before the credit crunch began last autumn and in fact are consistent with a steady linear fall of around 3% per month for the 9 months since the Northern Rock collapse. That is an alarming rate of fall, but not evidence of an accelerating fall.

This apparent lack of basic numeracy reminds me of a discussion some years ago with senior financial executives who dismissed any attempt to quantify projected company income as ‘just numbers’. Having lost money in the Northern Rock collapse I wonder whether the executives in Northern Rock and other banks had a similar attitude!

I know it is easy for me as a trained mathematician to hold up my hands in horror, but still these are people who are playing not only with their own livelihoods, but also the lives of their investors, ordinary people and even the state of the entire economy.

We do have a peculiar attitude in the UK where it is acceptable for highly educated people (including many computer scientists) to just ‘not do math’, and furthermore say so with a level of pride, whereas to say the same about reading would be unconscionable. Other European countries seem far more numerate, so this seems to be a cultural phenomena not an intellectual problem.

I have heard that one of the best predictors of educational success is if a child is willing to put off a treat for another day. Mathematics does require doing work at one stage to see benefit maybe many years later, but this to some extent runs counter to the increasingly common expectation of students to want to know fully and completely how something is useful to them now.

Maybe the answer is for schools to have lessons in leaving sweeties until tomorrow … and perhaps remedial lessons for City economists who matured during the Thatcher years.

Thusly, he wrote

Was with Kiel, one of my PhD students the other day, reading a draft chapter of his PhD thesis. He used the word ‘thusly’ and at first I thought this was a Kiel-ism (sorry Kiel, you do have a few). However, he assured me it was common usage … and not just for him. I suspected it was a regional idiom and indeed a bit of web searching finds many archaic uses of thusly, but several more recent Lancashire uses.

I suspect the word arose because ‘thus’ often precedes a verb and so has acquired an adverb ‘-ly’ ending … a form of lexical over-generalisation. … and if you have not already stopped reading because you can’t understand why anyone would be even interested in this level of language … as I did the web search found a lovely discussion site called INTERACTION (and no, this one is not the synonymous BCS HCI Group) where one person mildly mocked another for using ‘thusly’ in the 21st Century … obviously not a Lancashire lad.

This has also made me reflect on my own frequent use of ‘thus’ to mean ‘therefore’ as opposed to ‘in this way’ … argh am I really a grammar nerd :-/

why software need never hang

Over 20 years ago I wrote “The Myth of the Infinitely Fast Machine“, about the way software developers effectively assume that everything on the machine side of human interaction happens instantly. Often interaction is programmed in a turn-taking style:

  1. wait for user action
  2. process the event
  3. display changes
  4. back to step 1

This assumption of instant (or at least infinitely fast) response at step 2 often ignores network delays, disk IO or heavy computation. This tends to work fine on a high-spec development or test machine, with a fast network and clean install of all system software … but when the software hits a real machine, a few years old, untidy system, slow network … things fall to pieces.

So 20 years later (as I described in my post last week) I am sitting watching the spinning rainbow ball as Word struggles to save a document (over an hour now, I think I will need to kill it). To be fair I think the root ’cause’ of the problem … or at least one problem … may be the printer as the Cannon printer driver has never worked properly on an Intel Mac (maybe new driver when I upgrade to Leopard?) and perhaps some change in the rest of the system (maybe the Office install) has tipped it over into not working at all.

As far as I can tell Word then decides to ask the printer things in order to set the margins properly when saving the document, and then gets stuck. I found a post on a Microsoft forum about a different print related problem and the ‘helpful’ tech support from MS simply said “not our fault, re-install everything”.

So to recap:

  • user asks Word to save – probably the most critical operation in the system, or the system auto-saves, again to ensure safety against crashes, so really critical
  • Word decides it needs information from the printer (although it has been displaying the page to the users using some existing information on page properties).
  • Word asks for info from the printer driver of the currently selected printer
  • if the printer doesn’t respond Word hangs and blocks all user interaction

However, the printer driver may be third party, may be connecting to a shared printer hanging off a different network, or in the case of a laptop on a network currently disconnected from the computer … and any resulting delay is not the fault of the developers of Word??!

The annoying thing is that such ‘hanging’ delays need never happen.

Basically there are four main causes for delays:

  1. ordinary computation takes a long time due to it being too complex for the available hardware
  2. unbounded internal computation -for example iterative algorithms
  3. waiting for external resources (disk, network, etc.)
  4. bugs that lead to the system going crazy (effectively case 2 by accident!)

Type 1 will surface during testing and may require re-design of the interaction, but is simply ‘slow’ rather than ‘hanging’. Typically it leads to things gradually getting slower as the document or data gets larger or more complicated. This requires standard profiling and optimisation.

Type 4 is hard to deal with – bugs do happen. However, the majority of the problems I’m experiencing in Word at the moment are not a failure of this kind as Word does, most of the time, eventually complete without crashing.

Types 2 and 3, especially the latter, should be detected and then dealt with in the design of the user interface.

Some real-time programming languages have ways of automatically working out how long code will take to run in order to be able to assert “this will respond within a 10 ms interrupt cycle”. However, this is hard, even for relatively simple embedded systems; so not practical for complex operating systems or user interfaces.

However, a simpler version of the above is possible. Certain system functions invoke external resources such as the disk, or the network. If any function or method in your own application invokes one of these system functions, then it could potentially hang – and should be documented to say so or return some sort of ‘promise’: “I’ve started to do X, please check back later to see if it is ready”. Of course the methods that call these themselves need to be documented as potentially hanging … and so forth.

If the response to any form of user interaction ends up calling a potentially hanging function, then it is in danger of having a delay of type 3 above. However, so long as this is known, it can be dealt with at the user interface level by spawning a thread to do the work so that some form of progress indicator or at least “Cancel” button can be active – it should never ‘hang’.

This marking of functions as potentially ‘hanging’ could be done by programmers themselves, but equally can be automated as a form of static analysis, simply starting with a known set of hanging system functions and recursively ‘colouring’ functions that call them. This kind of automated checking should be standard practice in any large software project.

The type 2 hanging is a little more complicated. The ADA programming language has a ‘safe’ subset that only allows loops where the bounds are fixed at compile time. This is probably too restrictive for complex software, but certainly any loop with unknown limits could be flagged. If as part of a code walk through or similar practice it is decided that the loop is ‘safe’ it can be annotated as such, otherwise, just like the case of system calls, the system can propagate the fact that certain functions may have unbounded computation and then the UI adjusted accordingly.

For small bespoke software development I can be forgiving, but for large vendors like Microsoft, Apple or Adobe, there is no excuse for this form of culpable failure.

… but I have a bad feeling that in 20 years time I may be writing again …

[[ News flash – 1.5 hours later Word has finished saving the document! … 14 pages obviously hard work. … but then it has hung again 🙁 ]]

pain, tears and office 2008

Some weeks ago I upgraded Microsoft Office to Office 2008 (yes it does still have menus on the Mac!), and life since has been constant trouble.

OK first there are ‘minor’ niggles like it eating 1/2 my screen space in huge tool bars replicated at the top of every window, or eveytime I read in an Excel spreadsheet it telling me that old macros no longer work … actually I don’t use Excel macros, but f you do and have lots of spreadsheets that use them what then? … and don’t get me started in the fact that I can no longer cut and paste directly between Word and Dreamweaver.

… and then, just over 2 weeks ago, I was at the AVI conference and, as one does, writing the slides for the presentation the day before. I had produced all the diagrams for the presentation in Powerpoint and then copied them into Word, so thought it would be easy – start with the Powerpoint file with all the diagrams in it and add a few words around them – after all pictures always best. However, this was reckoning without Office 2008. The figures had been produced in PPT 2004, and when I opened them in Office 2008 half the images just disappeared. I tried opening in the old version of office, but it simply crashed every time I tried to update a file, I assume the Office 2008 install broke the old Office 2004 install in some way. In desperation I tried cutting and pasting the slides between PPT 2004 and PPT 2008, but that failed (I guess because Powerpoint thought it was pasting back into itself!). Eventually I managed to get the crucial images by cutting and pasting via a third program.

But the reason I am blogging now, rather than doing the pile of work that I need to do, is that Word has decided that about every 10 minutes it needs a 15 minute break and disappears into a little spinning rainbow – it does eventually come back, but only after several cups of tea.

To be fair most of the problems seem to be with compatibility mode … but surely backward compatibility is not so difficult … after all we have a lot of old files out here .. or if they can’t code it properly simply produce one-off converters rather than pretending to work when they don’t!

But the spinning disk has at last stopped … so back to another 10 minutes work before it halts again.