Michał Karzyński

PyWaw Presentation

Slides for a presentation I’m giving today at Warsaw’s Python User Group meetup PyWaw.

Using Redis as Django’s session store and cache backend

Redis is an in-memory key-value store, somewhat similar to Memcached. Because Redis keeps its dataset in memory, storage and retrieval is very fast. It’s a good idea to use this kind of solution for storing ephemeral application data, such as contents of the cache, or temporary information associated with active user sessions. This unburdens your database system from performing unnecessary read and write operations and can considerably speed up your application. Modules for using Redis together with Django are available and quite easy to set up.

Setting up Django with Nginx, Gunicorn, virtualenv, supervisor and PostgreSQL

Django is an efficient, versatile and dynamically evolving web application development framework. When Django initially gained popularity, the recommended setup for running Django applications was based around Apache with mod_wsgi. The art of running Django advanced and these days the recommended configuration is more efficient and resilient, but also more complex and includes such tools as: Nginx, Gunicorn, virtualenv, supervisord and PostgreSQL.

In this text I will explain how to combine all of these components into a Django server running on Linux.

Running Drupal on Nginx with Memcached

Drupal is a great CMS system for deploying websites quickly and managing them easily. Traditionally Drupal was run on a LAMP stack, but this configuration does not necessarily offer the best performance for the system. These days you can squeeze more performance out of Drupal by running it on a LEMP (Linux-Nginx-MySQL-PHP) stack in which Apache is replaced by the Nginx reverse-proxy. Further performance improvement can be gained by hooking up memcached to handle cacheing. This article explains how you can prepare a professional LEMP server for your Drupal sites.

xmin - ExtJS Admin for Django

This is a demonstration video of django-xmin, a concept for an alternative administrative interface for Django, written in JavaScript using the ExtJS.

How to turn shell commands into Mac OS X services

OS X has a nice functionality called services which allow you (and applications you install) to expand the functionality of your system by adding commands, which will be visible in a special menu. Services may also be available in contextual menus, for instance when you right-click on a file or folder in the Finder.

Services menu in Finder

Check Google Analytics unique visitors from Python

You may want to check your Google Analytics data programmatically. This allows you to write some logic around your analytics data, such as sending e-mails in certain situations or just providing a status update for you to inspect without the hassle of logging into your account with a browser.

For a simple example, I use a utility called GeekTool to display certain information, such as incoming email, directly on my desktop for quick reference. I decided to also display updates of my Analytics profiles in this way, displaying a daily summary of unique visitors for each site I monitor. The end result looks like this:

Google Analytics unique visitor counters displayed by GeekTool

How to run multiple websites from one Django project

It is sometimes beneficial to run two or more web sites or subdomains of a site from a single Django code base. Each Django app in the project can then power a website on a different domain, but all the apps can still share a single database with a single administrative interface.

Browser usage statistics - past, present and future

Every web developer knows this story… Microsoft arrived late to the Internet party, but they huffed and they puffed… and they bundled their browser in with their dominating OS… and they blew down the house which Netscape built. After this, they congratulated themselves for winning the Browser wars and proceeded to sit on their laurels for over half a decade.