Sorry, couldn't find your email address anywhere :)
Richard Jones' Log
Does anyone happen to know who used to sit behind the email address editor at pythonjournal.com?
It's quite an amazing work that took Shaun four years to develop. It tells a story of migration in just over 120 pages of pencilled artwork. It's a "silent" graphic novel - there's no words. The images are incredibly evocative - very early on when the man is leaving his home there's a heart-breaking scene of him leaving his family. In particular, the image of the daughter looking up from her breakfast bowl to see the his packed suitcase has really stuck with me. It helps that Shaun has nailed the graphic novel format completely - his use of multiple panels is some of the best I've seen.
Shaun's website has sample images from the book, but as was said last night, you can't just flip through the book to random pages. Sure the artwork is gorgeous, but you'd completely miss the extra impact from the story itself.
This is a fascinating experiment mapping 33,000 English nouns to the colours they are represented by in online image searches.
You'll need to run it in Firefox to have any luck (doesn't work in Konq, even though they use the same Java VM in Linux and also no show in Safari), and sadly you'll need IE to use the advanced "click" feature and context menus. The word search still works in FF though.
link via Nat :)
"How to send automated email notifications and not get caught in spam filters"
I'm discovering that a small number of reviewers for OSDC papers never got their initial notification because it's sitting in their spam box (or, in some cases, a spam box upstream from their mail reader).
I had a bug report for Roundup recently that the demo broke when using pytz. That's an optional module for Roundup - one of very few as I've strived over the years to keep the external dependencies to a minimum.
It turned out the user in question was running an older version of pytz. Upon upgrading to the latest version the user still has the same problem...
that didn't work for me. Even though the latest version 2006g of pytz installed properly and "import pytz; pytz.VERSION" returned "2006g", when I ran the roundup install it failed. What I discovered is that matplotlib installs an older version of pytz and matplotlib was ahead of pytz in easy_install.pth. Just a head's up in case you get more bugs along this line.
I've been doing a bit of ctypes-based work lately. It's taught me a few things:
- ctypes is way cool and IronPython (which Anthony tells me - on a daily basis - is cool) needs full support ASAP.
- setjmp / longjmp are really quite nasty and should be avoided. ctypes is going to have to grow special support for setjmp so it can interface to certain libraries.
- Setting up Structure classes for C structs is a pain* and a little dodgy to boot**. I've been using a lot of c_void_p to handle structures that are being passed around (if I don't need to access structure members). This would scare the willies out of a C programmer (it would have scared me a few years back). I've spent long enough programming Python that I'm automatically careful about what I pass to functions. You know, the "we're all consenting adults" thing. I don't just pass any old crap, I pass what the function expects. No static typing crutches needed.
- The catch with using c_void_p everywhere is that ctypes turns the value into a regular Python int. This can cause problems if you then need to pass the address of the pointer somewhere. My work-around is to define a dummy Structure which I can use in place of "void".
*: Sometimes C headers can go out of their way to be obscure. Have a look at freetype's headers some day, starting with ft2build.h
**: I'm quite concerned that the code I have defined structures for will behave poorly on platforms where c_int != 32 bits, etc. My working knowledge of such portability issues is limited though, unfortunately. I guess that if it was a real issue then ctypes would provide 8-, 16-, 32- and 64-bit base types to work with.