Updated my bio
Merge pull request #1209 from tax/master

Updated link to active project for ODBC backend
Merge pull request #1210 from alasdairnicol/jquery_cookie_plugin_link

Updated link to jQuery Cookie plugin site
Fixed #20492 - Removed a broken link in GIS docs.
Fixed a regression in router initialization

Regression was introduced in 6a6bb168b. Thanks Bas Peschier for the
report.
Rotate CSRF token on login
Fixed #14825 -- LocaleMiddleware keeps language

 * LocaleMiddleware stores language into session if it is not present there.
Fixed #20099 -- Eased subclassing of BrokenLinkEmailsMiddleware

Thanks Ram Rachum for the report and the initial patch, and Simon
Charette for the review.
Removed obsolete attribute of DjangoTranslation
Fixed #20455 -- Do not use ngettext for undefined plurals

Using two separate translation strings instead of gettext plural when
there is no reference to the number in the translated string. This
prevents some translations like Russian and Latvian to use the singular
form for 11 or 21.
Fixed some minor translation-related issues
Updated translation catalogs

Updated core/admin/admindocs/comments translation catalogs.
Fixed #11725 -- Made possible to create widget label tag without "for"

Thanks Denis Martinez for the report and initial patch, and
Sergey Kolosov for bringing the patch up to date.
Fixed #20296 -- Allowed SafeData and EscapeData to be lazy
Fixed #19938 -- Consumed iterator only once in paginator's Page

Thanks Joshua Fialkoff for the report.
Fixed #20443 -- Import errors in settings cause confusing error messages
Fix get_or_create test failure under Oracle

Test expected that when given invalid utf-8, the backend should raise
a DatabaseError, but the Oracle backend raises a UnicodeDecodeError.
Fixed get_or_create...test_savepoint_rollback test for Python3

The test was always skipped on Python3 because string literals are unicode
Fixed #19866 -- Added security logger and return 400 for SuspiciousOperation.

SuspiciousOperations have been differentiated into subclasses, and
are now logged to a 'django.security.*' logger. SuspiciousOperations
that reach django.core.handlers.base.BaseHandler will now return a 400
instead of a 500.

Thanks to tiwoc for the report, and Carl Meyer and Donald Stufft
for review.
Replaced `and...or...` constructs with PEP 308 conditional expressions.