Skip to: categories | main content
Entries from September 2008
I didn't hear or read much about The Good German, and hence was very pleasantly surprised after finally seeing it. This is Steven Soderbergh's WWII-era drama starring George Clooney and Kate Blanchett. It uses many stylistic devices of 1940's and 50's Hollywood films including, first and foremost, a black & white print. I wasted a good chunk of my childhood watching movies of this era on Seattle's KCPQ "Q-13" (I think they stopped filling their air-time with vintage movies right around the time I left; nearly 20 years ago). So it was kind of cool to see all those techniques and styles put to use again.
But, more importantly, it has a good plot. Set in Berlin right after the German surrender, it involves intrigue among various (and historically fairly accurate) factions: Americans who want to capture and prosecute Nazis, Americans who want to find the brightest rocket scientists to kick-start our own missile program, Russians who want to find them before we do, Germans who want to escape their complicity in Nazi war crimes, and Germans who want to cooperate and bring justice to those responsible. So given all the competing motives, you can imagine that a few plot twists are in order. Throw in a journalist just trying to get to the bottom of a story (Clooney), a corrupt Army sergeant (Tobey McGuire, his dopeyness is less out-of-place than usual here, given the actors that might have filled the role in a classic movie) and a possibly widowed German driven to prostitution (the aforementioned Blanchett) into the mix, and you have a plot that Hollywood would have loved sixty years ago.
But it still works today, and part of that is due to (no spoilers) working into the screenplay some of the actual historical facts that we have learned, namely the personal participation of German rocket scientists (including von Braun) at the slave labor camp where the V-2 was put into production. Struggle over direct evidence of such participation becomes a central plot-line providing additional drama with modern-day resonance.
There's nothing Hollywood does quite so well as dramatic tales of rogue cops and corrupt police departments, good guys gone bad, violent power struggles with Internal Affairs, and the bloody carnage of those who decide they're above the law. Street Kings is the latest in this long line, and it's quite entertaining. It is hard-fuggin-boiled, sometimes just about to the point of absurdity, lending it a latter-day noir-ish quality. Keanu Reeves' character is the bad cop, a "guided missile" with no regard for due process, taking on thugs and fellow officers alike. I gotta say, he's gradually become a better actor and he actually gives the role something very much akin to... ...believability. He's aided here by an exceptional cast: Forest Whitaker, Terry Crews, Jay Mohr, John Corbett, Hugh Laurie, Chris Evans, and others. I want to watch it again!
If you scored this one like a prize fight, I think McCain wins a split decision. He kept Obama on the defensive with constant mis-characterizations and other deceptive "tactics" (the foray into what is a tactic vs. what is a strategy was a weird, pointless tangent). Though Obama defended himself well, he delivered only glancing blows to McCain. The dueling dead-soldier bracelet match-up was pretty silly, I can just see them coming out next time festooned in bracelets, ribbons, and other memorabilia.
McCain was surprisingly lucid (must have been one of his good days), drawing on history and personal experience abroad, sounding stronger on foreign policy. Obama's counter that McCain's poor judgment in leading us into Iraq and away from Afghanistan was good, though delivered without requisite rhetorical punch.
But this was just round 1; I think Obama will be better served by the domestic topics, relating more of his own personal experiences, having more focused attacks, and putting McCain back on the defensive.
I noticed that McCain had a couple of grammatical slip-ups, though I'm sure nobody cares. And, BTW, why does he pronounce Washington "Warshington"? I didn't think that was an East-coast thing, and it's certainly not an Arizona thing.
McCain certainly dedicated himself to cutting government spending, while Obama seemed to claim it as an ideal, the specifics he mentioned would increase spending. Still, given the history of Republicans who pay lip service to fiscal conservatism, but making massive increases in federal spending when in office, we should be highly skeptical.
I was pleased that they both supported reviving the nuclear power industry as a component of alternative and green energies, though again, McCain seemed more committed to making it happen.
Obama's biggest points of the night came early on, during the economic discussion, skillfully laying out his tax plan and disparaging McCain's. And why, given all the flux, couldn't they have switched the topic to the economy?
... when the isht hits the fan! Here is just a couple of random thoughts related to the meltdown of America's financial industry.
Now, clearly, McCain's "suspension" of his campaign is a cynical and desperate ploy. But it's also an extremely odd thing to happen in a presidential race. Why not put Palin in charge of the campaign while he heads off to Washington? Oh right... if she can't step in to lead the campaign, obviously she couldn't step in as president.
It's one step short of using a crisis to suspend the election itself. Would the G.O.P. stoop so low to keep their hold on power?
Arsenals Of Folly by Richard Rhodes is the third in his nuclear trilogy, preceded by The Making Of The Atomic Bomb and Dark Sun: The Making Of The Hydrogen Bomb. Folly skips ahead to the 1980's and the height of the Cold War, the Reagan-Gorbachev summits, and subsequent disarmament treaties.
This is really an exceptional book, very well documented, with a lot of insight on this period of history. I found several things surprising. In order of decreasing shock value:
Barely covered by the mainstream media, the crackdown on the press and protesters at the Republican National Convention in Minneapolis / St. Paul is nonetheless quite disturbing. From what I've read, the tactics included "pre-emptive" arrests for "conspiracy to riot", coordinated by federal, state, and local authorities. Independent and even floor-pass credentialed journalists (including an AP photographer and nationally syndicated radio broadcaster Amy Goodman) were among those arrested while doing their jobs.
The contrast to Chicago 1968 is stark; the police riot outside the DNC and subsequent trials captured national attention that still resonates today. Now, similar actions on a broader scale barely make the news. As a number of comments have pointed out, we paid more attention to protesters in Beijing during the Olympics.
Basically, the carefully scripted nature of these political conventions is now enforced, brutally if necessary, limiting the activity of the free press; one more boot on the neck of democracy in America.
A few weeks back, I posted a couple of examples of trivial (but graphical) Twitter clients. Here's a slightly more featured example, which uses the PyQt library to hook into the powerful cross-platform Qt toolkit from Python.
Here's a screenshot. It shows how many characters you have remaining, and disables posting if the character count is over the limit. Below is the code. To run on a Debian system you'd install the python-qt4 and python-httplib2 packages. I think it is a good example that for simple applications, the Python-Qt framework is pretty nice, though in lines of code, it would probably be about the same in Java (and probably less in JavaFX). Another nice thing is that you can put together the UI with Qt Designer.
Zetcode's PyQt4 tutorial and the official PyQt documentation were indispensable.
#!/usr/bin/python import sys, urllib, httplib2 from PyQt4 import QtCore, QtGui class PTwitter(QtGui.QWidget): max = 140 uid = 'guymac' pwd = '********' twitUpdate = 'http://twitter.com/statuses/update.xml' twitCloser = 'http://twitter.com/account/end_session' def postTweet(self): mesg = self.txt.toPlainText() post = urllib.urlencode({ 'status' : mesg }) try: http = httplib2.Http() # override the default (no exceptions, status in response) http.force_exception_to_status_code = False http.add_credentials(self.uid, self.pwd) resp, content = http.request(self.twitUpdate, 'POST', post) if resp and resp.status == 200: self.lbl.setText('Twitter updated!') else: raise httplib2.HttpLib2Error, 'No response' except httplib2.HttpLib2Error, ex: print ex self.lbl.setText(ex.__str__()) http.request(self.twitCloser) def updateLabel(self): len = self.txt.toPlainText().size() self.lbl.setText('%d char(s) remaining' % (self.max-len)) # disable the post button if chars > max self.pb1.setEnabled(len <= max) def __init__(self): QtGui.QWidget.__init__(self) # Button to post self.pb1 = QtGui.QPushButton('Post') # Button to close self.pb2 = QtGui.QPushButton('Close') # TextField for input self.txt = QtGui.QTextEdit() # Label to show characters remaining self.lbl = QtGui.QLabel() tab = QtGui.QGridLayout() tab.setSpacing(5) tab.addWidget(self.txt, 0, 0, 1, 2) tab.addWidget(self.lbl, 1, 0, 1, 2) tab.addWidget(self.pb1, 2, 0) tab.addWidget(self.pb2, 2, 1) self.setLayout(tab) self.setWindowTitle('PyQt4 Twitter') self.updateLabel() # connect text change to number of chars message self.connect(self.txt, QtCore.SIGNAL('textChanged()'), self.updateLabel) # connect post click to send message self.connect(self.pb1, QtCore.SIGNAL('clicked()'), self.postTweet) # connect close click to quit self.connect(self.pb2, QtCore.SIGNAL('clicked()'), QtGui.qApp, QtCore.SLOT('quit()')) # application app = QtGui.QApplication(sys.argv) # window win = PTwitter() # display win.show() # execute sys.exit(app.exec_())
I'm disappointed with O'Reilly's Python Cookbook (Second Edition). It's unfortunate because I've found their "Cookbooks" for other languages to be A) a good way to pick up the fundamentals while B) learn recipes for common programming tasks. The Python Cookbook skimps on the language fundamentals while, despite its huge bulk, having few recipes for task types that I can imagine needing to know.
For instance, there are no examples of an XPath API, which I'd consider indispensable. One of the first things I wanted to do was take the Netflix Queue XHTML and simply extract the titles. I dug up some old Java code to do it.
The chapter on XML doesn't even have any examples of creating XML! And every Python example I've seen so far does it by simply spitting out strings. Where are the equivalents of StAX, DOM, JDOM, or (wishful thinking) E4X?
I appreciate Python's attempt to be clean, consistent, and object-oriented... in marked contrast to Perl's hodge-podge gumbo of pre-OOP stuff like C, Bourne shell, and so on. But the OOP chapter is just bizarre, full of things that I've never needed to worry about in Java.
The chapters on network and web programming don't show how to post to a web server or do authentication. The online library reference is useful, but very short on complete examples. I could go on, but suffice it to say that without Google searches, I wouldn't have gotten very far with Python.
Today I ran the 39th annual Saguaro National Park Labor Day Run, completing the 8 mile course in 80 minutes (full results). This is a demanding course at the base of the Rincon Mountains; there is one monster hill and continuous rolling hills over the rest of the course (there are really no flat sections). Lots of crazy people like to get out there at dawn and sweat like, uh, crazy; once again, I was one of them.
I've been focused on this all during the month of August, building up my ability to run it non-stop, and then running the course three times. So 80 minutes was good for me: a low-intensity pace for the first six miles, then stepping it up a little once I knew I could finish. At the end, I was running hard, trying to get under that 80 minute mark, and was only a second over. Next year, I'll try to keep a constant, higher intensity and get it down to an hour. The best runners are at about double that pace. Some of those dudes out there look like they're about ready to sweat blood or have a heart explode, and I'm not interested in that level of effort, but now I know I can do slightly better.
Last year at the same event, I really struggled. I wasn't in very good shape and showed up late and didn't know where to register. I felt bad and walked much of the course. Unfamiliarity with it made everything worse. So starting in late July, I started running it in portions, starting near the end. Sooner than expected, I could do all eight miles. So I kept the pace I was comfortable with, starting near the middle of the pack and not passing many runners.
The next event I'm doing is a 10-miler in downtown Tucson in October. The course is much flatter, so I'm working towards 8-minute-miles. Following that, who knows, eventually a full marathon?
Design by Andreas Viklund | Ported to Serendipity by Carl

