Another Google Beta

Google just released Google earth, a program to view pretty much the whole of the earth. Some parts of earth even come in 3D. Here is a picture of southern manhattan:

Of course there is a lot of search features in the program linking it to Google. Pretty cool application if you ask me. I find it a bit slow though and I hope that will improve. Otherwise it will be unbearable to use.
Again here is a picture of where I live, together with a little placemark to give a more precise position:

Quote By Edward Nelson

I've been reading stuff by and about the Princeton Mathematics professor Edward Nelson lately. And I'll be reading more when I get the time. Here's a beautiful quote by prof. Nelson:
Perhaps infinity is not far off in space or time or thought; perhaps it is while engaged in ordinary activity - writing a page, getting a child ready for school, talking with someone, teaching a class, making love - that we are immersed in infinity.

The reason why I've been reading Nelson is that I've been thinking about my own philosophical standpoint with respect to mathematics lately. Nelson is pretty radical but I find his opinions interesting. I will have more to write about that soon (I hope).

Inorder traversal in Haskell

How many ways can you write a function that performs inorder traversal of a tree? On the whiteboard in my office there is currently five different versions. One has quadratic complexity, one is higher order, one uses an accumulator and three of them needs a helper function to do all the work.

All these variations sprang from a discussion with David Wahlstedt about which versions his termination analysis could handle. It happens that my preferred version of the function, which is linear, first order and doesn't need any accumulator nor a helper function is little more difficult to prove to be terminating. And David's termination analysis cannot handle it.

As a little programming exercise I suggest you try to write my preferred version. To make it a challenge make sure you write it in a functional language. It takes a tree (defined in the obvious way) and returns a list of all the internal node in the order they would be visited by an inorder traversal. Remember, the function must be first order, have linear time complexity with no need for an accumulator or a helper function.


Welcome to my place

Google has now added satellite images over most of Europe and a bunch of other places to Google Maps. In the center of this map you can see where I live.


Web based applications

OK, since I cannot get anything written on my thesis right now anyway I might as well do some blogging. What I'd like to write a bit about is web based applications.

I believe Web based applications is the applications of the future. By a web based application I mean an application that you download from the internet when you run it. It typically also communicate over the internet a lot while running. The advantages are clear: You don't have to do anything to get the latest version, you automatically get it when downloading the program. It is the same with the data you're going to handle in the program, it will always be up-to-date. If the company providing the application is storing your personal data for you on their servers you can access it anywhere there is an internet connection. You don't have to worry about backups or transferring files when you get a new computer. This is their problem and they're most likely a lot better at it than you are.

Google is currently the leading company on this. I use GMail for all my emailing nowadays and it is perhaps the best email application I have ever used. (For the record I've used the following email programs: I started using the text based elm and pine. When I got my windows laptop I started using Outlook. I tried to use Netscape once but didn't like it. GMail beats them all.) Another cool Google app is Google Maps. I think it is pretty amazing that it can run so smoothly! Still, there are room for improvements. But the possibilities for Google Maps are simply huge if you imagine adding all kinds of localized information to that program.

One niche which I think could benefit a lot from this is games. The gaming industry has already realized the new posibilities with web based game play which make the games a lot more fun. For small games such as card games and puzzles I think web based deployment is ideal. If you're only after some minutes of diversion you don't want to bother with downloading and installing an application. This has already happened to some extent with site like Shockwave. I list other links below.

The current technology is to use the web browser as an "operating system" to host web based applications. The "machine code" is java script. But the browser comes equipped with a lot of technology for displaying information graphically such as rendering HTML and using CSS. These things together with interaction with the web server from the java script code is usually called AJAX and is currently very hyped. And it IS cool in the sense that it allows us to enjoy these new cool web based applications.

But this need not be the only technology and if it is going to take of seriously it should be integrated with the standard operating system in my opinion. An alternative technology is Java Web Start. Java Web Start has a little ordinary application which can be seen as the start button in windows. It has a list of programs that is available to you for download. The platform used here is not the browser but the Java Virtual Machine. In my opinion Java is a much more mature platform for web based applications but it hasn't received much attention since the applets went out of fashion. (I should add that I think that applets were the wrong thing. It was difficult to get an "application feeling" from them. They were restricted to a little box inside a web page. But they clearly paved way for cooler things.)

I understand perfectly if you're a bit skeptic about this idea. Especially if you have no experience with web based apps. And of course there are drawbacks. There are security issues all over the place and so it can never be the case that all programs are web based. And one needs to be connected to internet pretty much all the time to use them. In some cases this could be circumvented by caching the application locally. That would restrict the user to only use the data available locally on the machine. How much of a problem this is will vary between applications.

Finally I wish to list some cool links to some pretty amazing demos as to what is possible with these new technologies. Some of those things aren't very useful but they sure give a taste of the enormous potential of web based apps.


Quote of the Day

A well adjusted person is one who makes the same mistake twice without getting nervous.

From /.


Regexp humor

Niklas Broberg told me a hilarious thing he'd seen in irc. There was a guy who had erroniously spelled the word "wrong" like this: "worong". When noting his mistake he wrote the following thing in the hope of correcting his mistake:


Wittgenstein was a genius

If people never did silly things nothing intelligent would ever get done.
--Ludwig Wittgenstein


Things said in court

Here a link to a hilarious page with quotes from court. My personal favourite:
Q: Doctor, before you performed the autopsy, did you check for a pulse?
A: No.
Q: Did you check for blood pressure?
A: No.
Q: Did you check for breathing?
A: No.
Q: So, then it is possible that the patient was alive when you began the autopsy?
A: No.
Q: How can you be so sure, Doctor?
A: Because his brain was sitting on my desk in a jar.
Q: But could the patient have still been alive nevertheless?
A: It is possible that he could have been alive and practising law somewhere.


The Insanity on Internet

Apparently there is no end to the crazy things you can find on Internet. I thought I'd seen many strange things but this page takes it to a new level.