November 2008


Finally I watched it, after years of knowing it, and months of recording it on DVR.

And I can’t wait another minute to write about it. Thank god tomorrow (er, today) is Thanksgiving.

I think it was one of the earliest western movies semi-publicly shown in China in the 80’s, so I’ve known its name for a long time. Fortunately I only knew one spoiler, that a runner gave up an Olympic event due to his religion and won another, so up until the scene where Liddell learned about the Sunday heat (actually he knew months ago and trained specifically for 400m and earned his spot), I thought it was Abrahams who gave up something on Saturday.

I knew Vangelis from some songs from his collaboration with Yes’s Jon Anderson (mostly from the 1981 album The Friends of Mr. Cairo, in the same year as the movie). I can probably write a full post about that, but basically those were among the first rock (in a general sense) songs I’d ever heard, and they just blew my mind wide open. “Outside of This (Inside of That)” is still one of my favorites to date. And the super long (12’04) and winding title song was like a complete short film. And I can still hear the ocean wave in Mayflower now when I close my eyes, which I played during a family gathering when we made dumplings together and was ridiculed (on the same tape I had Genesis’s Domino, and someone commented “is that what they called the Screaming Rock Star?”). Oh, and I couldn’t believe it when I found out after many years that the singer is a man.

Anyhow. The movie theme song is one of those modern classics that have been so abused that hearing it would almost cause instant nausea, but it really serves the movie well. And I’m surprised that Vangelis did the whole song track (except those hymns, of course), which must be a first in movie history, blasting the way for cheap synth into pop culture (followed by the Beverly Hills Cop theme). By “cheap” I mean the cheapest keyboard can do it now, but it certainly was beyond everyone’s imagination back then.

I think I read somewhere that the movie is considered a milestone for modern sports movies. The script is very well written (deserving its Oscar) with the interleaved and contrasting paths of two great athletes. The movie is very well paced, in 80’s standard at least. And all the slow mo’s actually aren’t that sickeningly cliche, for example the 100m final goes in real time in the first play, and slow mo’ed a few short times afterwards, just like a real TV broadcast nowadays.

Other interesting tidbits:

  • In the opening scene when they ran to the Carlton Hotel (J noticed the name; in real life it’s a student residence hall) in the distance, I said “that looks like St. Andrews”. Lo and behold, it is actually filmed there. And most of the runners in the scene are caddies there.
  • I couldn’t understand most of the dialog in the beginning due to the English and Scottish accent, and that I couldn’t turn up the volume since baby is sleeping. So the first half was quite confusing as I couldn’t understand how the two runners are related until Abrahams watched Liddell winning the 400m after falling down.
  • I can’t believe Liddell’s story isn’t more known in China (especially this year), since he is the first Chinese-born Olympic gold medalist and he dedicated the second half of his life to Chinese people. (Actually I completely understand why: he’s a missionary. Religion is poison, isn’t.) He was born in a missionary family in Tianjin, died in a internment camp in 潍坊, and buried in the same cemetery along with Norman Bethune and Dwarkanath Kotnis.
  • Sam Mussabini is a very successful coach. He coached Olympic gold medalists in 1908, 12, and 20 games, so Abrahams in 24 would be almost like a routine for him. So his emotional celebration in the movie is probably another nice fabrication.
  • When the Americans appear in the Olympics, I was wondering how many stars the flags have (should be 48). Wikipedia and IMDb say the flags in the movie all have 50 stars.
  • In real life, the text from the Bible was handed to Eric Liddell by a coach on the US team, not by Jackson Scholz, who actually won the 200m (Liddell won bronze, and Abrahams was last in final).
  • I thought the scene in a church where Liddell gave signature to a young girl was odd, because I thought Jennie was his wife (she’s his sister), so it’s completely against his religious conviction to flurt with a girl in front of his wife. IMDb says that a scene was cut where he courts the same girl in Paris, and she is from Canada, as is Liddell’s real life wife.
  • I suppose the Paris Olympics scenes are pretty accurate. What a contrast with Beijing 2008! The stadium is smaller than a high school football field. There’s no show or firework. And the runners have to dig their own holes at starting line.
  • The rather conspicuous Lipton Tea sign (the only one) in the stadium for the 100m may be a sign of commercialization, just like the fact that Abrahams used a professional coach, of which the Cambridge guys accused him, is probably a sign of the death of amateurism in Olympics.

This seems to explain things pretty clearly.

Definition Task Manager Process Explorer vadump -s
Physical memory in use Mem Usage Working Set

WorkingSetSize
Private (no DLL) VM allocated/committed VM Size Private Bytes PagefileUsage
Total VM (including mmap, dll, etc) N/A Virtual Size (Image + Priv + Mapped) Commitment + Dynamic Reserved Memory

On 32-bit Windows, max address space (virtual size) is 2GB.

The 3 types of commitment in vadump -s are:

  • Image: process executable code
  • Mapped: memory mapped stuff like files
  • Private: process heap (and stack?)

vadump -so has a section that breaks down working set. Two entries are important: Heap is Windows native heap, and Other Data would be, e.g. CLR and JVM stuff.

I’ve always wanted to catalog our library. I heard about LibraryThing a while back, but didn’t pursue it.

Last month we brought a stack of books back from China, as always. And I forgot what drove me to buy a CueCat from LibraryThing, but yes, I finally decided to do it.

I regretted as soon as I got the PayPal confirmation email. Why did I buy a bar code scanner when I can just type in the ISBN?

It turns out as one of the better mistakes I’ve made lately. There’s only one issue here: efficiency.

We have far more Chinese books than English ones, and I immediately found that LibraryThing can’t find any Chinese book from its few alleged Chinese sources. Then I remembered Douban.

Douban is a lot more of a social network than a library as LibraryThing, as you can’t even sort your books. But it does a pretty good job of finding Chinese books, so I happily entered about a dozen ISBNs manually.

Then I realized how efficient CueCat is with LibraryThing. Ignore the time to take a book from the shelf and put it back, it takes less than a second to get a book into LibraryThing after I mastered the scan speed, whereas it takes at least 15-20 seconds for Douban: type 10 digits (my laptop doesn’t have a num pad), enter, click “Reading”, “Want to Read”, or “Have Read”, pick tags.

Granted, I need to tag books in LibraryThing later, but that can be done in a batch.

So after a few more Chinese books I couldn’t stand it any more. I found a site with JavaScript to decode CueCat string, but it’s still a hassle to copy-n-paste the ISBN into Douban. Then I found Douban has API (python, php, and Java), and thought I could write a simple web app to decode CueCat, search Douban, and add the book.

It would probably take a web programmer less than 15 minutes to do it, but I was too lazy and too dumb. Instead I found a Java app that decodes and launches a browser, and Douban has a search URL like http://www.douban.com/book/isbn. Now it takes about 5 seconds. Good enough.

After I finish scanning all the books, hopefully I can gather some courage to write something with Douban’s API to better display the books.

For now, here are our English books, and here are our Chinese books.

Don’t even think of borrowing them.

From two unrelated stories on WSJ today I see extraordinary beauty.

One is about Catherine Deneuve’s new movie A Christmas Tale. Her daughter Chiara Mastroianni plays her daughter-in-law. And guess who’s her real life father? Doesn’t the last name ring a bell? Now say it with the Italian downward emphasis: Mar-ce-llo. Good god. It’s like a hypothetical singer from a Dieskau/Schwarzkopf union, or a golfer from Woods/Sorenson.

I have to say, though, that I’m disappointed when I did an image search for her. She’s beautiful, no doubt, but the daughter of Marcello and Catherine should be transcendental. I haven’t actually watched many of their movies–one each, to be precise. The Deneuve one is none other than her break out Umbrellas of Cherbourg, which I saw a while ago on TV. Just classic–in terms of her beauty.

Flip the page, there’s a story about how Frida Giannini renovated her 15th-century Tuscany villa. 36 years old, daughter of an architect, former equestrian, started out at Fendi in 1997, took charge of Gucci handbag in 2002, then all accessories in 2004, women’s dress in 2005, and finally became the sole Creative Director in 2006, replacing the 12-year sex pistol director Tom Ford who made Gucci what it is today.

While the devil may wear Prada, beauty always ends with an “i” sound.

cover

One of the “trilogy” books related to the neurophysiology of brain that I’ve read in the last year or so, the other two are “What’s going on in there?” about baby’s brain development, and “Mind of Market” by Michael Shermer. One of these days I’ll write about them.

I think these are indeed related as they show different aspects of how and why our brain is what it is in terms of evolution and development, which is exactly what defines a human. Shermer covers more on evolution, the baby book on development, and Kluge a combination of both.

A couple notable quotes:

The machinery of language and deliberative reason has led to enormous cultural and technological advances, but our brain, which developed over a billion years of pre-hominid ancestry, hasn’t caught up. The bulk of our genetic material evolved before there was language, before there was explicit reasoning, and before creatures like us even existed. …

Our memory, contextually driven as it is, is ill suited to many of the demands of modern life, and our self-control systems are almost hopelessly split. Out ancestral mechanisms were shaped in a different world, and our more modern deliberative mechanisms can’t shake the influence of that past.

The author’s advice for dealing with the limits of our brain:

  1. Whenever possible, consider alternative hypotheses.
  2. Reframe the question.
  3. Always remember that correlation does not entail causation.
  4. Never forget the size of your sample.
  5. Anticipate your own impulsivity and (try to) pre-commit (to avoid impulsivity).
  6. Don’t just set goals. Make contingency plans.
  7. Whenever possible, don’t make important decisions when you are tired or have other things on your mind.
  8. Always weigh benefits against costs.
  9. Imagine that your decisions may be spot-checked.
  10. Distance yourself.
  11. Beware the vivid, the personal, and the anecdotal.
  12. Pick your spots. (Make a decision, don’t’ procrastinate forever)
  13. Try to be rational.

No, it’s not about religion, or reality TV, or random rant.

Those are names in Java’s memory management model.

In the beginning, Java gc was simple and stupid: run when heap is full. So your app happily gobbles up memory until… a… lo…ng pau…se.

Then the Java guys found a common pattern among most apps: most objects die young (used only for a short time), but those who survive live long. The X unit of the graph is object life span not in time, but in terms of number of bytes allocated between their birth and death.

Therefore Java memory is now divided into 3 generations:

  1. Young
    1. eden
    2. two survivor spaces
  2. Tenured
  3. Permanent (and code cache): stores JVM’s own stuff

Heap = young + tenured. It starts at physical memory / 64, and max is min(mem/4, 1GB), unless you specify -Xms and -Xmx. Default perm size is 64MB (-XX:MaxPermSize). Default code cache is 32MB (-XX:ReservedCodeCacheSize).

Now object life cycle is like this:

  1. Objects are always allocated to eden.
  2. When eden fills up, a fast but not comprehensive gc (minor collection) is run over the young generation only.
  3. All survivors are moved into one survivor space, plus everything from the other survivor space (survivors from the previous minor collection).
  4. When objects in survivor space is old enough (or survivor fills up), they are moved to tenured.
  5. When tenured fills up, a major collection is run that is comprehensive: all heap, all objects.

Run java with -verbose:gc (or -Xloggc:file) and it prints stuff like this:


[GC 15081K->14088K(20988K), 0.0110810 secs]
[Full GC 15078K->13996K(20988K), 0.1845024 secs]

GC = minor collection and Full GC = major. Numbers are pre gc -> post gc (total committed heap).