Since June of 2013, Yeti and myself have been organizing the San Francisco Django Meetup Group. We've had eight gatherings with speakers and lightning talks as well as several happy hours. I was told by a colleague at Yeti that it might be a good idea to review each meetup after it happens and provide links or resources to slides, videos, repos, etc related to the event. So here I am, inspired, to do a recap of all of the talks we've had so far and going forward will do one for each event hereafter.
See here for the 2nd part of the San Francisco Django Meetup Group Recap.
#1 Django → Flask → Scaling: Story of Growing a Python API Company
Randall Degges, now developer evangelist at Stormpath, talked to us about his startup he grew called OpenCNAM. It is purely an API company that provides caller ID as a service. His talk was inspiring about finding a good idea and running with it (as well as getting some good luck).
Their company first used Django, Tastypie, and PostgreSQL to create their application. They were able to prototype a beta and get users quickly. Once they got feedback and enough people on the service they decided to rewrite the application for performance and maintainability in Flask + DynamoDB. This greatly decreased the time an OpenCNAM call took and helped them scale out as their user base started to grow quickly.
#2 Django 1.6: The Best New Features and the Important Changes
Julien Phalip, a Django core developer, gave us a walk through on the latest and greatest coming out with the Django 1.6 release.
The first notable difference with Django 1.6 was that it was on a shorter release cycle and a major change for Django. Django previously was aiming for 1 year release cycles while 1.6 marked a push for twice a year major releases.
Two of the major changes with Django 1.6 was that python 3 was now “officially” supported and Django's database transaction management was much more straightforward and clear. This provides a lot more functionality around when your code actually commits a database change or when you can roll back, which was quite confusing previously.
#3 Django Multicolumn Joins
Jeremy Tillman, a software developer at Hearsay Social, gave us a talk on a patch he made to Django involving multicolumn join support.
Working at Hearsay Social, Jeremy was tasked with working on their database scaling issues where they ultimately ended up sharding their database across different customer sets. Unfortunately, when making queries with Django's ORM, it was not very friendly in this kind of database setup.
Jeremy created a new Django model field class called ForeignObject, which is a replacement for ForeignKey, that can hold a reference to multiple columns on the two models being related. This class provides a lot of utility when dealing with multicolumn joins.
At this meetup we had two developers from Counsyl give us shorter talks on Django querysets and timezones with Django & PostgreSQL.
First up, we had Jayson Falker give us a talk on Django Queryset efficiency and how to speed up our database calls with the Django ORM. Some of the topics he covered was profiling your queryset code, when you should denormalize your models, and how to avoid some very poor performing patterns.
Next, Dave Peticolas informed us of the pitfalls with Django, timezones, and PostgreSQL. Specifically we learned about the differences between naïve and aware datetimes in Django and how interweaving the two can make for a bad time. Also we talked quite a bit about daylight savings time and how PostgreSQL & Django handle saving datetimes as well as passing them back and forth to each other.