I just wrote a reCAPTCHA Extension for Oddmuse. I started out with the current version of my QuestionAsker Extension, threw in just a touch of Captcha::reCAPTCHA, and voi-la! Easy as pie.
If you are ever in the Captcha business, definitely check out Captcha::reCAPTCHA. It was extremely straightforward.
I very much enjoy writing Oddmuse modules. Oddmuse itself is this 4000-line beastie in a single file. Extensions, at least the interesting ones, build on the core by replacing internal functions with custom versions. So to add this captcha technology, for example, I overwrite the doEdit function with one of my own, calling the old doEdit function and then manipulating the generated HTML.
It's your standard sick and wonderful form of Aspect-Oriented aka Self-Modifying programming that makes me happy.
You can see the result over on the Continuity Wiki, just edit a page. Feel free to add some useful content while you're at it
Hey, I know that name! (Score:1)
I hope this means you'll continue to share ideas more, in the spirit of those PM presentations of yore.
By the way, here's my ReCAPTCHA client implementation for TinyWiki (just fixed a problem with this the other day, where their server was no longer defaulting to that Content-Type):
Re: (Score:1)
Yeah, one day I realized that I have a bigger audience of people who might actually care here than on my own site. I'll probably cross-post some stuff.
Interesting implementation. It shows how simple the protocol is. But I think I'll just stick with what I have (call it the lazy way, if you like) :)
Hmm... maybe TinyWiky should have a mechanism for page-scripts to use CPAN modules... make them automatically cached or something...
awwaiid.use.perl (Score:1)
CPAN modules would be interesting and do-able but it would break the 100 line limit I set for myself. Maybe in a larger version. The current protection model, banishing most ops with 'use ops', just wouldn't work. You couldn't do the first step. I think buu has his bot forking then chrooting itself and setting ulimits and a