« December 2003 | Main | February 2004 »

January 31, 2004

Prince of Persia

I've been in a bit of a gaming slump the past, oh, year or so, and haven't been playing much: something to do with having an 17-month old baby and getting a new company off the ground, I imagine. Oh sure, I still play Golden Tee a bunch and the wife and I have an ongoing game of Animal Crossing that I check in with every so often, but no good shooters or platformers or whatever for a while now. Christmas brought a batch of new enticing games, though, so I've made some time to get back to playing, and I just finished Prince of Persia: The Sands of Time (for the PS2) last night.

I remember playing the original Prince of Persia game on, what, an old Atari ST computer? Must have been. Oh wow, check it out -- here are some old screen shots. Anyway, that was a good game.

This updated version is a very good game. Beautiful, smooth, good gameplay, not too hard, not too time-consuming (funny how that has become a virtue for me). A decent combination of fighting and puzzles in a very constrained world (there's almost always one way and only one way to do things), you're not wasting a lot of time wandering around wondering what to do. The game is broken into nice bite-sized chunks so it's not a problem playing for an hour here, a half-hour there.

All in all, a great game, but my favorite game in this genre would have to be the way-under-appreciated masterpiece ICO. So let me just say this: if you liked Prince of Persia, you'll love ICO, which I'm sure you can pick up in a bargain bin somewhere.

So now I'm trying to decide if I should play Viewtiful Joe or Ratchet & Clank: Going Commando next. Of course, I never did finish GTA Vice City...

P.S. If anyone would like to buy my copy of Prince of Persia for the PS2 for the blog-special price of $20 + shipping, let me know!

January 27, 2004

Handling RSS Extensions in Clients

Greg has shown how NewsGator 2.0 handles RSS extensions in this posting. At this point it really only appeals to geeks, but that's fine because the geeks will write the extensions that the public at large can then leverage. It's nice to see the clients thinking about this.

There's an example in the book Content Syndication with RSS that shows how to extend Amphetadesk to deal with new RSS modules on an ad hoc basis, but that's even more techy.

When Social Networks Stand Metcalfe on His Head

Another examination of the declining usefulness of social networks from all-around smart guy Nova Spivack. The "usefulness" curve should look like a log function, not a bell curve.

Source: Minding the Planet: The Emerging Problem of "Social Overload"

January 26, 2004

iTunes Music Store RSS Generator

An excellent example of using RSS to carry content other than news headlines or blog entries can be found at the iTunes Music Store RSS Generator. You fill out the form (sure wish I could deselect all those checkboxes quickly from Mozilla) and it constructs a URL you can use to retreive a nicely formed RSS 2.0 feed.

So that's cool ... the feed URL is really encapsulating a query that returns its results in RSS. The really nice thing, though, is that Apple has defined a namespace for the iTunes-specific meta-information. If we look at the root element, you can see the reference to the namespace with a prefix "itms":

<rss version="2.0"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:itms="http://phobos.apple.com/rss/1.0/modules/itms/">

And then on the individual items you can see how this namespace is used:

<item>
	<title>Forget Yourself - EP - The Church</title>
	<link>http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewAlbum?playListId=4213742</link>
	<description>Forget Yourself - EP by The Church</description>
	<pubDate>Mon, 26 Jan 2004 20:34:22 America/Los_Angeles</pubDate>
	<content:encoded>blah blah blah</content:encoded>
	<category domain="http://phobos.apple.com/WebObjects/MZStore.woa/wa/com.apple.jingle.app.store.DirectAction/viewGenre?id=21">Rock</category>
	<itms:artist>The Church</itms:artist>
	<itms:artistLink>http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewArtist?artistId=395041</itms:artistLink>
	<itms:album>Forget Yourself - EP</itms:album>
        <itms:albumLink>http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewAlbum?playListId=4213742</itms:albumLink>
	<itms:albumPrice>$1.98</itms:albumPrice>                        
	<itms:coverArt height="53" width="53">http://a1.phobos.apple.com/Music/y2003/m12/d16/h16/s05.xqhtbhnl.53x53-75.jpg</itms:coverArt>
	<itms:coverArt height="60" width="60">http://a1.phobos.apple.com/Music/y2003/m12/d16/h16/s05.xqhtbhnl.60x60-75.jpg</itms:coverArt>
	<itms:coverArt height="100" width="100">http://a1.phobos.apple.com/Music/y2003/m12/d16/h16/s05.xqhtbhnl.100x100-99.jpg</itms:coverArt>
	<itms:rights>2004 spinART Records</itms:rights>
	<itms:releasedate>02/03/2004</itms:releasedate>
</item>

Very nice, yes? So if you had a reader that was aware of the iTunes namespace (like, say, the backend of the iTunes client itself) you could do all sorts of cool things with the metadata. If your reader doesn't "understand" the iTunes namespace, no sweat, it just ignores it.

One suggestion I would have for Apple (and wow, they're still using WebObjects, how about that!) would be to provide a document at the URI that the namespace points to (http://phobos.apple.com/rss/1.0/modules/itms/). It could just describe what elements can be present in that namespace, even better would be a reference to an XML Schema that precisely defined those elements. The potentially best yet murkiest option would be to have that URI point to an RDDL document ... but there are still a lot of things that scare me about that specification.

In summary, a nice example of rich content travelling over a feed.

January 24, 2004

American Wedding

I was really wincing the first ten minutes or so of this movie -- the performances were so forced, especially by Stifler, that I thought the whole movie was doomed. Everyone soon settled into their characters, though, and it became the American Pie experience we all know and love. They've pared down the cast a bit: no Tara Reid, no american beauty Mena Suvari, no mini-Keanu Chris Klein , no Nadia, and thankfully no that guy that plays Kevin). No, wait, I think Kevin was in the movie, but did he even have any lines? Glad to see Fred Willard, but I looked around and couldn't find Harry Shearer much to my surprise. Not nearly as good as the first Pie, and not even up to the level of the second one, it's still a teen comedy that works.

American Wedding (**1/2)

January 23, 2004

Bringing Down the House

By Ben Mezrich
Bringing Down the House: The Inside Story of Six M.I.T. Students Who Took Vegas for Millions

I read this book on a recommendation from Steve and it delivered. I took a break from Quicksilver to read this because I went on vacation and didn't want to drag that tome around. As Steve mentioned, it was a fast, entertaining read. I like playing blackjack and have made some lame attempts in the past to do some card counting, but when I read about the system that this team from M.I.T. employed I was just in awe. A great, totally logical idea of using a team to count cards so no individual is pegged by the pit bosses. And then you see how the geeks got seduced by the dark side.

I don't know if it was the intention of the author, but reading this made me want to jump on a plane to Vegas!

Lost in Translation

I think my expectations might have derailed this film for me a little bit. I was expecting "more", but this film is really about subtlety and patience I wanted more Tokyo, more Bill Murray, more laughing. But that's not this movie. I do think it was a very plausible treatment of a relationship given the characters and the context. I will definitely watch this movie again to give it another chance -- for now, I give it a "good".

Lost in Translation (***)

January 21, 2004

Ocean's Eleven

This was the second time to see this movie, and it's just as cool as I remembered. "Cool" and "style" are really the two words that spring to mind when trying to describe this movie. A great caper flick with fun (though maybe a little too self-aware) performances by Pitt and Clooney and the rest of the cast.

Ocean's Eleven (***1/2)

January 15, 2004

Shaolin Soccer

What a silly, silly movie. A funny idea, and I like the tone of the movie (very light-hearted), but the special effects just got out of hand here. There are so many and they're so pervasive, they're not even special -- just effects. Still, it did make me laugh quite a few times, but it's not a great movie.

Shaolin Soccer (**1/2)

Bleep

Hey, look, an online music service that provides MP3s (with the same VBR encoding settings I use) that work on my iPod, Audiotron, Winamp, Nomad, and that other old jukebox I've got sitting in a drawer somewhere. It's from Warp Records, and while their web site sucks, and their catalog might not be your cup of tea (they've got Aphex Twin and, ... uh, well, Aphex Twin -- except that remixes album I really wanted), it's still a step in the right direction.

Source: BLEEP - Digital Downloads from Warp Records

Okay, so it's not ideal, but check out this from their FAQ:


Q: WHY ARE WARP DOING THIS NOW? WHY SHOULD I BUY FROM BLEEP? WILL IT AFFECT YOUR TRADITIONAL VINYL AND CD RELEASES?

A: The impressive uptake and acceptance of download sites such as Apple’s iTunes shows that there is a demand for high quality ‘legally’ downloaded digital music - fans that do not want to buy a CD just to rip onto their iPod, or fans unwilling to pay full CD price for a new artist are now able to get a low price high quality downloaded album direct from a clearly accessible recognised source without having to rummage around P2P servers for a week.

At the moment labels have skirted around the whole issue of making their catalogue available, often introducing various poorly-supported formats and DRM (digital rights management) complications in the process. We wanted to be the first to take a big step in what we believe is a positive direction, and see what happens.

Bleep has two distinct advantages over other stores and P2P services which we hope will see warp fans downloading directly from Bleep.
We are at present the only store to offer very high quality MP3 files. The tracks are encoded with LAME using the ‘--alt-preset standard’ VBR setting - widely acknowledged to currently give the best trade-off between transparency and file size, but with the emphasis more on sound quality than file size. Bleep MP3s have an average bit rate of around 205kbps VBR, while the majority of MP3s found on the internet are 128kbps.

Secondly, Bleep music has no DRM or copy protection built in. We believe that most people like to be treated as customers and not potential criminals - DRM is easily circumvented and just puts obstacles in the way of enjoying music. Apple has even privately stated that they decided to use a weak form of DRM solely to get major labels onboard.

Finally, buying music through Bleep means that you are supporting the artists work, and in some cases you are getting mp3’s encoded by the artists themselves. After the bandwidth charges and Bleep running costs are subtracted, the artist gets half of the album or track price.

January 13, 2004

Caching for Fun and Profit

If you're a content publisher or are responsible for coding a content retrieval engine, you should know about how web content is cached. Especially if you publish RSS/Atom feeds, and ESPECIALLY if you are writing an RSS client. Unfortunatley, really understanding the interactions between the server, client, and proxy servers/web caches can be confusing. Fortunately, Mark Nottingham (he's also very active in the Atom community) has written an excellent document called "Caching Tutorial for Web Authors and Webmasters" that is required reading for any feed aggregator coders or blog hosting sites out there.

Having written a few web caching engines before, I'd just like to add a few suggestions that I've found useful:

  • The "last modified" date should always reflect the server's clock, while a "last fetched" (for secondary cache expiration) should always use the client's clock. Don't get lazy: if you're requesting a remote resource, hold onto the last modified date that the server returns to you and store it so you can use it to set your If-Modified-Since header next time around. Don't use your local clock.
  • If you're on the server side of things and need to provide a Last-Modified header, truncate the date value you store (and send down) to the second level. I picked that tip up from Jason Hunter's book Java Servlet Programming. That means if you've just grabbed the local system time to mark when a page or item has been modified, you should do one of these tricks before you set the value and send it down in the HTTP header:

    long modifiedTime = System.currentTimeMillis() / 1000 * 1000;

  • There's nothing wrong with setting the ETag header on a response to be the same as the Last-Modified header in quotes.

One of the smart things that most of the blogging engines do (thank you Blogger for establishing the precedent) is they provide the illusion of dynamic content by generating static pages, and then let the smart folks who wrote the HTTP server figure out the caching parameters to set. That doesn't mean that the server configuration can't be tweaked, though, especially with the Cache-Control header.

Oh, don't forget about supporting gzip compression.

Living in a DDD World

In a quest to refresh some of the tunes on my iPod, I decided to rip of few of the older CDs in my collection. I was ripping The Feelies Crazy Rhythms and glanced at the cover and saw that it was a CD recorded as "AAD": analog recording, analog mixing, digital transfer. That took me back. I remember looking at the code when buying CDs, operating under the assumption that more Ds meant more better. Seems quaint now, doesn't it? They don't still provide that designation, do they?

I'm trying to remember what my first "DDD" CD was, and I'm pretty sure it was Rush Power Windows. I'm not necessarily proud of that fact, but there it is.

January 12, 2004

More Google Tricks

Following on this earlier entry, here are some more cool Google tricks you can use to win friends and influence people:

  • Vehicle ID numbers(VINs)
    example search: "AAAAA999A9AA99999"
  • UPC codes (cool -- don't forget the leading 0 or trailing 4)
    example search: "028000010874"
  • Telephone area codes ("where is this caller id from?")
    example search: "224"
  • Airport delays
    example search: "ord airport"
  • Flight status
    example search: "united 11"

Reference page for all of this stuff is still at Google Web Search Features.

January 06, 2004

Adaptation.

Boy, to be a fly on the wall for this movie pitch. A fictional movie about the inside of a real writer's head that's writing a half-real screenplay about a real book based upon real characters. This movie works on all those levels with amazing and surprising intersections between the layers. This is one of the most creative screenplays I've ever seen. It's just so funny and clever and recursive, especially how it handles the "second part" of the movie (I don't think it's a spoiler to call it hilarious satire). I didn't even know while I was watching that "The Orchid Thief" was a real book based on real characters ... and it blows me away that Charlie and Donald Kaufman were both nominated for "Best Writing, Screenplay Based on Material Previously Produced or Published", which must have been quite an interesting decision for the Academy. A masterpiece.

Adaptation. (****)

PUSH!

Here's another popular media outlet's coverage of the rise of RSS. A decent introduction, although it's amusing that the author comes to the following conclusion:

Because RSS-compatible products are based on open Internet standards, anybody can produce them. So there'll be no RSS media empire or RSS billionaires.
That's cute. The article also has a nice shout-out to FeedDemon and, best of all, recalls the infamous Wired "PUSH!" cover.

Source: 'Push' technology gets a nudge

January 05, 2004

New Version of Spring Framework

One of the libraries that we've been using pretty extensively (see earlier post "Back to the Basics with Java") is Spring, and they just released a new milestone (M4). Upgrading required some minor rework in our app, but all the changes that were made in the framework were totally rational, so I didn't mind. All the JUnit tests pass for our app, so we're going to run with it for a while.

I stumbled on this release by visiting the home page, but I now see that this is a SourceForge project, and one of the (many) great things about being a SF project is they provide RSS feeds for project releases (example: Spring Framework Release RSS Feed). So that got me thinking to what we were talking about the other day about splicing feeds. It would be useful to have a spliced feed for all of the libraries that we employ in our app. If only Jakarta had feeds for their releases!

Big List of Blog Search Engines

Here's a nice list of blog search engines and aggregators. I hope this evolves into a larger "rss ecosystem" overview, because that's really what he's got a nice start on here. Thanks Ari!

Source: Ari Paparo Dot Com: Big List of Blog Search Engines

January 01, 2004

Red Dragon

Not as good as "Silence of the Lambs, but way better than "Hannibal". I also liked this interpretation of Red Dragon better than the Michael "Miami Vice" Mann version called "Manhunter" which starred William "C.S.I." Petersen in the 80s. Ed Norton's performance was good (nice recovery from "Death to Smoochy") and I bounced back to liking Anthony Hopkins' performance after detesting him in Hannibal. This movie was actually a little better than I expected, but it's no masterpiece.

Red Dragon (***)

Feed Splicing

I'm not sure how useful this would really be in practice, but here's an article that examines "feed splicing": combining multiple RSS feeds in interesting ways to create a new feed.

It's certainly a valid operation, but I'm wondering (and maybe you can help me out) what value consumers and/or publishers would derive from these capabilities. Would you like to be able to define these "spliced" feeds that can be represented by some globally accessible unique URL, or would you just prefer to see those filtering capabilities in your feed reader or aggregator?

Source: The Algebra of RSS Feeds (LinuxWorld)