Monday, December 15, 2008

Ideas for 'weather forecasts 2.0'

Sometimes I’ll go to check the weather, and end up at sites like these.

One gives me info for each day of the current week for the city I live near. For example, it tells me that Friday has a forecast of ‘Isolated Thunderstorms. Mostly Cloudy. Warm. Humid.’ Wind ‘16 km/h NNE’, Rain ‘3mm (42%)’, humidity of ‘69%’ and a min and max temp of ’20 and 30’.

On the other I can see a radar image of any storms moving in – which is useful if you’re leaving work and wondering whether you’ll beat the storm home.

Here's a quick sketch of some ideas for extending such services.

  • Make them more finely-grained
    • Instead of just the forcast for today, what is the forecast for the evening, or for 10pm?
    • What is the forecast for 10pm for the specific place I live (rather than just the general city area). Is it likely, from the cloud coverage and movements, that it'll be raining at my place then?
  • Longer-term predictions
      What is our best possible estimate of the general conditions two months from now? Which weekend, around two months from now, is the safest bet (of avoiding rain) for that outdoor barbeque I've been wanting to organise?
      • I'm presuming there's a lot of modelling and historical data that could be used to make better-than-chance estimates.
  • Visualisation of weather trends.
  • Integration with calendars.
  • Customisable email/RSS alerts
  • Photos of what things look like -- from different places, in different directions -- so you could actually see what an approaching storm looks like, for example.

These are just some quick thoughts - it's not really a topic I have a strong interest in, and I don't know whether there's presently (or in the works) anything out there that does any of these. Here's a place you could start.

Sunday, December 14, 2008

Wikipedia's list of common misconceptions

Wikipedia's long list of common misconceptions (along with details of the truth of the matter in each case). Misconceptions such as that

  • Napoleon Bonaparte was especially short.
  • searing meat "seals in the juices"
  • seasons are caused by the Earth being closer to the sun in summer than in winter.
  • shaving causes hair to grow back thicker or coarser.
  • earthworms become two worms when cut in half.
  • Inuits have a large number of words for snow.
...and many many more (though the list is far from complete).

Sunday, December 07, 2008


"That perfume, my dear, is delightful. It has the most wonderful nose flavour"

i thought that term sounded funny.

Sunday, November 30, 2008

Magic/Replace - an interesting 'show by example' way to clean up data

Magic/Replace looks pretty good – going by their screencast demo (2 mins). It allows you to simply and intuitively clean up spreadsheet data.

Once you've pasted (or uploaded) your data into their webform, you can make changes to a cell, and the system will intelligently apply the same kind of change to all the other cells in the same column.

For example, if you changed a cell containing the phone number 0987123532 by putting in some spaces so it became 0987 123 532, the system will put the same spaces into all of the other phone numbers.

It can handle quite complicated changes, like combining three separate fields ‘firstname’, ‘middlename’, ‘surname’ into a single name field with the format ‘surname, firstname middle-initial’. See the screencast for some other examples.

It looks like the system is available to use for free - you can try it out now. I haven't played with it much, so I don't know how well it works in general, but I think that at the very least they’re onto something with the way the system works – the principle behind it.

It’s great that the user doesn’t have to explicitly describe the changes they want to make – like by writing some sort of code. They can just do it; and the system can work out the analogous changes for the other instances of that field. I say ‘analogous changes’ because the other instances of the field will contain different data, so the system has to look deeper than just the superficial details of the changes the user made.

(Douglas Hofstadter argues that the ability to make analogies is a central aspect of intelligence. He’s got a book on this Fluid Concepts and Creative Analogies. I haven’t read it, but the idea that ability to analogise is important sounds sensible to me).

Thursday, November 27, 2008

'Chemicals' per se, are entirely natural

In marketing and advertising, 'chemicals' equate to 'harmful' and 'dangerous'. Companies like to parade the lack of 'chemicals' in their products. Can things be 100% chemical free? The public seems to think so.

But the Royal Society of Chemistry is offering a £1 million prize to the first member of the public who can provide a sample of any material whatsoever that is 100% chemical free.

The truth, as any right-minded person will say, is that everything we eat, drink, drive, play with and live in is made of chemicals - both natural and synthetic chemicals are essential for life as we know it.
"Should anyone [be able to claim the prize], we will see thousands of years' worth of knowledge evaporate before our eyes. We would have to tear up the textbooks, burn the degree certificates and retrain the teachers."
The Advertising Standards Authority (ASA) recently defended an advert which perpetuated the myth that natural compounds are free of chemicals. [...] The manufacturers of a popular "organic" fertiliser recently [claimed] in promotional materials the product contained no chemicals whatsoever.

Of course there are harmful chemicals, but the reason they're harmful isn't because they're chemicals. When most people use the term 'chemicals' they're really referring to something else - but what exactly that category is not something I'll try to get into here.

Wednesday, November 26, 2008

Google Maps Street View as a historical record

I heard today that the street view in Google Maps has been upgraded (the improvements are pretty good too).

I was checking it out and looking at a place that I know is going to be demolished (not the place that link is to), and it made me think that the street view data could, in the future, be used as a (pretty comprehensive) historical record of what a place looked at a particular point in time.

A lot of the places I've lived in have changed quite a lot over the years, and I always think it's a shame that there's probably no comprehensive record of what they used to look like (even though there's probably scattered coverage from people's private photo collections).

It's a shame from the standpoint that your memories are linked to what the place was like then, and once the place has changed, part of your past is gone. A visual record can help you connect back to it.

Tuesday, November 25, 2008

How to save SMSs from a Sony-Ericsson w7000i phone to your computer

Just as you might want to save letters or emails you send and receive, I like to save my SMSs to my computer.

But that didn't seem possible with my Sony-Ericsson w7000i phone. You can't with the software the comes with it, and I seem to remember talking to a phone guy a few years ago who said you couldn't do it.

But I discovered today that you can use the My Phone Explorer software (Softpedia, Wikipedia). Works great. It's freely downloadable.

(found via this page, via this forum discussion page, via this google search).

Sunday, November 23, 2008

Using Wikipedia as a source of canonical tagnames

Say you want to tag a blogpost as being about ten pin bowling. What name do you give the tag? Here's some possibilities:


As a convention, you could try to find a Wikipedia article for that subject, and use the name used in the article's URL.

In this case it's

so you'd use the tagname


a potential bonus is that you could have it create an automatic link to the Wikipedia article.

The idea of this Wikipedia tagname convention is to have a canonical source for tagnames. (and I suppose it would also help make the Wikipedia article the canonical source of basic information about a topic).

Having fewer different names for referring to the same thing ought to be useful, and make it easier to find all the different bits of information talking about the same thing.

By the way, you could also have tools that automatically suggest these tagnames. E.g. you could select the text in your blogpost that mentins ten pin bowling, and the tool could automatically search wikipedia, get the URLs of the articles matching, and present you with a list of potential tagnames.

Tuesday, November 18, 2008

Alien-looking ants nest - filled with concrete then excavated (video)

Want to see what an ants nest looks like? First, fill it with concrete, then excavate.

Unfortunately the video only shows what it looked like when they were part of the way through the excavation, and doesn't give a really good sense of its overall shape.


'Technique' by Amon Tobin

Since June, Amon Tobin has been releasing a new track on his website at the start of each month (for a US $1.99 download). I think the latest one 'Technique' is pretty awesome.

You can hear a sample of it here. Under the picture it says '$1.99', and just below that there's an arrow pointing at a short green line - click that arrow.

(My next favourite one -- which took a while to grow on me -- is 'Shut Down').

Sunday, November 09, 2008

Images from Burning Man

Funtasticus has a bunch of images from Burning Man. These are my favourites:

Thursday, November 06, 2008

US election result videos, etc

Obama's acceptance speech is pretty impressive. McCain's concession speech is quite good too. I've embedded youtube versions of them below.

Another thing about today’s historic events is that from now on, little boys and girls all over the world will know that being a ‘white man’ is not an absolute necessity for attaining even the most powerful position in the world. It makes me wonder what greatness that knowledge will help unlock.

Obama's acceptance speech

Part 1

Part 2

Part 3

McCain's concession speech

I am quite curious to know the opinions of people around the world on these election results, especially people in places like the Middle East. Surely this must change the "person in the street"'s opion of America? But how much and in what ways?

I don't know. I thought it might be interesting to have a look at how some international news sources were reporting it, but it seems too hard (unless perhaps you had a lot of time to spare) to really get much of a sense.

I also found it interesting to see how much those sites (or at least the English versions of them...) used the Reuters or AP stories about the electon rather than ones of their own. (and I should say that I have no idea how representative any of these papers are of the media in their respective countries).

If you're curious, here are some of the sites I looked at: Al Jazeera, The Star (Malaysia), Times of India, Xinhua (China).

Thursday, October 30, 2008

"Fan menus" for user-interfaces

I just had a look on this page on pie-menus as an alternative to the usual 'vertical list' menus in most user-interfaces. I also had a quick skim of the comments, where there was some discussion about the pros and cons of both types of menus. E.g. while pie menus can be faster, the radial layout makes it harder to scan the available options.

And it made me wonder if there was a middle ground between the two. I have no idea whether this idea has been suggested before, but here goes... you might call these "Fan menus" (I'm thinking here of the asian foldable paper fans).

In this first picture, the user has clicked the mouse and the fan menu appears. Note that the main body of the menu itself appears to the side of where the mouse is clicked.

In this second image, the user has moved the mouse into the fanned out element for the third menu item. The selection process is similar to in a pie menu.

In this picture, the user has moved the mouse down to select the fourth item.

Naturally, there's potential issues with such a design, but I thought it'd be interesting to think about.

Unseen practice is easily mistaken for brilliance

as the title says

Unseen practice is easily mistaken for brilliance

This applies to sport, intellectual endeavours, etc

Monday, October 27, 2008

How to get rid of Vim's temp files

The default behavior in Vim when you save a file is to also put temporary files in the save directory. I'll explain how you can stop it from doing this. (I don't know Vim that well, but the following works).

What happens is that if you save a file called 'weeklyReport.txt' it also stores a temporary file with the same name appended with a tilde 'weeklyReport.txt~'. It also stores a swapfile there.

I found this really annoying, as it makes it awkward to scan the list of files in the directory (and the files were getting into my version control system - and yes, I'm sure I could find a way to avoid them getting in there, but I think the better solution is to not have them in the directory in the first place).

Here's a solution I found (I'm using it on Windows, but the only difference on other systems should be the file system syntax for specifying directories).

Open or create your settings file.

Here's some deails if you're not familiar with doing this.

When you install Vim, you've effectively installed two programs: Vim (the terminal version), and gVim (the GUI version), and each has its own settings file. For Vim, it's <VimDirectory>/_vimrc. For gVim it's <VimDirectory>/_gvimrc.

A note on what I mean by <VimDirectory>: the actual exectuable files are stored in a directory containing the vim version number - on my computer it is C:\Program Files\Vim\vim72. This is not the <VimDirectory> I'm referring to - the one I'm referring to is the parent directory of that, in my case C:\Program Files\Vim
Add the following lines to it (it shouldn't matter where):
" turn on backup
set backup

" Set where to store backups
set backupdir=c:\temp

" Set where to store swap files
set dir=c:\temp
This will store the tilde and swap files in c:\temp - you can change the directory location to wherever you want.

I found this soultion here, via this, and that via a google search.

Saturday, October 25, 2008

Apple's design lesson

It used to seem that plain, unadorned design

had to mean dull looks and boxy shapes.

But Apple have shown us that plain, unadorned design

can mean sleek and sexy.

I'm sure Apple aren't the first or only people to do this, but has anyone else made the point so strongly?

Tuesday, October 21, 2008

Moving the cursor around in the vi text editor

Moving the cursor around in the vi text editor

Note: so far, this is an incomplete list, and I'm experimenting with the way of presenting the keystrokes - the keys to press are specified in superscript text. Hopefully it's not too hard to work out.

There’s the usual options

  • lefth or rightl, upk or downj
  • start/end of: 0line$, {paragraph} or [[document]]
But also more powerful control
  • start/end of: bprevious-wordge or wnext-worde
    where a ‘word’ is anything delimited by non alphanumeric chars.
    There’s a parallel set of commands for which a ‘words’ delimited
    by whitespace:
    • start/end of Bprevious-wordE or Wnext-wordE
  • first non-whitespace char^ on line
  • end of the nth line downn$ from the current one
  • nextf<char> or previousF<char> occurrence of char on the line
    • or the character before the nextt<char> or previousT<char> occurrence
    • the nth next occurrence of char on the linenf<char>

Colin Powell's endorsement of Obama (video)

Sunday, October 12, 2008

Coconut milk, garlic and chilli dahl

updated, 9.4.09

Garlic, green chillis and coconut milk against the subtle background of the lentils. The overal flavour is more subtle than bold, but it's still quite flavoursome.

The chilli is there more as a flavouring than for the heat. You often don’t notice the flavour of chillis in a dish, but it really comes out in this one, and goes well with the garlic and coconut milk.

This dish is also quick and easy to prepare -- no need to fry garlic and onion or any spices, basically just throw the ingredients together with some water and simmer it. It takes about ½ an hour in total, but that's mostly it simmering.

Thanks goes to Mangalam for the recipe.

  • Red lentils, 1 cup
  • Garlic, 5 cloves, finely chopped
  • Onion, a small amount – like a wedge ½ a cm thick at thickest edge, finely chopped
  • Tumeric, ½ tsp
  • Green chillis, 1 or 2
  • Coconut milk, about 100ml.
    • for a richer flavour you can add more, or use coconut cream instead
  • Salt
  • Black pepper
Notes: if you want to add some vegetables, cauliflower goes well with it - add some chopped cauliflower a couple of minutes before the end. Make sure you use green chillis rather than red chillis. The recipe needs the stronger flavour of the green chillis. The red ones don't have much flavour. Also, you don't want to chop the chilli up into smaller pieces because the skin on chillis is a bit tough, and against the smooth texture of the dahl it isn't very pleasant.
  • Start off the lentils
    • Wash the lentils
    • Put in a saucepan and add enough water to cover top of lentils by about 1cm.
      • The idea is to have enough to cook the lentils, but if you’ve put in too little you can always add more later, and if you’ve put in too much you can just cook it longer to evaporate them.
    • Put it on a high heat
  • Onion, garlic, tumeric
    • Meanwhile, chop the onion and garlic and add it to the pan.
    • Also add the tumeric.
  • Bring to a boil then turn the heat down to a brisk simmer
    • Stir occasionally so it doesn’t stick to the bottom.
  • Chillis.
    • Slice them in half and take the seeds out.
    • Once the lentils looks cooked – about 20 – 25 mins (the lentils should have broken down so you have a fairly smooth mixture), add the chillis and then cook for 3-5 mins.
  • Then add the coconut milk, stir and cook gently for another couple of minutes.
  • Add salt and pepper to taste, then it’s ready to serve. Take out the pieces of chilli if you want.

Friday, October 10, 2008

SvN: 'Do it yourself first'

Do it yourself first

You should never hire anyone for something you haven’t first struggled to do on your own. It’ll teach you most of what you need to know to actually interview candidates, it’ll allow you to understand the nature of the work better (do I even need to hire or can we outsource?), and you’ll know exactly what a job well done will look like. It’ll also give you a sense of whether the job is big enough for a full-time hire yet or if you can skimp by on your own (the latter is preferable if possible).
Sounds quite sensible. He also talks about the benefits for managing the roles and being able to empathise when the going gets tough.

Monday, October 06, 2008

Sweet Potato and Bean Enchiladas

Sweet Potato and Bean Enchiladas

In this vegetarian dish you get a nice melding of the flavours of the sweet potato and the beans.

Based on this recipe.

Makes 12 enchiladas

  • orange sweet potato, enough to fill 4 cups when mashed.
  • vegetable oil, 1 tablespoon
  • onion, 1, chopped
  • garlic, 4 cloves, minced
  • canned kidney beans, 6 cups, drained
    • Or some other beans like black beans or pinto beans. You could also use refried beans, or a mixture of kidney beans and refried beans. Just remember that a can of refried beans contains a greater volume of beans than a can of whole beans would -- so, for example, if you used 4 cans of kidney beans, you might use 3 cans of refried beans.
  • water, 2 cups
  • chilli powder, 3 tablespoons
  • ground cumin, 3 teaspoons
  • mustard, 4 teaspoons
  • soy sauce, 3 tablespoons
  • flour tortillas, 12 (10 inch), warmed
  • cheddar cheese, 225g, grated (you don't really need to measure this - just grate as much cheese as you like over the enchiladas)
  • Preheat oven to 175 degrees C
  • Prepare the filling
    • Bring some water to the boil, boil cubes of the sweet potato, drain out the water, then mash it.
    • Heat oil in a medium frying pan, and saute onion and garlic until soft.
    • Stir in the chilli powder and cumin, and continue stirring for a bit (probably a bit less than a minute would be enough).
    • Stir in the mustard and soy sauce.
    • Stir in beans, and mash.
    • Add in the mashed sweet potatoes.
    • Gradually stir in water, and heat until warm.
  • Make up the enchiladas
    • Divide the mixture evenly between the warm flour tortillas.
    • Top with cheese.
    • Roll up the tortillas (you want to make something a similar size to cannelloni -- I think the flavour/texture suits making them this size rather than something too much bigger in diameter) and place on a baking sheet.
  • Bake for 12 minutes in the preheated oven, and serve.
Can serve with sour cream, chopped spring onions and salsa. One of the comments on the original recipe suggests serving with fresh mango slices and avocado slizes sprinkled w/ lime & salt.

Thursday, October 02, 2008


Wow. It’s a pretty impressive film, especially when you consider how unpromising the setup sounds.

The two main characters are robots. WALL-E is a waste compaction robot whose body is essentially just a cube. He has two arms but catipillar treads for legs. He has two lenses for eyes but no other facial features. Eve is a egg shaped scout robot who flies around the place and whose body is pretty much featureless except for two arms and a pair of glowing eyes.

There's hardly any dialogue; pretty much the only things WALL-E and Eve ever say is their own name or the other’s name. They do express a lot of body language, though.

Most of the action takes place on a desolated future earth, covered with garbage (WALL-E’s job is cleaning it up) and devoid of life. There are some humans, later on in the picture, but they’re secondary characters – and have little traditional appeal (they’re lazy and obese, not good looking).

But with all this Pixar have put together a wonderful movie – a love story between the two robots – that is both very funny and quite touching.

Sunday, September 28, 2008


I have been trying for the last hour to make a simple credit card payment on the net, and no matter what I try it doesn't work, and it doesn't give me any feedback as to why the payment was rejected (and I've checked that I have enough money in my Credit Card account). I've made plenty of such payments before with no hassles. It's driving me crazy :-)

Update. I received the following email from the company

I am afraid we had issues over the last 12 hours in processing credit cards due to an error with our Acquiring Bank and Payment Processor; this resulted in many orders being cancelled, including your orders.

We are very sorry if this has caused any problems, but due to the timing we were not aware of the issue until this morning.

We now believe everything is working okay, so you should be able to place your order successfully.

Saturday, September 13, 2008

“Formatted paste” feature for text editors

“Formatted paste” feature for preserving bold, italics and underlining formatting in text pasted into a plain text document, using the plain-text formatting conventions *bold*, /italics/ and _underlining_

Say you’ve copied some text from something like a Word document or a PDF document that contained bold, italics or underlining formatting. If you want to paste that into a text editor, you lose that formatting.

The “Formatted paste” feature would preserve it, using the common plain text conventions for representing such formatting: asterisks for bold text (like this: *bold text*), forwards slashes for italics (like this: /italicized text/) and underscores for underlining (like this: _underlined text_).

For example, the “Formatted paste” would automatically put underscores around bits of text that were originally underlined.

If you're wondering, I just suggested this feature to the makers of the two Text Editors I use TextPad and NoteTab.

Thursday, September 11, 2008

'Swipe' technology for touchsreen text input

It's a very neat idea - the touchscreen displays a keyboard, and you just draw a line with your finger that passes over the letters you want and it figures out what you're trying to type. If this works as good as it seems in the demo, this is going to be everywhere soon. See the (2 minute) video.

Wednesday, August 13, 2008

Gujerati Carrot Salad

Gujerati Carrot Salad

(adapted from Madhur Jaffrey's Indian Cooking)

This very simple salad tastes great. Even though it's an Indian dish, it isn't at all spicy (in flavouring or heat). It's essentially just grated carrot and cooked black mustard seeds, which have a nutty taste that really compliments the carrot. It'd go well with non Indian food as well.

  • carrots, 5, coarsely grated
  • salt, 1/4 tsp
  • vegetable oil, 2 tbsp
  • whole black mustard seeds, 1 tbsp
  • lemon juice, 2 tsp
  • In a bowl, toss the grated carrots with the salt
  • Heat the oil in a very small pan over a medium flame.
  • When very hot, put in the mustard seeds.
  • As soon as the mustard seeds begin to pop (this takes just a few seconds), pour the contents of the pan (the oil and seeds) over the carrots.
  • Add the lemon juice and toss
Can be served either at room temperature or cold.

Monday, August 04, 2008

Tuesday, July 29, 2008

Internet at last!

It's taken 39 days, since moving from my old place, to get internet access up and running at my new place. One of the reasons I haven't written to this blog much lately.

Wednesday, July 09, 2008

Combined laser scapel/probe for viewing/destroying individual cells

MIT Technology Review reports

Engineers at the University of Texas at Austin have patented a laser microscalpel that allows a surgeon to operate on tissue one cell at a time, precisely targeting disease while leaving healthy surrounding cells alive.
Current technologies for destroying a cell damage surrounding cells. The device also provides imagery of the cells -- using two-photon fluorescence microscopy -- to guide the surgery.

On what's left to be done
A problem that remains to be solved before the device can be used on patients is shrinking the width of the probe from 15 to 5 millimeters--the size of the standard tools used in endoscopic surgery--so that it will be compatible with existing surgical technology.
The research was published in the June 23 issue of Optics Express.

1 in 4 people of European descent carry an 'obesity gene'

1 in 4 people of European descent carry a gene that leads them to feel famished more often -- leading to a greater risk of obesity -- researchers have found. The gene has a significant impact on the production of several hormones controlling our appetite. The research was undertaken by an international team led by Imperial College London, and has been published in Nature Genetics.

Integrating medical devices in hospitals

Integrating medical devices in hospitals could help save lives. This article from MIT Technology Review gives a few examples of efforts underway to do this.

Wednesday, July 02, 2008

A train that never has to stop: clever 'out of the box' way for passengers to board and depart

Here's a neat idea for a train that trains wouldn't have to ever stop at stations. It's been developed by Taiwanese inventor Peng Yu-Lun. (via Carectomy).

On the top of the train sits a little car, and passengers wanting to get off the train can enter it before it reaches the next station. As the train drives through the station, the car slides off the top of the train and onto a railing beside the platform.

Passengers wanting to board the train get into a similar car at the platform before the train arrives, and it slides onto the train as it passes. So at each station, the car currently on the train slides off and a new one slides onto it.

The video on the linked page shows how it works.

Tuesday, July 01, 2008

Extending cut-and-paste: meshing operation structure with perceived task-structure

People's use of cut and paste operations is driven by the moment-to-moment way they are perceiving and thinking about tasks they are trying to perform.

I'll try and explain what I mean by talking about the last two examples I've given.

In the second example, the person wanted to copy a bibliographical entry, containing both the entry's text and, from within that, the URL of a link (to an online copy of the paper).

In the way they're looking the task, they conceptualise the paper as a single thing that they want to note down information about. And thus it's desirable to be able to perform a copy operation on the text, immediately followed by a copy operation on the URL.

Then they've got the information they want about the paper, and can now switch to their notes file and paste it.

Having to copy the text, switch to the notes file, paste it, switch back to the bibliography, copy the URL, switch to the notes file and then paste that is a distraction that doesn't mesh so well with how the person is perceiving the task.

In the first example's scenario, there's really two ways that the person could be perceiving and thinking about their task as they go about it. In the way I presented it, the person wants to grab a bunch of server names from a diagnostics report, then open an email and paste them into it. That is, they're thinking of it as a batch-copying operation like with the bibliographical entries.

Alternatively, they may approach the task in a more serial fashion, scanning through the diagnostics report, finding a particular server that they want to investigate, thinking a bit about the problem, copying that one across to the email and adding a short write up for it there, and then going back to the report and repeating the process to find the next server of interest.

Whether the person undertakes the task in a 'batch' or 'serial' fashion may depend on factors like the size of the report (how many servers, how many statistics about each of them), the nature of the problems with the servers, whether they basically already knew which servers were problematic before looking at the report, etc - and also on the person's habits and nature.

The general point I'm trying to make is that cut and paste it not just about "moving information around". It's about supporting the ways the user wants to move the information around, in the context of how they perceive and think about the task.

When someone is performing a task, they've got some notion of their goal in mind (though it might be very vague). The information in front of them, and how they perceive and think about it, will shape how they will want to proceed.

Within this context, they decide on the sorts of operations they'd like to perform. While they are performing them, they need to be able to keep in mind (though it doesn't have to be fully consciously) what their broader goals are, what tasks they want to do next (we often having in mind the next few things to do), and often something of the state of things before performing the operation.

In their minds they break down the task in a certain way, and the operations provided by the software should try and mesh with this breakdown. That is, offer ways to perform each of those tasks in a convenient fashion.

It's easy to look at operations -- like cut and paste operations -- in the abstract, and think, well if I can already achieve the same effect one way, why do I need another way of doing it? The answer to that is that the other way may better mesh with the way you are perceiving and breaking up the task.

Monday, June 30, 2008

Extending cut-and-paste: batch-copying from an online bibliography

My last example was of batch-copying items from a report to an email. Here's another batch-copying example.

A person finds an online bibliography of papers on an AI topic they're researching, and wants to note down, in a file in their text editor, several of the papers mentioned. Some of the biolographical entries link to online copies of the papers. They want to note down both the text of the entry and the link (if present).

With a single-item clipboard, noting down the details of a paper would mean copying the text describing it, switching back to the bibliography and then copying the link's URL.

It'd be much simpler if you could copy both those things to the clipboard first, and then switch to the text file. And even better if you could copy those details for all of the papers first, then switch to the text file and paste them all.

Lets look at how much difference it'd make if the person wanted to note down 15 of the papers. Using a single-item clipboard, it'd take 8 operations to copy the details for each paper (and 7 for the last one):

1) copy text of entry
2) switch to text file
3) paste text
4) switch to biblography
5) copy url
6) switch to text file
7) paste url
8) switch from text file to bibliography

(that last step isn't required for the last paper you copy)

So the formula for the number of operations for N papers, with a single-item clipboard, is:

((N - 1) * 8) + 7

if N is 15, that's 119 operations

With a multi-item clipboard, to copy N papers you'd need two copy operations per paper, two paste operations per paper, and one switch from the biblography to the text file:

(N * 4) + 1

for an N of 15, that's 61 operations -- 58 less and almost half the number.

Friday, June 27, 2008

Extending cut-and-paste: Copying link location and other context-menu operations

You can copy the URL of a link on a web-page by right-clicking on it and choosing the 'Copy Link Location' (or whatever it is called in your browser) option on the context-menu.

How could you use mult-item clipboard operations for items you copy in this way? How could you specify where in the clipboard to copy it to, and whether to insert it as a new item there or to replace the existing item there?

Here's how it could work. To insert the URL as the third item in the clipboard, the user could type

     ctrl(+shift) 3 +

and then while still holding down ctrl,

     right-click the link and click 'Copy Link Location'

which is essentially the same set of keystrokes for performing teh same copy operation with some selected text. The difference being that here they don't type the 'c' as they would to copy some text.

Extending cut-and-paste: batch-copying as another motivation for multi-item clipboard

If you want to transfer a batch of items from one context to another, a mult-item clipboard means you don't have to switch back and forth between the two contexts to copy each item.

A computer-network admin might be looking at a network-diagnostics report and want to pull out the names of some of the servers mentioned to put into an email to a colleague about having a look at them.

The report contains various details and statistics about the company's servers. The information is layed out in a table, and the server names are in a particular column. The admin wants to mention three of those servers in an email, so they copy these to the clipboard, then they open an email and paste them into that.

With a single-item clipboard and 3 items to copy, there'd be 5 switches between windows: for the first item, switch to the email and paste it, then for the next two, switching back to the report then back to the email. Whereas with a mult-item clipboard, there'd just be a single switch between windows -- 4 less.

The alternative means to copy the information with a single-item clipboard, would be to select an area of the table that contained the three server names, paste that, then remove all of the extraneous pasted information. It'd depend on the specifics of the situation as to whether this would be quicker or not.

Wednesday, June 25, 2008

Extending cut-and-paste: example two of motivation for mult-item clipboard

My last post looked at a case where it is useful to have multiple clipboard items. Here's another.

There are multiple terms ther user wants to search for within a number of documents, and the editor / word processor only allows them to search for one item at a time.

To make it easier for themselves (and avoid typing errors), the user wants to cut and paste the search terms into the Find dialog box. Within a document they need to individually search for each item, and then they need to repeat this process for each of the other documents.

With a single-item clipboard, then each time they wanted to paste an item again (for searching the next document), they'd have to recopy it into the clipboard.

If there were 3 search terms and 5 documents, then you'd have to add each term to the clipboard 5 times. That is, make 5 copy operations. In total, for all 3 terms, you'd have 15 copy operations for loading them into the clipboard. And remember that each of those 15 copy operations would involve finding an existing copy of that term that you'd stored somewhere already.

With a mult-item clipboard, you'd only need to perform 3 copy operations - that's 12 fewer copy operations and 12 fewer times having to find an existing copy of that term to copy.

In my previous example, I considered the case where a person wants to paste a particular phrase a number of times during the course of writing a document, and they need to perform other cut and paste operations in between each of these. In the present example, you want a multi-item clipboard for essentially the same reason - because you're interleaving other cut and pastes between the pastes of a particular item.

It's just that in this case, all of the items are like this - things that you want to paste multiple times over a period of time, with other cut and paste operations interleaved.

In UNIX, you could perform all of those Finds with a single grep command. Sometimes, though, you want to search the document in a more interactive manner in the editor. It depends on why you want to search for that item - you might want to look for an item then edit it or something surrounding it, for example.

Here's another reason for potentially wanting to search within the editor windows themselves. If you've got those documents all already open, you can directly search within their widow. If they were stored in different directories, and you wanted to grep them, you'd have to spell out those directories in the grep command.

Tuesday, June 24, 2008

Extending cut-and-paste: repeated pastes of an item, interleaved with unrelated cut and paste operations

I want to start looking at why you'd want some of the features I've described (there are still some more features to describe, but I'll get to them later).

Here's a reason for wanting to be able to store up more than one item on the clipboard.

Sometimes you want to paste the same information multiple times, and it may be some time between each paste.

There might be a certain phrase that will need to be included various times in a document you're writing, which you may end up needing to paste five times.

In case like this, in between those pastes you'll want to be able to perform other unrelated cut and paste operations.

If you've only got a single-item clipboard, then each time you peform one of those other cut and paste operations, you'll have to recopy that phrase onto the clipboard before you paste it again.

That means you'll have to either find one of the other instances of the phrase in the document, select it, then copy it. Or you'll have to store a copy of that phrase somewhere like in another document just containing it so you can quickly get it from there.

Monday, June 23, 2008

Extending cut-and-paste: template paste

Imagine that the clipboard contained the the name of a car part and the identifier for that part

     1) black steering wheel
     2) sw_bw07

and that the user wants to put them into a destination document with the name followed by the identifier in brackets, like:

     black steering wheel (sw_bw07)

Rather than just pasting those items in then adding the brackets around the identifier, you could use a template paste to specify you want to paste the first item followed by a space then the second item enclosed in brackets.

Effectively, you'd enter (where an underscore is used to represent a space)

     ctrl(+shift) v t #1_(#2)

the 't' says you want a template paste. Following the 't' is the specification of the template: paste the first item on the clipboard followed by a space, an opening bracket, the second item on the clipboard then a closing bracket.

If you break that up into the the individual keystrokes, what the user actually types is

     ctrl(+shift) v t # 1 _ ( # 2 )

Because the '#' has a special meaning (used to refer to items on the clipboard), if you wanted to include a literal '#' in the text, you'd have to type '\#'.

With paste commands, if you don't specify a specific position on the clipboard the last position is assumed. So to template paste the item in the last clipboard position with brackets on either side of it, you could type

     ctrl(+shift) v t ( # )

That is, you can have an anonymous item reference. It is possible to have multiple anonymous item references. The idea behind how they are parsed is that the further right an item is on the clipboard, the more likely (it's assumed) it is to be more recently entered. And it's assumed you want to fill the '#'s in the template in the order they've been added (that is, from left to right, starting at the position such that the last item in the template is the last item in the clipboard).

So if you had four items on the clipboard and the last two were a part name and a part identifier, and you wanted to paste it like before with the part name followed by a space then the identifier in brackets, you could type

     ctrl(+shift) v t # _ ( # )

The rightmost # is taken as referring to the last item on teh clipboard, and the next rightmost # the second last item on teh clipboard, the third last $ the third last item on the board, and so on. Just specifying the '#' items without explicitly specifying the positions is just a shortcut, and what I've outlined is just my current thinking about how that might best work.

What if the template refers to more items than are in the clipboard? The same principle applies. The missing items are still to be filled in, so they are "more recent". That means that if there are three items in the tempalte

     ctrl(+shift) v t # , _ # ( # )

but only two in the clipboard

then the third template item is still to be filled on. The second item is taken as the second on the clipboard, and the first the first on the clipboard.

then since there are only two items it'd paste

     item1, item2 ()

Handling (the various cases of) anonymous references to clipboard items is really about shortcuts. What I've described is just my current thinking about what'd be the most convenient default behaviour. You'd really need experience with template pastes to see how it was.

I suspect you'd soon enough pick up the way these default cases work. With cut and paste you've got fairly immediate feedback and you can always undo things if it's not what you want.

(You might have picked up that you could implement the functionality of a join paste with a template paste. But I think that the join paste is such a common pattern that it makes sense to have a speicic command for it).

Thursday, June 19, 2008

Extending cut-and-paste: understanding split copies

A multi-item clipboard is a list of items.

On the one hand, items can be individually added to that list


where those items might be taken from different places within the present document, or from within a number of documents.

On the other, multiple items can be added to the list in a single go using a split copy. The items come from a single range of text, which the split copy divides up into individual items, each of which becomes its own item on the clipboard.

It's copying from a list of items in the document to another list of items in the clipboard. These are different types of lists.

The list in the document is an implicit list - the text editor doesn't really know that it exists (it does in some limited ways, like being able to press CTRL+RIGHT_ARROW_KEY to jump to the start of the next word).

The list in the clipboard is an explicit list. Each item is separate, and the operations understand that it's a list of items. The advantage of this is that you can then tell it to paste just the third item, and then later when you need the fourth item, just that.

Both implicit and explicit lists have their own advantages (and disadvantages). Implicit structure allows you to deal with the information in a more fluid way, and explicit structure imposes more rigidity.

Cut-and-paste is for repurposing information, whether for editing what you've got, or for making a new copy of the information in another context. In either case, you're making a copy of the information from a source, and then putting that information back into a destination (which may even be the same place).

It can be useful to take an implicit list and copy it into an explicit list, so then you can repurpose that information as a list of items -- pasting individual items at different times in different contexts, for example.

Split copies allow you to translate between the implicit and explicit.

Wednesday, June 18, 2008

Extending cut-and-paste: split copy

A document might contain a line of text like

     13491, Orange, 2, $50

which can be considered as a sequence of items delimited by ', '.

You could select that text and, with a 'split copy' that specifies the ', ' delimeter, copy each item onto the clipboard as a separate item (in the following, an underscore is used to represent a space):


The clipboard would end up containing four items:

     1) 13491
     2) Orange
     3) 2
     4) $50

Remember that by default when you copy something to the clipboard it replaces the last item on the clipboard list. When you're copying multiple items on the clipboard with a split paste, the first of those items would replace the item currently at the end of the list, and the other items would be inserted after it.

If there were three space separated words in the document and you wanted to them as new items at the of the clipboard list, following what was already there, you could use '+' to do so (again with a space represented by an underscore):


If you wanted to insert the new items starting at a specific position in the clipboard list, like at position 3:


(At this stage I think it should probably be possible for the user to list the position specifier '3' and the '+' in any order - the previous command could also be written as:


but this is something I'll come back to).

If you specified a delimiter that wasn't contained in the selected text, I think the most sensible behavior would be for nothing to be copied to the clipboard (perhaps with a subtle auditory or visual indication of the failure). The most obvious alternative would be for the entire selection to be copied as a single item.

Cool 3D depth effect using animated gifs (images)

Unfortunately image I've uploaded has lost the animation (or somethign like that) - so you'll have to click the picture to see the original images with the 3D effect!

Very cool way of showing 3D depth in images! No doubt would get irritating soon enough, but quite effective. These animated gifs must be made by quickly switching between two stereographic images.

Tuesday, June 17, 2008

Interesting looking building complex in Japan (picture)

Looks interesting from the outside. I'd be interesting to know what it seems like when you're standing within it.

Extending cut-and-paste: joining paste

The user could use a 'joining paste' to paste all of the items in the clipboard into the document at once, separated from each other by a specified delimiter. For example:


to join paste the clipboard contents, seaparated from each other by a pipe '|' symbol. If the clipboard contained the three items 'toyota', 'ford' and 'mitsubishi', that operation would result in


The 'J' in the command specifies that you want to 'join' the items. You can follow the 'J' with whatever you want to use as the delimiter. If you don't specify a delimiter, a carriage return would be the default.

The delimiter wouldn't have to be a single character. After typing the 'J' you could press whatever keys you wanted - the command would only be executed when you released the CTRL key. So you could type


for the delimiter to be a semi-colon followed by a carriage return:


In the examples I've given, the pasted items would just be left on the clipboard. You could use a pop-paste within the command instead. As with a normal pop-paste, you'd place a minus sign '-' after the 'V':


(So far it's been assumed that you want to paste all of the items on the clipboard. Later we'll look at list ranges, which would be used to only join paste some of the items.)

Monday, June 16, 2008

Extending cut-and-paste: paste / pop-paste from anywhere within the list

Similiarly to being able to cut/copy items into any position within the list, the user could paste from any position within the list.

For example, pasting from the last position in the list


that is, ordinary paste.

or pasting from the second item in the list:


Those paste operations would leave the pasted item on the clipboard.

A 'pop-paste' would remove the pasted item from the clipboard. You could pop-paste the last item on the clipboard


If there were four items on the clipboard and you pop-pasted the second item


then the items that were originally at the third and fourth positions would be shifted one position to the left, into the second and third positions.

Extending cut-and-paste: cutting/copying items to specific clipboard position

I've described cutting/copying text to a new item at the end of the clipboard list, or to replace the item at the end of the list. The user could also cut/copy text to any position within the list.

For example, copying some text into the third position in the clipboard list:


or copying into the first position in the list:


I'm counting the first position in the list as '1' not '0'.

You could also insert text as a new item in the list. If the list had three items in it, and you wanted to add a new item into the second position (thus pushing the items originally in the second and third positions to the right one place, into the third and fourth positions), you could type:


(The reason for making the positions start from 1 is that if you're going to be explicitly specifying list item positions, I think it's likely that most of the time you're going to be dealing with small numbers less than 5. If you start the position with 1, then those 5 numbers are all in a row together on the keyboard. If you started at 0, then the common set of numbers would be separated by a fair gap on the keyboard, which could make things a little less convenient).

What if there were three items on the list, and you told it to add a new item at position 9? I think the most sensible for it to just add a new item at position 9. I don't see a problem with leaving those other clipboard positions empty.

Sunday, June 15, 2008

Extending cut-and-paste: notes at end of first session

As a note to myself, some of the other things I want to write about:

cutting and copying - inserting an item anywhere in the list
cutting and copying - replacing an item in the list
pasting - removing pasted item (pop paste)

and then getting into why this sort of thing is useful
the same information often needs to occur in mutliple places but in different forms
this and other motivations for common cut and paste usage patterns
and the ops support things like using clipboard as a queue or stack, as one way to support those usage patterns

other misc tools/operations such as list ranges, list reversal

spliting and joining cuts-copies-and-pastes
cut-, copy- and paste- templates
reln between cut and paste and the notion of 'scratchpads'
why the MS office mult-item clipboard sucks
features designed for "expert users"

Extending cut-and-paste: cutting/copying new item to end of list

The user could select text then type


to add the selected text as a new item at the end of the list of items in the clipboard. Or do the same but cut the text rather than copying it.

If there was already an item on the clipboard, then this operation would add a second one. If there wasn't any item on the clipboard, the operation would act like an ordinary copy operation - the clipboard would end up with just a single item on it.

By default an ordinary cut/copy/paste operation will act on the last item on the list. So if you do an ordinary cut or copy, it will add that item as the last item on the list - replacing what is already there. This is the cut and copy behaviour we're familiar with. An ordinary paste operation will paste the last item on the list, leaving that item there in place - again, like the paste behaviour we are familar with.

Extending cut-and-paste: CTRL+SHIFT to add modifier keys

I want to talk about some more complicated cut, copy and paste operations, but first I need to talk about how you'd enter them in.

You'd need to press additional keys to specify the additional parts of the operations, for example:


to paste the third item on the clipboard.

Except that you can't just press that key combination, for as soon as you've pressed CTRL+V, it would paste the latest clipboard item -- before you'd got a chance to specify the 3.

To indicate they're using an extended operation, the user could initially hold down SHIFT as well as CTRL. Once they'd initially done this, they could release the SHIFT key and then enter the rest of the keys in their command.

So for that same operation again:


which means, press CTRL and SHIFT together, release SHIFT, and then press 'V', then '3'.

(The way Enso works would be more conducive to entering in variable length cut-and-paste operations, but that's another story).

Extending cut-and-paste: peeking at next paste item

This is more of a speculative idea.

By pressing


it could display the item to paste (by default, the last item in the clipboard list) in a little 'tool tip' display near the cursor, thus allowing you to 'peek' at it.

If, while still holding down the WINKEY, you kept pressing 'V', that 'tool tip' would cycle through the items on the clipboard.

You could paste that item either by just pressing


or by clicking on the 'tool tip' displaying it.

(or perhaps it'd be better to display the 'tool tip' where the mouse pointer is, rather than near the cursor).

Extending cut-and-paste: selecting multiple items in clipboard contents and history

Just like in Windows Explorer, being able to use the SHIFT key along the mouse to select a range of items. Or the CTRL key to select a set of individual items.

Then you could delete the selected items from the history or clipboard contents.

And you could drag and drop them into a document. By default, these items would be put into the document with a few carriage returns between each of them.

Extending cut-and-paste: clipboard history

Providing a way to view the history of items that've been cut/copied to the clipboard.

You could view it by right clicking the clipboard icon in the system tray, and then from the menu that comes up, selecting the History item.

Or by pressing


You could double-click a history item to add it to the clipboard, or drag and drop it to some document.

If you had the clipboard-contents window open, you could drag and drop history items to it.

Extending cut-and-paste: editing clipboard contents

Being able to edit the items in the clipboard contents window.

Why want this, rather than just editing the text before you cut/copy it, or after you've pasted it?

You might not want to modify the source text, or you might think of the modification after you've copied the text.

There's several reasons why you might want to modify it in the clipboard before you paste it. That can be conceptually simpler. It's a distinct operation that you can get out of the way first, before you paste the text in and then see it there with all of the surrounding text.

Or you might not be ready to paste it yet -- you might be wanting to make some more changes to the other document first, but you've got the changes you want to make to the clipboard item more immeidately in your mind.

Or if you want to paste that modified text multiple times. I've come across situations like these.

This is all affordances stuff.

The clipboard window could provide pretty lightweight editing capabilities. Ideally, there'd be a way you could open the content for editing in the default application for handling that sort of content. (With the way Windows works, this'd probably be a bit awkward - it might have to save the content in a temporary file, have the person edit that, and then the clipboard load this back up again). That's how you could edit images on the clipboard if you wanted to.

Extending cut-and-paste: viewing clipboard contents

Providing a way to view the clipboard's contents. (Again, something provided by a number of clipboard extensions).

(In this and all of the other posts on this topic, Windows will be assumed. It's just easier to write about a single operating system, than try to give a generic description that applies to all the major operating systems, and Windows is what I'm most familiar with).

To view the clipboard contents, you could press


There could also be a clipboard icon on the system tray - clicking this could bring up the clipboard contents.

They could be displayed in a little window. It'd be a window like any other -- that you minimise, maximize, ALT+TAB to, etc.

You could drag and drop content into the window - and also drop text onto the clipboard icon.

As a more lightweight way to see the clipboard contents, you could hover the mouse pointer over the clipboard icon in the system tray, and this would show the contents in a little "speach bubble" window. As soon as you'd move the mouse, that bubble would dissapear.

Extending cut-and-paste: multiple clipboard items

A common extension to cut and paste is to replace the single-item clipboard with one that can hold multiple items. Then, you can cut/copy multiple items onto the clipboard, and choose which item to paste from it.

Extending cut-and-paste: introduction

Some thoughts about how vanilla cut-and-paste can be extended. Some of these are already available in clipboard extensions, some aren't.

I tried organising all of my notes on this into a single, big file. But I found that too unweildly and time-consuming.

In the spirit of this blog and trying to figure out and present ideas in a bottom-up -- as opposed to top-down -- fashion, I thought I'd try presenting it instead in a piecemeal fashion.

Starting now...

Saturday, June 14, 2008

Example of software affordances - level of match between code-form and data generated

Here's an example of software affordances, in this case programming language affordances. Languages have affordances concerning how much the form of the code matches the form of the data generated, as Reg Braithwaite explains (see that article for concrete examples):

one way to write code that is comprehensible is to make sure that the form of the code matches the data the code generates. This is a very general principle, it can be found in web templates (like PHP and ASP pages), markup builder libraries, and even String or List Interpolation.

Features that support this style of writing code are more than simple syntactic sugar, because they alter the reader's mental model, lowering the semantic distance between the code and the code's result.
Braithwaite touches on the issue of IT people tending to look at software in exlusively-functional terms, referring to those people who would say that such differences between languages are just matters of syntactic sugar:
It's more than just syntactic sugar. People have a habit of saying "syntactic sugar" in a dismissive way. It’s another argument that since an underlying language is Turing Equivalent, there is no need for a particular language feature.

Friday, June 13, 2008

Steve Martin: “Be so good they can’t ignore you” (i.e. have really high standards)

Steve Martin’s advice for succeeding? “Be so good they can’t ignore you”

You can see him saying this at the very end of this (54 min) interview with Charlie Rose.
As I’ve said before I think that if you want to be really good at something, you have to have really high standards.

If you want to be so good that people can’t ignore you, you can’t be easily satisfied with your capabilities. You have to be always trying to make them better, to make them the best they can possibly be. You have to have really high standards.

Steve Martin says he often gets asked for advice about how to succeed. People want to know things like how you get into the movies or how to get their screenplay read.

What they usually want is some sort of set of steps that they can follow, like "go to this sort of place to find the right people and present your screenplay in this manner". They want a recipe or formula.

They want something where the course is laid out and can be fairly blindly followed. Where there isn't uncertainty that requires adaptability and creativity. But the reality isn't that simple.

I don't see how you can really achieve something special unless you're actively working at having really high standards -- actively trying to be so good they can't ignore you.

Hibernating laptop a few mintues after lid is closed (and some comments on our ability to imagine required functionalities)

Update: actually, when I talk about 'hibernating the laptop' I mean 'putting it to sleep'. Some of the feedback on this post made me realise the mistake.

I want to describe a feature I'd like on my laptop. I also think there's a lesson here for software design.

My laptop is set to hibernate when the lid is closed. That's useful because it's easy to see a closed laptop and think that it's switched off, and risk it overheating by putting it in your bag. I've had that happen to me, and it fried the motherboard.

But what I'd actually like it to do when I close the lid -- but which unfortunately my laptop can't do -- is to hibernate after a few minutes. This might sound like a strange thing to want.

The reason is this. When i'm using my laptop while waiting for the ferry (or train), I have to close it in order to board and get a ticket, causing it to hibernate. But when I take a seat, I might want to use it again, without having to wait for it to finish going into hibernation and then coming back out of it.

If there was a delay on the hibernation, I could open the laptop again before it starts happening. If I decided not to use the laptop again, it would go into hibernation in a few minutes, before getting a chance to overheat.

The lesson for software design is that sometimes there's features that you'd never just think of by yourself - like this one. Rather, you have to be in a situation that motivates the feature, that suggests it to you.

And since you can't experience all of the different situations that people using the software will find themselves in, you have to admit that you can't know exactly how it would be most useful for it to behave for everyone.

I think people are too quick to think that if they can't see why a particular feature would be useful, then it mustn't be. That is, taking their personal perception as the reality.

What you would ideally provide is an open-ended flexibility so users can configure it to the needs of their situations.

Tuesday, June 10, 2008

A ‘Show recent changes’ editor-feature

Text editors and word processors keep track of the changes you’ve made. This enables their undo/redo features. It’d be nice if they could also use that information for a ‘show recent changes’ feature that visually indicated those changes within the document.

Some editors, such as Microsoft Word, have features along these lines, but it doesn't seem to be very common. Here's my view of what it could be like.

Consider someone using a word processor. Say they’d made three changes, being, from most recent to least recent: 1) inserted a new word 2) deleted a word 3) changed the text in a sentence from bold to italics.

Those changes might be visually shown in the document like this. Inserted text might be shown with a blue background; deleted text with a red strikethrough; and a green background for modified text, along with a description of the modification. That description could be displayed in a call-out that points to the modified text, or in a superscript label above the text. In the case of change 3) the description might say ‘bold -> italics’.

A small superscript number contained in a circle could be written next to each of these changes, to indicate the order they were made in. So the new word would have a 1 next to it, the deleted word a 2 next to it, and the changed text a 3 next to it.

By default, it might show all of the changes in the undo buffer, but it could be handle to be able to tell it to only show the, for example, 5 most recent changes.

Sometimes it's difficult to remember the changes you've made while editing the document. It can be especially confusing when you're moving information around with cut and paste. Using undo to see what changes you've made can be awkward and errorprone; it'd be more convenient to be able to see the changes. I think it'd also be better for undoing specific things done a number of changes ago, and for getting an overview of what changes have been made during a session.

A more sophisticated version of this feature could more explicitly handle text being moved around within the document. With just the basic 'insert', 'remove' and 'modified' changes listed above, copying then pasting text is just registered as an insert. Cutting then pasting text is noted as a remove then an insert.

But you could make it more explicit that the text has been moved. It could show the text as being inserted into the new position, but also have an arrow back to its original position, also indicating whether it was copied or cut from there.

How you might be able show recent changes in other types of editors, such as for graphical or musical information, is another matter.

The general principle behind this idea is that if you have information concerning other information (in this case, the information about changes, which concerns the inforamtion in the document), then it’s usually useful to be able to see their relationship as directly as possible, by showing them together.

Not having to specify a file's name or location, and generalised file identification

Sometimes I open a text file or word document as a scratch pad. Though it’s a temporary file and I’m more than likely going to end up throwing it out, I’d like to still be able to save it as I’m working on it.

To do so I have to specify a filename and a directory to store it in. I find this too heavyweight: it’s just a temporary file, I don’t really care what it is called or where it is stored. All that really matters to me is that it’s open in a window on the screen that I can easily locate now.

One way to deal with this would be that if you haven’t yet saved the file with a particular name in a particular place, the program automatically saves it in a temporary location for you. But I think there is a better solution, which points to a different way of opening and saving files.

One limitation of just saving a temporary copy of the file is that often you end up needing the scratchpad for a longer period of time, across multiple sessions using the computer. So you need to be able to close it and then open it again.

A file’s name and location is only one bit of information about the file that can be used to locate it. There’s other information that could be used for those purposes. For example, the data and time the file was created, when it was last modified, and the contents of the file.

These should by default be used to identify the file. If you save it, it saves the creation and last modification date and times. That way you wouldn’t have to give it a name and location unless you wanted to.

To open the files you’d use a modified file dialogue box or windows explorer. Rather than just showing the directory path, it would also be able to show you a chronological listing of files by creation date and modification date. It could also show a special directory listing for ‘unnamed files’.

I think you could generalise this. Essentially, you could tag files with any information you like. Then windows explorer / open dialogues could serve more as like the google search bar, where you just type in the various critiera you’re looking for, and it brings back a listing of candidates that match your critiera:

e.g. search for ‘created yesterday work 93555’
where this is to search for a document that was created yesterday
and it searchers for ‘work’ and ‘93555’ first in tags associated with the files, then in the directory and file names, and then in the contents of the files.

(yes, this would require extensive indexing and powerful processor. I’m not sure how practical a full blown version of this is for today’s machines).

To delete one of these unnamed files you could locate it in windows explorer then delete it, or -- as I think programs should work anyhow -- you should be able to open the File menu in the window it's open in, and then choose a ‘Delete file’ option.

Monday, June 09, 2008

Caramelised plum and soy flavoured pork

This is a Chinese style dish my mum showed me. The pork ends up very tender and coated in a delicious sticky coating of a dark, complex, caramelised sauce, the result of frying the ingredients for a very long time. The cooking transforms the individual flavours of the ingredients into something quite different and much greater than 'the sum of the parts'.

Warning: I've written a really long description of the dish. I've tried to capture the rationale behind the use of the ingredients and the method, so you can understand why it's done that way.

Main ingredients

  • Pork, 1.5kg (if the cut contains bones, then more like 2kg)
    Use a cut of pork that you'd use for roasting, like some sort of pork leg or shoulder. You want it to be fairly fatty, so it can fry for a long time. You can drain the excess fat off at the end.
  • Plum jam/conserve, about 6 tablespoons.
  • Miso paste, about 6 tablespoons.
    This comes in white and red types, but I don't think it matters which you use.
  • Soy sauce
    Why soy in addition to the miso, considering that they have similar flavours? Even though the miso is fairly salty, for some reason you seem to loose that in the dish, but at the same time you don't want to add too much miso or it’d probably make the dish too soupy. So add some of the stronger, saltier soy. The combination of miso and soy probably adds a bit of a depth to the flavour.
  • Garlic, 8-10 cloves
  • Ginger, about 5 cm piece, but pureed ginger from a jar is fine (enough for about 6 tsp)
    These quantities of garlic and ginger might seem like a lot, but because the dish cooks for so long, and involves a lot of other strong flavours, you don’t really notice distinct garlic or ginger flavours at the end.

Secondary ingredients

These aren't necessary, but just add additional depth to the dish. In some of the cases, I'd need to experiment more with the dish to better see what difference they really make to it
  • Star anise, 2 or 3
    Definitely nice if you've got some. Alternatively, add some chinese five-spice powder towards the end of cooking (I think the flavour of it tends to get lost, otherwise).
  • Onion, 1
  • Red chillis, 5
    Use the ordinary red cayenne chillis. If you want it hot, you could use bird's eyes.
  • Green shallots
    Recommended - to add at the end, for the look and the texture.
  • Chinese rice wine
    Not sure how much difference this makes, though the dish is tasty with or without it.

Serving suggestions

Goes best with rice.
As the flavours are so strong, it’s nice to have it with some fairly mild vegetables.
Like some fairly simple chinese greens. I fry them with a little garlic and soy, then wilt them down.
And some lebanese cucumbers, sliced into little rounds. These are a nice refreshing foil to the dish's richness.
To make it look more special, you could sprinkle it with some sesame seeds, and then garnish it with some coriander and finely sliced red chilli. Visually, the white, green and red looks nice in contrast with the near black colour of the meat.
I think the nuttiness and slight sweetness of the sesame seeds goes well with the sauce.

Method - the basic idea

You have to cook the dish for a long time (I’d say at least 2 hrs). Basically, you’re frying the ingredients, to turn the mixture from a fairly light brown colour to a very dark, essentially black, colour.

It’s not very touchy about when you add all of the different ingredients, as long as once they’re all in, it gets to fry for quite a while. It seems to be the longer you cook it, the better it comes out. The flavours come out better, and the meat gets more tender. Because of the fat in it, as long as the temperature is not too high, I think it’s hard to overcook it.

Usually, I cut the meat up first, get that browned at a high-heat, and then start preparing the other ingredients and adding them when they’re ready. You want to turn the heat down a bit before any of those other ingredients get burnt.

Method - specifics
  • Preheat the pan at a fairly high temperature, for browning the meat. Add a fair amount of oil (you'll drain of excess fat later).
  • Chop up then brown the meat
    Debone the meat, then cut the skin and the fat under it off it. You can add the bones and the fat for flavour (and take them out later).
    Cut the meat into fairly large chunks -- at least an inch square, on average -- as the strong flavours of the sauce would be a bit overwhelming with small pieces.
  • One at a time, finely chop then add each of the following
    If any of this starts to look like it's going to burn, turn the heat down
    • the onion, if using
    • garlic
    • ginger (or just add the ginger puree).
    • chilli
      Cut fairly coarsely. It’ll cook for a while, so will become quite soft and coz everything gets covered in the thick dark sauce, you can’t see the chilli if it’s too small.
      If you don’t want it hot, remove the seeds and the dish won't be hot at all.
    • star anise, if using
  • If you haven't already, turn the heat down so it's frying at a moderate level
  • Then add the miso and jam, a few splashes of soy sauce, and a generous spash of rice wine.
    It’s probably better not to add them all at once, so you can keep it frying, rather than steaming/boiling (but it's ok to add them both at once.. once it's dried out enough it’ll be frying for ages anyway).
    With the miso and jam and juice from the meat, it'll proably look like its boiling, but if you scape the wooden spoon / spatula along the bottom of the pan, you should hear a frying sound. It should be gentle-moderate, not too vigorous. You basically want to keep this going the whole time.
  • Stir from time to time (I probably wouldn't leave it for more than 20 minutes without stirring).
    It’s ok if you get a bit stuck to the bottom of the pan – that’s probably a good part of the caramelisation process. Just unstick it with the wooden spoon. If it gets too dry or is sticking too much, you can add some water to help deglaze it, and then just evaporate that off over time.
  • The dish is done when the sauce has turned black.
    I'd expect the meat to be tender at this point, but if it isn't cook it longer (if necessary, add some water).
    You definitely want to keep cooking it until the sauce gets very dark and quite reduced (so it’s mainly coating the meat, rather than like a free liquid – it’s too strong to just have by itself). The flavour there is just so much better. It starts out with a relatively light brown colour, and while it’s at the stages before it gets really dark, the flavours just aren’t as good.
  • Chop the green parts of the green shallots into approx 3cm long lengths, and add them to the dish, and cook till they wilt. You can probably turn the heat off when you add them.
    You want long bits because it wilts a bit and folds up, and it looks nicer against the fairly large pieces of meat, and I think you need more sustantial bits of it to get the flavour against the very strong sauce.
  • Before serving, you can drain off the liquid fat that's pooled on the surface - which might not sound so nice, but you'll be getting rid of it.

Thoughts / variations

Pork seems to go well with these flavours. Which makes sense given that pork is the meat most commonly used in asian dishes, and asian flavours basically seem designed to work well with it. I haven't tried it with beef or lamb (which'd be interesting to do). You could possibly use chicken thighs. Though not something like chicken breasts, which wouldn't be robust enough for the long cooking.

My mum tells me you can also use orange marmalade instead of the plum jam. Apparently as a kid they used dried orange peel in it (I guess along with some other source of sugar), but marmalade works well.

We underappreciate affordances because we tend to underestimate the emotional force of motivation

I've said recently that we tend to overlook affordances (see here for some more examples and elaboration of this notion) when we evaluate software, because we tend to look at software in exlucively functional terms.

Here's another reason we do that. First, remember that motiviation has a big impact on the things we do:

What acts on your motivation to do things? There’s always costs and benefits associated with doing anything. There’s always multiple things you could be doing. If you do this thing, you’ll miss other things. It always takes some physical/mental energy to do things. You’ve got limited time. You’ve usually got a number of things you need to keep track of at any time (even if you don’t need to put much conscious effort into them). And even a simple task, can distract you from that.

Something less obvious is that the ‘benefit’ of doing tasks is often very small. Probably the majority of things we do are like this. And that means that the ‘cost’ of doing it has to be tiny, if we’re to feel motivated to actually do it.
That last point applies especially to using software. Each click, each function you perform -- often the amount of benefit associated with it is quite small. So the cost has to be tiny. And that cost can be where two different bits of software that allow you to ultimately do the same things can differ. If the cost is too high and performing that function isn't absolutely necessary, then are you going to bother doing it? Different costs mean different affordances.

But more than this, we tend to underestimate the force of emotional factors such as motivation. So it's very easy to look at two bits of software with compariable functional capabilities, and -- overlooking the force of motivation -- think that performing the functions in them is simply a matter of wanting to do them.

Which sounds like a weird thing to say: of course performing a few mouse clicks is just a matter of wanting to do it. You just need the connection between that desire and the movements of your hand, right? But when you're actually in the situation, and the possibility of performing the action comes up, you'll be actually experiencing the positive or negative force of motivation that can make it far from a no-brainer.