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 Bleep.com

[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 Bleep.com.

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 Bleep.com 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 Bleep.com. 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

YikeBike

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.

Ingredients

  • 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

Method
  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:

%appdata%\Winamp\Plugins\ml
(On Win2k/XP, %appdata% is
    C:\Documents and Settings\(username)\Application Data\
On Vista, it is
    C:\Users\(username)\AppData\Roaming\)


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.