Sunday, June 15, 2008

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

     WINKEY+C

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 exclusively-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 error-prone; 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 information 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 criteria you’re looking for, and it brings back a listing of candidates that match your criteria:

e.g. search for ‘created yesterday work 93555’
where this is to search for a document that was created yesterday
and it searches 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 exclusively functional terms.

Here's another reason we do that. First, remember that motivation 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 comparable 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.

Motivation as an instance of 'Emotions, feelings and desires'

Emotions, feelings and desires include happiness, sadness, anxiety, distress, feeling tired, arousal, being in pain. Another, perhaps less obvious one, is motivation. You could clean your room, and part of you wants to, but you just don’t feel motivated. You could look up how to turn off an annoying feature in your word processing software, but you just couldn’t be bothered.

That’s not to say that we don’t make ‘rational calculations’ in deciding to do things, but I doubt there’s ever a situation that doesn’t involve the emotional pull of motivation in one direction or the other.

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.

When you take into account all of these things that affect motivation, things that can work against doing what you really want to do, it helps to see why, in practice, doing something is not a simple matter of “wanting to do it”.

In cool reflection, it’s easy to underestimate the force of emotions

Damn those enticing chips! We all know the situation – we wanted to eat healthier, but those chips were just too tempting. As we all know, emotions, feelings and desires can sidetrack us from what we really want.

In the cold light of reflection, it’s easy to think that you just need to strengthen your resolve. You make yourself feel more strongly that you want to eat healthier, and on the strength of that feeling, it seems like you just need to maintain that. It ought to just be a matter of doing what you want to do.

But the thing is that imagining the pull of those desires is quite a different thing from actually experiencing them. Experiencing those emotions changes you. But they don’t have that effect when you’re just imagining their effect.

It’s easy to overlook this when imagining a situation where we’d be experiencing emotions. This makes it easy to underestimate the force of emotions, and overestimate the ease of just doing what you want.

Friday, June 06, 2008

More examples of affordances, and why we need this general concept.

Some more examples of affordances.

Web designers should do their own HTML/CSS, from the Signals vs. Noise guys, argues that different design tools -- HTML/CSS vs Photoshop -- that can all be used for the same end -- mocking up web pages -- nonetheless have different affordances (though of course they don't use that term):

The web is a world of constraints, the materials of HTML and CSS flex and give in ways that encourage particular styles. And being able to understand and bend within that scope is what makes a design feel native. Designers who work directly with the materials rather than through simulated environments like Photoshop are at a distinct advantage for making that happen. ...
Some more examples. Architecture and interior decoration have affordances, that effect things like mood and attitude (Alain de Botton's The Architecture of Happiness look at this). So does music. And clothing - wearing a suit vs wearing a t-shirt and shorts.

If the concept of affordances can apply to such diverse things, doesn't this mean that it must have little utility - to be spread too thinly, so to speak?

The concept is meant to provide a way to talk about the fact that things can shape our experience. I think that we need to recognise that this does happen, and is a general part of our lives.

And I think it is easy to overlook this if we only see particular cases and describe them in their own terms. We can be aware that a building can make us feel a certain way, without really acknowledging that our environment can shape our experience.

That's why I think we do need a general concept. That would also help us to see instances of it in situations we hadn't thought about before.

That general concept doesn't have to be like a theory that accounts for how all of the different cases actually work.

Tuesday, June 03, 2008

Maddox: Nobody cares if your puns were intended.

Maddox's funny little rant about people pointing out that their puns were (or weren't) intended

The intuition that vertical technologies are the way to meet goals in computing

If you want to move the state of computing forwards, how are you to do it?

I think that people tend to think of vertical technologies as the answer.

For example, if we think that computing would be moved forwards if it could provide better means for us to collaborate with each other, then we tend to think the answer must lie in developing better collaboration systems.

It sounds obvious enough, but I think it's wrong.

First I need to talk about what I mean by 'vertical technologies' and mention what the alternative is.

Computational technologies differ in how domain specific they are.

At the very domain specific end of the scale, you might have a program that performs a specific function for companies in the finance sector.

At the other end, there are technologies like the C programming language or HTML. You can write a C program that does pretty much what you like. You can write a HTML page about whatever you like. They're not very domain specific.

Domain specific technologies are vertical technologies, whereas things like C and HTML are horizontal technologies. Other examples of horizontal technologies are cut and paste, RSS, regular expressions, relational databases and dialog boxes.

I think that advances in horizontal technologies tend to push forwards the state of computing more than vertical ones do. And similarly, flaws or limitations in horizontal technologies tend to hold us back the most.

Horizontal technologies are infrastructure. Vertical technologies tend to work within the bounds of that infrastructure. Vertical improvements tend to be more incremental, horizontal improvements can be more revolutionary.

That's not to say that vertical technologies are unimportant, or that you can't have a big impact from developing a new vertical technology. Nor am I suggesting it's equally easy to make advances in both vertical and horizontal technologies. I'm just saying that, in general, with horizontal technologies, you can get a bigger bang for your buck.

I'm talking in broad outline here, and I'm not saying there's no exceptions.

I think that most people know that 'infrastructure' changes have the potential for being the biggest changes. But I think the thing is that, when it actually comes to considering how we can move the state of computing forwards, it's really hard to avoid thinking about it in terms of developing new vertical technologies.

It seems to stand to reason that if you've got a difficult goal you really want to meet, then you should focus as much of your efforts as possible on that goal.

This means focusing as sharply as possible on that goal, and targeting it with as much as possible of your solution. Any bits that aren't targeted at that solution are like wasted effort -- the effort'd be better targeted more directly at the goal.

Translating this into horizontal/vertical technology terms, this means that horizontal solutions feel less than ideal, because they're something more general that is not just for this problem but can be used for all sorts of other things. Their powers must be spread more thinly, and can only really bestow some of its benefits on this specific problem.

A more focused solution would be a vertical one - targeted specifically at this problem. Every bit of it is designed with that thing in mind. How could it not be the right way to go?

But benefits don't just come from specific targeting. Horizontal technologies provide benefits not by being for a specific goal, but by helping to enable them. They can enable new fundamentals, that then can be used to tailor specific vertical solutions. And I think that often what's needed is new fundamentals. That's what relational databases provided, what the web and RSS provided.

Look at what actually has been the biggest boon for collaboration. I think it's largely horizontal technologies -- computer networks, the world wide web, RSS, CVS. These are all things that are not specifically for collaboration but which enable it.



This is closely related to what I've been writing about recently about people looking at software pretty exclusively in functional terms.

The functions are domain-specific capabilities of the software. Looking at the software pretty-exclusively in these terms means overlooking the horizontal functions that are used to implement them.

.

Related:

A short post from March 2006, where I briefly looked at vertical and horizontal technologies - Factors in Tool Complexity/Simplicity: Vertical- and Horizontal- Features

Sunday, June 01, 2008

On the notion of affordances

Donald Norman used the notion of affordances for how the nature of things in our environment suggest how we can interact with them.

When things suggest how we can interact with them, it changes how we interact with them. If a door suggests that it is opened by pushing it, we are more likely to try opening it that way. And if things have poor affordances, we're likely to try using them in ways that don't work.

Recently, I used the term in a more general way, to refer to how anything can shape how we perceive, think about things or do things. For example, the character limit on SMS messages shapes the kinds of things we write with them, even though it's quite possible to write email length messages but split them up across multiple texts.

I think the importance of this notion is that, in practice, we don't have absolute autonomy, we aren't simply "in control", and don't simply do things "because we choose to or want to". Nor do we make choices based on all the information; we use heuristics and hints, and what things suggest.

I'm not aware of an existing term for this property of things, and I think affordances fits well.

To illustrate this notion of affordances, here are some recent Paul Graham articles that can be seen in this light:

Cities and Ambition - cities have affordances that shape the ambitions of their citizens, and different cities have different affordances.

Disconnecting Distraction - computer setups have affordances that shape your usage of them, and how much time you waste when you're using them.

Another thing I think is an example of affordances is the notion of framing. That the way you describe something shapes the way people think about it.

Thursday, May 29, 2008

Exploitation of poor workers is more about poor treatment than low wages

The exploitation of labour in poor countries is a horrible thing.

Companies shouldn't treat workers poorly, they shouldn't make them work in dangerous conditions or harass them, to mention only some of the misdeeds.

But what about low wages? People usually think that giving low-wage jobs to people in poor countries is exploitation. But I think that if companies treated workers properly (with safe working conditions, etc) but still payed the low wages, it wouldn't be exploitation.

As far as I can tell, low-wages is not the negative for the workers that most people think it is.

.

A normal auction is aligned to the desires of the buyers and sellers. The buyer wants to get as much money as they can, and the potential buyer who wants the item the most gets it because they will pay the most for it.

With the types of work that goes to poor countries, the situation is similar. The company wants the work done as cheaply as possible, and -- this is the crucial bit -- the people who want work the most get it because they are willing to do it for the smallest amount -- the lowest pay.

The pay rate that the most desperate people are willing to do the job for is too low for all the other people, who don't have as great a need for those jobs. For these other people, the minimum amount that it's worth their while to do the job for is a higher rate of pay. So if the company was to pay more for the jobs, there'd be a larger pool of people who'd be willing to do it. And more than likely, some or all of those most desperate to do the work would miss out.

I hope you agree that that would be a bad thing.

But why do companies have to get the work done as cheaply as possible? Could't they pay higher wages, but still give the jobs to those who are most desperate for it? It would be great if you could find a way for this to work in practice, though I doubt there is one.

Sure, some companies could afford to do it, but most would end up being put out of business by competitors who found other people who were willing to work for low wages. These competitors would thus be able to sell their products at a cheaper price, and would end up winning out in the marketplace. There are definitely more subtleties than this, but I don't think anything else can really override this basic reality.

Wednesday, May 28, 2008

Seeing software exlusively in functional terms also overlooks affordances

The exclusive focus on the functional capabilities of software doesn’t just overlook usability, it also overlooks affordances.

You can imagine Tim Berners-Lee circa 1990 telling a hypertext-illiterate friend about this World Wide Web thing he'd just invented

"Have you seen my new invention?"

“what is it?”

“There's this special language, called HTML, which you can write documents in. It allows you to put these things called 'links' into your documents, so that when you view them, you can click on bits of the text -- the links -- to load up another document stored on the network.

Oh, and to view these documents, you need to use a separate program called a browser.”

“why would I want to use that? With <my favourite document editor> I can read and write documents, and with the programs I already use it’s easy to load another document off the network.”

The fact is that there's not a single functional capability in the WWW that can't be achieved in other ways; in fact, the web has (and still does, to a certain extent) less functionality than is available by other means.

What it does have is different Affordances.

I was introduced to the notion of affordances by Donal Norman’s book The Design of Everyday Things. It’s about the design of the everyday objects you interact with, like door handles, alarm clocks and car steering wheels. Why are some easy to use and intuitive, and others awkward and frustrating? Norman looks at how designs do and do not match with our tendancies, and our capabilities for perceiving and interacting with the world.

I’d highly recommend it to anyone, even if the topic isn’t something you’re specifically interested in. It’s a real eye-opener, and it's subject matter is relevant to everybody’s lives.

A hinged door that just presents a flat metal panel at hand height suggests that it opens away from you by pushing it. While a door with a metal bar in the same position that you can grasp suggests that you grab hold of it and pull it. These designs exhibit affordances – they are suggestive of function.

In general, I’d say you have an afforadance when properties of the object or system shape and influence the ways that you use them. This is a bit broader than the original meaning, but I think the term still fits.

Lets go back to the World Wide Web. Links are easy to embed into documents -- you can embed them seamlessly into the text of the document, rather than having to figure out where to put them in relation to the flow of the text -- and it's easy to use a link. You just point at it, click the mouse and then the linked page appears.

Without links, you'd have to find another way to describe the location of the other document, and then the user would have to either cut and paste that location or remember it, and then go to whatever program they would use to access it. And they won't have any forwards or back buttons.

In principle, there isn't a huge difference between these two alternatives. But in practice there is. We’re all very sensitive to how much effort it takes to do things. It doesn't take much for the effort to exceed the threshold where we just won't bother. Trivial amounts of extra effort can break the camel's back. Yes, “in principle” we could make the extra effort if we really wanted to. But the amount of effort involved means that in practice we don’t want to.

So it encourages linkages and jumping between documents. Blogs wouldn't make sense unless this was easy to do.

Or take SMSs or twitter messages (not that I’ve used twitter myself, I've just read about it). You could in principle write exactly the same way you would in emails or blog posts, and just split the text up into multiple SMSs or tweets, but you don’t. SMSs and tweets have differents sorts of affordances to email/blog posts, so you write in different ways.

That’s the thing about affordances. You can have multiple different systems that, in principle, you could do exactly the same things with, but you don’t, because they have different affordances.

Tuesday, May 27, 2008

IT people have a tendancy to only compare software in functional terms

Criticism should be a positive thing. Not personal attacks or trying to put people down. It should be about identifying opportunitites for improvement. With that in mind...

IT people have a tendency to think like this:

Pieces of software have a function.
For example. Programming languages are for writing programs.
Utilities like ‘ls’ or ‘dir’ are for giving you information about the file system, as are graphical file browsers like Windows Explorer.

Comparing programs means comparing their functional capabilities.
(Many times, I've head people dismiss programs or programming languages because other programs can already do the same thing.)
But this way of thinking overlooks usability and other "non-functional" (which is a bit of misnomer) issues.

Sure, you may be able to do the same things, but can you do them as easily? If usability wasn’t a factor, people would be happy to write all software using Assembly language.

The notion of a language being ‘easy’ (or ‘hard’ to use) is itself a simplification. Easy or hard for what? There’s always some sorts of tradoffs. Easy for systems programming? Easy for writing simulations? Easy to write? Easy to maintain?

'Easy' or 'hard' is in the context of using a particular program for a specific task a person is undertaking. The can a complex set of factors involved, including the nature of the task and of the person doing it. Here are some basic examples.

Comparing information is easier when the pieces are closer together. The further apart, and the more actions like mouseclicks you need to perform to navigate between them, the tougher it is on your concentration. When you're thinking and your train of thought moves, you want to be able to nimbly adapt the information display, such as changing the ordering of the information from alphabetical to chronological.

Time is an important component. We have limited ability to keep track of things over time. Getting the pieces of information in quick succession is quite different to getting them many seconds apart.

Why are IT prone to thinking of computer systems in this way? Well, in part, it’s nothing specific to the nature of IT people. I think we all tend to see phenomena in ‘functional terms’, and tend to overlook the other aspects to them. And, as I've said before, we tend not to factor in constraints into our conceptualisation of things, and are poor at doing it when we try.

The thing that's different about IT people is simply that they explicitly think about and compare software more than non IT people do.

A contributing factor in the case of systems whose functions it is to present us with information is a simplistic notion of perception. In this view, perception is simply a matter of taking in information, and what we end up with in our heads is simply a reflection of what is out there. The thing is, our perceptual/cognitive systems are highly structured, and constrained in various way.

This is why you can have the same information can be much easier or harder to deal with, depending on how it is respresented and/or how you can interact with it. Our brains look for certain cues, and whether they’re there or not makes big difference. They have all sorts of built in assumptions, expectations and limitations.

Revisiting the question of why IT people see software in this way, there might be one factor that is specific to them. IT people in particular see programs in this way. They're used to thinking of how to use software to solve problems. With a program, as long as it can get hold of the information it needs, the original format doesn't matter so much, as it can then put it in a more usable form, and then solve the problem. The difference with our brains and perceptual systems is that they have more limited capabilities to do this, and to do this fast enough for it to be practical. Our hardware is much more dependent upon the external format.

We don't just compare software that exists. When someone thinks of an idea for a new piece of software, it gets compared with what we've already got. So this issue of how we compare software applies to developing new software. If we can be aware of the problems with only doing functional comparisons, we won't be so eager to shoot down new software, for even the best new software rarely does anything new in functional terms.

Monday, May 26, 2008

Assuming that every bit counts is a recipe for failure, whatever your goal is (including helping the environment)

When you have goals you want to achieve, being satisfied as long you're doing something that's working towards them is a recipe for failure.

Unless you think about priorities and how much tasks will really contribute, it's easy to just feel good about doing something, and it's always tempting to do the easier or more urgent things. Every little bit helps, right?

But not really. You have to have the right priorities. What matters is how much a task contributes. Tasks will differ in how much they contribute to the goals, and there's almost always an unlimited number of trivial tasks you can occupy all your time with. Time can easily fly by, without you having achieved anything of substance.

Sometimes tasks may seem to meaningfully contribute, but in fact really not at all. They might just be addressing symptoms of a deeper problem. As long as that deeper problem remains, the symptoms will continue to arise for you to work on, and you'll end up on an endless treadmill. Really tackling the problem means going for its deeper source.

This doesn't only apply to individuals and their personal, study or work goals. It applies anytime there's any goal to be achieved. Consider the goal of helping the environment. How many times do you hear it said that “every little bit counts”?

Yes, in some trivial sense every little bit is doing something. But is it doing anything really useful? Is it just addressing symptoms, and putting us on an endless treadmill?

The point is, it's really important for us to consider what our priorities should be. We need to think about what actually does and doesn't help, and to what extent things help, so we can know how we should distribute our time.

But I feel that thoughts about the environment don't really get into considering such matters, and tend to be mired in a warm and fuzzy "every little bit counts" view.

Perhaps you think that this is all well and good when it comes to governments and companies, but for the person on the street, all they can do is the little things, so for them it truly is a matter of ‘every little bit counts’.

If you think that, then by all means, have a look at what the person on the street might be able to do, and the relative values of these options. And if you find that there truly aren't any real diffrences between the options, and every little bit really does count, let us know. It's an important question, and a proper answer -- whatever it is -- would do us all good.

Sunday, May 25, 2008

'Recent Folders' in Windows Explorer Navigation Pane

Mockup:

mockup
Not infrequently, I'll be doing some task that involves jumping back and forth, or copying files, between a number of different folders. In Windows Explorer, these directories are often not close to each other, so I have to scroll up and down all the time.

Perhaps it'd be useful if Windows Explorer could (optionally) display a cache of the folders you've recently nagivated or moved/copied files to. Then you could drag files to them, or click them to see their contents in the right-hand pane.

A similar 'Recent Folders' section would also be handy in save and open dialog boxes. So often I have to constantly navigate back to the same directory, each time I save or open something. Some save/open dialogues do provide a button for obtaining a list of recent folders, but why not just include a few those folders there in a section within the default listing?

Transparent fridge

Out of sight out of mind, as they say. You’re in the kitchen or walk past it, and the fridge is just this big white opaque box. You don’t see the food - only when you open the door. And even then, items can be hidden behind other items. But if the fridge was transparent, you could walking past, or in the kitchen and happen to see the fridge contents. You’d be more aware of the food being there.

I always end up wasting food because I don't see it and then forget about it. A transparent fridge might help me waste less (especially if I also stored things in transparent containers). And I think there’d be something slightly less artificial about your life if the food you’ve brought home and stored away wasn’t so out of sight.

On the downside, food would be exposed to more light, and there's a question of if you could make one that is as well insulated. With the food more visible, it could also tempt you more to snack. I'm not sure if you'd get condensation fogging up the surface, but if there was it could ruin the transparency. Also, if you didn't keep the fridge tidy, it could be messy - but then again, perhaps that would be a motivation to keep it tidy.

Here's a pic of transparent fridge from some sort of Japanese trade show (see the article accompanying the pic). I don't know if it's something that is actually sold or not.

Here's a suggestion for a transparent fridge from back in 2006. As they point out, it might also help save power, if you didn't have to open the fridge door to see what was inside.

Pics of spectaular ice structure on Lake Huron in Michigan

Saturday, May 24, 2008

Being able to explicitly reason about a concept is a skill

This is just an initial, hasty attempt to write about this stuff. I'll try and revise it a bit tomorrow.

Often, we’ll have a view about a topic without having actually given it explicit consideration. We obtained the view pretty unconsciously. Without explicit consideration, we’ll just feel there’s something shifty about Terry, or that technology is a bad thing.

Our brains were designed so that we don’t need explicit deliberation to form judgements about other people’s character, so our intuitions on that score tend to be fairly reasonable. But our brains weren’t designed with the capabilities required to automatically draw sound judgements on concepts such as technology; though our brains still try to automatically develop views on them.

‘Technology’ is a very abstract concept. It covers so many things that, in concrete terms, differ in so many ways. Technologies span the four corners of the globe, many thousands of years of history, and all aspects of our lives and societies. They can be used with all sorts of intent, and have sorts of consequences (and the intents and results don’t necessarily match – good intent can lead to bad results, and vice versa). Technologies include writing, asprin, glass, bridge construction, computer games, and guns.

If we want to draw reasonable conclusions when thinking about topics like ‘is technology a good or a bad thing?’, we need to have to override our natural intuitons about it, and start thinking explicitly about the question.

Our natural intuions have a powerful grip on us. We might have a negative impression of technology because of various things we’ve heard where bad things happened because of it. If connotations start to accrue around a concept, it tends to snowball. Thereafter, the things we’ll take note of as ‘technologies’ are more likely be things that fit our existing preconception of it – as ‘high-tech’ things that have negative concequences. It’s more likely that each example that fits that view will end up reinforcing it, while, when we come across cases that don’t fit it, we probably won’t think to reevaluate our notion of technology.

The ability to think explicitly about a concept is a skill, and has to be developed like any other skill. When your brain is unconsciously building up a picture of something, it can build a picture of depth and subtlty. But as I’ve said, it can only do this in certain sorts of cases that suit the in-built mechanisms for doing this. When you’re explicitly reasoning about a topic, you have to build that depth and subtlty manually.

Initially, we can only explicitly think of the concept in simplistic, somewhat stereotyped ways. And it simply takes a lot of work in order to draw out and refine that skill – the ability to think explicitly about technology and its nature. Reading things about that concept helps, but I think that can only get you so far. To really develop the skill requires linguistic work. You could try thinking about it in your head, but that’s very difficult to do. What’s more suitable is to talk about or discuss it, or trying to write about it.

In the end, what you want to do is train unconscious aspects of your mind to have a deep and subtle ability to handle that concept. To have a fluency with it. That’s just like the endgoal of developing any other skill – whether driving a car, using a chef’s knife or playing a rugby.

Why is this important when it comes to thinking about concepts? Because to develop a solid position on a particular topic, you need to be able to evaluate your own position well. You have to be able to spot simplifications or omissions within the statements you’re making. You have to have a good nose for these things. And you just can’t do this well enough until you’ve really absorbed the knowledge well.

And I think that it’s likely to be the case that, once you have developed your skill a fair bit, you’re going to reach different sorts of conclusions than you would have initially. You need to develop the skills in order to draw reasonable conclusions.

And all this has a bearing on not just developing, but presenting arguments to others. That is, it has a bearing on things like how non-fiction books ought to be written, when there’s an need to develop a skill in reasoning about a concept, such as there is when you’re trying to answer the question of ‘is technology a good or bad thing?’. So of course, first you would try and make sure you’ve tried to develop your skill in reasoning about that concept, so that you have an accurate conception of it. As far as I can see, this is very rarely done. Usually people don’t really consider their notion of their conception of the relevant concepts. They usually just take for granted the notion of it they’ve pretty unconsciously developed, and go from there. They might, for the purposes of exposition define their notion of that concept. But that’s usually not much more than putting their existing view of it into words. Usually, what they’re more about is justifying the view they’ve already reached.

If a lot of the work in developing reasonable conclusions is developing skills in thinking about the concepts involved, then if you want the reader to appreciate your viewpoint, part of what you need to do is use your writing to help them develop skills in reasoning about the concepts. I did say earlier that reading things involving the concepts helps a bit in developing skills but was secondary to talking/writing about it. What I’m talking about here is a different type of writing about it, where the focus is specifically on trying to understand the nature of the concepts themselves, rather than just saying things concerning the concepts.



This fits in with the notion of laddered skills, particularly mental laddered skills

Tuesday, May 20, 2008

When information is plenty, text with a low information-to-length ratio isn't worth reading

Sometimes you hear the complaint that the internet-users of today don't have the patience to read things online. It used to be that people read relatively long articles in Newspapers and magazines like Time. But not any more. They don't have the attention span and are perhaps lacking in a certain kind of mental depth.

But some of this situation actually reflects a lacking in older styles of writing. They're not informational enough. You have to read a lot of for only a small amount of useful information. That was fine when information was relatively scarce. But when there is so much information out there -- and in truth, a lot of useful information out there -- it's just too costly to read things that have a low information-to-length ratio.

By the way, when I talk about the inforamtion-to-length ratio, I mean the amount of information that people can easily and comfortably derive from the text. It's no good if the text says a lot, but it's bloody difficult to discipher (note, however, that I tend to think that high informational text is likely to be readable. Clever sounding but hard to read text is often just obfuscation).

I think that people will pay attention if the informational payoff is high enough. When it's not they'll skim, and if it's too low, they'll skim a bit then leave.

That's the simple rule for getting people to read stuff on your web-site: give it a high information-to-length ratio. I'm suspect of how well "gimmicks" like highlighting keywords -- so they'll catch readers eyes when scanning -- really work.

So what's an example of a form of writing that has a high information-to-length ratio? The best examples I can think of are Paul Graham's essays.

(and of course I'm not making any claims here about my ability to write this sort of text. and certainly most of the stuff on this blog is just 'trying to get my thoughts together' stuff that doesn't have a high info-to-length ratio).

Intregrating Transinfo and Google Maps

I'd be nice to have some integration between Transinfo and Google Maps. Transinfo is the public-transport journey planner for the Brisbane area.

Some examples of possible integration (Most or all of which I'm sure have been done in various other places around the world). Showing the real-time location of buses and trains on the map. Overlaying bus routes over the map.

Being able to plan a trip, and marking it out on the map. This'd be especially useful when it involves changing between serveral buses, and having to walk to a different stop to catch the next bus.

Being able to search for a location in Google Maps and to feed that in as a 'from' or a 'to' address in the journey planner. Or if you use Google Maps to mark out how to get from one place to another by car, be able to immediately get public transport journey information.

Monday, May 19, 2008

Paul Graham: Lies We Tell Kids

Another excellent Paul Graham article Lies We Tell Kids

Adults lie constantly to kids. I'm not saying we should stop, but I think we should at least examine which lies we tell and why.

There may also be a benefit to us. We were all lied to as kids, and some of the lies we were told still affect us. So by studying the ways adults lie to kids, we may be able to clear our heads of lies we were told.

I'm using the word "lie" in a very general sense: not just overt falsehoods, but also all the more subtle ways we mislead kids. Though "lie" has negative connotations, I don't mean to suggest we should never do this—just that we should pay attention when we do.

Sunday, May 18, 2008

Saturday, May 17, 2008

Disco chickens

Finally - disco chickens. Having grown up with chickens around, I knew they had it in them. Thank you Dominos.

Thursday, May 15, 2008

Non-linear relationship b/ween improvements in your understanding of a prob and your ability to address it

In relation to my last post...

I think we also tend to assume that, if you understood a problem better, then your idea of how to best address it would simply be a better, improved version of your existing idea of how to address it.

But I think that's wrong. A better understanding can lead you to a radically different notion of how to address the problem.

A simplified understanding can stop you from striving for a better one

Quick sketching...

It’s easy to be falsely led into thinking that your current understanding of a problem can’t be improved. That's dangerous, because simplified understandings tend to lead to inappropriate solutions.

You can think it can't be improved, if you expect that, should there exist a way for it to be improved, you could personally see

1) how it was possible for a better understanding to exist
2) what it would look like
3) how it would help you better address the problem

It seems to be just how our brains work that,
If we can’t see these things, we tend to think the thing mustn't exist.

But the problem is, if you do only have a simplified understanding of the problem, then this fact itself can stop you from seeing those things. If you could see those things then you wouldn’t have the simplified understanding.

Just becuase you can't see it, doesn't mean it doesn't exist.

Unless you understand why you understand the problem fully, then you always have to be open to the idea that it's useful to learn more about the problem, and that doing so may radically change your idea of how best to address it.

Monday, May 05, 2008

Enso - a real, practical step forwards for UIs, available now and for free

So far I'm quite impressed by Enso. It provides you with a single 'linguistic commandline' for controlling common operations on your computer, from switching to different applications, to looking up something in google, and spell checking text. It's very slick. It's also free and open-source. Presently windows-only.

Probably the best way to get a feel for it is to watch this overview screencast.




I think this kind of thing is a real step forwards.

Sunday, May 04, 2008

News: Cuba lifts ban on home computers

Cuba lifts ban on home computers. Home computers were banned in Cuba?? That's pretty oppressive. I'm not saying that banning computers is anything close to the worst form of oppression, but it is telling of their attitude towards their citizens.

Saturday, May 03, 2008

Clay Shirky: Gin, Television, and Social Surplus

[Update: the article can now be accessed here]

A very interesting –- and very readable -- article by Clay Shirky.

What do Gin, sitcoms and Wikipedia have to do with ‘cognitive surplus’, and how will the technological leverage we’re giving to that surplus re-shape society? That might all sound fairly speculative, but I think he's got a pretty solid point.



Clay Shiky: website, wikipedia
His book, Here Comes Everybody: amazon; blog;
reviews: guardian, times higher education, boing boing

Thursday, May 01, 2008

Gordon Ramsay: How to Scramble Eggs (video)



I don't do scrambled eggs much coz they never seem to come out right, but after seeing this I'm going to get some eggs this afternoon and give it a go tomorrow morning.

A few interesting things from the video: don't put salt in early, as it effects the consistency; scramble the eggs in the pan; alternate the pan on and off the heat.

(Update: had a go at it and it came out pretty good, though I didn't cook it quite long enough, and didn't have any creme fraiche. also, 3 eggs is too much for me, next time I'll try using 2)

Alternatively, if you like omelette's:

(source unkown).

Friday, April 11, 2008

A Wikipedia for data (statistics, listings, etc)

[Update: the article can now be found here]

Bret Taylor suggests that we need a Wikipedia for data. A lot of potential innovation is being held up because it’s so hard to get access to factual data (esp decent quality data). Statistics, listings, and so on. Taylor suggests a Wikipedia-like repository of factual data freely available to everyone. It could really grow if it caught on – the sort of thing that fosters a sharing spirit. You know that if you add/update/correct stuff (and everyone else does likewise), everyone benefits.

The most lifelike robot I've ever seen

This video has been around since mid-March, but I've only just seen it.

It's of the 'Big Dog' robot made by Boston Dynamics. Watch what happens when the guy tries to push it over, or when it slips on icy ground. Squint and you'd think you're watching a real animal.

Thursday, April 10, 2008

A "workspace setup" tool for Windows?

When I’ve finished a session on my laptop, I always just put it to sleep rather than shutting it down. I only shut it down (or restart it) for a software install or update, or because of performance problems -- basically, when I'm forced to. Closing all the programs down, restarting the system, and then setting everything back up again just takes too long.

For those times when I do have to restart it, I’d like a software tool that could automatically set my workspace back up again, by reloading all the programs / documents I normally use. So far, I haven’t found anything that does this. “Application Launcher” programs are more about being able to quickly access a particluar program or document when you want to load it. I’d like something with these features:

  • Once you’ve defined your set-up, and it’s a simple matter to get the program to open all the programs.
  • What you can define in your set-up
    • what to open
      • programs
      • documents
      • directories (in Windows Explorer)
    • What order to open them in (so they appear in a specific order on the taskbar, which helps me to organise things).
    • Ideally, where to place these windows, and how to size them (when my text editor opens, the window is too wide).
    • Support multiple different set-ups.
      I use three virtual desktops, and I have diff sets of apps open in each, so I’d like to have three different set-ups.
    • Ideally, a way to specify settings for windows.
      For example, I’d like it to be able to set up Winamp to appear on all of the virtual desktops. Manually, you do this by right-clicking the winamp item on the taskbar, choosing the ‘Virtual Dimension’ option (for the virtual desktop I use), and then the ‘All Desktops’ option. I’d like to be able to set up the program to do this for me.
Is anything out there like this (and preferably not full of other features)? (I could try writing something like this myself, though with all the other stuff I'm working on, I don't think I'd get round to it anytime soon).

Really, I think such functionality should just be a basic, standard component of windows.

Monday, April 07, 2008

Paul Graham: How to disagree

A short-and-sweet look at how to disagree.

What does it mean to disagree well? Most readers can tell the difference between mere name-calling and a carefully reasoned refutation, but I think it would help to put names on the intermediate stages.

The feasability of a kick-arse public transport system for Brisbane?

Brisbane is a great place, but one thing you hear over and over again is that the public transport sucks. While it could be a lot worse, and I'm glad we've got what we have (CityCats in particular are nice), I’m equally sure it could be a lot better.

But how much better is feasable? Would an ideal, kick-arse public transport system actually be possible? I don’t know the answers, but here's some thoughts on what would be desirable, and some of the questions I have about its feasability.

I'm thinking of a public transport system with extensive coverage and very frequent services. Where all the services started early in the morning and ran till late at night, and 10 minutes was the most you’d ever have to wait.

Where, wherever you were in Brisbane, five minutes was the most you’d have to walk to get to public transport. Where you can go pretty directly to where you want – perhaps by first travelling to one of a few major hubs, and from there straight out to your destination.

But how feasible would that be? One thing you'd need is people with the right vision and drive to carry it through. I take that as a given; what's less clear to me is the economic feasibility.

What changes or alternatives could be used to work towards these goals? What incremental changes could be made? What sorts of improvements would require new infrastructure or different transport means?

For all of these things, what sorts of costs would be involved? And how much of those costs could you expect to offset (at least in the medium to long term) by increased public transport usage? To what extent could you convince people that the extra costs were worth it (such as by painting a compelling picture of what could be done)?

And how long would the different options take to implement?

If the ideal is not possible, how close to it could you get?

Monday, March 31, 2008

Strawberries, briefly baked with sugar and balsamic vinegar to intensify the flavour

Strawberries with balsamic vinegar

"Don't be put off by the vinegar in this recipe -- once it combnies with a bit of sugar and the heat from the oven, it takes on a wonderfully sweet and complex flavour". From Tobie Puttock's Daily Italian.

This dessert has an elegant simplicity and tastes wonderful.

Serves 2 or 3

(You can bake the strawberries in an ordinary oven-safe container with a lid, or you can make a parcel out of aluminium foil. Tear off about 40 cm of foil. Make the parcel by folding it in half, then sealing up the sides by making a 2cm fold along each side. Later, we'll place the strawberry mix in the parcel then seal up the top edge).

Ingredients

  • strawberries, 1 punnet, hulled
  • castor sugar, 1 tbsp
  • balsamic vinegar, 1 tbsp
  • to serve it with: some creme fraiche, masarcapone or custard.
Instructions
  • Preheat the oven to 200 celsius.
    If using a container to cook the strawberries in, preheat it as well.
  • If the strawberries are on the large size, cut them in half.
  • Combine strawberries, sugar and vinegar in a bowl.
  • Place the strawberry mixture inside your container and put the lid on -- or for the foil parcel, close it up by making a fold along the top.
  • Place the container in the oven and cook for 5 minutes.
  • Remove from the oven, and let parcel sit, unopened, for a few minutes.
  • Serve at the table.
    The aroma that's released when the parcel is opened is really something special.
  • Arrange the warm strawberries in a martini or wine glasses, accompanied by a generous dollop of creme fraiche, mascapone or custard




Puttock says the dish also goes well with other desserts, such as an Almond Custard, or a chilled Zabaglione, though I haven't tried this myself.

Idea for a Full Sub-tree view in Windows Explorer

Windows Explorer provides several different views of your files and directories: as a listing, as a grid of icons, etc. I’d like a ‘full sub-tree’ view. Rather than just listing just the directory contents, it would show the entire subtree of directories and files underneath the directory, like:


File
File
File
Subdir name
File
File
Subdir name
File
File
File
File

I often find I want to be able to see all those details at once, rather than being limited to seeing each directory one at a timne.

Sunday, March 30, 2008

Obama's "A More Perfect Union" speech

Barack Obama's quite remarkable March 18 speech "A More Perfect Union" (37 mins).



Transcript

Thursday, March 27, 2008

Moving files while they're being downloaded

When I'm downloading a file in Windows, it won't let me move the file or rename it. Sometimes I want to be able to move it, for exactly the same reasons I want to move ordinary files. In this case, I realised there was a better place to put it.

Ideally, it would let me move the file, and it'd be smart enough to update the file contents there. I'm not saying it would be a click of the fingers to implement, but it's certainly technically possible to implement an OS that works like this.

When you think about it, this limitation is simply an inconsistency (of the sort that might confuse people who aren't computer literate) arising from a technical detail, and I think these are the sorts of things we should be trying to eliminate.



A similar thing goes for files that are open in editors. In this case, you might want the OS to notify you that it is currently open, and confirm that you want to go ahead with the operation. The editor would be notified of the change, and adjust things accordingly.

Reader's Digest: 23 ways to avoid catching a cold or the flu

The seems to be a lot colds going around lately -- I've got one now. Reader's Digest has an interesting list of things you can do to prevent catching a cold or the flu.

Here are some of the interesting ones I hadn't heard of. Some might sound strange, but they make sense after you read the explanation for them.

  • Wash your hands twice every time you wash them.
  • Run your toothbrush through the microwave on high for 10 seconds to kill germs that can cause colds and other illnesses.
  • Leave the windows in your house open a crack in winter.
  • Speaking of which, buy a hygrometer.
  • Sit in a sauna once a week.
  • Inhale air from your blow-dryer.
  • Wipe your nose -- don't blow.

Here's another bit from it
3. Use this hand-drying strategy in public restrooms. Studies find a shockingly large percentage of people fail to wash their hands after using a public restroom. And every single one of them touches the door handle on the way out. So after washing your hands, use a paper towel to turn off the faucet. Use another paper towel to dry your hands, then open the door with that paper towel as a barrier between you and the handle. It sounds nuts, but it's an actual recommendation from the Centers for Disease Control to protect you from infectious diseases like cold and flu.
I've always found it strange how many people don't wash their hands... I wonder why exactly?

Sunday, March 23, 2008

Amazing landscape scenes made from food (pics)

Some people have far too much time on their hands.




Similar: What chefs do when they're bored (pics)

Bruce Schneier on the different mindset security professionals need to have

Bruce Schneier on the different mindset security professionals need to have. It involves “thinking about how things can be made to fail. It involves thinking like an attacker, an adversary or a criminal. “ The person with this mind set “can't walk into a store without noticing how they might shoplift. They can't use a computer without wondering about the security vulnerabilities. They can't vote without trying to figure out how to vote twice.”

Thursday, March 20, 2008

Monday, March 17, 2008

Greek Bean Stew with Feta

Nice greek-style stew. Tomatoes and dill make a great flavour combination, and provide the central focus of the flavours here. (Unfortunately, I can't recall the name of the cookbook I got this from).

  • onion, 1
  • olive oil, 2 tbsp
  • garlic cloves, 2, crushed
  • canned chopped tomatoes, 400g
  • tomato paste, 1 tbsp
  • bay leaves, 2
  • parsley, finely chopped, 2 tbsp
  • dill, finely chopped, 2 tbsp
  • salt, 1 tsp
  • pepper, 1/2 tsp
  • paprika, 1/2 tsp
  • sugar, 1 tbsp
  • canned beans, 3 x 400g cans (cannellini, butter or kidney)
  • feta cheese, 100g
  • Potential accompaniments: flat bread and a greek salad.

  • Halve and finely slice the onion
  • Heat the olive oil in a heavy pan and fry the onion until soft but not browned.
  • Add the
    • garlic
    • tomatoes
    • tomato paste
    • and 500ml water
  • followed by the
    • bay leaves
    • parsely
    • half the dill
    • salt
    • pepper
    • paprika
    • sugar
  • Bring to a simmer.
  • Simmer, partly covered, for 20 to 30 minutes until nice and thick.
  • Drain and rinse the beans, add to the stew, and simmer gently for another 10 minutes.
  • Rinse the feta cheese, pat dry and cut into smallish cubes
    (perhaps 1cm to a side - so you don't end up biting into huge peices that'd overwhelm the other flavours).
  • Add to the pan and simmer for another 5 minutes until the cheese is soft.
  • Serve in small bowls, drizzled with a little extra olive oil and scattered with the remaining dill.
  • Serve hot or at room temprature (it's actually quite good when cool), with some warm flat bread and perhaps a Greek salad.

Sunday, March 02, 2008

Impressive shadow puppet routine on Letterman

Pretty amazing performance by Raymond Crowe, who happens to be from Adelaide in Australia.

Sunday, February 24, 2008

Recipe: Tuna and Boccincini Pizza

Tuna and Boccincini Pizza

Bit different to the usual pizza, but quite nice. Here's the source for this recipe.

  • Pizza base, 1
  • Fennel bulb, 1, finely sliced
  • Bocconcini or fresh mozzarella, 75g, sliced
  • Tuna in oil, 185g can, well drained.
  • Fennel fronds, 1 tbsp, finely chopped
  • Parsley, finely chopped, 1/8 cup
  • Basil, finely chopped, 1 tbsp
  • Olive oil, 1 1/2 tbsp
  • Grated lemon rind, from 1/2 lemon
  • Preheat oven to 220 degrees.
  • Brush each pizza base with a little olive oil.
  • Sprinkle the fennel evenly over each pizza base and top with the sliced cheese.
  • Bake in oven for 12-15 minutes.
  • Gently toss together the flaked tuna, herbs, olive oil and lemon rind and season with salt and freshly ground pepper.
  • Scatter over the hot pizza and serve.

Saturday, February 16, 2008

Kevin Kelly: When copies are free, you have to sell what can't be copied

More and more things are becoming digitised, and thus easily copied. The Internet is a big machine for grinding out free copies. And when copies are free, you need to sell things which can not be copied. So argues Kevin Kelly, in his post Better Than Free.

So what can't be copied? He lists eight things, which he gives plenty of examples of:

  • Immediacy
  • Personalization
  • Embodiment (which is really a subtype of personalization)
  • Interpretation
  • Authenticity
  • Accessibility
  • Patronage
  • Findability
Basically, making money from these means making money from capturing attention, which is a different kettle of fish from what we're used to.

I reckon his post presents some pretty deep insights into future technological development.

Here's a few other details about it.

He criticises the notion that advertising is essentially the only means to make money from free copies.

He also generalises his argument from digital copies to "any kind of copy where the marginal cost of that copy approaches zero", going on to say
Maps just crossed that threshold. Genetics is about to. Gadgets and small appliances (like cell phones) are sliding that way. Pharmaceuticals are already there, but they don't want anyone to know. It costs nothing to make a pill.



Additional Notes

Walter Benjamin's 1936 essay Work of Art In the Age of Mechanical Reproduction is relevant to these issues, according to one of the post comments: it is "arguably one of the cornerstones of an understanding of multiple media in modern life, and it describes convulsive, revolutionary changes to media distribution really elegantly".

The same comment also recommends Bruce Sterling's Shaping Things for more on the value of "findability".


In relation to technological development as the removal of constraints

I think what Kelly writes fits in nicely with the notion of technological development as the removal of constraints, which I talked about in a 2006 post Scientific and Technological Development = Removal of Constraints.

Briefly, my argument was along these lines:
  • Our capabilities are obviously limited, to differing degrees and in various ways
  • Technologies lessen these limitations (or constraints).
    • It can be two-steps forwards, one step back, but I think there is an overal trend in this direction
  • You can think about where technological development may go by thinking about the ways our capabilities are constrained, and the ways these constraints can be lessened.
    • You don't have to do this just to speculate, but to try and figure out how to improve on current technologies.
I think Kelly's post fits in nicely with this. Copying used to be heavily constrained. It took a fair bit of time and effort to make copies of things. But now, technology has removed a lot of these constraints.

The copying constraints enabled you, as the producer of some content (e.g. a song), to charge people for copies. But since that constraint is drastically lessened you have to find other things to sell that people can't copy - things where our ability to copy them is heavily constrained.

But even these other constraints may be lessened by further technological development. For example, it will become easier to personalise content, through higher-level ways to configure things, and through more intelligent software that knows your preferences better and can do a reasonable job of ensuring they're met.


Dimensions upon which to imagine ideals

This bit is sketching...

Another way to look at Kelly's list of eight items, is as a list of eight dimensions along which we can remove constraints, to look at where technological development may head. To think, for example, of ways for making content more immediate, or more authentic.

What I think is actually the most useful thing to do is have a clear idea of what the ideal would be for each of those constraints. For example, the ideal in terms of Findability might be for you to simply want to desire something, and with the most minimal amount of effort be able to get it. Or even better, for technology to be able to (reliably) predict that you'll want something and deliver it to you before you even have to realise you want it.

Removing all the constraints associated with interpretation would mean there is an automatic provision of interpretation -- of what the content means, what you can do about it, how to use it, etc -- suited to you. The ultimate step would be not to have to provide you with this information, but for it to be automatically applied for you.

But so what, right? What's the use if you're just imagining some fantasy ideal, and not thinking about something more realistic, or about how to improve the technology? The answer to this is that we need to think beyond means that directly lead to the improvements. What imagining these ideals can do is help give you higher-standards. And high-standards are crucial for any creative work. Steve Jobs has very high standards. So does Ricky Gervais. So it seems with most people who make good stuff.

You've got a benchmark that keeps you from simply being satisfied with an incremental improvement. You're taking a broader, more fundamental viewpoint. This might lead you to redesign things from the ground up, or at least not simply see an incremental improvement as "good" and stop there, but be thinking about there being more that is possible.

Apple is an example of a company that pushes things more than just 'one step further'.

Tuesday, February 05, 2008

Article: innovation is the result of hard-work, not flashes of brilliance

Janet Rae-Dupree, in the New York Times:

As humans, we want to believe that creativity and innovation come in flashes of pure brilliance, with great thunderclaps and echoing ahas. Innovators and other creative types, we believe, stand apart from the crowd, wielding secrets and magical talents beyond the rest of us.

Balderdash. Epiphany has little to do with either creativity or innovation. Instead, innovation is a slow process of accretion, building small insight upon interesting fact upon tried-and-true process. Just as an oyster wraps layer upon layer of nacre atop an offending piece of sand, ultimately yielding a pearl, innovation percolates within hard work over time.

"The most useful way to think of epiphany is as an occasional bonus of working on tough problems," explains Scott Berkun in his 2007 book, "The Myths of Innovation." "Most innovations come without epiphanies, and when powerful moments do happen, little knowledge is granted for how to find the next one. To focus on the magic moments is to miss the point. The goal isn't the magic moment: it's the end result of a useful innovation."

That's a common theme in innovation, according to Mihaly Csikszentmihalyi, a psychologist at the Claremont Graduate University in California. "Cognitive accounts of what happens during incubation assume that some kind of information processing keeps going on even when we are not aware of it, even while we are asleep," he writes in "Creativity: Flow and the Psychology of Discovery and Invention."
Though that's hardly surprising once you're aware that most of cognition is unconscious, and that conscious thought is like the tip of the
iceberg.

Tiredness is not literally a lack of energy

One of the malaises of our modern world is that we get fat. We eat
too much sweet and fatty foods. Why? Because in ancestoral
conditions, food was a scarce resource and sweet and fatty foodstuffs
were potent energy sources. We've evolved to seek them out. In
developed countries, food is no longer a scarce resource, and this
instinctive craving makes us fat.

Tiredness is another modern malaise. Many of us just don't have much
energy. No doubt overwork, hectic lifestyle and inadequate sleep are
major contributors. And lethargy could be due to mental exhaustion,
though here I'm talking about lack of physical energy.

It is interesting to note that this tiredness must be an intentional
part of the design of our bodies, to make us get some rest, like the
way we need sleep. It is not actually a lack of energy. We have more
energy than ever. Energy is, quite literally, what those fat bellies
we're carrying around are.