1.25 reCAPTCHA interface in Emacs Lisp
======================================

2013-01-12

  Following some ideas thrown around in ‘#emacs’ (and which can also be
seen in Nic Ferrier's blog post regarding his plans for the year) I took
a quick look at reCAPTCHA. Google acquired reCAPTCHA some time ago and
most people are familiar with the mechanism: it stops spam by providing
a simple way for webmasters to add a CAPTCHA
(https://en.wikipedia.org/wiki/CAPTCHA) that stops automated harvesting
and submissions, in this case with the side-effect of helping in the
transcription effort of old books.

-=******************************************************************+-
:%@@@@@@#*@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@%:
:%@@@@*.-**.=+@@@@@@@@%%-.*@@@@@@@@@@@@@@@@@@@##@%#%@@@@@@@@@@@@@@@@%:
:%@@@@*:+=#=+:++%++%+++*--*@@@@@@@@@@@@@@@##@@%+@*++@+*%@@@@@@@@@@@@%:
:%@@@@%@@@@@@@#+#==*#*%@@@@@@@@@@@@@@@@@@@+**##+##**@=#=@@@@@@@@@@@@%.
:%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##@@@@@@@@@+#@@@@@@@@@@@@@%.
:+#########################################%#####%#####%############*.
:=+************************************=..:--:.....:-:................
#%%@%***##*#*##**%*****%****###**%%%%@#.:=++=:.:**+=*#=..............
*#%%%%%%%%%%%%%%%%%%###%#%###%%##%%%%%*.:-++=:.##.---===---==::......
*#*#%@#%#%%%%%%%%%#@@@@@@@@@@@@@@@@@@%*.:-++=:.+%----+-::----:::.:...
*@%%%@%%%%%%%%@%%%#@@@@@@@@@@@@@@@@@@@*.:-*#=:..-++++=..::::.--::-:..
--++++=+++++++++++++==================+-..:::::...........:::.:..:.:.:

  The code itself is still sort of rough - although it now uses the
customisation infrastructure and is package-ready - but I've uploaded it
to github: take a look at the reCAPTCHA Emacs Lisp interface repository
(https://github.com/fsmunoz/recaptcha).

  There are two main functionalities provided by reCAPTCHA

 1. reCAPTCHA “proper”, as described above.

 2. reCAPTCHA mailhide, that uses a similar mechanism but aimed at
    reducing automated email harvesting: it encrypts email addresses
    and requires a CAPTCHA to show the plain-text version.

  This (or at least a subset of it) could be of interest to aidalgol's
elwiki, an ambitious project that aims to create a Wiki engine on top of
elnode (which is absolutely brilliant stuff IMO, I am generally averse
to web development but elnode is quite fun to work with) - even if only
as a general reference.

  For the mailhide validation it uses Markus Sauermann's aes.el
(https://github.com/Sauermann/emacs-aes), without which it wouldn't work
at all without external dependencies.  I would like to thank Markus for
his help in debugging part of the code and even changing ‘aes.el’ to add
support for the padding mechanism that I needed!