DjangoCon wrapup

by Dave Dash 15Sep09

I went to DjangoCon this past week for work. Django is one of my favorite frameworks. I dropped PHP and the symfony framework to learn python and Django and I haven't looked back. I think for Mozilla's webdev team it would be the framework of choice. We have 100s of sites in many frameworks, but not a lot of resuability. Django apps are built to built to be reusable. If you build correctly you don't have to refactor, it's already done.

Here's a collection of notes I collected through the conference.

Day one

Keynote - Avi Bryant

Frameworks lock us into RDBMS = bad

This keynote mentioned the limits of modern frameworks and modern web development. Essentially frameworks are great for getting started, but as a site grows, the framework gets replaced little by little. Sometimes it can get in the way - such as with limitation of database choices.

UR doing it wrong - James Bennet

James outlined a few key problems that many Django developers run into:

  • learning python as you go

    • doesn't work unless you know some programming upfront
    • do the python tutorial
    • read python in a nutshell or dive into python
  • Things you should know:

    • subclasses
    • super()
    • slides went too fast... hopefully they'll be posted

All in all RTFM for python and Django :)

Learn about other py packages... like twisted. If Twisted Matrix was implemented in Ruby it would be advertised as the second coming of Christ.

Bennet's Django App review smoketests:

  • installable via pip, easy_install or setup.py
    • read distutils-guide
    • stay away from setuptools
  • have a README
  • INSTALL file list deps
  • Write DOCUMENTATION
    • use sphinx.pocoo.org
    • store it in your package and upload package docs
  • LICENSE (most Django apps use BSD)
  • Write unit tests
  • django-lint - to look over code (like pep8.py)

pro-django is a decent book, but not written by Bennet.

Testing - Eric Holscher

  • Django 1.1 encourages you to test by auto-creating tests.py.
  • Support for:
    • Unittests
    • Doctest
    • Tests done in a db transacation
  • Test Driven Documentation (TDD + DDD)
  • Doctest
    • easy
    • can't use PDB
    • Hides certain failures
  • Unittests via Django TestCase
    • XUnit
    • setup/Teardown
    • adds db fixtures
    • assertions
    • mail testing/inbox testing
    • url testing
  • TestCase
    • Browserless Request/Response testing
    • Similar to sfBrowser in symfony
  • Google Summer of Code (for Django 1.2)
    • Coverage reports!
  • I need to learn PDB

Deploying Django -

Run mod_wsgi in daemon mode.

Day 2

Keynote - Ian Bicking

GNU Manifest:

I consider that the golden rule requires that if I like a program I must share it with other people who like it. Software sellers want to divide the users and conquer them, making each user agree not to share with others. I refuse to break solidarity with other users in this way. I cannot in good conscience sign a nondisclosure agreement or a software license agreement. ...

So that I can continue to use computers without dishonor, I have decided to put together a sufficient body of free software so that I will be able to get along without any software that is not free.

  • GNU manifesto was the idea of sharing software amongst friends
  • GNU has purpose - BSD, etc is just a rule - free to share
  • Free is not just the absense of copyright
  • Free is not a reaction to existing rules, but a golden rule
  • Not just a fight against MS
  • Need to find morality (the why) within the practical (the law, or what you can do)
  • Open sourcing closed source code isn't building open source
  • This might apply to Mozilla... as webkit has taken off more than Gecko.
  • Open source is person to person not company to company - despite sponsorship.

Using Django in Non-standard ways - Eric Florenzano

  • Django loosely coupled
  • Replace templating with Jinja 2
  • Copy Django methods into djangoext to easily customize Django behavior
  • Not using django.contrib.auth
    • reasons: writing a fb app - no auth needed
    • no shoehorning needed - saves time - less overhead
  • skip the orm?
    • legacy dbs
    • non standard or db (or non-relational database)
    • no database
  • wsgi middleware has some cool shit
    • repose.bitblt: autoscales images
    • repose.squeeze: will concat js/css on the fly based on statistical analysis
  • non standard Django based apps
    • YARDBird - IRCBot framework
    • djng micro framework
    • Jngo- singlefile cms
  • using admin in a nonstandard way is hard/impossible coupled with ORM and auth

Real-time web and other Buzzwords - Chris Wanstrath

  • more than just getting your rss feeds faster
  • push vs. pull
  • 1 persisting connection vs polling
  • comet/flash-xml/or html5 web socket
  • orbitted - open source python comet server
  • zeddicus - does the business logic
  • orbitted has its own js libs - its a simple port/socket thing for your server code to deal with - not request/response.
  • all connections are persisting browser/orbitted orbitted/zeddicus
  • You can even use orbitted to connect straight to IRC and write a client in JS
  • Jetty also is good for comet

Also: * see webhooks * see pubsubhubub

Pluggable, Reusable Django Apps: A Use Case and Proposed Solution - Shawn Rider and Nowell Strite

  • PBS moved from perl to django - build a lot of reusable apps
  • convincing your superiors
    • need a good story -
    • existing base of python helped
    • With Django easy to do things right without doing things slow
    • be really good...
  • built a lot of apps to be very reusable, and pluggable based on requirements PBS had

Day 3

Keynote - Ted Leung - Sun

  • Django jobs are a growing market
  • Preferred by startups
  • Bespin/wave - cool
  • APIs are big... still
  • Physically impossible to create purely server-side interactions that are usable enough - rely on rest/comet/ajax/etc to bridge gap

Scaling Django Mike Malone

  • MM from Pownce (now sixapart)
  • Slides started out as "Building Scalable Web Applications"
  • Django didn't get in the way too much when it came to scaling
  • Django had tons of caching support
  • Cached objects by hand (memcached) and object ID lists
  • Use memache for sessions too
  • use signals to signal cache invalidation
  • race conditions...
  • Queue shit... gearman, rabbit mq, etc.
  • Memecached incr/decr operators are awesome
  • See gh/mmalone/django-caching
  • See gh:.../django-multidb
  • to combat slavelag use a memcache key to alternate between master or slave

Gearman - working later - Chris Heisel

  • Gearman - a work later alt to rabbit mq
  • Makes the most sense for something like cesium, with a bazillion worker bees foxes feeding off a single queue

Also at the con, I talked to someone about rebuilding large apps... and they took a PHP app and used URL rewriting to and a lot of PHP/Python glue code to build a seamless transitory app. The rule is, all new functionality was done up in python while the old app was in maintenance mode.

More talks here!


Where am I?

This is a single entry in the weblog.

"DjangoCon wrapup" is filed under spindrop. It was published in September 2009.

September 2009
M T W T F S S
« Aug   Nov »
 123456
78910111213
14151617181920
21222324252627
282930  

Tags

&& &&

need more help

If you found our tutorials and articles to be useful, but are still looking for more hands on help, consider hiring us. Find out more about how Spindrop can help you.

 

Further Help

If you require more hands on assistance, we do offer affordable hands on support.

Leave a Reply


Comment guidelines: No spamming, no profanity, and no flaming. Inappropriate comments will be deleted outright.