Zotero Citation Manager

By on

I’ve been a moderately happy citeulike user for quite some time, but their community-developed scrapers have been growing less consistently useful over time – more and more, I have been forced to add citations to my repository by hand. I’m going to try something new, perhaps you’ve heard of it?


Zotero is a Firefox extension that is (also) able to scrape citations from many types of web pages. It also incorporates a nice feature set for tasks like organizing, note taking, and exporting. The site claims it will support sharing citations in the future, though I admit that I’ve never used citeulike’s community features in a serious way. Finally, I was able to move my citations from citeulike to Zotero in about a minute (!).

Have fun citing things!


Why Code at Night?

By on

Interesting article on Code Climber about why working at night can seem so much more productive. I think he’s nailed the most important issues (e.g., No interruptions!) — though he’s missed one of my faves: if I’m up late working, it’s important to me to get it done, and since I’m not going to sleep until it is done, I’m harder to distract. (During the day, Google Reader is taking away from the man. At night, it’s taking away from me!)

Reminds me of Don Knuth’s arguments about why he doesn’t use email. He says that most the work he cares about requires long periods of concentration, and that email distracts him from the concentration he needs. It’s interesting that for me lots of the work I care about the most requires lots of concentration — but that I still use IM, email, &c. Perhaps these tools help me stay connected to my network, and perhaps my most important jobs are related to being connected to that network. It would be interesting to see what sort of work would get done if we separated from that network for a while, and did more solo work. The productivity would be very different. Better? Worse?


How many Americans have been Rickrolled?

By on

The Internet is a silly place, and one of the silliest phenomena is a meme known as Rickrolling — if you follow a link, expecting e.g. burrito recipes, and instead find yourself watching Rick Astley and a backflipping bartender explaining how Mr. Astley will never give you up nor desert you, you’ve been Rickrolled. And sometimes, you might be Rickrolled en masse — on April 1, all YouTube “Featured Videos” were really Rick Astley, and readers of fark.com and other sites engineered a coordinated and successful bid to place Rick Astley on the sing-along schedule for the April 8th New Yorks Mets game (fans booed).

Anyway, how many Americans have been Rickrolled? According to SurveyUSA — a highly respected polling firm well-known to political junkies — at least 18 million.

Python’s GIL is EVIL

By on

Lately I’ve been doing some Python multi-threading to make the best use of some of our amazing server resources. As I was pondering the reasons why one of our 8-core servers reported 83% idle despite 8 threads banging away, I re-discovered the Global Interpreter Lock.


The GIL enforces Python’s requirement that only a single bytecode operation is executed at a time. My nicely coded multi-threaded app was only being executed serially!! Sadly, this seems unlikely to change, even in Python 3000. Last year Guido said:

“Just Say No to the combined evils of locking, deadlocks, lock granularity, livelocks, nondeterminism and race conditions.”

I was brought up to believe that threading was dirty and independent communicating processes were the way to go. But even I realize that this just isn’t practical in these days of GUIs, multi-core processors, and application servers.

Why does the Python community accept the GIL? Is it because most people only use Python as a scripting language? Are there simple workarounds (e.g. not forking, shared memory, or the like) that I’m missing?