2007-05-30

Silly bug in Gmail

Not long ago I wrote about how much I love GMail and about a particular feature that I like. Well, today's post is about a bug in GMail which just feels outright silly.

GMail has this feature that you can use it to handle other email accounts. It goes like this: you set your other email account to forward it to your GMail address. Then you can tell GMail that you want to be able to send emails using that email account. In order not to enable fraud or any wrongful impersonation GMail sends out a confirmation email to the address you want to use and if it comes back properly then you can click on a link which enables you to use the other email address when sending emails from GMail. Pretty straightforward.

The other day I was going to add another email address to my GMail account just as I described above. This is where I bumped into the bug. When GMail sent out a confirmation email it didn't come back. I thought that was odd and sent another one. It too seemed to disappear somewhere on the internet. Since this address wasn't very important to me I just left it alone and went to work on other stuff.

The surprise came when I opened the spam box to weed out the false positives (something which I get at least once a week). Lo and behold, there were the two confirmation emails sent out by GMail before.

Excuse me but this just seems silly? Sure I can see that the email has to go through the spam filter. But there are many good techniques for creating a little back door in the filter such that you can make sure the confirmation emails always goes through. This just shouldn't happen.

Well, I've reported it to the Gmail team. I hope they get around to fixing it soon.

2007-05-10

Gravity Waves

The following video is an awesome time lapse showing gravity waves in the clouds.

When I first read that the video showed gravity waves I thought it was those pretty much undetectable waves generated by gravitons. But I can't say I was disappointed to see this magnificent display of rolling clouds. I hadn't heard the name "gravity wave" before but I'll be sure to keep it in mind. Oh, what I wish that I could watch these clouds in real life. Another form of wavy clouds that I really wish to see is Kelvin-Helmholtz wave clouds.

2007-05-04

Memorable Defences

So it turns out I survived my PhD defense. It was held on Match 23, a month and a half ago roughly. I must say it went very smoothly, almost too smoothly perhaps. The opponent was Jakob Rehof.

I should perhaps say something about they way defenses work here in Sweden. They're always public, anyone can come and listen. There is an opponent who is an expert in the field and who asks most of the questions. Then there is a grading committee, usually consisting of three people, with varying degree of expertise in the field. My committee consisted of Fritz Henglein, Kostis Sagonas and Sibylle Schupp. They also get to ask questions, after the opponent is done. Lastly, anyone in the audience can ask questions to the defendant. After the defense the grading committee will meet and decide whether to pass or fail the candidate. They always pass. Some of you might think that I'm joking here but I'm not, in Sweden they always pass. The reason is that if the PhD candidate might not pass then the opponent should say so before the defense, not after. So once the opponent has agreed to having the defense you know you're going to pass.

Having had my own defense got me thinking about all the defenses I've attended through the years and I thought I'd give a little tour of the ones that I particularly remember.

The First Defense I attended I think was for my cousin Åke Wallin who did his PhD in the area of neuro-psychology. He studied the episodic memory of very old people, in their 80's or 90's. Studying such old people is rather unique, there are very few places in the world were there are large enough groups of old people to make experiments statistically valid. Stockholm is one of those places and is where he conducted his research.

The First Computer Science Defense I attended was that of Urban Boquist. He had written a whole program optimizing compiler for Haskell. I found his thesis a very exciting read, it's really well written and has lots of cool optimization described in a very clear and concrete way. Very appealing. A guy call John Meacham also found this appealing and has taken the ideas from Urban's thesis and put them into a publicly available Haskell compiler called JHC. John has also made sure that you can order Urban's thesis online.

The Best Defense is without a doubt that of Johan Agat. Johan worked in the area of computer security and studies timing leaks. He pioneered the technique of cross-copying to pad programs to eliminate timing leaks. The reason I found is defense so good is two-fold. First, the opponent, Jens Palsberg, gave an exemplary introductory explanation to Johan's work. Everyone understood it. It was as clear an explanation I have ever seen. Normally on these occasions it can be hard, even for other computer scientists who are not experts to follow these explanations. Second, Johan did an amazing job at answering all the questions he had. Even hard, deep question he had very good and well thought through answer to. Very impressive. For these two reasons I find this defense the best I've ever attended.

The Most Pathetic Defense was that of Koen Claessen. If you know about Koen you know that he's an extremely good researcher and his work during his PhD was no different. In fact, it was exemplary. Which is why the opponent and the grading committee really didn't have anything to ask about. It was all just praises from their side, no criticism or hard question. So it wasn't much of a defense, more like an appraisal. Hmmmm.

The Longest Defense goes to Karol Ostrovsky. The poor guy. It seems his opponent and grading committee wasn't properly informed of the standard procedures here in Sweden. Normally a defense take around two hours. Karol's must gone on for like four hours or so. And since it started at 10 am and going well past lunch there weren't many people left in the auditorium the last hours. I didn't stay either, I simply had to get some lunch. But eventually Karol also became a doctor.

The Most Nerve Wracking Defense was obvious that of my own. But as I said, it all went very well in the end.

2007-05-02

Quarter Finals

The quarter finals are under way in the snooker world championship in Sheffield. All the players that are left are all good candidates for the trophy. Well, there's at least one match that seems decided, Murphy has a really long way to go if he wants to beat Matthew Stevens. But still, there's a lot of good players in very good shape.

I'm tempted to make some guesses as to how this is going to end. But given that the candidates that I flagged for earlier are both out I probably shouldn't. Although it gives me some comfort that I did a little better that the Swedish commentator on Eurosport: he guessed Marco Fu and Ding Junhui in one of the semifinals, both of which were eliminated in the first round. Sure, I hope for Ronnie O'Sullivan, but Higgins is looking mighty good right now and may just prove to be too difficult. I'm also very impressed by Selby and Stevens. In the end, this is going to be a very tough championship to win.

I've had a bit of an insight about snooker while watching it during the last week. I'm really impressed by the mental strength of the players on the tour. They just never give up. Even when they need several fouls to beat their opponent in a frame they keep going. Likewise many players keep playing very well and fight hard even when their chances to win a match is pretty much zero. You don't see this kind of morale in many other sports.

2007-04-26

The Principles of Pool and Billiards

In these days of intense Snooker watching I went looking for some information about the physics behind it. I've been doing some fiddling myself but I wanted to see if there was some more material which fleshed it out in more detail. And I struck gold indeed. The pearl of a web site that I found is this: The Illustrated Principles of Pool and Billiards. The web page is the online resource to a book written by an associate professor in mechanical engineering. But while most online resources to books usually don't contain that much material this one is absolutely packed with stuff. For instance is seems that all the formulas and their derivation from the book can be found on the web page. This includes stuff like Relationship between the amount of throw and cut angle. But the real fun is in the supplementary material not found in the book. Here he goes into explaining things like spin and other fun phenomena. Make sure to check out the "Post-impact cue ball trajectory for any cut angle, speed, and spin" derivation for instance. Now I got some nice reading in the breaks in the snooker matches.

Release Me

Saab has made a commercial which has turned out to be very popular. The thing that really sticks out is the music. It's a song called "Release Me" by a Swedish band called Laura. I hadn't heard of them before but apparently they've had an enormous boost from having their song in the commercial. As it turns out "Release Me" is currently the no. 1 selling song on the Swedish iTunes Music Store.

Like everyone else I also like the commercial but I don't think the song in it's entirety is as good as the special version they made for the commercial. It's still OK though.

2007-04-22

Snooker World Championship

Ah. It's that time of the year again. The World Championship in Snooker, which means many ours a day in front of the TV.

Actually it already started yesterday and with one of the favorites being eliminated immediately. Graeme Dott, the defending champion and ranked no. 1 on the provisional world ranking lost against Ian McCulloch. It's clear that the pressure was too much to handle for Dott; McCulloch didn't win because played particularly good, he just had a lot of luck and could benefit from the fact that Dott's nervousness made him unable to pot. And so the curse is still unbroken: no-one has ever defended the world championship title when they won it the first time.

So who's going to win? It's harder than ever to predict winners in snooker tournaments but that makes it even more interesting to try. One player that has stood out this year is Neil Robertson, Australia's young snooker wiz. He's already won two tournaments this year, a feat in itself these days. I think he will make it quite far.

Another player which always plays well is Ken Doherty, Ireland's no.1 sportsman ever. He never has these slumps of bad snooker that some of the other top player has and so you always have to take him into account. Doherty plays a very graceful snooker and it would be good to see him make it far in the tournament. He has won the World Championship once before.

A lot of people has put money on Ding Junhui, the extremely talented Chinese teenager. However, his odds went down dramatically when it was revealed whom he was going to play in the first round: Ronnie O'Sullivan. That match is currently in a break and will finish tomorrow, but so far is seems that O'Sullivan is giving Ding the same treatment as in the Masters Final. Ronnie O'Sullivan currently has a 8 to 1 lead where they play first to 10. So I think we can safely rule out Ding Junhui from this years World Championship. It's actually been kind of sad to see him after the Masters Final. He hasn't been himself and hasn't played very well every since then. It seems he hasn't been able to recover from the total knockout he got from his idol. And things are not going to get better if he gets the same treatment in this tournament. I hope that he can pull himself together over the summer break and come back to the extremely fine snooker that he is able to play in his best moments.

What about Ronnie O'Sullivan then? He should surely be a favorite to win. Yes, he's always a favorite in every tournament but I don't have very big hopes despite his brilliant play against Ding. He has this problem of maintaining his good play throughout a whole tournament. Sometimes it seems as if he just can't motivate himself to play good snooker, especially against players that are not among the top ten. It's like it takes a real challenge for him to even bother. So, while I think that Ronnie O'Sullivan is the best snooker player in the world I'm also aware of his shortcomings. But I'll be happy to be proven wrong.

There are of course a couple of other players that are good contenders. Stephen Hendry, Peter Ebdon, Mark Selby, Shaun Murphy and Matthew Stevens are some of those to look out for. But the names I mentioned above are those that I wanted to comment on. It's going to be an exciting couple of weeks.

2007-04-13

One of the things I like about gmail

I've been using Gmail now for longer than I can remember. And I still think that it's the best email solution out there, all things considered. Today I just want to write a few words about one of those little things that took me a long time to notice but which Gmail gets right. Please bare with me here, it's going to take a little while to explain all the background behind this.

Most email clients have a split view. One part of the screen shows a list of messages in the current mail box, typically the inbox. The other part shows the contents of the currently highlighted mail. Gmail does this differently. It starts out by showing only a list of messages (or conversation in Gmail lingo). When you select one of the conversations it changes view to only show that particular conversation.

When I use Gmail I mostly use the keyboard. To facilitate this Gmail has a little cursor which can be moved up and down between the conversations in the list view. When the cursor points at a specific conversation one can for instance open it, to see the actual conversation. When going back from the conversation to the list view the cursor still points at the conversation which we looked at last.

When viewing a conversation one can choose to archive it. If you started out from the inbox then that will mean that the conversation is removed from the inbox and Gmail switches back from the conversation view back the viewing the inbox. Now, here's the thing: since the conversation that we just looked at is removed, which conversation should the cursor now point to? It seems that there is no obvious right answer here. We could choose to point to the conversation above or to the one below, but any of those choices are bound to be wrong half of the time.

The way Gmail seems to do this is that it remembers the last two conversations that I looked at. If the second one I looked at is below the first then it will make the cursor point to the conversation below. Otherwise to the conversation above. For me this scheme works incredibly well! It does the right thing at least 90% of the time. I'm just so amazed at the fact that they've obviously given this very small detail a lot of thought and come up with an incredibly useful solution.

As always, hats off for Google.

Amazon embarrasing itself

I've complained before about Amazon's book recommendations that I get via email. But today's recommendation just totally baffles me.

Yesterday (or the day before, I forget) I pre-ordered "The Children of Hurin", the new Tolkien book from Amazon.co.uk. Today I get an email recommending this book to me and telling me what a great deal I can make if I pre-order it from Amazon. Well, doh!

2007-03-15

The Cloud Appreciation Society

I'm happy to announce that I am, as of a couple of days ago, a proud member of the Cloud Appreciation Society. More specifically I'm member no. 7719. I've had a thing for clouds for quite a while and once I leaned about the society I applied for membership right away. Those of you who've read my blog before will not be surprised by this as I have occasionally written about clouds and had some pictures here.

Even if you're not a big cloud fan I can still recommend the web site. The founder, Gavin Pretor-Pinney, is a guy with a lot of humor and he's a very good writer. Furthermore there are a lot of awesome pictures.

How did found out about this club? Sometimes coincidences work together it seems. Not so long ago my wife and I had our honeymoon which we spent in Dublin. As we both have a soft spot for books we went to a couple of book stores. One of the book stores had a popular science shelf which I browsed and found a book that seemed interesting. It was called the The Cloudspotter's Guide by a certain Gavin Pretor-Pinney. I didn't start reading it right away but I noticed that there was a URL in the book to the Cloud Appreciation Society and so I made sure to visit the website. And I was hooked.

As for the book, I've just started reading it. And I must say that it's absolutely delightful. As I wrote above, Mr. Pretor-Pinney is a very skilled writer and with a lot of humor and passion he writes about clouds and his love for them. He describes each kind of cloud in turn, but the book is so much more than a dry catalog of cloud varieties. He mixes the description with colorful stories from other books, actual event relating to clouds and various odd trivia. One example is that he retells the account of the only person who has fallen through a Cumulonimbus (you know, the one with a lot of rain, thunder and lightning) and survived to tell the story. A truly fascinating account.

I have a bunch of other books about clouds but none of them can compare in any way with The Cloudspotter's Guide. The Book of Clouds has a lot of nice pictures but that's essentially it. It's very thin on details and doesn't have the same passion about it. The Invention of Clouds on the other hand is very heavy on details, to the point where I almost lost my interest. And that's a bit worrying given that I'm such a cloud fan. The Cloudspotter's Guide really comes out on top of both these books. The only thing that it isn't so strong on is beautiful pictures. It's not that it doesn't have them, it's that they're not so many. But on the other hand, I don't really need pictures of clouds in a book. The whole point is that I can go outside whenever I want and take a look at the real thing. So the lack of pictures isn't really a problem.

So, finally I would like to do my job as a member of the Cloud Appreciation Society and urge you, my reader, to Look up, marvel at the ephemeral beauty, and live life with your head in the clouds!

2007-02-28

A Crazy Period of my Life

I haven't been bloggin for over a month now. So I just want to write a couple of words about why that is. The reason is simple, it's been maybe the most hectic and also exciting month of my life.

To begin with I had a deadline two weeks ago. I had to send my thesis in to print. Which meant I had some pretty crazy weeks finishing it. It was really intense but I managed to send it in on time and it was a great relief. I spent a couple of days after that just staying at home watching snooker.

But I couldn't rest for too long. Coming up was out wedding. Even though we had everything planned in good time before there was a crazy amount of work to do the days just before. All the practical work has to be done like decorating the church and the place where the party was held. But it all went well and we had a wonderful wedding last Saturday.

Back to work on Monday, the day before yesterday. The thesis had been printed and I had to distribute it to all the relevant parties. It's not very complicated work but it takes time, especially since the printer had forgot to print the announcement leaflet which has to be distributed with every thesis. A funny detail about the whole distribution thing is that the first person to receive a copy was actually Simon Peyton Jones. He happens to be visiting our department and I just happened to walk by a room where he and Koen Claessen where working. Koen wanted me to come in to congratulate me for the wedding and the thesis and Simon demanded he got a copy of my thesis which I was happy to give to him.

Today, we're off to our honeymoon. It's really exciting. The destination is still secret but it's a place we're I've never been before and I'm really looking forward to going there. And of course spend time with my new wife.

So, it's been some crazy couple of weeks in my life. I will do some more blogging once I get back and life is a little more normal.

2007-01-22

The Reason for Blogging

I regularly hang out at programming.reddit.com. It's a news site for programmers where visitors can vote up and down the news articles. I like it because it is geared towards programming language discussion rather than only focusing on how to use the most mainstream languages.

Mark my surprise when I found one of my own blog posts featured on the first page. It was the post from a couple of weeks back on Programming Productivity and Programming Languages. I was very flattered that people had found it interesting enough to post it on reddit in the first place and furthermore that it got enough positive votes to make it into the front page.

Of course I was eager to see the comments so I immediately open the comments page. What I found there was comments like the following:


These sorts of articles aren't very useful. Lots of vague, unsubstantiated claims, especially when claims like

All those features such as purity, closures, powerful type system, laziness and STM which makes programming in the large easier come together very nicely in Haskell.

are made.

and
I agree. It's ideological rubbish. Maybe the author should argue with guys like this

http://wagerlabs.com/2006/01/01/haskell-vs-erlang-reloaded

instead of deducing the productivity of a PL from its feature matrix.

I agree with these comments. The claims I made in my post were very much unsubstantiated and they were all ideologically motivated. Why then did I write the way I did? Clearly this kind of writing isn't very helpful for anyone reading it and so why take up any readers time with such obvious rubbish?

There is a bit of a problem with news sites such as reddit and digg and how they relate to the blogosphere. People can submit any blog post (or web site) that they see fit to these sites. It can be blog posts by anyone anywhere on the internet, written under any circumstances and in an unknown context. But when a blog post appears on these sites some people tend to read them as news articles written for general consumption. But that is in many cases not at all how they should be read. People write for many reasons and to please news hungry surfers is only one reason.

The reason I blog is not for someone to read what I've written. I started blogging to improve my writing skills. I've continued blogging because I like to write down things that come to my mind and it is a good help for structuring my thoughts. I blog for my own amusement.

But then, why do I blog, as opposed to just writing on a piece of paper? The reason for me is that the possibility that someone might read what I write helps me write. Blogging means that I have an (at least potential) audience which I can target my writing towards. This (perhaps imaginary) audience is very important for me, I wouldn't be able to write without it. I simply can't motivate myself to write only for my own sake.

So I was by no means put off by the comments my blog post received on reddit. My posts wasn't written for these people. But I am glad that there were a couple of people who actually liked the article and gave it positive votes.

I blog for my own amusement. That has and always will be the main purpose of this blog. But I've been thinking a lot lately about starting another blog where I will write about technical stuff, programming and programming languages. Why another blog? Because in my head the random ramblings that appear on this blog is very separate from my technical thoughts. The two blogs would also have very different intended audience. While this blog only has an imaginary audience the new tech blog would be directed towards programming and research peers. I think it's earnest towards both audiences to keep the blogs apart. Anyhow, if I decide to launch a new tech blog I'll be announcing it here so watch this space if you're interested.

2007-01-21

Masters Final in Snooker

I've just finished watching the final of the Masters tournament featuring the rising star Ding Junhui from China and my favorite snooker player Ronnie "The Rocket" O'Sullivan. And what a match it was.

Ding Junhui is only 19 years old but is already ranked as number 5 in the Provisional World Ranking and has already won 3 titles (being the youngest player, together with John Higgins, to have won so many titles). In the semifinal he beat Steven Hendry with a brilliant and offensive play. After that match Hendry, who seldom gives any praise to other players, applauded Ding and said that there are only two or three players in the world from whom you can't expect a second chance in a frame. He said Ding was one of them (the other two being John Higgins and Ronnie O'Sullivan. Hendry also belongs to that list but naturally he didn't count himself.) Ding seemed to be in a very good shape before the final, he even said he hoped to improve his game from the semifinal where he beat Hendry. Earlier in the week he also made a 147 frame, the highest possible score in snooker (not counting fouls) and became the youngest player ever to have achieved that on live TV. The previous record holder was Ronnie O'Sullivan.

Ronnie, as I said, is my favorite snooker player. He has his ups and downs but when he plays his best snooker there is simply no one that can match him. It's like he ceases to be a snooker player and becomes a magician, using the cue as wand to cast spells on the white ball, demanding it to go where he wants. It's absolute magic and looks so effortlessly that it must be embarrassing for the other players. On top of that he is also more or less double handed. He can play as good with his left hand as with his right hand.

Given that Ronnie O'Sullivan is so good, why doesn't he win everything? I think the problem for Ronnie is that he is himself his biggest opponent. He's having trouble with motivation and his mental stability seems to be lacking. Last month he simply walked out from a game against Steven Hendry and that is a very unusual thing to do in snooker where every player is expected to behave like a gentleman. He also seems to have a problem with longer tournaments and to keep up his concentration during a whole week or so of play.

Ronnie O'Sullivan's way to final was very good example of his mood swings. He started out very strongly beating Ali Carter with 6-1. Then he just barely beat Ken Doherty currently ranked no. 1 but wasn't showing his best game. In the semifinal he was up against Stephen Maguire and that was the worst game of snooker I have ever seen. Even I could have beaten Maguire as he played in that game. It was obvious that he was just pumped with adrenalin for this match and he didn't manage to cool down, missing just about every ball. It's a miracle that he actually won a couple of frames. O'Sullivan also played really poorly and didn't really deserve to win either.

Given the two players previous performance during the tournament I held Ding as a favorite in the final. But just barely, as I'm well aware of O'Sullivan's qualities. And it turned out to be quite a drama. Ding won the two first frames showing some superb snooker, much like in the semifinal. That seemed to wake up O'Sullivan who after that took four frames in a row including two centuries. Ding then responded, making the score 4-3. After that it was all O'Sullivan. It just seemed impossible for him to miss. Ding didn't play badly, on the contrary. But no matter what he did O'Sullivan would still find balls to play with and once he started there was no looking back.

In the tenth frame though, it seemed like Ding might have a chance to get into the match again. He had scored 65 points when he finally missed a ball, leaving only 67 points possible on the table for O'Sullivan. "The Rocket" stole the frame with 66 points against Ding's 65. I think that frame was the nail in the coffin for the Chinese.

The pressure seemed to take it's toll on Ding Junhui. During the latter half of the game it seemed like he was almost weeping, sitting in his chair and watching O'Sullivan beating him. It didn't help that the audience was very much in favor of Ronnie O'Sullivan and could be quite loud and disturbing at times. Ronnie even asked that one particularly loud spectator be thrown out of the arena, and indeed, he got so see the end of the game on a TV.

After the twelfth frame, making the score 9-3, it seemed that Ding wanted to concede the game. He went to shake O'Sullivan's hand but Ronnie wouldn't accept it. Instead he put his arm around Ding to try and comfort him and led him out of the arena. It was very warming to see such a friendly gesture from O'Sullivan when his younger opponent was so obviously upset. Later Ding Junhui said that he thought that the game was over, being best of 17 frames. That might be true but I'm somewhat skeptical to that explanation. It seemed that Ding was almost crying and he had essentially given up the frame before with a very poor, and not even half-hearted defensive shot. So having Ronnie O'Sullivan as an opponent turned out to be a mixed blessing. On the one hand Ding got a very tough lesson in snooker and in how bad the pressure can be in a final. On the other hand O'Sullivan turned out to be a very supportive friend who wanted to help him when he was almost caving in for the pressure. After the match, O'Sullivan made sure Ding Junhui didn't have to give an interview, which is otherwise customary. He could leave right after he received his second prize.

So it was a very good match to watch. Both a bit of drama and some of the best snooker I've ever seen, especially from Ronnie O'Sullivan. I hope he can pull himself together for some more stunning snooker later this spring. As for Ding I'm sure he will win many more titles and become one of the great names in snooker.

PS. For the record, the final ended 10-3 for O'Sullivan.

2007-01-19

The Last Functional Programmer

One of the things our computer science department is famous for is its history in functional programming. People who have been working here include John Hughes, Lennart Augustsson, Thomas Johnsson, Niklas Röjemo, Jan Sparud, Urban Boquist, Magnus Carlsson, Thomas Hallgren, Koen Claessen and some people like Philip Wadler, Amr Sabry and Andrew Gordon have made longer visits here. All these people have made important contributions to the field of functional programming and Haskell in particular.

Given this dire history it was not without pride that I yesterday was given the title "The Last Functional Programmer" of the department.

The history behind this title is that a lot of the people do not work at our department any longer. The only two people left are John Hughes and Koen Claessen. John has switched over to Erlang and Koen mostly does hardware verification these days. So, when one guy from the proglog group needed a subreviewer for a paper relating to functional programming he was directed to me, being the last functional programming outpost at our department.

Although I was proud to be given this title it's also sad. Functional programming is really fun and I wish there were more people doing it at our department. There are people here who use functional programming and we can exchange some ideas but there's really no exciting research going on. I guess I'll have to move to a better place when I've finished my PhD. Or maybe I need to love some other field.

2007-01-10

Yak Shaving

Yesterday I stumbled upon one of the coolest and useful expressions I've heard in a while: Yak Shaving. What does it mean? Here's a quote from the link:
"I was working on my thesis and realized I needed a reference. I'd seen a post on comp.arch recently that cited a paper, so I fired up gnus. While I was searching the for the post, I came across another post whose MIME encoding screwed up my ancient version of gnus, so I stopped and downloaded the latest version of gnus.

"Unfortunately, the new version of gnus didn't work with emacs 18, so I downloaded and built emacs 20. Of course, then I had to install updated versions of a half-dozen other packages to keep other users from hurting me. When I finally tried to use the new gnus, it kept crapping out on my old configuration. And that's why I'm deep in the gnus info pages and my .emacs file -- and yet it's all part of working on my thesis."

And that, my friends, is yak shaving.

I recognize this situation so well. Sometimes I feel like I don't do anything but Yak Shaving. That can be really frustrating and drain your energy pretty fast. Which means it has to stop.

Now at least I have a name for it so I can say to myself: "I'm Yak Shaving. Stop doing that and go do some important stuff instead".

2007-01-09

Programming Productivity and Programming Languages

Recently I've read two blog posts about programming productivity and how it can be improved by better programming languages. I'd like to expand a bit on them.

The first post focuses on code reuse. The thesis is that the central thing that increases programming productivity is code reuse. As soon as you can reuse some bits of code you save effort. How does this relate to programming languages? One way is that programming languages can supply code in the runtime system, such as garbage collection. Thus, the programmer gets a well tuned bit of code which is most certainly correct and which he doesn't need to think about to use. Another example mentioned in the article is objects. It is indeed possible to program with objects in C but this programming pattern is captured by a language construct in object oriented languages and we can therefore reuse it.

The latter half of the post makes a case for standards. Having to choose from several libraries that does the same thing or programming constructs that can achieve the same thing are bound to make a mess. According to Murphy's Law, when you want to use libraries A and B, library A will use feature 1 and library B will use feature 2 and that will render them incompatible. So standards are good, be it libraries or programming idioms. They help making programs more composable.

Which leads me to the second post which talks about Composability and Productivity. This post starts out repeating a lot of the previous post but focuses on composability. But it goes further down the composability track talking about the problem with state. When composing two stateful pieces of software it might be important when the state changes happens and sometimes that leads to composability problems.

But there are even more interesting issues in composability and reuse that neither article mentions. One is concurrent programs. These are extremely hard to compose if they use ordinary locks and sometimes it is out right impossible to compose them. One promising line of work here is software transactional memory which can bring composability to concurrent programs. If think this sounds interesting you should check out the papers by Simon Peyton Jones on software transactional memory (or STM for short). STM has transactions, bits of code which either are run to completion or aren't run at all (perhaps due to a state change which happened while the transaction was running and which invalidates it's view of the world). The salient feature of STM is that it enables the programmer to compose transaction. Hence it increases composability.

The interesting thing is that this STM fits particularly nicely with Haskell. Why is that interesting? Because Haskell has some other very special features which makes Haskell programs more reusable and easier to compose.

One of the obvious benefits of Haskell when it comes to reuse is its strong type system. Writing reusable code is a lot easier if you don't have a very narrow minded type system which gets in your way all the time. To avoid that you can either ditch the static type system and go with dynamic types, which is what Lisp, Scheme, Ruby and Python does. The other option is to use a more fancy type system which lets give types even to the most abstract pieces of software. That way they can more easily be reused. This also improves composability.

One last feature of Haskell that I want to mention is laziness. Anyone who has ever heard of Haskell knows that this is the one feature which sets it apart from other languages (modulo Clean). Laziness makes evaluation order difficult to predict and therefore it is a bad idea to have state in a lazy language. Therefore Haskell is pure, allowing no mutable variables or IO except in a confined imperative sublanguage. As the first post I linked to above have already pointed out state is bad for composability. That should make Haskell programs more composable and reusable. While I think this is true it's not why I mention laziness. Lazy evaluation, used correctly, can enable a new kind of modularity which takes great effort to achieve by other means.

The standard example of modularity from laziness comes from John Hughes' classic article "Why functional programming matters" but I don't think it has gotten enough attention so I will repeat it here. Suppose you are writing an AI for some board game such as tick tack toe or chess. Writing good ones can be really tricky if the board game if moderately complex. In Haskell you would start out by generating a tree which models all possible moves from the current positions on the board. This tree can infinite. One can then write small functions which operates on this tree, such as pruning it or reorder branches to make things faster. Lastly one can compose these functions to construct the final evaluation function. The crucial thing here is that the small functions operating on the tree are highly reusable. It is very easy to cherry pick them and reorder them as you see fit. Therefore it is very easy to try out several different algorithms with very little effort. All this spells: Programmer Productivity. Lazy evaluation is crucial here in making sure that only parts of the tree that are actually needed are computed.

For those of you who think that this sounds horribly inefficient I have two answers. First, if you find a really good search algorithm this way then the constant factors due to lazy evaluation and many function calls doesn't really matter. Secondly, there are techniques to automatically remove the game tree which can make the program almost as fast as a hand tuned one.

One good example of where they've explored the modularity of laziness is the paper "Modular Lazy Search for Constraint Satisfaction Problems". It's one of my favorite papers and it's well worth a read. I have more to say about this paper but I'll save it for another post.

OK, so this post turned out to be a sales pitch for Haskell in the end. No one who knows me would be really surprised by that. But I really do think that Haskell has a lot of features that takes code reuse and program composition to a new level. All those features such as purity, closures, powerful type system, laziness and STM which makes programming in the large easier come together very nicely in Haskell. So it's no surprise that the latest revisions of C#, Java and VB all borrow heavily from Haskell and it's language kins.

I completely agree with the posts I linked to above: Reuse and composability are very good for programming productivity. And there's a whole lot of things that can and should be done at the language level to improve these issues.

2007-01-04

IMDB Top 250

I'm a huge fan of IMDB. I use it all the time to look up facts about various movies and actors that I've seen or am going to see. The site is just packed with information which makes it a gold mine for any film lover.

One page that I particularly like and visit every now and then is the Top 250 list. The site allows any visitor to vote on the movies and based on these votes this list shows the 250 most popular ones. It's a very good list if you're looking for a good film to watch.

Every now and then I check the Top 250 list to see which movies from the list I have seen and which I should consider seeing. And today I was happy to cross off one more movie on the list: Casablanca, current ranked as number 6 on the list.

Seeing a classic such as Casablanca can be difficult. When a movie have such a high rating it's hard not to have very high expectations. And in my experience older movies often have a much slower tempo which can make them difficult or even unbearable to see unless you're in the right mood. Because of these problems I often postpone watching classics indefinitely. I'm constantly waiting for the right moment to present itself, to get into the right mood for watching the movie. But somehow that moment never seem to come. We taped Casablanca many years ago but have never watched it.

It's better to do what we (me and my fiancee) did today, watch the movie when it runs on TV. Don't record it, don't rent it, just take the time to watch it when it actually runs.

It's not difficult to see why Casablanca has become such a classic. Despite being recorded in 1942 the movie feels very modern. The dialog is absolutely fantastic and the movie is fast paced, not boring for a single moment. It is also filled with quotes that have gotten a life of their own: "Play it again, Sam", "We'll always have Paris", "Of all the gin joints, in all the towns, in all the world, she had to walk into mine." etc. (More quotes here.) All I can say is, if you haven't seen it yet I can heartily recommend it. It's worth every bit of it's status as a classic.

Despite being a big fan of movies I am a little embarrassed to admit that I haven't seen the top three movies on the list: "The Godfather", "The Shawshank Redemption" and "The Godfather: Part II". Watching the Godfather trilogy is one of those projects that I suspect will never happen. The pressure of finding the exact right moment and mood to watch these movies is so big that I'm afraid it will never happen. As for "The Shawshank Redemption", I've bought the DVD so I hope it will lower the threshold for me to get around and watch it.

To make it a little easier to see what movies I have seen on the Top 250 list and what I thought of them I wrote a little greasemonkey script which adds an extra column to the list. This column shows for each movie what vote I have given to it. I've made the the script publicly available in case you would like to try it out yourself. Of course if you install the script it will show your votes, not mine.

2006-11-21

Peter Jackson will not make The Hobbit

Crap! It seems that because some petty little dispute over some accounting issues Peter Jackson will not go on to make The Hobbit. It's really sad to hear. Especially since PJ seemed like he would have enjoyed making the movie. I'm not sure I'm looking forward to this movie anymore. With a new production team the end result can be pretty much anything.

Searching Haskell Code

Whoho! Google Code Search now supports Haskell code!

I've had some fun with Google Code Search since it was launched in early October. Among other things I've used to motivate changes to the standard libraries in Haskell based on how people write code. But not having proper support for Haskell has been a little awkward. One has to fiddle with file extensions to make it search in Haskell files. And it's always this suspicion that the search doesn't cover all that many Haskell files since the crawler presumably doesn't look for them. But all that is gone now, and I'm much happier. I've already put the new feature to good use.

2006-11-17

Football technicalities

There is something that I've been wondering about for many years. It concerns football (or soccer if you prefer). It's the following question:

What is the purpose of the goal area?

Do you know? I'd be surprised if you did. Do you even know what the goal area is? In case you don't: it's the little rectangle inside the penalty area and just in front of the goal. I think even most hard core football fans don't know what purpose it has.

Today I decided to look it up. And wikipedia is helpful here as usual. It turns out that "Indirect free kicks awarded to the attacking team within the goal area must be taken from the point on the line parallel to the goal line nearest where an incident occurred; they can not be taken further within the goal-area. Similarly drop-balls that would otherwise occur in the goal area are taken on this line." Indirect free kicks are awarded for technical fouls such as offside and usually happens far away from a teams own goal. Indirect free kicks within the penalty area are extremely rare. I've only seen it once. The reason the judge awarded the foul was that he thought the goal keeper took too many steps with the ball in his hands. This particular rule has now been dropped in favor for a six second time limit.

I should add though that I'm not that crazy about football as this post might suggest. I do like to watch a game every now and then. But I almost never watch more than one game per week and often it is much more seldom than that. I like to watch when Sweden's team is playing an international match. Every now and then I also watch one of the major clubs in the Spanish league play, as they play very good football.