At BarCampBirmingham2 Jason made a presentation on HAML & SASS.
You can view the slides here on slideshare.net
Posted by ben, Tue Apr 15 15:10:00 UTC 2008
At BarCampBirmingham2 Jason made a presentation on HAML & SASS.
You can view the slides here on slideshare.net
Posted by jason, Sat Dec 08 00:20:00 UTC 2007
So, a few days ago, I lamented the use of CAPTCHA on so many web sites, as it seems that the usability issues it causes have been completely overlooked by most developers. I promised I would follow up with some alternatives to this method, so without further adieu…
The benefit of this approach is that you can provide random simple problems to solve, normally simple math, without having to distort text. While the user is probably surprised that they would have to tell you what 4 + 3 is to get an account, you can easily explain its purposes. It is generally quick and painless and through random problem creation, you can ensure that bots don’t figure out all your puzzles.

UPDATE: check out a rails plugin that does math based CAPTCHA called less-captcha
If simple math is not your thing, then logic puzzles are another useful alternative. For example, you can ask a user to pick out an obvious color (like black) that is not a part of the colors of a rainbow. You could also ask the user to tell you which animal has feathers…an owl, dog or cat. These items are simple for most humans to comprehend, but complex for a bot to handle programmatically.
This method, which involves the system sending a user a quick verification email and having the user respond to that email, has seen some decline in overall use. However, it is still an effective way to weed out unwanted bots from clogging up your account forms. The most obvious downside is that it could hinder the sign-up process if there were any delays in the user getting the message. Add to that the inability to control factors such as the delay, and it makes this a less attractive alternative.
Also, email verification is not a useful method if you are simply trying to verify that a human is making comments on your blog, participating in a chat, etc.
As of this writing, I have not seen this method used that often, but it seems simple enough. Basically, when you create some type of form (a sign-up page, personal information gatherer, etc.) you insert a couple of extra form fields and then provide instructions to the user to not place any data in the fields. An automated bot will fill out all form fields it encounters, telling the submitted form that the data received is probably from an automated source.
I wonder if you could effective provide extra form fields in the code, but then hide them through opacity settings in CSS. That way, you would ensure that any data entered was from a bot, because the user would not be able to see the hidden form fields.
Finally, the most user-friendly of all the options…do the heavy-lifting of sifting through good and bad results yourself. There are tools out there, and most popular blogging engines have spam-filtering (like Akismet for example), that assist in filtering out submitted form data, posts, etc., but there will still be some manual aspect of it. Ultimately, you must decide if it is worth adding a barrier between you and potential customers or interactions just to save you a few minutes of grief each week.
Generally speaking, it is just a bad idea to use CAPTCHA methods that utilize distorted imagery anywhere on your web site. Consider your parents or grandparents…would they have an issue using that method if they were trying to sign up for your web site? The last thing you want to do is make it challenging for someone to use your app, get involved in your blog or join your community.
Just do the right thing.
Posted by jason, Sat Dec 01 00:09:00 UTC 2007

My guess is that you have seen one of these widgets on the Internet in the last few months.
Spam has branched out with a vengeance and is no longer just a threat to the sanity of your email inbox. From blogs to web forms to twitter, bots are attacking anything that is remotely accessible to automated data entry. This, in the simplest of cases, presents headaches for blog owners and site administrators and in the worst of cases, can render applications useless, similar to a DOS attack.
This is very unfortunate.
CAPTCHA, which stands for “Completely Automated Public Turing (Test to Tell) Computers (and) Humans Apart, is meant to do just that…force the humans to do something that bots would not be able to do if they were spidering through a site…in the case above, discern some distorted letters and enter them into a form before continuing. The often-noticed downside is that due to the cleverness of developers, CAPTCHA has had to become so bizarre-looking, it has introduced a frustrating experience to users who want to simply sign up for a web site or application.
In essence, developers have chosen to place the onus and (ultimately) frustration on their users instead of dealing with the issue of spam themselves. Beyond the obvious accessibility issues (which have been addressed by some methods, including audio), CAPTCHA can take a simple sign-up form and make it a negative and delayed experience…not the first impression you want to make with your site or application. The truth is that I have struggled with correctly answering CAPTCHA widgets like the one above, so I can only imagine what it would be like for my parents, grandparents, people with even slight vision impairment, etc.
While I don’t want to put the blame solely on Google, it seems that they were one of the first companies to mainstream this approach…and it is sad that it has caught on like it has. In my opinion, CAPTCHA is a poor interaction to force a user to contend with. Simply put, there have to be better alternatives out there. In my follow-up article, I will highlight some alternative methods to using CAPTCHA. Hopefully, we can find better solutions that will remove this ugly addition to the cost that users must pay for irresponsible behavior on the web.
Posted by jason, Tue Jul 17 10:26:00 UTC 2007
As we have built Traingo, one of our biggest challenges (and one of the goals we have been most passionate about) is trying to capture the connection and the feel of the racing community.
In the athletic community, individuals identify with accomplishments, and events like racing so easily blend with human accomplishment that all sorts of support groups, from small families to companies to large social clubs spring up around individuals or groups of individuals. Just as important as the groups that form are the goals and accomplishments these groups gather around.
So, with our desire for Traingo to assist in growing these small communities, one of the ways we want to accomplish this is by creating ways for users to create and share goals with others in Traingo. As our users accomplish their goals, they can establish respect (or “street cred”) within the community and from that, value and context is given to the information that they enter and share. More importantly, they can celebrate their accomplishments with their friends.
The hope is that by providing this venue, athletes will be driven to accomplish new and exciting goals…goals that go beyond the often standard and mundane runs, rides and swims that try to carry us in-between races.