2005-09-28

State of the art in programming web based applications

A while ago I blogged about web based applications. I wrote that I think they are the way of the future and offer many great advantages. But how does one go about writing those applications? I mentioned before that the current state of the art is a collection of technologies which goes under the name AJAX. To tell you the truth, I consider AJAX to be stone age. Web development needs some serious improvements. Why do I think that? When using AJAX you must use so many different tools. There is JavaScript, XML (which really isn't anything in itself, just a piece of common syntax) and some programming language of choice for the server side program. And this is if the program is small and well structured. A good example can be found in an article posted not long ago on /..

My point is that there are too many technologies that need to work in synchrony. If you want to change your application you need to fiddle in some JavaScript, perhaps some XML files and in your server code. And then you have to make sure they all still fit together. It just seems fragile to me. But I must be honest here. I don't have very much experience here, this is just an observation from my general impressions of the situation.

So, what do I propose as a solution? Well, I don't have the solution in my hand right now but I have a rough picture of what I think it should look like. What we need is a language where we can express pretty much our whole program with all its parts. We shouldn't need to worry about the exact layout of the messages sent between the server and the client. I care very little whether its formatted with XML or JSON or what have you. Of course it is useful to be able to control this at some point but if I don't want to worry about it I shouldn't have to.

Is there any work done in this direction then? Yes it is. I was not the first one wanting a better solution than the present. The thing which seems most promising is Ruby on Rails. I know next to nothing about Ruby on Rails but it seems to be a very nice framework for developing web apps. The only problem I see with it is that it is based on Ruby which is a scripting language which too few static checks in my opinion. But I know other people have other opinions about that so I'll stop whining about it.

There is also an academic effort to develop a language which can take the place as the language for web programming. The language, not yet fully defined, is called Links (it doesn't have any official homepage that I know of) and the initiator is non other than Philip Wadler. Since Wadler is the brain behind it I'm sure it is going to be a sweet language. What I am afraid of is that it will have rather little impact on the web developer community. You can check his blog where he posted an email I wrote to him about this.

Another thing I'd like to complain about, while I'm on the subject, is how to develop the interface of web based applications. Assuming that we're running the application in a browser, it requires vastly different technologies to develop the interface for a web based app compared to a standard one. My utopian dream of how this should work is that there would be no difference in how to specify the interface of a web based app and non-connected one. The only thing I should have to specify is a bit which tells the program where to run. In a browser or in a standalone interface. Well, perhaps a little more that one bit would be needed but not much more. But in this case I'm afraid I haven't seen any signs of reconciling the two camps. Or rather the gazillion camps since there are just so many ways of writing a standalone interface depending on what library you're using. I think some reconciliation here would be a clear win. But I also see that it is a very difficult task and that it's not likely to happen any time soon.

On a more abstract note all of what I've written here is about being able to expressing oneself at a high level of abstraction. Some details you simply don't want to care about. You want to be able to express yourself clearly, succinctly and without having to repeat yourself. Here are my key rules for achieving this in computer science. Pick a programming language with powerful abstraction capabilities and arm yourself with good libraries and write new ones when you have to. When that fails come up with a new (often domain specific) language to be able to express yourself naturally in your particular domain. Finally, code generation can do wonders, sweeping loads of boring details under the carpet where you will never have to see them again. Maybe some day that will be the case for developing web based applications.

2005-09-27

Firefox versus Opera

I've been using Firefox for about a year now. I'm very happy with it. Especially useful is its extension mechanism. One can download small extensions to enhance the browser to do just about anything. But I've found that most of the things I've extended Firefox with are features I grew accustomed to while using Opera.

A couple of days ago a new version of Opera was released, version 8.5. The big news is that it doesn't have any ad banners in the unregistered browser anymore. I downloaded it to try it out and see how it compared with Firefox nowadays. And I must say I'm very tempted to switch back. Opera feels lighter and snappier. It comes with just about any feature I use on the web preinstalled. It saves sessions by default so that when you start the browser again it will show you the same set of pages as when the browser was closed. One previous problem with Opera was that it didn't handle som web sites that well, including Blogger and GMail which I depend heavily on. But that is a problem of the past. The only thing I'm lacking in Opera is some feature to block ads in a webpage. I'm currently using the Adblock extension to Firefox which has made my everyday surfing experience so much nicer.

But then there is also the question of whether I should support an Open Source project or not. It feels good to contribute the the Firefox project because I believe in Open Source and I think it is a good thing. But Open Source also needs competition otherwise it run the risk of growing stale. And Opera seems to me to be a better browser in a lot of respects. If I can make it block ads in web page just as well as the Adblock extension does it I'm probably going to switch back.

2005-09-24

Batman Begins Soundtrack

A couple of weeks ago I saw Batman Begins and recently I listened to the soundtrack. It doesn't happen very often that I get this excited about a film score, but this one is a real pearl!

The music is composed by Hans Zimmer and James Newton Howard. The work of Hans Zimmer I know fairly well as I have several of his soundtracks in my collection. And it is easy to hear his contribution to this soundtrack with his characteristic adrenalin raising yet melodic beat. It has taken many action movies to a new level. As for James Newton Howard I haven't listen to much of his music directly before even though I've seen many of the movies he made the music for. In the Batman Begins score there is a kind of theme which I can only describe as a kind of dark Vangelis-like music. I can only assume that this is Howards contribution.

As for the film itself, Batman Begins, I enjoyed the movie. It is an above average action movie which takes its time to develop the characters and how Batman came to be. The cast is full of very good actors, perhaps surprising since one would expect the movie to be aimed at the action audience which perhaps isn't so picky about the performance. But it shows that the producers have had a very ambitious goal with the film. A goal which I think ultimately fails. And I didn't really understand this until after I heard the soundtrack.

The film centers much around fear. Under his training Bruce Wayne is taught to face his fears and become one with them. He needs to be feared by his enemies. His nemesis in Gotham is the Scarecrow which uses fear as his weapon. And so on. But I think that this point is somewhat lost. Nowhere in the movie does it get really scary. Some scenes which have a tremendous potential of being scary or at least very intense simply fall flat. I tend to blame the director for this. One thing is for sure, we don't need to blame the score. At times it is just totally magnificent. Unfortunately it is not the kind of soundtrack that one can just sit and listen to. At least I cannot due to it being rather dark and scaring the crap out of me. But that doesn't change the fact that it is one of the most exciting scores I've ever heard. This soundtrack deserves a better movies.

2005-09-12

Dumb Ideas in Computer Security

A whole month without blogging! I need to shape up!

Today I read a very interesting article which I found on /. called "The Six Dumbest Ideas in Computer Security". It is a very interesting read. The author argues that in many cases we try to solve the security problem by attacking it from the wrong direction. An example: instead of filtering out gazillions of bad programs (malware, viruses, worms etc.) on should focus on only allowing those programs that we actually intend to use to run. With this turned-around approach we no longer need anti-virus lists that need to be updated every week. We will simply never be troubled again by malicious programs.

I don't agree with everything the author writes in the article though. His third point is that patching a piece of buggy software is a bad idea. I simply cannot accept that. It is not stupid to fix a bug. It is a Good Thing. What he argues for is that systems should be build with security in mind from the bottom up and that one should carefully plan systems before writing the code. I wholeheartedly agree with that. But that doesn't mean that fixing bugs is a bad thing.

2005-08-12

Math Games

The Mathematical Association of America has a monthly column about Math Games which they publish on the internet. I heartily recommend a visit there. The variation is very good and span from discussing 64K intro demos to block sliding puzzles to prime numbers. There are lots of interesting puzzles and links to fun pages. Everything is very accessible. Enjoy!

2005-08-04

Sojourner Quote of the Week

Every week I receive Sojourner's weekly newsletter. This week's newsletter featured the following quote which I found rather worrying:
"Three quarters of Americans believe the Bible teaches that 'God helps those who help themselves.' That is, three out of four Americans believe that this uber-American idea, a notion at the core of our current individualist politics and culture, which was in fact uttered by Ben Franklin, actually appears in Holy Scripture. The thing is, not only is Franklin's wisdom not biblical; it's counter-biblical. Few ideas could be further from the gospel message, with its radical summons to love of neighbor."

- Author Bill McKibben, in his Harper's magazine essay, "The Christian Paradox"

2005-07-29

Numb3rs

I've been watching the TV show Numb3rs lately and I enjoy it immensely. But me being a math geek and this show being obviously meant to appeal to such I'd like to explain why I like it.

But let me first give a brief review of Numb3rs. Numb3rs is a crime show about an FBI agent solving cases. To his aid he has a mathematician who tries to explore various patterns in the crimes and can help solve the cases. Hence the name Numb3rs.

I started watching the show mid-season and watched about two episodes when I sort of decided that I didn't quite like the show. I thought the math part was pretty dull and this whole thing with the mathematician trying to explain the mathematics pedagogically was pretty lame. But then I thought I should give the show a second chance and started to watch it from the beginning. And all of a sudden I was hooked.

I had the wrong expectations on the show when I started watching it. I hoped the math part would be really savvy but I was greatly disappointed. The real strength in this show is the characters and how they develop. As it turns out the FBI agent and the mathematician is not only colleagues, they're also brothers with the FBI agent being the older brother. This in itself makes for a very interesting relationship between them. Add to this couple their father who's another important character in the show. He has seldom anything to do with the cases, he's just there as a part of the brothers lives. On top of this we have two other FBI agent working together with our main character and a rather eccentric physicist who is a friend of the mathematician. All of this makes for a very good mix of characters and the show is really about the lives of the two brothers who happens to be colleagues. The focus being of course on their work together. So I think that the thing I like about the show is this very well-balanced mix of character development and crime solving. The math part is just a bit of extra spice which makes it even better.

So what about comparing this show to, say, CSI? I think it is difficult because they are rather different. Numb3rs is better on the character development and gets interesting because one cares about the lives of the characters. CSI is better on the crime solving part and excels in the juicy details about the crime. I like the atmosphere in Numb3rs better but I also really like the really slick production of CSI. So I'm not going to pick a winner between these two.

Well. All in all I can very much recommend Numb3rs. Even to non-geeks.

2005-07-28

Harry Potter and the Half Blood Prince

A few days ago I finished reading the latest Harry Potter book; Harry Potter and the Half Blood Prince. It is the sixth of the seven previously promised books in the series. For those of you who haven't read it yet: don't worry, I'm not going to have any spoilers in this post.

To begin with and somewhat off topic I should say that I didn't stand in line to get this book in the day it was released. I preordered it from Amazon UK which turned out to be a real bargain. I paid 130 SEK including shipping when the price for the book in Swedish bookstores was 199 SEK. I'm finding it very hard to go to a bookstore to buy a book these days when it's that much cheaper to buy over the net.

Okay. What about the book then? I must say I didn't find it as exciting as the previous books. The book was still an easy and fast read but it lacked some magic which the other books had. Maybe this is just because I'm getting to know the format of the books. All the books have pretty much the same general chain of event and it's getting a little too familiar. But the end of the Half Blood Prince promises that the seventh book will be quite different.

As to my theory about Draco Malfoy which I posted about earlier, the Half Blood Prince had some very interesting turnes of events. I think the events in the very end of the book and Draco's behavior there shows that I might be on the right track. But it is by no means certain. It has occurred to me that Rowling (the author of the HP books) uses Draco as the antithesis of Harry Potter and maybe she wants to maintain that all the way to the end. It'll be exciting to see what she does in the last book.

One theme which has been constant throughout the books has been the mystery surrounding Severus Snape. I have long though that he is one of the most interesting and mysterious character in the books. It was a little surprising to me to see that the secrets surrounding Snape, why Dumbledore trusts him, the reasons for his various behavior and his true allegiance was revealed already in the sixth book. But I don't say it is a bad decision, I was just surprised. One of the reasons for the early disclosure of this mystery is perhaps that there are a great many things which need to be explained and finalized in the seventh book that it was more or less necessary to get this particular thing out of the way. It also gives room for some exciting drama in the final book.

So despite the fact that I wasn't overly thrilled with the Half Blood Prince I am (as you probably can tell by now) already looking forward to the seventh and final Harry Potter book. The way the Half Blood Prince builds up to the finale in the last book shows great promise.

2005-07-27

Quote day

The Second Law of Thermodynamics:
If you think things are in a mess now, just wait!
-- Jim Warner

Seen in a sig.
To refuse awards is another way of accepting them with more noise than is normal.
- Peter Ustinov

Appeared on my personal google page.

2005-07-20

Death Star Subwoofer

I haven't been blogging for quite a while now. It has its reasons. First of all I've been working my (insert appropriate part of body) off trying to write up my thesis. Then I hit the wall. Now I'm currently on sick leave, and the thesis is nowhere done. But that should leave me with more time to blog shouldn't it?

Anyway, ./ had a link to the most awesome piece of HiFi equipment currently being sold on eBay. A Death Star subwoofer. It's truly impressive. Check it out at eBay.co.uk.

2005-06-28

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.

2005-06-26

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.

2005-06-16

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.

2005-06-13

Quote of the Day

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

From /.

2005-06-10

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:
s/worong/worng

2005-06-09

Wittgenstein was a genius

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

2005-06-08

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.

2005-06-07

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.