Saturday, March 17, 2007

Getting better response to your e-mails

People don't read. This is especially true for e-mail. People often check their mail in between other activities and will not take the time to properly read what you've written — especially if you want something from them. So here are some little psychological tricks to make your e-mails more effective. (This applies to some other things, like forum posts, as well.) I'm not sure how much of this I figured out myself, but in my experience these techniques work.

First, and this may seem very obvious, be very clear on what you want. If I receive an e-mail that is vague about the precise answer or action expected from me, I'll happily ignore it — less work for me! Here's a real-life example:

I used to be able to access your website from my mobile phone. Now this no longer works. Have you changed anything?

My response:

Not that I know of, and I should know if anything had changed.

Does that make me a bastard for not helping him? Doesn't matter, the point is that you don't want to be the person on the other side of this conversation. He could have written instead:

I used to be able to access your website from my mobile phone. Now this no longer works. Do you have any idea what could cause this problem?

This would force me to think about this problem and come up with some possible causes and solutions. (Yes, I could also have answered that with a simple “yes” or “no”, but I'm not that big a bastard.)

You may know that the first and last sentences of a paragraph are the most important. In my experience, it mostly comes down to the last one, and the last sentence in your e-mail in particular. This is the sentence that keeps on ringing in people's heads after they read (or even skimmed!) your mail. So make sure the last sentence counts.

If you need a piece of information from someone, or you need someone to do something for you, start your e-mail in whatever way you wish. You'll probably want to explain what you need and why. People will refer back to this when answering your mail. But if you want to avoid that your e-mail ends up marked as ‘read’ and forgotten, remember to always finish the e-mail with a concrete question. For example, would you feel more inclided to respond to this:

You showed part of a movie on YouTube in your presentation, but I cannot find it. But your presentation was great! I really loved the very visual way in which you presented this matter.

or to this:

Your presentation was great! I really loved the very visual way in which you presented this matter. You also showed part of a YouTube movie, but I cannot find it. Could you please send me the URL?

If your mail is a reply in a thread where you've asked the question before, it can be a good idea to restate the question.

If you want to ask multiple things, you cannot all put them in the last sentence. Put multiple items into a list, either bulleted or (preferably) numbered. In this way, it becomes very hard for someone to (consciously or unconsciously) ignore one of the items. Not so long ago, I wrote something like:

You could send me a file containing a test case, saved from the program. […] I would also like to know from Ben what can be improved on the export function. […]

I never got a reply. This could better be formulated as:

    […]
  1. Could you please save a file from the program and send it to me?
  2. Could you please ask Ben what he thinks can be improved on the export function?

Observing these simple rules in the e-mails you send can make your life just a little bit easier.

Saturday, March 10, 2007

The Coffee Paradox

Apparently, the phrase “coffee paradox” is used in economics to mean something like coffee trade making rich, coffee-consuming countries richer while poor, coffee-producing countries get poorer. I'm not sure I got that exactly right, and it doesn't matter anyway, because it's not what I mean when I use the phrase.

The more down-to-earth variety of Coffee Paradox is this: if you get up in the morning, but are only physically awake and need coffee to get your mind going, how is coffee ever going to happen? And yet it happens. Yet we manage to complete this huge amount of mind-bogglingly difficult steps, and usually in the right order too: filling the coffee pot with water (“How much water again? There are no lines on this damn thing.”), pouring the water into the water tank (into it), putting the pot back in its place (making sure it is in just the right place), putting in a filter (possibly needing to throw out the old one), putting the coffee into the filter (how many spoons again?), closing all necessary lids and doors and hitting the switch. It really is paradoxical that we can accomplish this while we've only been awake for a minute or so. (Americans would probably go to a Starbucks. By car. Which leads to the so-called Driving to Starbucks Paradox.)

For a long time, I though I was the inventor of the phrase Coffee Paradox. I was pleased to see it appear on a web forum, written by someone I know in real life. It's really cool if your inventions go viral.

But today, when I mentioned this among some friends, someone else also claimed to be the inventor of the Coffee Paradox. And someone else else said that someone else else else (hm, perhaps I should've named them) had been using the phrase for many years, before I had ever made a pot of coffee myself.

So it's possible that I heard about the Coffee Paradox from someone else else else, forgot about it, and came up with it later thinking it was my own invention.

In science, there's also the problem of not knowing where something came from. They have a solution for it. If you state something, clearly indicate whether it is your own, and if not, give a reference. We should genetically enhance our brains to do the same. That would get rid of this nasty Coffee Paradox Paradox.

Wednesday, March 7, 2007

Workrave: more than an RSI prevention tool

Workrave is a little program (for Linux as well as Windows) that aims to prevent RSI. With its default settings, it encourages you to take a 30-second “micro-break” every 3 minutes and a 10-minute “rest break” every 45 minutes. It also implements a “daily limit” of 4 hours. The breaks themselves do not count for these times, nor does time that you're not using the computer — in fact, if you do not touch the mouse and keyboard for long enough this will count as a break and reset the timer.

I've been using Workrave ever since I felt a strange kind of pain in my wrists and elbows. As a computer science student whose main hobbies also involve computers, I cannot afford problems with RSI. Not that I really feel scared of it, but I know that I should. Not being able to use a computer would drastically change my life. Oh wait, I don't have one. Never mind.

The following experiences come mainly from days of programming, i.e. writing actual source code. Note that this is very different from, for example, the work of a typist, who hammers away at the keyboard all the time, or a Photoshop artist, who uses the mouse a lot but also switches to the keyboard for shortcuts.

The first thing I noticed was that a daily limit of 4 hours is plenty for a full workday of coding. This may sound odd, but apparently I spend at least another 4 hours just looking at the code, or just thinking without looking at the screen at all. This goes to show that coding is a difficult business indeed.

The second thing I noticed came as a surprise. You might think that a tool like Workrave is bad for your productivity. I can say from experience that the opposite is true. Because a break is always just around the corner, you do your best to do as much as possible in the little time you have left. It is easier not to get distracted because you know you can allow yourself to be distracted in just a few minutes.

Thirdly, a break brings about a change in perspective. During the breaks, especially the micro-breaks, my mind shifts from the gory one-line-at-a-time perspective to a higher level of the work: the entire function, class, namespace or program architecture. It is very refreshing to look at your work in this way. I see problems that I would otherwise have noticed only later, when they would need fixing instead of preventing. Or I would not have noticed them at all. I'm quite sure that using Workrave improved the quality of my code.

Fourth, what is a 10-minute rest break good for? It's one of those little time slots that you can fill with one of those infinitely many little things that need doing. Make a phone call, clean out your wastebasket, tidy your desk... there are always these little things to do, and rest breaks encourage you to do them. But just as often I end up pouring lots and lots of tea into me, which is not bad either.

I heard from several people that they have similar experiences with the program. So, whether or not you ever had any RSI symptoms: if you do any kind of work at the computer that involves thinking, you really should give Workrave a try.

I just have time to read over this post once more before my rest break. Then I'll have a nice cup of tea.

Tuesday, March 6, 2007

Redefining a movie's "realism"

Many people have an aversion against science fiction “because it's not realistic”. For them, a movie (I'll stick to movies and tv series here, but this applies to any story) has to be consistent with the real world. If there are any space ships, lightsabers, monsters or elves the movie “does not make sense” and they quit. Let's call this kind of consistency external consistency.

Internal consistency is then consistency with the universe of the story. It's okay that Jedi have sword-like things while the rest of the universe use guns, because a lightsaber is clearly more useful for a Jedi. It is not okay if a movie pretends to be set in the here and now but, say, planes keep landing during a bomb threat on an airport.

Whether or not something is internally consistent also depends on how seriously the story takes itself. In Star Trek, for example, the transporter needs to break down, be jammed, be out of power or be stolen by the Ferengi every other episode, or they could just have beamed out of every dangerous situation. If the transporter was still online this would violate internal consistency. Doctor Who, on the other hand, often ridicules itself and clearly takes itself a lot less seriously. As a result pretty absurd things can happen without anyone caring: the story is itself a bit of a joke.

I don't care one bit whether a story is externally consistent. I like (some) science fiction and fantasy as much as anything else. But when a story is internally inconsistent, I start to dislike it pretty quickly.

This happend a few weeks ago when I saw Spielberg's “Close Encounters of the Third Kind”. Although it's not realistic that aliens would come to visit the Earth, I don't mind that. It's perfectly consistent with a story of, well, aliens coming to visit the Earth. The first thing that disappointed me, though, was UFO's being chased by police cars. What would you do if you were a UFO pilot, being able to move freely in all three dimensions, and you were chased by a police car on a road, being able to move only in one dimension? Saying that aliens are stupid doesn't cut it, because they clearly have the ability to build space ships. Also, if you're an alien race, trying to make contact, how can you have learned how latitude and longtitude work but not be able to say “Hello World”? And if you're a benevolent race, would you really kidnap people, shift them through time and throw them out nearly half a century later? All that does not make sense internally and made the movie quite disappointing for me. (Apart from all the strange things that are left entirely unexplained, but seem to be there only for the sake of overall strangeness.)

Of course this is not the only factor by which I judge movies. I don't mind a little bit of internal inconsistency here and there. I really did enjoy Casino Royale.

Monday, March 5, 2007

Why Vista file tagging has to suck

Windows Vista has the possibility to add tags (labels) to files, much like Gmail and nearly all photo management programs, for example. Gina Trapani on Lifehacker has written a nice article on how to use this feature.

However, you cannot tag each and every file: the file type has to support metadata. So you can tag Office documents, JPEG files, MP3s, but forget about tagging, say, txt files, TeX files, source code, or even files that do support tagging but are not supported by Vista (I suppose it is possible to add extra types through plugins, though).

I agree that this is a severe limitation, but I understand the decision and agree with Microsoft that this is the best way to do it. There are basically five options to implement file tagging:

  1. Store metadata in the file system. WinFS would support this, but this new filesystem (oh, sorry, “future storage”) was eventually dropped from Longhorn. But, in fact, NTFS also supports tagging, and in fact Windows XP already has an interface for this, but it seems that many people don't know this.
    However, you would only be able to tag files residing on certain filesystems, which would trash the tags if the file is copied to a USB drive (FAT32), a cd or dvd, uploaded, e-mailed, zipped, stored in Subversion, placed on a Novell or Samba network share, backed up, etcetera, etcetera. Vista could issue a warning if a copy or move action would destroy the metadata, but these warnings would be annoying, and also confusing to users who have never used the tagging to begin with.
  2. Store metadata in a database per filesystem. You would need one database per volume, let's say c:\metadata.dat. This would of course be a hidden and system file, so it would not get in the way.
    This approach has the advantage of working on every filesystem, including USB drives and network shares, but still wouldn't work if you zip or e-mail a file or burn it to a dvd. As long as the web, e-mail, cds and dvds don't support external metadata, we cannot ever expect this to be possible. With “we” I mean “we software developers”: the average user will be expecting his metadata to be retained!
    Also, this option has some implementation issues that need a lot of thought: the central database will get big, so you'll probably want some sort of caching, but in these mobile and Plug'n'Play days the OS cannot rely on a filesystem being available all the time. They could probably work something out, but it wouldn't be perfect in all situations.
    Moreover, what if the file is moved, changed or removed by a system that does not understand the metadata file? The database would get out of synch with the actual contents of the files and the filesystem, and things would basically become a mess.
  3. Store metadata in a database per directory. Like the desktop.ini files used to store folder settings, a metadata.dat file could be added to every folder that contains tagged files.
    This approach has the same advantages and drawbacks of the previous one.
  4. Store metadata in a file per file. When you save a file named index.html from Internet Explorer, it creates a directory index.html_files containing all dependencies of the HTML file (images, style sheets, Javascripts etc.). Windows treats the HTML file and its associated directory as a unit, based on their filenames. Something similar could be done for metadata: for every file.ext, add a hidden and system file named file.ext_metadata that is always copied and moved along with the file.
    As long as you use Vista's Explorer to copy and move files along, this will be fine. But again, even when working only under Vista, some programs will still drop metadata without notice: think of cd burning tools, backup tools or compression tools. All these applications would need to be updated for Vista, which will take time.
  5. Store metadata in the files themselves. This is the most localized approach, and it is the one that Microsoft decided to use.
    Its one big advantage over the previous methods is that metadata will never, ever get lost in a file transfer. If you tag a file, it will remain tagged for the rest of its life, no matter if you zip it, export it to punch cards, or send it to Jupiter and back. But... only some types of files can be tagged.

All solutions above will confuse users at a certain point. People will inevitably start to rely on tagging features, so we shouldn't treat tags as an ‘extra’ which can be discarded lightly. The first four options will allow you to tag anything (including directories, incidentally), or at least anything on certain filesystems. But using this approach, the tags may get lost in mysterious ways that the average user won't understand. Tags getting lost will lead to a lot of very unhappy people. And I haven't even started on the lock-in that results if the tag database format is not open.

On the other hand, some users (myself included) will not be very happy if they are only allowed to tag certain files but not others. Many people will not understand the technical reasons for this. But if we consider that the “average user” uses her computer for office work, digital photography or a music collection, we see that these kinds of files are all taggable, and she may never even notice this limitation.

In short, I'd rather be safe but a bit limited, than randomly and unexpectedly losing my tags. Software should treat the user's data as the most precious thing on Earth.

Sunday, March 4, 2007

Why I started blogging

After toying with the idea for a while, wondering whether I had time for it, whether I'd have anything I'd like to write, whether I'd have anything people would like to read, whether I'd be disciplined enough to keep it up, whether people I know would think better or worse of me for it, I finally decided to start a blog.

There are a couple of reasons why I started blogging. In order of decreasing importance:

  1. Writing means thinking. If there's something I need to think about, I find it a great help to write about it. It forces me to turn my thoughts from a messy pile of stuff into a coherent, logical whole. But even though I know this, it feels odd to write things that nobody will ever read, so a blog should help me out.
  2. I like to write. Writing comes naturally to me. I just take a thought and put it on the screen, creating a coherent story out of it (or so I think) without much effort. Often when I work together with someone on a report, and we decide to split it up and each write half of it, I finish my part when the other person has just finished the second paragraph. Before I decided I wanted to become an astronaut (around the age of 10) I always wanted to be a writer. I still wouldn't mind. (But I'd also like to visit the moon some day!)
  3. I want to practice writing. Even though I don't think I'm a bad writer, my writing can definitely be improved. Great bloggers have a very convincing style of writing, possessing the almost magical ability to implant their opinions into your head as if you'd never thought otherwise. This is a very useful skill, that I want to develop. The ability to get your point across clearly and convincingly is very handy in real-life conversations, too.
  4. I want to share things with the world. You may have noticed that the first three reasons are all selfish ones. A desire to share things is not the main reason for me to blog. I write mostly for myself, and it doesn't really matter to me how many people read it or agree with me. But sometimes I think “hey, that's an interesting thought!” – you know, these kind of random things that suddenly hit you – and I don't want that thought to get lost. Or sometimes the thoughts are less random, and I really have an insight that I feel could be useful to someone else.

The title of this blog, “The Typethinker”, reflects the first reason above: typing as a way of thinking. I like the alliteration in “The Typethinker”, especially because T is the first letter of my name. I meant to call it “Writethink”, in proper Newspeak, but too many other things with that name or similar names exist. Also, “Writethink” or “The Writethinker” is a bit more awkward to pronounce, especially for non-native speakers like me. I like the Newspeak connotation though, because Newspeak was designed to do just the opposite of me: using language to prevent thought instead of facilitating it. With a Newspeak title, my blog would be rebellious! “The Typethinker” could still be Newspeak, but less obviously so.

I don't know where this blog is headed. Most successful blogs have a central theme. Most unsuccessful blogs also have a central theme, but it is something that nobody except a handful of people cares about: the blog's author him-/herself. The same is true for me at the moment, but as implied before, I don't care about becoming successful. For now I'll just type out whatever occurs to me. If I discover that there is some consistent recurring theme that I can keep writing about, I might focus my blogging on that. Only the future can tell.