# \[ANN\] flatulent-0.0.2 - ajax gets stinky

**URL:** <https://rubytalk.org/t/ann-flatulent-0-0-2-ajax-gets-stinky/38851>\
**Category:** ruby-talk\
**Created:** [4 July 2007 21:53 UTC](https://rubytalk.org/t/ann-flatulent-0-0-2-ajax-gets-stinky/38851 "2007-07-04T21:53:43Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![a11](https://yyz1.discourse-cdn.com/flex029/user_avatar/rubytalk.org/a11/32/8169_2.png) [@a11](https://rubytalk.org/u/a11)\
**Post date:** [4 July 2007 21:53 UTC](https://rubytalk.org/t/ann-flatulent-0-0-2-ajax-gets-stinky/38851/1 "2007-07-04T21:53:43Z")

</div>

NAME

&nbsp;&nbsp;&nbsp;flatulent : CAPTCHA for FIGLET.

SYNOPSIS

&nbsp;&nbsp;&nbsp;the flatulent gem provides brain dead simple to use, but internally cunning,  
&nbsp;&nbsp;&nbsp;ascii art captcha for ruby.

URI

&nbsp;&nbsp;&nbsp;[http://codeforpeople.com/lib/ruby](http://codeforpeople.com/lib/ruby)  
&nbsp;&nbsp;&nbsp;[http://rubyforge.org/projects/codeforpeople](http://rubyforge.org/projects/codeforpeople)

HOW DO I GET FLATULENT?

&nbsp;&nbsp;&nbsp;gem install flatulent

HISTORY

&nbsp;&nbsp;&nbsp;0.0.2

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- ajax gets stinky: Flatulent.ajax! the result of this new addition is  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that the captcha itself doesn't appear in the source file at all

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- blowfish encoding for timebomb and captcha fields

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- auto server key configuration using hostname and mac address

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- improved noise algorithm

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- improved character placement (chars shared edges to make ocr'ing harder)

&nbsp;&nbsp;&nbsp;0.0.1

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- initial version

RAILS EXAMPLES

&nbsp;&nbsp;&nbsp;REGULAR METHOD (LESS SECURE):

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def controller\_action  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if params.has\_key? 'flatulent'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Flatulent.validate! params  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;render :inline =\> \<\<-html  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<html\>\<body\>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#{ Flatulent.form }  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\</body\>\</html\>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;html  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;AJAX METHOD (MORE SECURE):

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def controller\_action  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if params.has\_key? 'flatulent'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Flatulent.validate! params  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;render :inline =\> \<\<-html  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<html\>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<head\> \<%= javascript\_include\_tag 'prototype' %\> \</head\>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<body\>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<form action='./' method='post'\>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<%= Flatulent.ajax %\>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<input type='submit' name='submit' value='submit' /\>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\</form\>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\</body\>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\</html\>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;html  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end

DOCS

&nbsp;&nbsp;&nbsp;see source in ./lib/\*  
&nbsp;&nbsp;&nbsp;see the example rails project in ./rails

ONLINE SAMPLES

&nbsp;&nbsp;&nbsp;[http://drawohara.tumblr.com/post/4944987](http://drawohara.tumblr.com/post/4944987)

ONLINE DEMO OF AJAX METHOD

&nbsp;&nbsp;&nbsp;[http://fortytwo.merseine.nu:3000/flatulent/ajax](http://fortytwo.merseine.nu:3000/flatulent/ajax) -- try to break it!

enjoy.

-a

> **···**
>
> --  
> we can deny everything, except that we have the possibility of being better. simply reflect on that.  
> h.h. the 14th dalai lama

---

<div class="post-metadata">

**Author:** ![List.rb](https://avatars.discourse-cdn.com/v4/letter/l/f08c70/32.png) [@List.rb](https://rubytalk.org/u/List.rb)\
**Post date:** [4 July 2007 22:38 UTC](https://rubytalk.org/t/ann-flatulent-0-0-2-ajax-gets-stinky/38851/2 "2007-07-04T22:38:40Z")

</div>

very nice! Thanks Ara

> **···**
>
> On 7/4/07, ara.t.howard \<ara.t.howard@gmail.com\> wrote:
> 
> > NAME
> > 
> > &nbsp;&nbsp;&nbsp;flatulent : CAPTCHA for FIGLET.
> > 
> > SYNOPSIS
> > 
> > &nbsp;&nbsp;&nbsp;the flatulent gem provides brain dead simple to use, but  
> > internally cunning,  
> > &nbsp;&nbsp;&nbsp;ascii art captcha for ruby.
> > 
> > URI
> > 
> > &nbsp;&nbsp;&nbsp;[http://codeforpeople.com/lib/ruby](http://codeforpeople.com/lib/ruby)  
> > &nbsp;&nbsp;&nbsp;[http://rubyforge.org/projects/codeforpeople](http://rubyforge.org/projects/codeforpeople)
> > 
> > HOW DO I GET FLATULENT?
> > 
> > &nbsp;&nbsp;&nbsp;gem install flatulent
> > 
> > HISTORY
> > 
> > &nbsp;&nbsp;&nbsp;0.0.2
> > 
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- ajax gets stinky: Flatulent.ajax! the result of this new  
> > addition is  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that the captcha itself doesn't appear in the source file at all
> > 
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- blowfish encoding for timebomb and captcha fields
> > 
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- auto server key configuration using hostname and mac address
> > 
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- improved noise algorithm
> > 
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- improved character placement (chars shared edges to make  
> > ocr'ing harder)
> > 
> > &nbsp;&nbsp;&nbsp;0.0.1
> > 
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- initial version
> > 
> > RAILS EXAMPLES
> > 
> > &nbsp;&nbsp;&nbsp;REGULAR METHOD (LESS SECURE):
> > 
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def controller\_action  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if params.has\_key? 'flatulent'  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Flatulent.validate! params  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
> > 
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;render :inline =\> \<\<-html  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<html\>\<body\>  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#{ Flatulent.form }  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\</body\>\</html\>  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;html  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
> > 
> > &nbsp;&nbsp;&nbsp;AJAX METHOD (MORE SECURE):
> > 
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def controller\_action  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if params.has\_key? 'flatulent'  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Flatulent.validate! params  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
> > 
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;render :inline =\> \<\<-html  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<html\>  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<head\> \<%= javascript\_include\_tag 'prototype' %\> \</head\>  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<body\>  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<form action='./' method='post'\>  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<%= Flatulent.ajax %\>  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<input type='submit' name='submit' value='submit' /\>  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\</form\>  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\</body\>  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\</html\>  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;html  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
> > 
> > DOCS
> > 
> > &nbsp;&nbsp;&nbsp;see source in ./lib/\*  
> > &nbsp;&nbsp;&nbsp;see the example rails project in ./rails
> > 
> > ONLINE SAMPLES
> > 
> > &nbsp;&nbsp;&nbsp;[http://drawohara.tumblr.com/post/4944987](http://drawohara.tumblr.com/post/4944987)
> > 
> > ONLINE DEMO OF AJAX METHOD
> > 
> > &nbsp;&nbsp;&nbsp;[http://fortytwo.merseine.nu:3000/flatulent/ajax](http://fortytwo.merseine.nu:3000/flatulent/ajax) -- try to break it!
> > 
> > enjoy.
> > 
> > -a  
> > --  
> > we can deny everything, except that we have the possibility of being  
> > better. simply reflect on that.  
> > h.h. the 14th dalai lama

---

<div class="post-metadata">

**Author:** ![Chris\_Carter](https://avatars.discourse-cdn.com/v4/letter/c/a8b319/32.png) [@Chris\_Carter](https://rubytalk.org/u/Chris_Carter)\
**Post date:** [5 July 2007 00:29 UTC](https://rubytalk.org/t/ann-flatulent-0-0-2-ajax-gets-stinky/38851/3 "2007-07-05T00:29:59Z")

</div>

Ara, if you try to answer in caps (as it is presented) it will fail,  
this seems kinda wacky, seeing as most \_users\_ I know will try to  
answer in the same case as it is presented. Perhaps it should be  
case-insensitive, or you could branch out and do lowercase letters  
too.

> **···**
>
> On 7/4/07, ara.t.howard \<ara.t.howard@gmail.com\> wrote:
> 
> > NAME
> > 
> > &nbsp;&nbsp;&nbsp;flatulent : CAPTCHA for FIGLET.
> > 
> > ONLINE DEMO OF AJAX METHOD
> > 
> > &nbsp;&nbsp;&nbsp;[http://fortytwo.merseine.nu:3000/flatulent/ajax](http://fortytwo.merseine.nu:3000/flatulent/ajax) -- try to break it!
> 
> --  
> Chris Carter  
> concentrationstudios.com  
> brynmawrcs.com

---

<div class="post-metadata">

**Author:** ![a11](https://yyz1.discourse-cdn.com/flex029/user_avatar/rubytalk.org/a11/32/8169_2.png) [@a11](https://rubytalk.org/u/a11)\
**Post date:** [4 July 2007 22:50 UTC](https://rubytalk.org/t/ann-flatulent-0-0-2-ajax-gets-stinky/38851/4 "2007-07-04T22:50:46Z")

</div>

with brian's help it may be useful yet!

cheers.

-a

> **···**
>
> On Jul 4, 2007, at 4:38 PM, list. rb wrote:
> 
> > very nice! Thanks Ara
> 
> --  
> we can deny everything, except that we have the possibility of being better. simply reflect on that.  
> h.h. the 14th dalai lama

---

<div class="post-metadata">

**Author:** ![James\_Britt](https://avatars.discourse-cdn.com/v4/letter/j/22d042/32.png) [@James\_Britt](https://rubytalk.org/u/James_Britt)\
**Post date:** [5 July 2007 01:03 UTC](https://rubytalk.org/t/ann-flatulent-0-0-2-ajax-gets-stinky/38851/5 "2007-07-05T01:03:07Z")

</div>

case sensitive would be sweet!

> **···**
>
> On Jul 4, 2007, at 7:29 PM, Chris Carter wrote:
> 
> > On 7/4/07, ara.t.howard \<ara.t.howard@gmail.com\> wrote:
> > 
> > > NAME
> > > 
> > > &nbsp;&nbsp;&nbsp;flatulent : CAPTCHA for FIGLET.
> > > 
> > > ONLINE DEMO OF AJAX METHOD
> > > 
> > > &nbsp;&nbsp;&nbsp;[http://fortytwo.merseine.nu:3000/flatulent/ajax](http://fortytwo.merseine.nu:3000/flatulent/ajax) -- try to break it!
> > 
> > Ara, if you try to answer in caps (as it is presented) it will fail,  
> > this seems kinda wacky, seeing as most \_users\_ I know will try to  
> > answer in the same case as it is presented. Perhaps it should be  
> > case-insensitive, or you could branch out and do lowercase letters  
> > too.
> > 
> > --  
> > Chris Carter  
> > concentrationstudios.com  
> > brynmawrcs.com

---

<div class="post-metadata">

**Author:** ![a11](https://yyz1.discourse-cdn.com/flex029/user_avatar/rubytalk.org/a11/32/8169_2.png) [@a11](https://rubytalk.org/u/a11)\
**Post date:** [5 July 2007 02:57 UTC](https://rubytalk.org/t/ann-flatulent-0-0-2-ajax-gets-stinky/38851/6 "2007-07-05T02:57:12Z")

</div>

a bug!

thanks - i'll fix

fyi. it's supposed to be be both case insensitive and counts o O and 0 as the same char as they look the same in figlet.

cheers.

-a

> **···**
>
> On Jul 4, 2007, at 6:29 PM, Chris Carter wrote:
> 
> > Ara, if you try to answer in caps (as it is presented) it will fail,  
> > this seems kinda wacky, seeing as most \_users\_ I know will try to  
> > answer in the same case as it is presented. Perhaps it should be  
> > case-insensitive, or you could branch out and do lowercase letters  
> > too.
> 
> --  
> we can deny everything, except that we have the possibility of being better. simply reflect on that.  
> h.h. the 14th dalai lama

---

<div class="post-metadata">

**Author:** ![a11](https://yyz1.discourse-cdn.com/flex029/user_avatar/rubytalk.org/a11/32/8169_2.png) [@a11](https://rubytalk.org/u/a11)\
**Post date:** [5 July 2007 02:57 UTC](https://rubytalk.org/t/ann-flatulent-0-0-2-ajax-gets-stinky/38851/7 "2007-07-05T02:57:40Z")

</div>

you think? better than insensitive? it's easy to do of course...

??

-a

> **···**
>
> On Jul 4, 2007, at 7:03 PM, John Joyce wrote:
> 
> > case sensitive would be sweet!
> 
> --  
> we can deny everything, except that we have the possibility of being better. simply reflect on that.  
> h.h. the 14th dalai lama

---

<div class="post-metadata">

**Author:** ![\_Pena\_Botp1](https://avatars.discourse-cdn.com/v4/letter/_/94ad74/32.png) [@\_Pena\_Botp1](https://rubytalk.org/u/_Pena_Botp1)\
**Post date:** [5 July 2007 03:16 UTC](https://rubytalk.org/t/ann-flatulent-0-0-2-ajax-gets-stinky/38851/8 "2007-07-05T03:16:18Z")

</div>

# On Jul 4, 2007, at 7:03 PM, John Joyce wrote:  
# \> case sensitive would be sweet!  
# you think? better than insensitive? it's easy to do of course...

practically case sensitive but the ff

0==o==O (zero and oh's)  
l==l (one and el)  
2==z==Z (two and z's)  
5==s==S (5 and s's)

kind regards -botp

> **···**
>
> From: ara.t.howard [[mailto:ara.t.howard@gmail.com](mailto:ara.t.howard@gmail.com)]

---

<div class="post-metadata">

**Author:** ![a11](https://yyz1.discourse-cdn.com/flex029/user_avatar/rubytalk.org/a11/32/8169_2.png) [@a11](https://rubytalk.org/u/a11)\
**Post date:** [5 July 2007 04:00 UTC](https://rubytalk.org/t/ann-flatulent-0-0-2-ajax-gets-stinky/38851/9 "2007-07-05T04:00:08Z")

</div>

done!

version 0.0.3 out soon... MUCH harder for bots.

-a

> **···**
>
> On Jul 4, 2007, at 9:16 PM, Peña, Botp wrote:
> 
> > practically case sensitive but the ff
> > 
> > 0==o==O (zero and oh's)  
> > l==l (one and el)  
> > 2==z==Z (two and z's)  
> > 5==s==S (5 and s's)
> 
> --  
> we can deny everything, except that we have the possibility of being better. simply reflect on that.  
> h.h. the 14th dalai lama

---

<div class="post-metadata">

**Author:** ![List.rb](https://avatars.discourse-cdn.com/v4/letter/l/f08c70/32.png) [@List.rb](https://rubytalk.org/u/List.rb)\
**Post date:** [5 July 2007 04:52 UTC](https://rubytalk.org/t/ann-flatulent-0-0-2-ajax-gets-stinky/38851/10 "2007-07-05T04:52:59Z")

</div>

There's probably a reason why this isn't used, but, I couldn't help but ask.

Instead of asking the user to 'Enter what you see', why don't the questions  
vary?

I.e.,  
- enter ONLY the letters [A-Z] you see  
- enter every other character  
- enter the text backwards  
- enter only numbers  
- enter the number of times 'A' has occurred  
- enter the number of vowels  
- enter the RED letters only (assuming there was color in each character)

My assumption is that this wouldn't be user friendly? --It would definitely  
add to the complexity of cracking I would think..

> **···**
>
> On 7/5/07, ara.t.howard \<ara.t.howard@gmail.com\> wrote:
> 
> > On Jul 4, 2007, at 9:16 PM, Peña, Botp wrote:
> > 
> > \> practically case sensitive but the ff  
> > \>  
> > \> 0==o==O (zero and oh's)  
> > \> l==l (one and el)  
> > \> 2==z==Z (two and z's)  
> > \> 5==s==S (5 and s's)
> > 
> > done!
> > 
> > version 0.0.3 out soon... MUCH harder for bots.
> > 
> > -a  
> > --  
> > we can deny everything, except that we have the possibility of being  
> > better. simply reflect on that.  
> > h.h. the 14th dalai lama

---

<div class="post-metadata">

**Author:** ![James\_Britt](https://avatars.discourse-cdn.com/v4/letter/j/22d042/32.png) [@James\_Britt](https://rubytalk.org/u/James_Britt)\
**Post date:** [5 July 2007 05:37 UTC](https://rubytalk.org/t/ann-flatulent-0-0-2-ajax-gets-stinky/38851/11 "2007-07-05T05:37:30Z")

</div>

these kinds of questions are a little to simple and logical. It needs to be more wordy!  
also, colors tend to be trouble for accessiblity issues. Some people are color blind.  
longer phrases or even a question itself as the captcha are better.  
If the question is a captcha and the answer is a word that any human could answer, even if it means doing a quick google for the answer, it would be better. Machines can't get that stuff.  
question:  
(as a captcha)  
What is Michael Jackson's brother's last name?

or

If you had 3 hands, how many thumbs would you have?

> **···**
>
> On Jul 4, 2007, at 11:52 PM, list. rb wrote:
> 
> > There's probably a reason why this isn't used, but, I couldn't help but ask.
> > 
> > Instead of asking the user to 'Enter what you see', why don't the questions  
> > vary?
> > 
> > I.e.,  
> > - enter ONLY the letters [A-Z] you see  
> > - enter every other character  
> > - enter the text backwards  
> > - enter only numbers  
> > - enter the number of times 'A' has occurred  
> > - enter the number of vowels  
> > - enter the RED letters only (assuming there was color in each character)
> > 
> > My assumption is that this wouldn't be user friendly? --It would definitely  
> > add to the complexity of cracking I would think..

---

<div class="post-metadata">

**Author:** ![Todd\_Benson](https://avatars.discourse-cdn.com/v4/letter/t/34f0e0/32.png) [@Todd\_Benson](https://rubytalk.org/u/Todd_Benson)\
**Post date:** [5 July 2007 05:53 UTC](https://rubytalk.org/t/ann-flatulent-0-0-2-ajax-gets-stinky/38851/12 "2007-07-05T05:53:19Z")

</div>

> There's probably a reason why this isn't used, but, I couldn't help but ask.
> 
> Instead of asking the user to 'Enter what you see', why don't the questions  
> vary?

Okay (says I rubbing hands gleefully :). I'm nitpicking and with all  
of these you can simply say, well that person shouldn't be using a  
computer/be on the internet/speak my language/etc.

> I.e.,  
> - enter ONLY the letters [A-Z] you see

My grandfather, being the math guy he is, sees A minus Z with that and  
would probably spend more than the allotted seconds trying to see  
through that (of course, he could just wait for the next question)

> - enter every other character

Starting with the first? In order? The ascii characters or the  
'realized' ones? (I keep thinking of the little play of form and  
contour in some art)

> - enter the text backwards  
> - enter only numbers

Depending on context I and V and X could be numbers

> - enter the number of times 'A' has occurred

Right-side up or upside-down ... sideways?

> - enter the number of vowels

I can't remember if Y is a vowel ...

> - enter the RED letters only (assuming there was color in each character)

I'm color blind!

> My assumption is that this wouldn't be user friendly? --It would definitely  
> add to the complexity of cracking I would think..

It's clear there will continue to exist a give and take with security  
vs. usability. We could make all of the captcha's riddles like Gollum  
holding on to his precious ring 🙂 What keeps going on in my head is  
what truly determines whether the 'thing' on the other line is a  
machine or not. I see suggestions to use things like tradition,  
commonplace, language, acceptable behavior to decide that. Hey, if  
that works for your client base, go for it!

So far, I really like Ara's solution because of how simple (on the  
outside) and relatively effective it is.

Todd

> **···**
>
> On 7/4/07, list. rb \<list.rb@gmail.com\> wrote:
