Thursday May 24, 2007 | Jean-Christophe Collet's Weblog Jean-Christophe Collet's Weblog |
|
Pirates of the Caribbean: At World's End Another day, another sequel (sequel of a sequel actually). Again it was released in Europe a few days before the US, which always make me snicker a bit (Hey, I do remember a time when I had to wait months after its US release for a movie to show up in theaters in Paris where I grew up. So I think it's fair enough). Anyway, my expectations for that one where actually pretty low this time. The first "Pirates" took me totally by surprise (talk about low expectations when I went to see it!) and was a total blast. It was up there with Shrek when it comes to movies that surprised the heck out of me at the time. But the second installment widely reported flaws seriously dampened my enthusiasm. While there was some fun to have, most of the magic was gone. There were a number of reasons for that, and I'll come back to it later since it is relevant to the 3rd episode. A funny thing happened while we were waiting to enter the theater (which was hardly full by the way): One of my friend who couldn't remember the previous episode asked me to refresh her memory. Turns out I failed miserably at it. The story was so confused and so uninteresting that it dragged down all my efforts to tell it (you try it! You'll see I'm not kidding). It also proved, to me at least, that I didn't really care about what would happen to the various characters of the movie. Low expectations, I'm telling you. So, how bad is it? Let's see. The movie is about 2h45 long, and, if you ask me, that's about 1h too long. Seriously! The first 1h30 to 2h of it just drag forever. It's tedious, it's boring, it feels like it will never end! The good news is that it DOES end and the last 45' or so are fun to watch. The bad news is that it's not quite worth it. And we have the usual suspects to blame for that misfire. First, and as way too often, the script. No real surprise since this 3rd part was shot back to back after the 2nd one, so there were very little chance the writing would have improved. The story is a confusing mess that doesn't make sense most of the time. I know it's fantasy, but come on! Is it too much to ask that the characters make sense within their world? That their motivation are believable? That their relationships seem to work? Because we have none of that here. Make us care for what what happens to them! The second strike, for me, is Elizabeth, the character played by Kiera Knightley. It was obviously shoe-horned in there to give her a bigger part. In the first one, she was the archetypal "damsel in distress". She wasn't a very good one (missing charm and charisma if you ask me) but that didn't matter much. But now, she's been promoted to swashbuckling, ass-kicking, killing machine, and I'm sorry, but that doesn't make any sense at all. Plus she's not one bit convincing about it. To make matter worse, her relationship with Will (Orlando Bloom), which wasn't really hot stuff to begin with, is so flat, so unemotional, that when they do finally express their love to each other (they spend the first 3/4 of the movie ignoring each other) you're quite surprised. Everything about her is forced and feels fake. It doesn't help, of course, that she doesn't seem to be a very good actress either. At least not in these 3 movies, if you ask me. Third strike, and I'll stop there, is that the humor that made the first one such a fun experience, is mostly gone. Oh, sure, Johnny Depp do have a few funny scenes and some good lines. His scene with Keith Richards, for instance, is genuinely funny and perfect for the character he created. But that doesn't save the movie. A couple of quickies: The special effects are worth mentioning for two reasons: they're perfect and they're probably why the movie falls apart. As is typical with Hollywood lately, too much focus on eye candy, not enough on story and characters. There is an extra scene after the end credits. But considering they do last for a long time (8 to 9' I believe), it may not be worth waiting for it. If you don't have the patience, be assured you're not missing much. Next sequel of a Sequel: Shrek the third, which hasn't been released in Europe yet (there is some karma for you). Somehow I suspect the trend of this summer will continue. We'll see soon enough. Not holding my breath though. (2007-05-24 08:10:56.0) Permalink Comments [3]So, you want to contribute to the openJDK networking library? Let me tell you: We (as in the current team working on it) are very glad you do, and I mean that. There is a lot of work to be done, and we definitely could use a little help. There are a few things you should know before heading down that road though. You see, as you probably already know, having a consistent behavior across all the supported platform is one of the main design goals of Java. But I need to let you in a little secret: cross-platform networking is hard, very hard, to achieve. Why is that so do, you ask? After all network protocols and APIs are well specified in RFCs and other standardization documents. After all, a socket is a socket, ain't it? You wish! And, actually, so do I! That would make my job so much easier! But there are a few problems with that assumption. First, RFCs are not always as ironclad as we would wish and can leave room to interpretation. One example of that is what happens with IPv4 multicast addresses in IPv6. The RFCs specify that an IPv6 socket has to support Ipv4 addresses for backward compatibility in the form of a special kind of IPv6 addresses (known as Ipv4-Compatible). This makes it possible to use a single IPv6 socket to talk to both world, the old Ipv4 one and the bold new IPv6 universe. Only problem with that is that the RFCs do not state clearly whether this should work for joining IPv4 multicast groups as well. So, Lo and Behold, guess what happens? On some systems it does work while on others it's not supported and, of course, they don't consider it a bug! I let you imagine the hoops we had to go through to get a consistent behavior here. Then there are the unfortunate cases where the standard specifications are blatantly ignored for whatever reasons (don't ask, trust me on that one, you really don't want to know). An example of that would be the checksum field in the ICMP header which is supposed to be computed and set by the OS network layer before sending the packet. However some implementations of the TCP/IP stack leave that responsibility to the application layer. But, to be able to compute that checksum, the application needs to know what the source address will be in that header, which is not always readily available at that point, specially on machines with multiple network interfaces. Another frequent issue is when we're asked to provide support for features that exist on some system and not others. A good example of these are the “Unix Domain” sockets (see RFE 4145756). So, how do we deal with all that? We go through a succession of tough choices. For instance, the Unix Domain Sockets, while we think it does provide a somewhat valuable service, it is also a bit redundant with normal sockets, and, of course, it's not available everywhere. In that particular case, we decided that the cons were out-weighting the pros and voted against implementing it for the moment. But let's assume for a minute that we still wanted to do it at that point, we then would have to design an API that would not break if the feature was not available. And no, throwing an Exception when trying to create a Unix Domain socket on Windows, for instance, is not the right answer. So we would go to a “Service Provider Interface” (aka SPI), meaning the application would have to request the “service”, Unix Domain Sockets here, and, IF that service is available, get a reference to a “factory” in charge of creating these sockets (note: that's not the only approach to solve that kind of issue, but it's a rather common one). The end result is that it is now the responsibility of the application to deal with availability, or non-availability, of the feature, and, of course, it makes the code much more complex. What happens when the application absolutely rely on such a feature and it is not available? It has no option but to exit, stating something like “Sorry but this application can't run on your system...”. Which is a rather harsh blow against the “Run Anywhere” mantra. That's why we always think twice, or three, or four times, before going down that road. Specially when it comes to something as core as the Networking Stack. In other, more minor,cases, like with certain socket options, we do actually word the documentation in a way that clearly states that this may be ignored, or re-interpreted, by the OS specific implementation. A perfect example of that is the documentation of Socket.setTrafficClass(int). Naturally, that approach also has its problems, and it's not rare that developers contact us, complaining about the fact that one of these methods seems to have no effect in their application. I hope that by now you have a better idea of what kind of difficulties we have to deal with. But don't let that stop you working on your project, we'll be here to offer help and advice when you'll ask for them. That's it for now. In a future post, I'll outline what we're currently working on. (2007-05-09 05:50:55.0) PermalinkAnd now for something absolutely non Java related.... Yesterday, with a few friends, we went to our local multiplex to watch the newly released Spider-Man 3 (Imagine that: it was released in Europe a few days before the US!). Quick background: As a teenager I grew up with Spidey and, like many at that time, I felt quite close to that nerdy Peter Parker. I also thoroughly, after years and years of waiting, enjoyed the first two movies. They succeeded in doing something pretty damn hard: updating a material from the 60s while staying faithful to its spirit and core appeal. But that was then, let's see what we have now. When the movie opens, everything is peachy in Peter Parker's life! Did I say peachy? Scratch that! He's pretty much on top of the world: He's sailing through his classes, the woman he's been dreaming about all his (admittedly short) life is absolutely crazy about him, and everybody, and I mean absolutely everybody, in town think his hooded alter-ego is the best thing that ever happened to the city that never sleeps. They're even going to give him the keys to the city, for crying out loud. The only shadow to that sunny picture is the fact that his best friend, Harry Osborne, is still mad at him because he believes Spider-Man killed his father. The nerves of some people! Meanwhile, Mary-Jane's life is going down the crapper because she got bad reviews to her latest Broadway production (yea, I know, don't get me started). At that point, if you have seen Spider-Man 2 you may think "Hey, this is the exact opposite situation as in the previous movie. How clever of them!". Well, not that clever if you ask me. You see, one of the major part of the character from the comics book and from the previous movies is that being Spider-Man is a curse to Peter. This is his cross to bear and what makes him so special. So, now, he's just another "man of steel". Booooring! The worst part is that it goes downhill from there. There are many problems with that movie, the first one, as way too often, is the script. There is no focus whatsoever in that mess of a story. You have 3 villains, none of them remotely interesting or even developed, then you have a very poorly developed love triangle (actually 2 love triangles, a mess I'm telling you) and, to top it all, the return of the "dark side" (you know, the one that is so tempting, so easy to follow). And none of that works. Second problem, the pace. That movie is way too slow and way too long. They could have cut 30 minutes of it without any problem. I'm quite surprised here, because until now Sam Raimi had a rather good track record on that front. Well, I guess there is a first time for everything. My 3 friends were as bored as I was during the whole movie. not good! If all that wasn't bad enough, the acting is really sub-par here. I know, it's not a movie where you'd expect great performances, but the last two episodes provided some more than decent ones. Here, my best memory when it comes to acting, is Bruce Campbell doing an hilarious John Cleese imitation in the part of a French Maitre'D (I know it sounds ridiculous, but it works). All the main actors are going through the motions without delivering. The worst offender, to me, is Tobey Maguire during his "I'm bad!" stint. It was embarrassing to watch. I could go on with a few minor things that annoyed the hell out of me, like the fact that the masks and hoods keep being removed and put back for no good reason and sometimes with a blatant disregard to continuity, not to mention any attempt at credibility. But I think you got the point. The 3 major flaws I mentioned above would kill any movie, so there is no real point punching more holes in that fast sinking boat. Well, that was a disappointment. But I guess they had to adhere to the Hollywood law that says that in any trilogy, one of the episodes must be stinking bad. Mission accomplished, then. (2007-05-03 09:11:06.0) Permalink Comments [1] |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||