What's new in Django community blogs?

Deploying Django

Jan 10 2008 [Archived Version] □ Published at Occasionally sane under tags  django

The INTERBLOGZ are abuzz today with talks of shared hosting and web frameworks. Dreamhost started the bal, there was a response from DHH and James Bennett has his own thoughts on the matter. We use Django at work because it … Continue reading


Running Multiple Django Versions in Development

Jan 08 2008 [Archived Version] □ Published at Shifting Bits by Patrick Altman

I have needed to use different revisions of the django trunk at different points in time (in testing locally a new revision before upgraded in production, or working on two different projects that deploy to two different production environments, etc).

There may be a better way, but how I have handled it pretty painlessly is by running this script:

!/bin/bash

rm -rf /[YOUR PATH]/$1 svn co -r $1 http://code.djangoproject.com/svn/django/trunk/django /[YOUR PATH]/$1 sudo rm -rf /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/django sudo rm /usr/bin/django-admin sudo ln -s /[YOUR PATH]/$1/ /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/django sudo ln -s /[YOUR PATH]/$1/bin/django-admin.py /usr/bin/django-admin echo "Switched to" $1

It takes a single parameter, a revision number.

./switch.sh 7000

I run this script from within a directory in my home directory called "django".

You will likely need to change the paths in the script above if you are not running Python 2.5 on Mac OSX. Also, remember to substitute "[YOUR PATH]" for the base location of where you want to store the django code.


More good words for z3

Jan 08 2008 [Archived Version] □ Published at Lowkster - Pythonly yours under tags  django zope

Electric Duncan some more good things to say about zope3 or z3 here, this time it's vs django. To a certain extent I do agree with some of the things mentioned in that article. At times I do feel that I am trying to bend django to my will when I was coding my application, but alas, I am too green in z3 to give any meaningful comment regarding the comparison. Here, duncan mentions something that piqued my interest - Coding his application in z3, with learning curve thrown in took him two days ! Now that is a wow-ser for me !

Although at the back of my mind the article look more slanted towards zope than django which might explain why the author felt more at home with z3, but then it's a good read after all and has inspired me more to go towards giving z3 another serious look for my web development work.


Cool Django Apps / Frameworks / Add-Ons

Jan 07 2008 [Archived Version] □ Published at Shifting Bits by Patrick Altman

Ran across three really cool looking extensions to django:

  • databrowse
    Databrowse is a Django application that lets you browse your data.

    As the Django admin dynamically creates an admin interface by introspecting your models, Databrowse dynamically creates a rich, browsable Web site by introspecting your models.
  • sitemap
    Django comes with a high-level sitemap-generating framework that makes creating sitemap XML files easy.
  • webdesign
    The django.contrib.webdesign package, part of the “django.contrib” add-ons, provides various Django helpers that are particularly useful to Web designers (as opposed to developers).

I am anxious to given these items a spin, especially databrowse.


Django Fixtures and Flatpage Deployment

Jan 07 2008 [Archived Version] □ Published at Shifting Bits by Patrick Altman

I was introduced today to the concept and django feature known as Fixtures, while reading my dead-tree version of the new django book.

I am currently building a small site, fairly simple and mostly static. I have written an app that is my own take on the flatpages that are in django.contrib (a post on this later) -- I basically needed a little more flexibility for different islands of content.

In building this site and setting up the appropriate flatpages in my development, I realized that I am going to need to seed the database when I release to production or else there are going to be a lot of 404 errors. Also, since the pages are referred to in my menus, I need for the url on the flatpage model to be exact. It's not that many pages, but still, I thought, there had to be a better way that either manually hand entering all the data, troubleshooting 404s for typos in the url field, or doing any manual exporting of data at the mysql prompt.

As if by some divine revelation, I happened across the chapter in the book talking about django-admin dumpdata/loaddata. What's cool about this is by dumping the data into a file in source control, you can revision your flatpages (or any other data that is).

Here's what I did:

$ mkdir fixtures
$ django-admin dumpdata flatpages --indent=4 > fixtures/flatpages.json

Remember, I have a local app in my project called flatpages that is my replacement for the contrib version.

I tested that this data was usable by changing my setting.py file to use a different database (a new one):

mysql> create database test_import;
msyql> exit;

$ django-admin loaddata fixtures/flatpages.json
$ python manage.py runserver

Then fired up the browser and there was all my flatpages, perfect!


getting to pesky foreign key data in django

Jan 07 2008 [Archived Version] □ Published at Lowkster - Pythonly yours under tags  django

Optimizing databases is a good practice and should be done for any enterprise applications, but as all things go there is a price to pay. The price you pay is when calling back and displaying the data into one can be real PITA. django is a damn good framework and allows you to do work fast with a pedal-to-the-metal feel but then certain amounts of work still has to be done when you have foreign keys defined.

Say you have a database with two tables : contacts and address. The relationship of the two tables are of the one to many kind, I could never really wrap my head around the one-many many-one many-many thingy so let me just say it in layman so I understand it better myself. "One contact can have one or more than one address"

class Contacts(models.Model):
..... bla bla

class Address(models.Model):

customer_id=models.ForeignKey(Contacts,edit_inline=models.STACKED,num_in_admin=2)


So in the code above you have basically linked both the tables together using a ForeignKey relationship. the 'edit_inline' ... mumbo jumbo just tells django to add the address field into the main Contacts form during creation and modification and not as a pop up link ( This is important and could be a clincher for normal users ).

Calling all the data back for display

Okay so now you are honky dory with a great admin form for you to add data into your database, now the problem starts when you want to call all the data back for display in your template.

Don't worry django comes with little helper functions, you just have to do a few more steps to display your foreignkey data.

For my case, in my view.py I do something like this :


from stock.models import Contacts

def main(request,id):
contact_list = Contacts.objects.get(id=id)
return render_to_response('stock/mytemplate.html',{'contacts':contact_list})

Probably the html formatting would made my code not valid in python, but just check ur identation especially after the function definition.

The few lines of code above basically expects you to send it an id ( from the url using the GET method ) and then get the Contacts object and then packs up that data object and sends you merrily along to your template with that.

Okay, a bit about the Contact objects. Inside your contact objects if you have a foreign key relationship it automatically create a method for you to access the data. The method is called _set. So following our example, we know that we have a relationship with the table Address, so we can expect that each contact object will have a method called 'address_set'. Still okay so far ? Lets go ....to get the data you normally call it like this :

contact_list.address_set.select_related()

This returns an orm object inside a list, so on your template you will call it like this :

{% for address in contact.address_set.select_related %}


Address: {{address.address|escape}}




{% endfor %}



That will bring up and display all your address for that particular contact. Done ! Easy peasy, well for me at least just comment me if think more clarification...


Configure Mercury mail transport system for external mail

Jan 05 2008 [Archived Version] □ Published at zoe.vc under tags  mail mercury php sendmail xampp

Usually I develope my projects locally on my pc. Needless to say that you sometimes have to send an email from your script to external mail to check if everything is fine. So you need to configure your system in a way that your local apache webserver is able to send mail to external addresses.
I always use XAMPP for Windows because it contains everything you need for developing PHP applications as well as all the stuff for sending mails: fake sendmail und Mercury Mail Transport System. I reference to XAMPP 1.6.5 (for Windows) and Mercury 4.5 here. Mercury is already pre-configured in XAMPP - all settings that I don't explicitly address stay as they are :)

I'm writing this because I'm not a mail professional and read a lot of tutorials and none of them really worked. So I extracted what I needed and put it all together. An important assumption for this tutorial is that you have your own SMTP server, for example the one that your webspace hoster provides.

So let's get started:

  1. start Mercury (using the XAMPP Controlpanel) and then open the admin panel.
  2. first of all we disable the HTTP server of Mercury so that it doesn't conflict with the apache:

    1. "Configuration" -> "Protocol modules"
    2. disable the check "MercuryB HTTP web server"
    3. I also disabled "Mercury IMAP4rev1 server" because I won't need that one
    4. leave the window opened, we'll need it immediatly
  3. to be able to send external mail we have to disable "MercuryE SMTP end-to-end delivery client" in the same dialog and enable "MercuryC SMTP relaying client". Click "OK" and restart Mercury!

  4. now let's configure Mercury in general:

    1. "Configuration" -> "Mercury core module", tab "General"
    2. we want to send from localhost, therefore we check if "localhost" is the value of "internet name for this system" and adjust that if not
    3. all other settings stay the same as they are already configured, but we'll have a look to the checkboxes beneath:
    4. disable all but "Send copies of all errors to postmaster"
    5. check under the tab "Local domains" if the entry "localhost (local host or server) localhost (internet name)" is there, if not, add it
    6. click "OK" and leave the dialog
  5. next we focus on the MercuryS SMTP Server for outgoing emails:

    1. "Configuration" -> "MercuryS SMTP Server"
    2. choose the tab "General" and add a wonderful name for your SMTP server under "Announce myself as", simply fill in any name, I've chosen "CS SMTP".
    3. under "Listen on TCP/IP port" fill in "25", that's the SMTP port
    4. add "127.0.0.1" to "IP interface to use", that's the local IP of your pc. With the IP of the pc within the network (192.168.0.X) it doesn't work (at least for me)
    5. now we limit the access to the server so that only our local machine can access it:

      1. under "Connection Control" click on "Add restriction" and add the IP range from "127.0.0.1" till "127.0.0.1" (it's that simple, isn't it?)...
      2. and select "Allow connections"...
      3. and leave all checkboxes deselected
    6. with a click on "OK" we quit the dialog and we're looking forward to the next one :)

  6. now let's configure the MercuryP POP3 Server:

    1. "Configuration"-> "MercuryP POP3 Server", select the tab "General"
    2. "Listen on TCP port" -> "110" and "IP interface to use" -> "127.0.0.1"
    3. choose the tab "Connection control" and proceed as already written under 5.5 (see above)
    4. that's it already, leave the dialog by clicking "OK"
  7. now we have the important one "MercuryC SMTP Client"

    1. "Configuration" -> "MercuryC SMTP Client"
    2. to send mail to external addresses we need to have an external SMTP server. If you're renting webspace somewhere and have mail included then you normally have access to a SMTP server. My webspace is hosted at HostEurope and I'll use the SMTP of my domain. Without such an external server the whole thing won't work because domain names won't be resolved among other things. I've chosen this path because I didn't feel like configuring around the whole day.
    3. enter the address of your SMTP under "Smart host name", for example "mail.meinedomain.com"
    4. depending on the way you access the server fill the values under "Connection port/type":

      1. for a "normal" SMTP that would probably be port 25 and "Normal (no SSL encryption)"
      2. I access my SMTP via SSL, that would be port 465 and "SSL encryption using direct connection"
      3. if you have other parameters simply try around a little :-)
    5. we finally fill in the "Login username" and the "Password" that normally is supplied by your webhost and we've nearly finished...

  8. let's check the Mercury users that are normally pre-configured:

    1. "Configuration"-> "Manage local users"
    2. there should be at least the users "Admin" and "postmaster", both with administrative rights. If not you have to add them.
  9. now we finished with Mercury, but we still need to configure PHP for sending mail with our scripts:

    1. we search and open the appropriate php.ini, using XAMPP you find it under "xampp/php/php.ini" in newer version and under  "xampp/apache/bin/php.ini" in older versions
    2. we search for "[mail function]"...
    3. and we add/adjust the following:

      1. "SMTP = localhost"
      2. "smtp_port = 25"
      3. "sendmail_from = [email protected]"
    4. save the php.ini and restart the Apache

  10. now everything should work! But we'll test it first:

    1. within Mercury choose "File" -> "Send mail message" and send an email for testing purposes, I've chosen to send it to my googlemail account
    2. if the windows in Mercury are at sixes and sevens, choose "Window" -> "Tile" enjoy the view
    3. within the window "Mercury Core Prozess" we'll see our test mail at first:

      1. "13:38:41 JOB XXXXXX: from [email protected] (local) To: [email protected] (non-local) (JOB XXXXXX) -OK"
    4. the mail was received in Mercury and processed, after some seconds the window "Mercury SMTP client (relay version)" should show some actions:

      1. "05 Jan 2008 13:39, Servicing job XXXXXX ...OK"
      2. if you see this message, everything went fine and the mail was sent!
      3. if you don't get the message you have to find out why, possible reasons could be:
        1. wrong connection values for the SMTP server
        2. SMTP server doesn't allow relaying (from your host)
    5. now we'll test the whole thing from a PHP script and we'll write a wonderful one-liner into a PHP file:

      1. "mail([email protected]', 'Mercury test mail', 'If you can read this, everything was fine!');"
      2. call the PHP file within your browser, a command window should pop up shortly (or maybe not), it's from the fake sendmail of XAMPP, and focus back on Mercury:
        1. the produre is the same as above only that the SMTP server receives the mail from php before everything else happens
        2. you can watch this in the window "Mercury SMTP Server" and should see something like this: Mercury SMTP

I hope that worked for you, if not, feel free to leave a comment but as I already said, I'm not a professional but I'll help you as far as I can!

EDIT:
If you get the error message "SMTP server response: 553 We do not relay non-local mail, sorry." while sending from PHP go to Mercury under MercuryS -> Connection Control -> "Uncheck Do not Permit SMTP relaying to non-local mail" an check this option. Should fix the problem. Thanks to ron!


Configure Mercury mail transport system for external mail

Jan 05 2008 [Archived Version] □ Published at zoe.vc under tags  mail mercury php sendmail xampp

Usually I develope my projects locally on my pc. Needless to say that you sometimes have to send an email from your script to external mail to check if everything is fine. So you need to configure your system in a way that your local apache webserver is able to send mail to external addresses.
I always use XAMPP for Windows because it contains everything you need for developing PHP applications as well as all the stuff for sending mails: fake sendmail und Mercury Mail Transport System. I reference to XAMPP 1.6.5 (for Windows) and Mercury 4.5 here. Mercury is already pre-configured in XAMPP - all settings that I don't explicitly address stay as they are :)

I'm writing this because I'm not a mail professional and read a lot of tutorials and none of them really worked. So I extracted what I needed and put it all together. An important assumption for this tutorial is that you have your own SMTP server, for example the one that your webspace hoster provides.

So let's get started:

  1. start Mercury (using the XAMPP Controlpanel) and then open the admin panel.
  2. first of all we disable the HTTP server of Mercury so that it doesn't conflict with the apache:

    1. "Configuration" -> "Protocol modules"
    2. disable the check "MercuryB HTTP web server"
    3. I also disabled "Mercury IMAP4rev1 server" because I won't need that one
    4. leave the window opened, we'll need it immediatly
  3. to be able to send external mail we have to disable "MercuryE SMTP end-to-end delivery client" in the same dialog and enable "MercuryC SMTP relaying client". Click "OK" and restart Mercury!

  4. now let's configure Mercury in general:

    1. "Configuration" -> "Mercury core module", tab "General"
    2. we want to send from localhost, therefore we check if "localhost" is the value of "internet name for this system" and adjust that if not
    3. all other settings stay the same as they are already configured, but we'll have a look to the checkboxes beneath:
    4. disable all but "Send copies of all errors to postmaster"
    5. check under the tab "Local domains" if the entry "localhost (local host or server) localhost (internet name)" is there, if not, add it
    6. click "OK" and leave the dialog
  5. next we focus on the MercuryS SMTP Server for outgoing emails:

    1. "Configuration" -> "MercuryS SMTP Server"
    2. choose the tab "General" and add a wonderful name for your SMTP server under "Announce myself as", simply fill in any name, I've chosen "CS SMTP".
    3. under "Listen on TCP/IP port" fill in "25", that's the SMTP port
    4. add "127.0.0.1" to "IP interface to use", that's the local IP of your pc. With the IP of the pc within the network (192.168.0.X) it doesn't work (at least for me)
    5. now we limit the access to the server so that only our local machine can access it:

      1. under "Connection Control" click on "Add restriction" and add the IP range from "127.0.0.1" till "127.0.0.1" (it's that simple, isn't it?)...
      2. and select "Allow connections"...
      3. and leave all checkboxes deselected
    6. with a click on "OK" we quit the dialog and we're looking forward to the next one :)

  6. now let's configure the MercuryP POP3 Server:

    1. "Configuration"-> "MercuryP POP3 Server", select the tab "General"
    2. "Listen on TCP port" -> "110" and "IP interface to use" -> "127.0.0.1"
    3. choose the tab "Connection control" and proceed as already written under 5.5 (see above)
    4. that's it already, leave the dialog by clicking "OK"
  7. now we have the important one "MercuryC SMTP Client"

    1. "Configuration" -> "MercuryC SMTP Client"
    2. to send mail to external addresses we need to have an external SMTP server. If you're renting webspace somewhere and have mail included then you normally have access to a SMTP server. My webspace is hosted at HostEurope and I'll use the SMTP of my domain. Without such an external server the whole thing won't work because domain names won't be resolved among other things. I've chosen this path because I didn't feel like configuring around the whole day.
    3. enter the address of your SMTP under "Smart host name", for example "mail.meinedomain.com"
    4. depending on the way you access the server fill the values under "Connection port/type":

      1. for a "normal" SMTP that would probably be port 25 and "Normal (no SSL encryption)"
      2. I access my SMTP via SSL, that would be port 465 and "SSL encryption using direct connection"
      3. if you have other parameters simply try around a little :-)
    5. we finally fill in the "Login username" and the "Password" that normally is supplied by your webhost and we've nearly finished...

  8. let's check the Mercury users that are normally pre-configured:

    1. "Configuration"-> "Manage local users"
    2. there should be at least the users "Admin" and "postmaster", both with administrative rights. If not you have to add them.
  9. now we finished with Mercury, but we still need to configure PHP for sending mail with our scripts:

    1. we search and open the appropriate php.ini, using XAMPP you find it under "xampp/php/php.ini" in newer version and under  "xampp/apache/bin/php.ini" in older versions
    2. we search for "[mail function]"...
    3. and we add/adjust the following:

      1. "SMTP = localhost"
      2. "smtp_port = 25"
      3. "sendmail_from = [email protected]"
    4. save the php.ini and restart the Apache

  10. now everything should work! But we'll test it first:

    1. within Mercury choose "File" -> "Send mail message" and send an email for testing purposes, I've chosen to send it to my googlemail account
    2. if the windows in Mercury are at sixes and sevens, choose "Window" -> "Tile" enjoy the view
    3. within the window "Mercury Core Prozess" we'll see our test mail at first:

      1. "13:38:41 JOB XXXXXX: from [email protected] (local) To: [email protected] (non-local) (JOB XXXXXX) -OK"
    4. the mail was received in Mercury and processed, after some seconds the window "Mercury SMTP client (relay version)" should show some actions:

      1. "05 Jan 2008 13:39, Servicing job XXXXXX ...OK"
      2. if you see this message, everything went fine and the mail was sent!
      3. if you don't get the message you have to find out why, possible reasons could be:
        1. wrong connection values for the SMTP server
        2. SMTP server doesn't allow relaying (from your host)
    5. now we'll test the whole thing from a PHP script and we'll write a wonderful one-liner into a PHP file:

      1. "mail([email protected]', 'Mercury test mail', 'If you can read this, everything was fine!');"
      2. call the PHP file within your browser, a command window should pop up shortly (or maybe not), it's from the fake sendmail of XAMPP, and focus back on Mercury:
        1. the produre is the same as above only that the SMTP server receives the mail from php before everything else happens
        2. you can watch this in the window "Mercury SMTP Server" and should see something like this: Mercury SMTP

I hope that worked for you, if not, feel free to leave a comment but as I already said, I'm not a professional but I'll help you as far as I can!

EDIT:
If you get the error message "SMTP server response: 553 We do not relay non-local mail, sorry." while sending from PHP go to Mercury under MercuryS -> Connection Control -> "Uncheck Do not Permit SMTP relaying to non-local mail" an check this option. Should fix the problem. Thanks to ron!


I Caucused Tonight

Jan 04 2008 [Archived Version] □ Published at Eric Florenzano's Blog

I Caucused Tonight

Jan 04, 2008

I just got back from the caucuses, and am happy to report that Obama took our precinct in a landslide. It was an immensely interesting experience to be a part of this process and it really felt like I was doing something important--because I was. What was most interesting was that a small group of dedicated Obama supporters conscientiously defected to go support Biden, because the Biden supporters pledged to support Edwards if Biden was not deemed viable. This meant that Obama lost no delegates, but that Edwards lost one delegate.

It was also great to see celebrities get involved too. I was sitting about 4 feet away from Scarlett Johansson before the caucus when she was calling people to support Obama. Didn't know she was going to be there and then looked over to my right and there she was! I've also heard that Kal Penn was very involved, as my friend got a call from him directly.

Our final precinct results were: Obama: 5 delegates Clinton: 2 delegates Edwards: 1 delegate Biden: 1 delegate


My 2008 resolutions

Dec 31 2007 [Archived Version] □ Published at orestis.gr

A new year is coming in a few hours, and though the milliseconds passed since 1/1/1970 don't care a lot, it seems that people do. So here are my resolutions for 2008:

1. I will write more to this blog

It seems that I've failed the mission of this blog, which is to force me to finish what I start in order to write about it. There are a lot of loose ends in need of tying, and I intend to tie them and blog about them. If I'm lazy or too busy I will at the least put something up, be it a book review, an opinion or a link to something I find interesting.

2. I will become a better developer

The first step was the hardest, but I think that there are good times ahead. A bit cryptic, I know: stay tuned for official news :)

3. I will tie up loose ends

See #1. Nothing better than crossing things out of a check list.

Well, that's enough for a year don't you think?

A happy and prosperous happy new year to everyone!

Comments


Django generic AJAX form validation

Dec 31 2007 [Archived Version] □ Published at Ikke's blog under tags  ajax development django form javascript

I just created a generic view for Django which allows a developer to easily add AJAX-style form validation to a newforms based form. The system needs one server-side view, and some client-side JavaScript. You can find the view code in my Django snippets Git repository. The view only works with POST requests. It takes a [...]


Bye form_for_*

Dec 31 2007 [Archived Version] □ Published at zerokspot.com

Hmm… just noticed a big change in Django’s newforms API which happened in r6844 (so basically on Dec 2nd): form_for_model and form_for_instance got deprecated in favor of the the new ModelForm class. The motivation behind this move is quite well documented on the django-dev mailinglist, but for me personally it seems to boil down to replace form_for_* with a much more declarative syntax (which is a good thing). So if you for instance have a model Game like this (if I understood it correctly)


Filesystem issues and django-couchdb work

Dec 30 2007 [Archived Version] □ Published at Ikke's blog under tags  couchdb crash development django evolution

Last night, when shutting down my laptop (which had been up for quite a long time because of suspend/resume niceness), it crashed. I don’t know what exactly happened: pressed the GNOME’s logout button, applications were closed, until only my background was visible, then the system locked up, so I suspect my X server (some part [...]


CouchDB with Python

Dec 29 2007 [Archived Version] □ Published at Ikke's blog under tags  couchdb development django python

Today I’ve been investigating CouchDB a little better (only heard some rumors about it before). It’s actually a pretty nice technology which can, in some places, be pretty useful… I tend to compare it to caching serialized PHP associative arrays or Python dict’s in a Memcached server using some specific prefixes, except it’s not really [...]


Django domain redirect middleware

Dec 26 2007 [Archived Version] □ Published at Ikke's blog under tags  development django

Most web developers know it’s possible to serve one site on several domains or subdomains, using eg. the ServerAlias Apache directive. Sometimes this behaviour is not wanted: you want your main domain to be “foo.tld”, although “www.foo.tld” should work too, and maybe even some completely different domains. This way it’s possible to have permalinks, and [...]


django-planet aggregates posts from Django-related blogs. It is not affiliated with or endorsed by the Django Project.

Social Sharing

Feeds

Tag cloud

admin administration adsense advanced ajax amazon angular angularjs apache api app appengine app engine apple application security aprendiendo python architecture argentina articles asides audrey aurelia australia authentication automation backup bash basics best practices big data binary bitbucket blog blog action day blogging book books buildout business c++ cache capoeira celery celerycam celerycrawler challenges chat cheatsheet cherokee choices christianity class-based-views cliff clojure cloud cms code codeship codeship news coding command community computer computers computing configuration consumernotebook consumer-notebook continuous deployment continuous integration cookiecutter couchdb coverage css custom d data database databases db debian debugging deploy deployment deployment academy design developers development devops digitalocean django django1.7 django admin django cms djangocon django framework django-nose django-readonly-site django-rest-framework django-tagging django templates django-twisted-chat django web framework tutorials documentation dojango dojo dotcloud dreamhost dughh easy_install eclipse education elasticsearch email encoding english error europe eventbrite events expressjs extensions fabric facebook family fashiolista fedora field file filter fix flash flask foreman form forms frameworks friends fun functional reactive programming gae gallery games geek general gentoo gis git github gmail gnome goals google google app engine guides gunicorn hack hackathon hacking hamburg haskell heroku holidays hosting howto how-to howtos how-tos html http i18n igalia image imaging indifex install installation intermediate internet ios iphone java javascript jinja2 jobs journalism jquery json justmigrated kde la latex linear regression linkedin linode linux login mac machine learning mac os x markdown math memcached meme mercurial meta meteor migration mirror misc model models mod_wsgi mongodb months mozilla multi-language mvc mysql nasa nelenschuurmans newforms news nginx nodejs nosql oauth ogólne openshift opensource open source open-source openstack operations orm osx os x ottawa paas packages packaging patterns pedantics pelican penetration test performance personal personal and misc philippines philosophy php pi pil pinax pip piston planet plone plugin pony postgis postgres postgresql ppoftw presentation private programmieren programming programming & internet project projects pycharm pycon pycon-2013-guide pydiversity pygrunn pyladies pypi pypy pyramid python python3 queryset quick tips quora rabbitmq rails rant ratnadeep debnath reactjs recipe redis refactor release request resolutions rest reusable app review rhel rtnpro ruby ruby on rails scala scaling science screencast script scripting security server setup shell simple smiley snaking software software collections software development south sphinx sprint sql ssh ssl static storage supervisor support svn sysadmin tag tag cloud talk nerdy to me tastypie tdd techblog technical technology template templates template tags test testing tests tip tips tools tornado training transifex travel travel tips for geeks tumbles tutorial tutorials twisted twitter twoscoops typo3 ubuntu uncategorized unicode unittest unix use user authentication usergroup uwsgi uxebu vagrant validation virtualenv virtualenvwrapper web web 2.0 web application web applications web design & development webdev web development webfaction web framework websockets whoosh windows wordpress work workshop wsgi yada year-end-review znc zope