No Country For Old Men

No Country for Old Men is an captivating movie with little words but a lot to show. For me, the movie asks a question: How much control do you really have in your life? And I am sure that if I watched this movie a year later, and a decade later, the movie will ask different questions. In a way, I think you get a lot more out of this movie the older you get.

On the surface, No Country is like an "action movie" where Llewelyn Moss (Josh Brolin) stumbles upon 2 millon in drug money and as a consequence gets hunted down by a psychotic killer, Anton Chigurh (Javier Bardem), who wants the money for himself. Meanwhile, the star of this movie Sheriff Ed Tom Bell (Tommy Lee Jones) tries to stop Chigurh.

At least, that is what happens when you look at the actions of these men. When you look deeper and actually listen to what these characters say, you would realize this is not an action movie. It is a movie about living. Throughout the movie, these men never agonized over what to do nor look back and ponder if they've made the right choice. No, these men are experts in their respective fields. Moss is a Vietnam war veteran who has seen more than his share of action in the past and it shows in the way he cunningly avoids Chigurh and figures out how he was being tracked. Chigurh is a masterful strategist who is able to anticipate what his prey would do, although he is not as sure about non-experts. Sheriff Bell easily anticipates both hunter and prey's moves. Watching No Country is like watching a trio of warriors in their dance of death, where every move is precise and accurate. And with warriors of this calibre, only one thing separates them; random luck.

The ending of this movie is anything but conventional. I wish I could reveal more but I'm afraid this would spoil the ending. And it is what happens in the last 5 minutes of this movie that turns it from an "action movie" to an introspective movie worthy of at least a few awards. Javier Bardem's performance as Anton Chigurh should easily earn him an Academy Award for Best Supporting Actor. The Coen Brothers also stand a good chance of winning Best Director or perhaps even Best Picture, although I think Best Picture is a long shot.

Jumper

Jumper tries to follow in the footsteps of great movies such as The Fugitive and The Matrix. According to RottenTomatoes's 94 critics, it tries but ultimately jumps short of its targets. I tend to agree with them, but my verdict probably isn't as harsh.

I will use The Fugitive to explain why. One famous scene midway through The Fugitive a small showdown between Dr. Richard Kimble (Harrison Ford) and United States Marshal Samuel Gerard inside a storm drain. Kimble holds his hands up high as a sign of surrender and tells Gerard, "I didn't kill my wife". Gerard replies with an unsympathetic "I don't care". On hearing this, Kimble escapes by jumping off the storm drain and falls a hundred meters into the freezing midnight water. Now imagine how you would feel if the movie ended right there, with promises that the story will unfold in the next part of The Fugitive movie trilogy.

Warning: Spoilers ahead.

That basically describes what happens in Jumper. Haden Christensen stars as David Rice, a young man with an extraordinary ability to "jump" across vast distances in the blink of an eye. Samuel L. Jackson stars as Roland Cox, an uncaring NSA agent slash "Paladin" with high tech toys tasked to bring down Jumpers by any means necessary. Oh yes, Cox also has a personal vendetta to kill all Jumpers. All Jumpers as criminals and Cox often spout the lines "You'll eventually kill someone. It always ends up the same way" before ritualistically unwrapping a large knife and kills the captured jumper in cold blood. And now Cox has caught a new Jumper scent, Christensen's David Rice. Thus begins a relentless chase across the world. This naturally leads to a series of showdowns and narrow escapes at various locales by Rice who ultimately ends the movie with the declaration, "I'm different, I won't kill", and leaves Cox stranded in a mountain cave. End of movie.

Jumper basically sets the stage for a much larger story to come and for all I know, the entire story could be as good as The Fugitive turned out to be. On the other hand, it could end up like The Matrix trilogy. There's no way to know now. All we know now is that the visual effects are weak. The fight sequences essentially comprises of splicing together one second footages of London, Tokyo, the Sphinx, London again, some desert, Chetchnia, some river, Tokyo again, ad nauseum.

So there you have it, Jumper is the first third of a longer story arc which could literally go anywhere, with effects that definitely pale in comparison to The Matrix trilogy. In other words, it is a weak start. And if the Jumper trilogy follows the usual trend of weaker sequels, then it is a movie trilogy not worth watching.

Botched Interview

I had an interview yesterday and I totally botched it. What happened? Basically, I gave the interviewer an impression that I am some junior programmer who know nothing about development of Enterprise grade applications. Of course, anyone who has ever worked with me professionally would immediately scoff at the notion that I'm a "junior programmer", so what happened?

There are several reasons, all of which are my fault. Prior to this interview, I have always had jobs through people who are already familiar with my level of knowledge and experience. The interview process in these cases were mere formalities and I usually able to jump straight into whatever projects they required me to do. And I am usually able to deliver beyond expectations. Thus, I was not well equipped to handle a "real" interview by people who totally do not know me, especially my sometimes unorthodox ways of doing things.

As a consequence of my lack of experience with interviews, I had focused solely on preparing my case based on my skills in informatics research and machine learning. These were things the interviewer were totally uninterested in because they were looking at me as a software developer and most definitely have already excluded me as an expert in machine learning. I did not prepare myself in anyway to handle any software development questions and was immediately struck dumb by the interviewer's first question, "How do you do debugging?".

To me, that is a very open ended question that heavily depends on what kind of application, and what resources I have available. If I have an automated build system that runs daily tests, I would already know which modules to look at. If all I had was an IDE debugger, or worse just the source code and text editor, I would be doing manual debugging by tracing variables and inserting debug statements. Since this was the very first question, I figured the interviewer wanted to know that I was at least competent in basic debugging techniques and I told them I would use a debugger to step through the source code and trace variables. If needed, I would put in debug statements.

"How do you go about designing an application?"

Again, this very open ended question stunned me. One could literally write a series of books on this and the interviewer wants me to summarize it in a few short sentences? On hindsight, I should have answered it the "standard way", that is to take a top down approach by breaking down the application into its major parts. For instance, a J2EE or web based application would first be broken into standard n-tiers, a data-store/database tier, a "business logic" tier and a presentation/web tier. I would then drill down one level to design a suitable database schema for the application, build OO business-level component managers around the database to manage database transactions and ensure that only properly validated data goes into the database as well as provide only the necessary data for each business action, etc...

I did not answer that because to me, it was elementary stuff that I have been doing for over a decade. And all that experience has told me that 90% of any application is straightforward in terms of design, implementation, coding and maintenance. As a seasoned developer, I know that it is the remaining 10% of that application that eats up the majority of development time. As a result, I usually start with an iterative bottom-up approach by constantly hammering that 10% difficult to code part of the system until it is done before moving on to tackle the rest of the application, which can be done in a jiffy if I have available RAD tools.

I should have said all this in the interview. Instead, I jumped straight ahead into difficult, the "iterative, bottom-up" part. This gave the interviewers the impression that I knew nothing of Enterprise grade application development *groan*. By that point, I basically shot myself in the leg and blew the interview away.

The interviewer switched to an even lower gear by asking me even more junior level questions, such as what is the "third normal form" in database design. I have been designing databases for over a decade, these design rules are so ingrained in me that I do not need to validate my designs against these "normal forms" to know that I have a fully normalized, well indexed database. Oh for pete's sake, how am I supposed to remember the formal definition of something I learnt over 10 years ago? Anyway, my failure to answer what the third normal form is probably sealed the interviewer's impression of me as a know-nothing programmer.

That's the end of that job interview. I'm totally disgusted with myself right now.

2008 Movies: Under the Radar

As usual, there are several Hollywood blockbusters to watch out for this year. Batman returns in The Dark Knight, James Bond returns in Quantum of Solace, Harrison Ford returns to the big screen as Indiana Jones in the Kingdom of the Crystal Skull, comic book fans can look forward to Iron Man and Hell Boy and trekkers all look forward to the eleventh Star Trek movie.

I am not going to talk about blockbusters today. I mean, what is the fun of having every other blog out there covering the exact same blockbuster movies? So today, I figured I'll cover a few non-blockbuster level movies to watch out for in 2008. To kick things off, here's a musical to watch out for.


Mama Mia!
I love 80s retro music, especially from unconventional sounding bands such as Abba. I also love movie musicals such as Annie, Moulin Rouge and the more recent Enchanted. So what could be better than a musical turned movie chock full of Abba songs? Lets see... I can top that by adding well known actors such as Meryl Streep, Pierce Brosnan and Colin Firth. What you end up with is Mama Mia! the movie.

I have not seen the musical, but I have only heard good things about it. Scheduled to be released in July in the United States, I anticipate this movie will be a big hit and earn another heapload of royalties for Abba.



Sex and the City - The Movie
I know right now, the guys are groaning while the girls are swooning at this piece of news. Yes, the popular HBO television series Sex and the City is coming to the big screen. Most of the female friends I know absolutely love Carrie Bradshaw and her three best friends, conservative Charlotte, sexually aggressive Samantha and the slightly neurotic working mum Miranda.

Not much is known about the movie right now, other than the fact that it takes place four years after the end of the HBO series. Oh, and apparently the producers are so confident about the success of the movie that they already have plans to make a sequel movie. I would not be at all surprised if this movie turns out to be a sleeper hit. Sex will hit the big screen in May in the United States.



Jumper
I saw an early trailer for this movie when I was in the cinema a couple of months ago and the premise intrigued me. With a production budget of $100 million, this movie is not exactly a sleeper but it isn't exactly a blockbuster level movie either. I guess I'll call it a blockbuster wannabe. From the look of the trailer, it certainly has the required amount of action and special effects. Having Samuel L. Jackson in the cast and director Doug Liman (who also directed the Bourne trilogy) certainly helps with the street cred too.

Watch out for Jumper, for it could be the start of the next movie franchise in the coming years.




The Semantic Web, Semantics and Uncertainty in Languages

A lot has been said about the Semantic Web and how it could change the face of the web. Indeed many well established, well credentialed computer scientists have put in a lot of effort into turning the semantic web into a reality. Surely a nobody like me has no right to doubt these people, some of whom are people I have looked up to for a long time. Yet, I am very sure that the Semantic Web, in its current form, would never be a reality.

There are reasons why I can say this with such conviction and authority. The main reason Semantic Web will be a failure is because it is designed by computer scientists who are most familiar with logic, discrete mathematics and symbolic processing. These are people who believe the world can be represented in purely logical terms. At the 2004 WWW Conference, Sir Tim Berners Lee has categorically stated as much when he said he believe the Semantic Web does not need to represent uncertainty.

In simple language, computer scientists tend to have very rigid definitions of the world. For example, a car might be defined as a powered machine with four wheels that can roll around. Under this definition, a car can never have three wheels. At this point, computer scientists would either tweak their rigid definition of cars to fit three-wheeled cars, or label the three-wheeled car as a "tri-car" and classify it as a cousin of the car under a common ancestor, "vehicles". And as more wierd cars get designed and produced, computer scientists would have to revise the rigid definition of what is a car.

Is this the only way to define stuff? Of course not.

Natural language processing researchers have been facing this exact same problem since the late 1950s, when Professor Noam Chomsky's pioneering work on the language hierarchy and specifically, context-free grammar. In simple layman terms, all human sentences has structure and this structure can be discovered by applying a set of fixed grammar production rules. For 20 years, researchers have tried to discover the ultimate set of production rules for human languages such as English. No one succeeded because human language is ambiguous in nature.

The simplest example I can give is the common linguist's example. The word "bank" has multiple meanings. "Bank" could refer to a financial institution where people can deposit money and earn interest. "Bank" could also refer to sloping land found beside a body of water such as rivers and lakes. In fact, WordNet lists 18 different possible meanings that can be attached to the word "bank". No amount of logic nor discrete structures that computer scientists love so much could accurately capture the meaning of human languages. In fact to this day, after nearly half a century of research effort, the research area of Word Sense Disambiguation (the task of identifying exactly which meaning is being used in a sentence or passage), particularly in what WSD researchers call the "all words" task, is still a very open research topic.

In the 1980s, significant progress was made when natural language researchers gave up on the use of purely logical or discrete systems and started employing statistical techniques. The real-world accuracy of language processing systems using discrete/logical methods was around the 30-50% mark. Using statistical methods, that accuracy jumped up to the 70-90% range. In some of the simpler research areas such as speech recognition, near-human performance of 95+% has been achieved.

I do not believe this is the forum to go into details as to why statistical methods can have such a huge improvement over logic based systems (if you really want a clue, look up on the Zip-Mandelbrot Law). I think it is sufficient to say that I believe all languages (yes, that includes programming and mathematical languages) are inherently ambiguous when it comes to conveying meaning (ie, semantics). As a result, a Semantic Web that does not incorporate statistics or uncertainty would never be successful in goal of transparent information and knowledge transfer on the web.