Skip to main content


Showing posts from June, 2007

Opera 9.2 is a pretty good browser

I've been trying Opera 9.2 for a week, and I'm pleased with it enough that it's going to continue to be my main browser. The main selling points for me are MDI weirdness is mostly hidden now, I hated earlier Opera UIs 20-30% less memory use; even after poking about in the guts of about:config to force FF's memory cache to the same 10MB that I gave Opera (which exposes this option right in the UI), Opera consistently uses less memory for the same workload. (Without adding this option to FF, it would max out around 400MB instead of 150MB.) feels snappier; opera seems quicker to start rendering something useful on slow-loading sites like, although total render time is about the same. It's also instantaneous to open a new tab, which consistently takes around 1s on FF after I've been using it a while. I open and close tabs frequently. UI takes up less space: I know it's possible to re-skin FF, but I'd have to google it to find out how. Opera m

A workaround for the sys.excepthook bug

About two years ago I reported the bug sys.excepthook doesn't work in threads . Then just recently someone asked in #utahpython if I had a workaround. Here it is (also added as a comment to the bug report) -- all we do is monkeypatch to run the excepthook manually if there is an uncaught exception: def install_thread_excepthook(): """ Workaround for sys.excepthook thread bug ( Call once from __main__ before creating any threads. If using psyco, call psyco.cannotcompile( since this replaces a new-style class method. """ import sys, threading run_old = def run(*args, **kwargs): try: run_old(*args, **kwargs) except (KeyboardInterrupt, SystemExit): raise except: sys.excepthook(*sys.exc_info()) threading