Improved Mathematical Captcha

December 20, 2007

A week ago I published MathCaptchaForm that I use in my blog for preventing spam. Malcolm Tredinnick and then other people noticed that solution don't protect from replay attacks and once solved question can be used by spam bots on different web-sites. So I added protection against replay attacks and implemented it without database usage. It was original requirement to keep MathCaptchaForm as lightweight as possible.

Mathematical Captcha

December 11, 2007

When spam bots started to post comments in my blog every day I realized that I need some kind of simple anti-spam protection. I didn't saw yet real anti-spam AI and don't like image captchas. I looked for a mathematical captcha where human is asked to solve a simple mathematical calculation like 3+5=?. Unfortunately I didn't found open-source implementation and write own MathCaptchaForm. A week already I don't see spam posts.

Ruby 1.9 doesn't smoke Python away!

November 28, 2007

Antonio Cangiano compared execution time of recursive Fibonacci function written in Python and Ruby 1.9 and found that Ruby variant was almost 3 times as fast. It allowed him to write blog entry titled "Holy Shmoly, Ruby 1.9 smokes Python away!". It's time to show secret Python weapon – calculation of same Fibonacci numbers but in 1000 times faster than Antonio's Ruby implementation.

Autogenerated ToC

November 24, 2007

When I reread my last blog post "WebAlchemy accelerates Django in 100 times" I realized that I wrote too many letters. So to make navigation easy I created simple template filter that extracts from a text ids, replaces '_' with spaces and produces hyperlinked Table of Contents.

WebAlchemy accelerates Django in 100 times

November 18, 2007

With WebAlchemy only pages involved in form processing are served directly by Django, the rest of the pages most of the time are served directly by Apache as static content with static content speed. In other words for Django-powered site it's possible to achieve speed about 2000 request/sec, against about 500 request/sec with memcached and about 20 request/sec for "typical" (10 fast SQL queries) page without caching at all. Actual performance results of course will vary from server/application/configuration.

Django profiler

November 10, 2007

django-profile.py allows to analyze any django projects, i.e. to find number of SQL queries used on each page and print common SQL-usage report.

Hello world

November 03, 2007

I launch the second version of my personal site that is usually called now blog. I get many from the world of open-source and I often feel that I have to give something back to community.

Web log, research lab and soft parade of Dima Dogadaylo.
Email: entropyhacker at gmail dot com