Man on Wire

This movie came recommended by my friend Dave Bourgeois.

Awesome film! A documentary in the Errol Morris style; it managed to keep me in suspense until the end, even though I already knew how it ended.  Also, it had some extra emotional impact because the WTC played such a central role.

Emacs 23

Much to my surprise, the Fedora Emacs maintainers pushed Emacs 23 into the (ostensibly stable) Fedora 11 repository.  I was a bit afraid to upgrade, since Emacs really is the cornerstone of my entire workflow.  My desire for new features quickly overcame my fear, though.

The first thing you will notice is that Emacs is much prettier.  It now uses XFT to render, so you get antialiasing.  For normal work, I don’t really care much, but this is why I used CVS Emacs last year for presentations: it makes a huge difference in situations where prettiness matters.  Unfortunately this seems to have negatively affected redisplay performance.

Another major feature I have been loving is support for multiple terminals.  I use this in two ways.

I run my Emacs on my main machine, of course.  This is the centerpiece of my desktop: I use it for hacking, for mail and news, and for irc.  Previously, if I used my laptop, I couldn’t easily access all this state; but now I can ssh to my main machine, run emacsclient -t, and have access to everything.

I’ve also set EDITOR to emacsclient -t.  This means that when I run git commit in a shell, the commit message shows up in a new emacs frame on that terminal.  This is very convenient for “quickie” edits, because it means not having to switch my focus. (If I had to pick a single reason that Emacs improves my productivity, this would be it: it makes it very easy to keep one’s focus.)

Funnily, though, I don’t actually run git commit in a shell very often any more, because the new vc-dir mode is good enough that I can do some common git operations without leaving Emacs.  If you tried VC in earlier versions of Emacs, then you probably remember it as a horrible joke — it worked fine for RCS, but was miserable at anything else.  vc-dir is something like a generalized pcl-cvs, so you can work on a whole directory tree at once (and do so efficiently, unlike the old vc-dired).  vc-dir is still pretty new, and there are some necessary operations that aren’t exposed (git push), but it is still a very nice step forward.

This release is definitely worth upgrading to.

Wish List Item

I’ve been trying for a while to figure out how best to read blogs.

Right now I use three different methods — I use iGoogle for some things, plain old web browsing for some, and then gnus for one feed.  What a pain!  I’ve also tried other readers in the past — a couple web-based one, Azureus, maybe something else.

None of these are ideal for me.  I think what I would really like is to use Gnus for everything, except Gnus blocks annoyingly while fetching the feeds.  So, I could use nntp//rss.  But then I am setting up and configuring yet another program, setting it up to run when I log in, forgetting to copy its configuration to my laptop, etc.

I wish there were “gmane for rss” — a site that ran nttp//rss for me and let me subscribe to any old feed using my news reader.  Anybody know of one?

Wait!  I have other complaints too!  I’ll save those for later… I’m turning into the sort of person who wishes RSS were NNTP and that Common Lisp were popular again.  What is happening to me?!?

Olive

OliveYou may have noticed that I have not blogged for quite some time.  I’ve been otherwise engaged… Olive Emmanuelle Tromey was born May 1.  As you can see, she appears to have an outlook on life quite similar to Elyn’s and mine.

We’ve been posting oodles of photos of her on facebook, so if you’re wanting to see more, ask me for a URL or friend me there.

The Atrocity Archives

What is going on in Scotland?  There are too many creative SF writers there.  I demand that they be forced to churn out fantasy books until they have lost their edge.

I recently read The Atrocity Archives, by Charles Stross.  Following my general theme of SF ignorance, I hadn’t heard of him until I read about him on a blog last week.  This book is a high-speed collision between hacker culture, the Cthulhu mythos, and the spy genre.  Awesome stuff!  Be warned, the “atrocity” bits are pretty atrocious.  That sort of thing takes a toll while reading — and based on an experience in a writing group, while writing as well (we all wrote short stories about offensive things… it turns out that I have a deep, dark streak in my imagination).

The hackers in this book are absurdly archetypal.  This makes for great reading, but I think I’d hate them in real life.  ESR single-handedly turned hackerdom from a genuine culture into something that can only be an affectation: when your culture and attitudes and slang are codified a reference manual, and actually referenced, it is time to mutate and move on.

Taken

Taken is a revenge movie.  The hero’s daughter is kidnapped while on a trip to Paris.  The rest of the movie is the story of him killing and maiming his way through the echelons of the kidnapping ring to rescue her.  This movie was pretty dark and made a bit more disturbing by the fact that I am going to have a daughter soon… a daughter who will now never visit Paris alone, as I simply don’t have the skills required to protect her.

By “pretty dark” what I mean is that the main character basically acts like a psychopath.  He kills or at least hurts nearly everyone he meets.  Of course, the movie sets things up so that we cheer his actions; without the intro this would be a sickening story about a deranged thrill killer.  The setup worked very well.  Too well, in fact: I thought the end of the movie came too soon, and I wanted to watch Liam Neeson kill more people.  My walk home was marked by violent fantasies of justified revenge.

These revenge stories are powerful and popular, because they play on our fairness, a major value.  I think this explains the popularity of police shows, too… we like to see evildoers get their just desserts.

The filmmaking here is pretty basic.  There were a couple of weirdly delivered lines, and Neeson’s phone call with the kidnappers follows Sidney Lumet’s advice to always go with the emotional truth and not the literal truth: which is a fancy way of saying that the call made no sense.  The action is nonstop, though.  For once I thought the trailers were very accurate: if you like what you see in the trailers you will not be disappointed by the film.

In the end I am not sure whether I liked this or not.  It pushed my emotions around, but perhaps a bit too hard, and only in one direction.  Still, it was decent for what it was, a hyper-violent story of single-minded revenge.

Gold

I finally got around to trying gold (the new linker) for real.  Today I built it and tried linking gdb.  Sure enough, it is a lot faster — it was more than twice as fast at linking gdb as the F9 system linker.  The link went from 48 seconds to 22 seconds.

It is very simple to build and use.  Just check out binutils and configure with --enable-gold.  Then build and install it, put it in your path, and you’re done.

Tampopo

Elyn got me this DVD for Christmas.  Aside from being a “spaghetti eastern” (har, har), it is a lovely meditation on the universal act of eating.

This is such an unusual film that I’ve been thinking a bit about what attracts me to it.  I like the joy and the quietness of it — I like happy endings and mundane, as opposed to extreme, conflict.  Also, I enjoy how very foreign it seems… I know zilch about Japan, and for all I know a truck-driving cowboy is some kind of icon there — but here he just seems bizarre.  And, I like the film’s digressions from the main story, which are entertaining but not excessively distracting.

This is a must-see.

The Eyre Affair

Our friend Jennifer recommended this the other week.

Initially I put this book into the same category as The Yiddish Policemen’s Union — which is to say, tough competition.  And, while enjoyable, The Eyre Affair is not really up to the same standard; the writing is decent but not popping, the ideas are fun but, after a while, perhaps a bit obvious.

By midway through I decided that this book fits more into the genre of The Hitchhiker’s Guide.  It has a similar approach to logic and reality, and I found it enjoyable in a similar sort of way.  Where Union, improbably, is a serious book in goofy trappings, Affair makes no excuses for its goofiness — every character has an absurd, jokey name.

Affair is the first of a series.  I read the second (good as well) and the third (less good).  The series went meta — events happening inside of books in the book — and I lost my connection with the characters.  Though… even the third has some gems, like the discussion of “had had” and “that that”.

I realized after a while that sometimes I am not positive enough about the good books, or detailed enough about my reasons for liking them.  You really ought to read Union.  It is great.  Soon I Will Be Invincible is another one — I wrote about it tepidly, but it really is a must-read.

11. The End

We’ve covered many of the features of python-gdb:

  • Writing new commands
  • Convenience functions
  • Pretty-printing
  • Auto-loading of Python code
  • Scripting gdb from Python
  • Bringing up a GUI

In fact, that is probably all of the user-visible things right now.  There are classes and methods in the Python API to gdb that we have not covered, but you can read about those when you need to use them.

What next?  There are a few things to do.  There are probably bugs.  As we saw in some earlier sections, support for I/O redirection is not there.  We need better code for tracking the inferior’s state.  Barring the unexpected, all this will be done in the coming months.

Now is an exciting time to be working on gdb.  There are a number of very interesting projects underway:

  • Reversible debugging is being developed.  The idea here is that gdb can record what your program does, and then you can step backward in time to find the bug.
  • Sérgio Durigan Júnior, at IBM, has been working on syscall tracing support.  This will let us do strace-like tracing in gdb.  What’s nice about this is that all the usual gdb facilities will also be available: think of it as a Python-enabled strace, with stack dump capability.
  • The excellent folks at Code Sourcery (I would name names, but I’m afraid of leaving someone out) are working on multi-process support for gdb.  This is the feature I am most looking forward to.  In the foreseeable future, gdb will be able to trace both the parent and the child of a fork.  The particular “wow” use-case is something I read on the frysk web site: run “make check” in gdb, and have the CLI fire up whenever any program SEGVs.  No more futzing with setting up the debug environment!  In fact, no more figuring out how to get past libtool wrapper scripts — we could add a little hack so that you can just run them in gdb and the right thing will happen.

Naturally, we’ll be wiring all this up to Python, one way or another.

I’ve also got some longer-term plans for the Python support.  I’m very interested in extending gdb to debug interpreted languages.  As with most computer problems, this means inserting a layer of indirection in a number of places: into expression parsing, into symbol lookup, into breakpoints, into watchpoints, etc.  The goal here is to be able to write support for, say, debugging Python scripts, as a Python extension to gdb.  Then, users could switch back and forth between “raw” (debugging the C implementation) and “cooked” (debugging their script) views easily.

I have two basic models I use when thinking about python-gdb: valgrind and emacs.

Emacs is a great example of managing the split between the core implementation and scripts.  Emacs developers prefer to write in elisp when possible; the core exists, more or less, to make this possible for a wide range of uses.  I’m trying to steer gdb in this direction.  That is, push Python hooks into all the interesting places in gdb, and then start preferring Python over C.  (Mozilla might have been another good example here — but I am more familiar with Emacs.)

Naturally, we’ll pursue this with extraordinary wisdom and care.  Cough cough.  Seriously, there are many areas of gdb which are not especially performance sensitive.  For example, consider the new commands we wrote during this series.  Even support for a new language would not require anything that could not be comfortably — and excellently — done in Python.

Valgrind taught me the Field of Dreams model: even a fairly esoteric area of programming can attract a development community, provided that you build the needed infrastructure.  In other words, just look at all those cool valgrind skins.  This library orientation, by the way, is something I would like to see GCC pursue more vigorously.

I’m very interested to hear your feedback.  Feel free to post comments here, or drop us a line on the Archer list.

We’ve come to the end of this series of posts.  I’m sad to see it end, but now it is time to stop writing about python-gdb features, and to go back to writing the features themselves.  I’ll write more when there is more to be said.