Friday, December 04, 2009

"Re-thinking WYSIWYG editors for Web CMS"

Some thoughts from the Amaxus people on keyboard-only ways to add formatting and html links in rich-text editors or text-areas using just the keyboard.

They consider these options: Automatic Markdown Conversion, and Inline Formatting (introduce a keyboard shortcut that initiates ‘inline formatting’ - basically shows what the shortcut keys are for different types of formatting and which gives you an easy way to set which text the formatting will apply to).

Also, some Hacker News comments on that post.

My interest in this is how we can have editors that can handle structure (the formatting and link information requires structured information. but also stuff like the structure of code and XML) in a fluid fashion. I think there's a lot of room for improvement there.

Wednesday, November 11, 2009

"Early-stage theories"

Trevor Blackwell of Y Combinator has a nice post on how start-up founders need to be like people developing early-stage theories. Kinda hard to explain, but it's quite good.

Sunday, November 01, 2009

'Simplicity is Complicated'

As I've mentioned before, I think most discussions of simplicity are, well, major oversimplifications.

When people say the problem with certain systems is 'complexity' and that the solution is 'simplicity' what they really mean is actually specific sorts of complexity are the problem, and specific sorts of simplicity are the solution. I don't even think the issue is really best understood as a matter of of 'complexity' or 'simplicity', but that's another matter.

In 'Simplicity is Complicated', Avdi Grimm tries to tease out various different sorts of simplicity. He also talks about the tradeoffs that can be involved in each type.

These are the types he talks about

  • Minimizing unnecessary effort.

  • Hiding complexity.

  • Avoiding difficult-to-understand features.

  • Avoiding formal architecture.

  • Elegance of design.

  • Staying close to the domain.

Sunday, October 25, 2009

An idea for a multi-touch rhythm game

Here's an idea for a rhythm game for the iPhone that exploits the phone's multi-touch capabilities. 

Most rhythm games involve pressing or tapping on one of a fixed set of positions.  In Guitar Hero those positions are button positions, in Dance-Dance Revolution they're floor tiles, and so on. 

Touch-screens let the taps be anywhere on the screen.  Like in Elite Beat Agents on the DS where circular markers pop up on the screen showing you where to tap.   The sequence of places to tap usually follow a spatial pattern - eg in a line or an arc.  Following these patterns around adds some interest to the game.  It's more dynamic. Rhythm and movement work well together.  

On a multi-touch screen you could have a different style of game.  It could have the user make multiple touches at once, where the had to simultaneously tap points in a particular spatial pattern.  It might get them to simultaneously tap three points arranged in a line, then simultaneously tap four points arranged like the end points of a cross. The focus would be on the progression of spatial configurations.     

And just like how Elite Beat Agents also sometimes made the player slide the stylus along a path, this game could make the use simultaneously slide fingers across multiple paths.  For example, where their fingers start out at like the four corners of a box and have to simultaneously slide towards the box's center. 

I'm imagining something where it's like the players fingers are performing a dance. Something a bit like twister for your fingers, but rhythm elements to it. Maybe you could call it Finger Dance.

(this is the first time I've composed a post on my iPhone - nice use of a bus trip) 

Thursday, October 01, 2009

"Ten IT Concepts That Non-IT People Don’t Get"

update, 25.8.10: here is a related blog post by Andy Brice, "10 things non-technical users don’t understand about your software": 1. Copy and paste, 2. The difference between web and native applications, 3. Data storage, 4. The jargon you use, 5. Right click, 6. Concurrency, 7. What changes can be reversed, 8. The need for backups, 9. That they should read the documentation, 10. Problem exists between keyboard and chair" (discussion on Hacker News)

Stu Smith writes about Ten IT Concepts That Non-IT People Don’t Get.

It's easy to take things for granted when you're familiar with them. The ten items he describes are:

1. When to Click and When to Double-Click
2. Hierarchical Folders
3. Using Add/Remove Programs
4. Installing Bundled Software Hurts
5. That There Is A Choice Of Software
6. What Updates Do
7. Software Licensing
8. What Memory (RAM) Is For
9. How To Use Networking
10. The Display Is Not The Computer

Some additional ones from the comments:

"selecting vs highlighting"
"selecting vs highlighting": This one is really technical for the layperson because it isn’t what they first think. I often make the mistake of telling people to "select" a piece of text instead of "highlight" it. To them, "select" has to do with tangible objects on the screen like pictures whereas "highlight" has to do with text selection. I probably say "select" because on Mac OS X (the OS I use) text really does act like any other object. It can be dragged and manipulated like everything else, and this behaviour is much more obvious than on Windows. I might also say it because I understand some of the mechanics behind the way applications are made and, of course, the primary language of Mac apps is (Object)ive-C.
The scrollbar:
"Why do I pull it down to make the screen go up?"

being able to run multiple simultaneous tasks, and the relationship between opened-windows and the desktop:
Many users don’t understand that computers can run multiple simultaneous tasks. Users tend to see programs (from opening to use to closing them) as a linear process they must step through properly, forward and backward. i.e. Start > All Programs > Microsoft Office > Word > now I need to get "on the Internet" > Close ("X out of") Word > Start > All Programs > Internet Explorer. Rinse and repeat.

Many people don’t realize that programs are opened in a Window on top of their desktop. I can’t recount how many times I had a small web browser window open on a 30? display only to have people say "Wow your screen is very small," only to have them change to "WOW! That is a big screen!" once I’ve pressed the maximize button.<

I find both of these concepts tie nicely together in showing that users are somehow trained to have a sort of "tunnel vision" when using programs. I think the classic desktop GUI was originally centered around completing tasks in a modal or linear fashion, discouraging people from unlocking the true powers of multitasking. I find this helps to explain why multiple (physical) monitors/displays is a great way to improve efficiency in the workplace versus concepts like "spaces" on Mac not being as effective (in a mainstream sense) as they could be.

See also the discussion on that post on Hacker News.

I'd also add
– file extensions
– why you can only have certain characters in file names
(both of which are quite understandable)

The interesting question is: what are the best ways to teach these concepts to Non-IT people?

Wednesday, September 23, 2009

"Pesuade xor Discover"

Paul Graham considers the following issue: When writing, the plain truth (as you see it) will often be offensive to people. You can try and avoid this, but it doing so means being less concise, because you have to add disclaimers and write more indirectly. Is this worth it?

Maybe not. Maybe I'm excessively attached to conciseness. I write code the same way I write essays, making pass after pass looking for anything I can cut. But I have a legitimate reason for doing this. You don't know what the ideas are until you get them down to the fewest words. The danger of the second paragraph is not merely that it's longer. It's that you start to lie to yourself. The ideas start to get mixed together with the spin you've added to get them past the readers' misconceptions. [4]

That's not even the worst danger. I think the goal of an essay should be to discover surprising things. That's my goal, at least. And most surprising means most different from what people currently believe. So writing to persuade and writing to discover are diametrically opposed. The more your conclusions disagree with readers' present beliefs, the more effort you'll have to expend on selling your ideas rather than having them. As you accelerate, this drag increases, till eventually you reach a point where 100% of your energy is devoted to overcoming it and you can't go any faster.
(my emphasis).

I fully agree about the dangers there. I think it's important to treat writing as a means to figure out your view and that only at the very end should you be concerned with issues to do with communicating it to others. I think that to do otherwise is to limit yourself - a kind of premature optimisation, and from what I know of other's writing I think they most people get into those concerns far too early - either right at the start or early on in the process. This also seems to be the way writing is taught.

Wednesday, September 16, 2009

Don't purchase any music from

[update: 15.10.09: four and a half weeks after I originally purchased the music they finally managed to make the download available to me.]
[update: 4.10.09: over three weeks since I purchased the music and I still can't access it. I've had more correspondence with Bleep: twice they've wrongly said the problem was fixed when in fact nothing had changed. Then they said there was a bug in their system. They refunded me the money then. But since I still own the copy I purchased from them, it'd be throwing my money away to go purchase it elsewhere, so I'm still effectively prevented from being able to listen to the music until they get their act together. And refunding me the money doesn't address all the wasted time and frustration I've had to go through. It was a week ago when they told me about the bug in their system, and I haven't heard from them since. If they had any decent customer service, they could easily find an alternative way to get the music to me].

I was really keen to get the Autechre album "Draft 7.30" but I couldn't find it at the shops. When I got home and looked on the internet I discovered, through the music publisher's (Warp Records) site, that you could buy it online as MP3s at

So I purchase it and went to download it. Because my internet connection at home is flaky, the download failed and failed four more times. Each time i was only able to get a tiny fragment of the entire file before it failed - the most it ever got on an attempt was 2.75MB. I went to try again and found that the download link was disabled. It didn't actually say why, but I presume this was an anti-piracy measure.

I didn't see any mention of a limit to the number of times you can download it. Maybe there was in the fine-print of the terms and conditions, but there was certainly nothing made obvious about it, and nothing mentioning it on the download page. I never saw anything there saying how many download attempts I had left, or saying that now I'd used up the number of attempts. The download button just stopped being clickable (I tried other browsers to see if it was some problem at my end, but it wasn't). There was no explanation at all.

If this is an anti-piracy measure, then it should stop people after five successful downloads. I wasn't able download the music once, I just had five quickly-failed attempts.

But then why is there a limit at all? If someone can download it once, then if they wanted to give copies to their friends they could still easily do that. If someone gave out or published their Bleep login details, so anyone could just log into the account and download the music, then this would also allow anyone to purchase more music on their credit card, so that's hardly going to happen.

So I don't see any point to a download limit anyway. All think it does is send out a message to a legitimate purchaser that does not trust them.

I then used their feedback form to send them a message explaining the situation. They say they'll try to get back to you within one working day. I bought the music on a Saturday, so that means I'd have to wait till around Tuesday morning (their time). I think this is pretty slack. Online stores are always open. If the store can take your money anytime, 24/7, then it seems a bit slack for them to only deal with customers' problems on week days.

The next day I sent them a rather more annoyed message. It's ridiculous that you can hand over money for something and be prevented from actually obtaining it. It's crazy that it is far easier to pirate music than to buy a legitimate copy.

It's now Wednesday -- four days after I purchase the music and sent them my first message explaining the problem -- and I still haven't gotten any response at all. After being screwed around like this, my advice is: don't buy music from I certainly won't be.

Thursday, September 10, 2009

How long till we can buy everything with our phones?

When will we be able to pay for everything with our mobile phones?

I'd love to be able to do that. The store person would tell you the cost, that'd flash up on your phone's screen, you could accept it and it'd all be done. You'd get an electronic recipt, and you could automatically feed the purchase into whatever software you like to keep track of your expenses, which could streamline the process of budgeting.

The potential benefits are pretty obvious, and I know there must be a lot of people working on this kind of thing, so I'm wondering what sorts of barriers there are to getting it out there. It might involve technical issues, though I suspect it might have more to do with things like cost and business models. And given that, how long might it take until the technology is out there?

Monday, September 07, 2009

Three recent 'personal transportation' inventions


A compact electric bike that can be folded up quite small. Looks like they're intending to sell them in 2010. website here

Being ridden

Being folded up

The Enicycle

A Segway-like electric unicycle - and despite what that sounds like, it actually seems quite functional.

The Contortionist

Dominic Hargreave's concept bike that can be folded up so it's not much bigger than one of its wheels

(though the process of folding it up seems a bit involved).

Here's why stuff in this space is of interest to me. So much of how we live, or can live, whether in cities, the suburbs or the countryside, is defined by the transport options available to us.

I think in cities, in particular, it could be great to have a form of transport that was quick -- something more in the scale of buses, trains, cabs and bikes, than on the scale of walking -- yet was much more ad-hoc like walking, in that you could just pick up and go, when you wanted (no waiting for it, no having to go to the place to get it), and you can go pretty directly to where you want to go (unlike a train), and once you're there there's nothing to do (no having to lock up a bike) or no big thing to lug around.

I don't think any of these things here are idea in this regard, but they're heading in that direction.

Wednesday, September 02, 2009

Monday, August 31, 2009

Demnstrating the premises of an argument is more important than demonstrating their link to the conclusion

Quick sketching....

Here's a major criticism that I think can be applied to how most arguments are made. If we say the structure of the argument is like

if A, B and C then X
my criticism is that people primarily try to justify the argument by justifying the then part.

They may make some efforts to justify the if part - to justify A, B and C, but I think mostly this is more about giving the appearance of having checked that task off than a genuine attempt to ensure they're true.

Having taken A, B and C to be the case, they argue why X should follow, and try and back that up other reasons why we should take X to be true.

The problem with this is, I think, is that A, B and C actually being the case is far more important to X being true than the line of reasoning that allows you to go from A, B and C to X.

A, B and C define a terms of reference, a picture of the world. The arguments for then X are really along the lines of "in a world where it is such that you have A, B and C, it would follow that X". And I don't think it's that hard to have distorting simplifications in your terms of reference that allow you to derive X, even if X isn't actually true.

Justifying the if part is the major task in showing that the world actually has the certain properties, and works in the particular way that, when you work out the consequences, you see that X is the case.


I think we usually think of the premises of an argument as simply facts, but really the bulk of the premise is an outlook, a framing, a kind of model of the world and the kinds of ways you can reason from facts to conclusions. Kuhn's insight about paradigms is about this kind of thing.


This is a major reason why in most arguments the parties end up talking past each other. Of course the other person's view seems wrong - they're working from different sorts of premises. If you really want to get somewhere, examine the premises.


I can't think of a forum (the popular media, books, academic papers, discussion forums, etc) where it is really considered acceptable to really look into premises, or even to look into the premises behind other people's work. Philosophy is an area where you might expect to see it, though from the stuff that I've seen it doesn't seem to happen.

I suppose blogs are one medium where, in the first place, you can get it out there, and get away with it unscathed, though I kinda doubt anyone would be that interested in reading it.

Copy-editing marks and annotations

Signal vs Noise looks at why traditional copy-editing marks are more effective than how revision changes are shown in Word's Track Changes feature.

I think Track Changes is symptomatic of a more general shortcoming of all existing software: they’re hopeless when it comes to annotations.

Most software simply has no support for adding annotations to bits of your information (in your address book, your image files, your calendar, email, etc etc.). There might be a separate ‘note’ field, but that’s nothing like being able to add real annotations, like you can do on paper.

As the linked post points out, annotations should stand out as separate from what they are annotating, but I don’t know of any existing software that gets this aspect of annotations right.

Also, with hand-written annotations you can use subtle details, like the positioning of the annotation in relation to what it applies to or the size of the annotation text, to convey information, and software annotations are poor in this regard (though it'd definitely be worth investigating how to make it better). Certainly this is one area where pen input would be useful.

Sunday, August 09, 2009

The internet is good for Vim

I think Vim is a great text editor and one that's well worth learning. But it's certainly a bit of effort to learn all the commands and get used to working in different modes. A lot of people seem to be put off by that initial frustration.

You're editing a file and there'll be something, often fairly simple, that you want to do but don't know how. And while the Vim help is quite good it can be hard to find info on the specific thing you want to do, so it’s easy to get stuck. At least that was the situation 10-15 years ago. But these days you can just put details of what you’re trying to do into Google and you’ll likely get a good answer. And the net contains a number of Vim cheatsheets.

Of all the editors, Vim probably has the largest initial hump to get over before getting to proficiency, but also one of the largest payoffs for doing so, and the internet is making it a lot easier to get over that hump. And for that reason we might see a resurgence in its use.

Monday, August 03, 2009

Mangalam's Vegetarian Moussaka

Mangalam's Vegetarian Moussaka

Tastes very nice.


  • cooking oil, 5 tablespoons
  • eggplant, 1 medium
  • onions, medium, 1, peeled and sliced
  • potatoes, 2
  • medium tomatoes, 2
  • brown lentils, 400g can
  • tomato paste, 2 tablespoons
  • mixed herbs, 1 teaspoon
  • vegetable stock powder, 1 teaspoon
  • salt and pepper to taste
  • For the sauce
    • butter, 2 tablespoons
    • plain flour, 2 tablespoons
    • mozzarella, grated, 3 tablespoons
    • milk, 1½ cups

  1. Peel and cook the potatoes

  2. Slice the eggplant and spread on a plate.
    Sprinkle eggplant with salt and leave for 15 minutes.
    Rinse and pat dry.

  3. Fry the eggplant in a little oil until brown on both sides and set aside.

  4. Heat the remaining oil and cook the onion until soft.
    Add the brown lentils (with the liquid from the can).
    Stir in the tomato paste, stock, herbs and seasonings.
    Bring to the boil.
    Cover and simmer for 5 minutes.

  5. Slice the cooked potatoes and tomatoes.

  6. Line the bottom of an oven proof dish with half the eggplant.
    Pour over half the lentil mixture and top with sliced tomatoes.

  7. Add the rest of the eggplant, lentil mixture and layer with the potatoes.

  8. Making and adding the sauce

    1. Melt the margarine, stir in the flour and gradually blend in the milk.
      Bring the sauce to the boil, stirring constantly.
      Beat in the cheese.

    2. Pour the sauce over the moussaka

  9. Bake in a moderate (180) oven for 45 minutes or until golden brown.

Thursday, July 23, 2009

How to backup Winamp song ratings and playcounts, and media library playlists

If you want to backup your Winamp song ratings and playcounts, as well as the playlists you create within the Media Library, this is how you can do it. You can back it up so you don't lose the information when you get a new computer and reinstall Winamp onto it.

I got this information from here and here

The files are in this directory:

(On Win2k/XP, %appdata% is
    C:\Documents and Settings\(username)\Application Data\
On Vista, it is

The files are:
main.dat       # ratings and play counts
main.idx # ratings and play counts index file
recent.dat # play history
recent.idx # play history index file
*.m3u8 # playlists stored in the media library
playlists.xml # list of the playlists stored in the media library

The first of the source pages also suggests some alternative strategies for saving this information.

Monday, July 06, 2009

Using a game to teach regular expressions

Quick sketching....

You could have a game to teach people regular expressions. It might even actually be fun. I don't know if anything like this has already been done (a very quick look doesn't seem to show anything like it), but here's one way it could be done.

It might be a war between alien forces. You are commanding one side.

The enemy march in a single line in from the right side of the screen, and as the commander of your side your goal is to stop their troops reaching the left side of the screen. You can send out troops from the left side to attack the right side.

There are some number of diff types of enemy troops, and at your disposal you have specialist troops, each one of which can pick of a particular type of enemy troop.

So if the front of their line of troops is a 'green' alien, you send out a 'green' soldier. your troops will always win, as long as you send out the right type.

So you could just play by sending out the right sequence of troop colours...

But then their troops start moving faster and it gets harder to take our their troops one by one.

Luckily there are patterns in the troops... the front of their line might be one green soldier, followed by five blue soldiers, ending with a red soldier

So if you can set up a single command for 'one green', 'one or more blue', 'one red'.

What i'm talking about so far is like a regular expression where you are matching specific characters; they can also match classes of characters, like 'whitespace' or 'word characters' or you can have character classes...

And the game could gently introduce the ability for the player to have such higher-level control... e.g. some of the enemy might be carrying shields... blue ones with shields, red ones with shields and so on... so your 'attack specification' could allow the player to deal with more abstract classes like this.

Ideally, the game would give the player a gentle ramp up to the sort of abstraction regular expressions afford. the player could handle things fully manually... by manually specifying the pattern to meet... and then they would appreciate the ability to handle it in a higher-level way.

The player should be rewarded by being able to take out as many enemy as possible in the one command (the one reg-ex)... the more they take out, the more spectacular it should look, and perhaps the more points they would get (if there were points).

Here's some other ideas.

I can even imagine building a 'search and replace' mechanism into the game... perhaps the 'search' pattern could be use to specify what to target and the 'replace' pattern what weapons to use on each of those targets.

In addition to the idea of a game based around the idea of regular expressions, I might be actually use them to provide powerful input mechanisms in existing sorts of games... real-time strategy games strike me as a possibility.

Sunday, June 14, 2009

Switching between windows with a directional mouse-gesture (or a map)

Here’s an idea for how a computer operating system could enable you to quickly switch between windows. The idea is that you could press a some key or key combination to indicate you wanted to switch windows, and then you could specify which window simply by shifting the mouse pointer from its current position just a little bit in the direction of the window you wanted to switch to.

The operating system would guess which window you wanted to switch to and make it flash or something. If it had the one you wanted, you could press the mouse key and that window would get the focus. I think the system would have to figure out which window was, overall, most in the direction you've gestured.

If it didn't select the one you wanted, you’d move the mouse again to try to make it clearer which window you wanted. How would this work? Imagine that you’d moved the mouse to the right to indicate a window to the right, but you the one you actually wanted was further to the right of the one the system guessed.

To indicate that other one, you could just move the mouse a bit more to the right and it’d figure out you meant the window more to the right. Whatever the subtleties an actual implementation would have to deal with, I think there’s a good chance you could figure out a workable solution.

(On windows, instead of simply pressing a key, you could press and hold down the Windows Key and move the mouse pointer and then release the key once it has seleted the one you want).

As different approach, instead of gesturing direction, pressing the ‘switch windows’ could bring up, at the place where the mouse pointer was, a small schematic map of the desktop indicating all of the windows’ locations. Mousing over a window on that map would highlight the actual window it corresponds to; clicking it would switch to that window.

Friday, June 12, 2009

More birds-with-arms (pics)

Some more photoshopped pictures of birds with added arms, thanks to the good people on the Something Awful forums.

When I see a picture of a bird now without arms, like this one, my brain is thinking "amputee":

Here they are:

Wednesday, June 10, 2009

"Photoshop Arms Onto Birds!" (pics)

Over on the Something Awful forums, Paradox86 said "It's pretty simple. A friend and I agreed that birds are pretty pissed that they don't have arms. We decided this should be fixed."

Yes, this is what the world has been needing. Pictures of birds with arms. Yet it is somehow strangely compelling - there's some pretty brilliant stuff there... here's a handful of them:

Sunday, June 07, 2009

Rough notes on getting things done

Doing an assignment, writing a book, losing weight -- whatever the task is, there's no doubt that it can be hard to get things done. Here's some rough notes -- that I'd like to clean up sometime -- on ideas to make it a bit easier.

  • Build habits. Habits have momentum, and they can suck you into a task without you trying.
  • Associate a place with a task (if you can). That's one good way to build a habit. I go to a local coffeeshop to do PhD writing. That's all I do there, and I don't go there otherwise. I find it quite useful. If it's a place you don't do any other tasks at, it's less likely to trigger habits associated with them.
  • Make the habits generic, so you can always invoke them. If you make the initial task "start writing" (start writing anything - it doesn't matter what), then this applies regardless of what you are writing or what you are writing it for.
  • Minimised the (perceived) next task. Make it easy to start.
  • Doing has momentum. Make the initial task very simple. Simply by continuing to work on it, it can gather momentum and snowball and if that happens you don't have to even think about trying to do next thing.
  • Impose non-negotiable constraints (where possible). The coffeeshop I do my PhD writing at doesn't have any internet access, so I can't stuff around on the net even if I wanted to. (I understand that many tasks require internet access - this is just an example of the general principle). I also don't have Freecell or Solitare etc installed on my computer.
  • Have others around who can see you. That's another thing I suspect is an benefit of writing in a public place... it feels harder to slack off. May not work for some sorts of tasks.
  • Be prepared for initial Suck when getting into any new sort of task / setup. Basically it’s like developing a skill - it's going to take a while to get into it.
  • Learn to recognise and acknowledge when you’re refusing to consider doing something or how to do it, and just pushing it back. and that if you can do this, this could be all that’s required to actually get your major goals done.
  • We seem to have a tendancy to try to figure things out in our heads before starting. This tends to make the task seem to big, and you just end up staring at a blank page or screen. So learn to recognise when you’re doing this.
  • Related to this, there's a tendancy to want to go into a ‘perceptual response’ mode of thinking – you get stuck. (need to do more work to explain this).
  • As a longer-term proposition, try building up desire to achieve what you want to achieve.
  • Try to have “definite critiera” (I need to do more work here to explain what I mean) -– like writing something that reads from start to finish, rather than just a bunch of notes.

Wednesday, April 08, 2009

Some interesting-looking loft-style bedroom/desk/storage units

Some interesting-looking loft-style bedroom/desk/storage units (via dornob):

Monday, April 06, 2009

Interesting persuasive technique in anti-smoking ad

The latest anti-smoking ad being shown on tv here:

As a means of persuasion, it employs an interesting technique, one that I think is pretty effective.

It tries to take on trite kind-of 'excuses'. It doesn't try to counter them by dealing directly what their content. It doesn't explicitly respond to them at all. Each one is followed by a totally separate slice of conversation from a totally separate situation.

That next slice of conversation 'responds' to the triteness by highlighting the seriousness of what is really at stake. What's interesting is how it does this. It takes the syntactical form of the trite statement "I don't think I can quit" and 'responds' with another one with a parallel form "I don't think I can operate".

Something about that parallelism makes the response a powerful smackdown. I think it must be that our brains take that similar structure as meaning the response's content consititutes a very complete and definitive response.

I'm on Twitter now

I thought I'd have a go at Twitter. I'm jamesrcole.

Saturday, April 04, 2009

What does it mean to be open-minded? (video)

What does it mean to be open-minded? I think there's a lot of confusion about this. The following animated video (10 mins) does a lot to clarify.

The video author's criticisms are perhaps a bit too direct, but I think his points are good and the graphics and animation are used well.

Friday, April 03, 2009

Antipodies map

[Update: this map, or at least a similar one, can now be found here]

If you dug a hole through to the other side of the earth, where would you end up? The web-based Antipodies map lets you find out.

Just locate your present location and it'll show exactly where the opposite side of the world is.

Tuesday, March 24, 2009

Articles on some effective newer UI techniques

Mega Drop-Down Menus - which get a big thumbs-up from Jakob Nielsen. He likens them to the ribbon found in the latest version of MS-Office.

Contextual User-Interfaces. Chris Mahon gives some examples. They let the user perform relevant actions without having to shift context. And as the user performs actions, the UI is dynamically modified to take this new context into account, so the user can perform tasks more quickly and easily.

And while I'm here I'll give another plug to Bret Victor's visionary -- and still very relevant -- paper Magic Ink: Information Software and the Graphical Interface.

"It’s easy to make something incredible."

I believe that having high standards is probably the most important thing required for becoming good at anything.

Rory thinks so too

It’s easy to make something incredible. All you do is, don’t let what you’re doing be shit.
It baffles me that people think making really, really brilliant, stupendous, worldshocking pieces of work is a particular challenge. It’s mainly a battle of endurance. The longer you try and deshit something, the less shit it is.

Monday, March 23, 2009

Minatur Wunderland - world's largest model railway

5 min video of Miniatur Wudnerland, in Hamburg, Germany -- the world’s largest model railway, and actually quite impressive.

14kms of track, 6 meter high mountains, and highly detailed scenery that also includes moving cars and boats. The whole thing cycles through day and night every 15 mins.

Thursday, March 19, 2009

British man Sean Hodgson 27 years in jail for crime he didn't commit

Recent DNA tests have shown that a British man, Sean Hodgson, spent the last 27 years in jail for a murder he did not commit, the Times Online reports.

Wednesday, March 18, 2009

Programming is always a team activity

So you've written a bit of code. As time passes and you haven't touched parts of it for a while, they'll start to fade from memory, and if you need to know them again, you'll need to refresh yourself on them.

A week after you wrote a function, you may be a bit hazy on how it works. Six months down the line you might've forgotten all of the function's details. Three years later, you might have forgotten about the existence of the entire module.

Down the line you're no longer that person who knew the details of the code. The more time since you looked at a piece of code, the more it is like you're reading someone else's code.

So the entirety of your work on that code is more like a team effort than an individual one - your current self writing code for, and collaborating with, your future selves.

With the exception of simple, throwaway programs -- this is why you should always write code for others to read, even if you're writing something that no one else will ever need to touch.

Sunday, March 15, 2009

Coworking spaces

I just came across the notion of "coworking spaces"

“Coworking is cafe-like community/collaboration space for developers, writers and independents. Or, it's like this: start with a shared office and add cafe culture.”
I'd never heard of it before - it sounds interesting. These places provide facilities like wi-fi, printing, lockers, coffee and meeting rooms.

It seems like they've sprung up all over the place (at least in the US). Here's a smattering of examples: Office Nomads (Seattle), StartPad (Seattle), CubeSpace (Portland), The Network Hub (Vancouver), thinkspace (Redmond), Work Space (Vancouver).

There's one in Melbourne - OpenHub. Didn't see any others in Australia, though apparently this (Monash Enterprise Center and Business Center) works along similar lines.

There's even some general coworking resources: a wiki and associated blog, and a group on Google Groups.

Clay Shirky: Newspapers and Thinking the Unthinkable

Clay Shirky has an excellent post on the future (or lack thereof) of newspapers. Newspapers are going away, and it'll take us some time to invent alternative venues for journalism.

What Eisenstein focused on [in The Printing Press as an Agent of Change], though, was how many historians ignored the effects of the [printing] press circa 1500. To describe life before or after the spread of print was child’s play; those dates were safely distanced from upheaval. The hard question Eisenstein’s book asks is “How did we get from the world before the printing press to the world after it? What was the revolution itself like?”

Chaotic, as it turns out. The Bible was translated into local languages; was this an educational boon or the work of the devil? Erotic novels appeared, prompting the same set of questions. Copies of Aristotle and Galen circulated widely, but direct encounter with the relevant texts revealed that the two sources clashed, tarnishing faith in the Ancients. As novelty spread, old institutions seemed exhausted while new ones seemed untrustworthy; as a result, people almost literally didn’t know what to think. If you can’t trust Aristotle, who can you trust?

During the wrenching transition to print, experiments were only revealed in retrospect to be turning points. Aldus Manutius, the Venetian printer and publisher, invented the smaller octavo volume along with italic type. What seemed like a minor change — take a book and shrink it — was in retrospect a key innovation in the democratization of the printed word, as books became cheaper, more portable, and therefore more desirable, expanding the market for all publishers, which heightened the value of literacy still further.

That is what real revolutions are like. The old stuff gets broken faster than the new stuff is put in its place. The importance of any given experiment isn’t apparent at the moment it appears; big changes stall, small changes spread. Even the revolutionaries can’t predict what will happen. Agreements on all sides that core institutions must be protected are rendered meaningless by the very people doing the agreeing. (Luther and the Church both insisted, for years, that whatever else happened, no one was talking about a schism.) Ancient social bargains, once disrupted, can neither be mended nor quickly replaced, since any such bargain takes decades to solidify.

And so it is today. When someone demands to be told how we are going to replace newspapers, they are really demanding to be told that we are not living through a revolution. They are demanding to be told that old systems won’t break before new systems are in place. They are demanding to be told that ancient social bargains aren’t in peril, that core institutions will be spared, that new methods of spreading information will improve previous practice rather than upending it. They are demanding to be lied to.

Wednesday, March 11, 2009

Not needing to name or save documents - 'Untitled Document Syndrome' & OLPC

When I'm working with a document in a text editor or word processor, I don't want to be forced to give it a filename, nor do I want to have to manually save it.

It shouldn't need a filename - it should be saved anyway. And if I'd prefer to not give it a name, I should still be able to locate it based on when it was created, last modified, and by searching for terms that I know are contained within it (and perhaps by tags I've given it).

I shouldn't have to manually save it. It should automatically save the content as I type. I don't want it to automate periodic saves, I want it to be like paper - once a change has been made it's recorded and can't accidentally be lost. The user shouldn't even need the concept of 'saving' the document.

Related to this, John Gruber has written a post Untitled Document Syndrome that argues similar points.

Also, the OLPC system seems to work in such a fashion.

Tuesday, March 10, 2009

"More Americans say they have no religion"

Yahoo news, reporting on a recent study of religion in America (other reporting):

Fifteen percent of respondents said they had no religion, an increase from 14.2 percent in 2001 and 8.2 percent in 1990, according to the American Religious Identification Survey.

Northern New England surpassed the Pacific Northwest as the least religious region, with Vermont reporting the highest share of those claiming no religion, at 34 percent. Still, the study found that the numbers of Americans with no religion rose in every state.

Monday, March 09, 2009

Richard Baraniuk's TED talk on the Connexions open-source textbooks system

18 mins

Rice University professor Richard Baraniuk explains the vision behind Connexions, his open-source, online education system. It cuts out the textbook, allowing teachers to share and modify course materials freely, anywhere in the world.

Sunday, March 08, 2009

Jokey insults and threats

A joke is something that is funny.

But then there's things that are presented in a jokey fashion but which are not really intended to be funny.

For example, you can have insults or threats presented in a jokey manner that are really statements of solidarity or respect. E.g. a lowly business person saying the following to a superior"if you could look at that brief that'd be good, otherwise I'd have to do you in", where the last bit is said in an ironic fashion. That's really a statement of respect to indicate that they're well aware of their relative positions.

The case I want to talk about, though, is statements that are presented as if they were jokes but are really just insults or threats presented in a jokey manner. That is, insults or threats passed off as jokey statements.

The jokey manner may include a wink appended to the end of a written statement -- not that you guys are likely to understand what i'm talking about ;-). Or a chuckle or giggle appended to a verbal statement. Or they might be in the form of over the top threats like "...or we'll beat you to a bloody pulp - ha ha".

These aren't actually funny and aren't intended to make the person laugh -- even if social forces may compel them to do so.

As you may have guessed, I quite dislike these sorts of statements. Even if they're only carrying a quite minor barb, there's something dishonest there. Though I don't like this term much, childish comes to mind.

Thought: program hibernation

I can hibernate my laptop so it doesn't drain the battery when I'm not using it. What if I could hibernate individual programs, like my web-browser?

I usually have scores of web-pages open in my browser, and just having it open, even if I'm not actually using it, uses the processor -- often quite a lot of it -- and drains the battery.

So I might leave the house in the afternoon to go out and do some PhD writing at a coffee shop. I won't be using the browser there, and I don't want it to drain the battery, so it'd be nice if I could hibernate it.

That'd be quicker and easier for me than manually closing it down and then manually reloading it all, and guarantee that when I bring it back up everything is in the exact same state.

Current operating systems may have quirks that wouldn't make this feasible, but of course that doesn't mean there's anything inherently impossible about the idea.

Thursday, March 05, 2009

Information hiding for flyweight code units

To make code more readable we divide it into units like functions, objects and modules. Following the principles of information hiding we give these units meaningful names that express what their function is, and supplement that with comments providing additional details.

Once a person reading the code is satisfied that those statements do what the name or description says, they can skim the code by paying attention to the names/comments but skimming the details how how the named functionality is implemented. It helps conserve precious mental resources.

There are units of code smaller than a function –- a number of lines of code within a function that togther perform a fairly coherent function like reading a file -– that you want to be able to apply the principles of information hiding to.

I’m talking about cases where separating the lines of code out into a separate function would be too heavyweight a solution – doing so wouldn’t be worth the effort and would actually decrease the code’s readability.

One difference between these and the other units of functionality is that they don’t have some sort of explicit delimiter to indicate their start and end, and this makes the task more difficult. If you put the comment at the start of the lines, does it apply only to the first line or to all of them? If there’s uncertainty you have to look at the code to resolve it, thus destroying the good information hiding properties.

If you have a convention –- that it always applies to all the lines of code till the next blank line, for example -– then you have to learn and remember the convention, and other programmers can always break it by accident or forgetfulness or from simply not knowing it. And if you want to be able to have blank lines within that set of lines of code -– which is often useful to do -– then you have to have an even more complex convention.

Here’s a code formatting idiom that provides a solution to the problem. Write a comment at the start of those lines of code that names/describes the functionality they implement, and then indent all of the lines implementing the functionality:

function X()

statement before task

// comment describing task

statement implementing task
statement implementing task

statement implementing task
statement implementing task

statement following task
statement following task

A language could go a step further and have a way to use an explicit label instead of the comment, as in:
function X()
statement before task


statement implementing task
statement implementing task

statement implementing task
statement implementing task

statement following task
statement following task

This could
  • encourage a concise description of the function being performed
  • be used for documentation purposes
  • make it easier for an editor to collapse/expand sections -- i.e. collapse the code 'contained' in the label, so it just shows the label.
  • support refactoring by having operations turn one of those sections into a full-blown function.
I don't know whether such labels would be better to have or not.

Tuesday, March 03, 2009

Thought: A Stack Overflow for finding research material in a subject area

Quick sketching:

Here's an idea for a website.

If you wanted to do some research that touches on a field you didn't know that well and wanted to find out what material -- previous research and so forth -- was relevant to your topic, it'd be useful if there was a dedicated website for asking such questions, where you could get responses from people with expertise in the field.

I'm thinking of a site designed like Stack Overflow, which can build up a refined body of knowledge.

Ideally, it'd be a exchange of information between disciplines, and between those with expertise and newcomers. It'd help research that crosses disciplinary boundaries. It could also help out students that are new to an area, or people undertaking amateur research (which I think is important). It could help academia open up a bit more. These are of course just lofty possibilities.

I imagine some people would not want to make such things easier - seeing it as somehow cheating. I don't see it that way. The idea is to help reduce the friction in undertaking research, and give people more time to focus on the more central aspects of research - finding patterns, synthesising new ideas, etc.

If there were something like this, it'd probably be good if students / academics got some amount of institutional recognition for contributing answers. Like they do for for writing papers (not saying it should be the same amount of recognition of course).

It wouldn't have to be a website, it could be the name of a tag -- like existingMaterialReq -- used in blogposts and/or Twitter to get help from the lazyweb. Probably the most important thing is simply to name and communicate this notion of a request for relevant material in an a subject area.

'The Minute Glass' alarm clock

The Minute Glass is a design concept for an alarm clock that forces you to shake it vigourously for around 30 seconds – and hopefully thus properly wake up – in order to turn the alarm off.

Monday, March 02, 2009

"Syntax highlighting" for diff

I just saw a reference to Sentdiff -- take a diff by sentence, not just by line -- over on Hacker News. I'd like to see a diff program that allows you to customise how it shows changes. Is there anything like this?

What are alternative ways to show changes? Consider Word's track changes feature, for example:

The best way to show changes, including what you want to consider as the 'units' that are being changed -- sentences, lines, etc -- really depends upon what the information in the document represents.

Perhaps you might want to show changes to a datafile with tabular or CSV structure differently to a file containing C code, for example. Or perhaps you might want to handle two different tabular-data files differently, because the types of entities they are describing are different - you parse them differently when you read them, or you think of them in some sort of different way... I feel pretty sure there's examples out there.

Think of it as like how text editors allow you to specify different syntax highlighting schemes, that colour different aspects of the documents in different ways, reflecting what the information in the document represents.

For that matter, it'd be good if a diff program could highlight syntax in exactly the same fashion as a text editor does - so if you're viewing a diff of a Java program, the document fragments it shows are shown with Java syntax highlighting.

Sunday, March 01, 2009

Jorn Barger on what Twitter is useful for

For someone who (like me) has never used Twitter, this summary of what it's useful for seems pretty insightful.

Friday, February 27, 2009

Idea: defining functions within functions

Are there any programming languages where you can define functions within other functions? I think it'd be useful - in situations like this:

function X is used, and only used, within function A. X is really just a part of A that has been broken away to better structure the code.

function A()
function X()
blah blah

blah blah
blah blah
If you defined X within A -- like at the start or end of it -- this would make the structure of the code more explicit. When you came across X you'd know straight away, and for certain, that A was the only place it was used.

The motivation for this is pretty similar to that of defining functions within objects or within modules.

Wednesday, February 25, 2009

On having lots of choices

A post on Signal vs Noise quotes Eknath Easwaran's Take Your Time—Finding Balance in a Hurried World (chapter 5):

People are subject to trifling likes and dislikes every day. There seems to be no end to the division and subdivision of taste. In India, in those days, if I wanted ice cream after a meal, I simply ordered ice cream. At most there might have been two or three flavors; often there was only one. Today I have one hundred and forty-seven varieties to choose from, and it’s not enough to want chocolate; I have to decide between possibilities like Dutch, Bittersweet, Super Fudge Wonder, and Chewy White Chocolate Macadamia. (Often I just tell the clerk, “Give me the one you like best.”) And for coffee I have to specify French Roast, Colombian, Kona, or one of a dozen other varieties. I know people whose whole day is affected when they can’t get the coffee they like, made just the way they like it. As our preferences get fractioned finer and finer like this, the range of what we can tolerate narrows to a slit—in everything, because this is a habit of the mind.
To which I added a comment
I think that’s a bit muddled.

It makes the reasonable point that you don’t always want to be presented with a bazillion choices, especially where there’s only small differences between them.

But it comes across a complaint about choice, as if it was all bad. Lots of choices is, itself, not a problem. It’s when you’re forced to deal with them at once.

Would you prefer to live in a city where there’s only three different meals you can ever have for dinner, or would you prefer to live in a city where there’s a large variety of different ethnic cuisines available?

The quote also suggests that having fine-grained preferences - wanting White Chocolate Macadamia - means inflexibility: only being satisfied by that. “As our preferences get fractioned finer and finer like this, the range of what we can tolerate narrows to a slit”.

But that’s not necessarily so. At particular times, at particular places, in particular moods, I might feel like that flavor, and at other times and places, I might want something else. We get bored and want to try new things.

And if you’ve only got a few options available, isn’t it easy to develop prejudices? We probably all know people who grew up eating one type of food and won’t dare touch food of an unfamiliar cuisine.

If you’re beyond a certain age, you’ve probably gone from growing up in a world with fewer choices to a world with many more choices. Perhaps this means we didn’t develop very good skills for handling choice. Perhaps the kids of today will manage much better? I don’t know, but this possibility seems to get overlooked.

Sunday, February 08, 2009

The Immobolised Pefectionist and the Persistent Perfectionist

Perfectionists are often portrayed as overly finicky people who can't produce anything if it isn't perfect, who thus can't get started and never get anywhere. We can call these people immobilised perfectionists.

But I think there's another meaning for 'perfectionist' that tends to get overlooked. This is the persistent perfectionist, who has really high standards - and is persistent in trying to meet them.

They appreciate that perfection is not immediate and that they won't be particularly good initially. They appreciate that it'll take a lot of practise to get really good. Because they're persistent, they won't stop trying trying to improve until they’ve met their really high standards.

Here's an example of an (otherwise good) post that treats 'perfectionism' as if it could only mean immobilised perfectionism.

Saturday, February 07, 2009

Another e.g. of seeing software only in functional terms: the claim that choice of impl language doesn't matter

I've written that IT people have a tendency to look at software only in functional terms: 1, 2 and 3.

Recently I came across a post about this (but not described in these terms) The "Any Competent Programmer" BS

In it, the author comments on the claim that "A professional team can develop quality software whatever the chosen implementation language and toolset."

He says

The claim, though, begs the question of how much it costs, in time and money, to develop that quality software using a chosen language and toolset. And whether a different choice could lead to quality software being developed faster and more cheaply, thereby encouraging the creation of even more quality software.
And he also points out that that claim is analogous to the "Any competent programmer can write good code in any language" trope.

Tuesday, January 13, 2009

Anand Agarawala's BumpTop desktop user-interface (video)

I think this has promise

Here's what it looks like:

And here's a 4 1/2 min video demonstration:

TED page for this demonstration

Sunday, January 11, 2009

Monday, January 05, 2009

Time management and balancing energy levels

Time management is a big issue for many of us. I've spent a fair bit of time trying to get better at it.

I read Covey and Merrill's First Things First, which I thought was pretty solid, if perhaps a bit abstract and heavyweight. Probably it's main point is that you have to focus on what counts rather than what is urgent.

(I've also heard quite good things about David Allen's Getting Things Done, though I haven't read it.)

I'd say I'm not bad at it now, but I realised that I'm lacking a good understanding of something that is crucial to time management - balancing your energy levels. You can easily get worn out and not be very productive. So you need to take time out to refresh and recuperate.

That's pretty obvious. But isn't so obvious how to, in practice, actually do it effectively. So yes, if you rush through things that can drain your energy, but then if you're totally relaxed and take as much time as you want, you won't be so productive - so the question is, where is the sweet spot?

Or take exercise as an example. They say that exercise gives you more energy. But how much exercise should you do? (And are some types of exercise more effective in this regard than others?) What is the sweet spot, so you end up having the most amount of productive time for getting things done?

The key point is that you really need to have a good understanding of the factors that effect your energy levels, and how they do so, and how much they do so, so that you can effectively manage them.

Of course, the details would vary from person to person but I suspect there's enough common ground there to at least weed out common, and ineffective, misconceptions about balancing energy levels. If there's not a book on this already -- and I haven't seen one -- there's an opportunity for one to be written. Ditto for personal consultants on this -- like a type of personal trainer for managing your energy levels.