by Jonas Obrist
In this DevOps world, Django programmers are increasingly being asked to manage the database as well. In 45 brisk minutes, we will talk about (nearly) everything you need to know to bring up, tune, and keep a PostgreSQL database health. We'll go over installation, basic tuning, backups, disaster recovery, and helpful tools and techniques.
The common approach for getting MongoDB to work with Django has been to replace Django ORM based pieces with MongoDB based alternatives. This is usually accomplished by forcing MongoDB to behave like a relational database and is done with extremely sophisticated code. The result is something that doesn’t behave quite as nicely as a relational database, and negates many of the advantages MongoDB (and other NoSQL databases) possess, hence the title of this talk. This talk will not only go over the existing heroic but flawed approaches, but will also propose a simpler, more direct path for getting Django to play well with MongoDB. Simpler is important, because it makes possible the creation of a developer-accepted bridge between MongoDB powered efforts and the hundreds of Django ORM powered efforts available on Django Packages.
Co-presented with Audrey Roy, this highly technical talk will include theory and a lot of code examples.
by Bruno Renié
Django's class-based views API — landed in Django 1.3 — offers a very powerful yet complex way to build Django views. This talks aims at explaining the internals of the API and giving practical advices for building class-based views. Crowd-sourced examples of patterns and anti-patterns will be shown and explained.
by Jude Mwenda
When a disaster strikes, several institutions create all manner of different datasets. These datasets are eventually released without any clear guidelines and missing vital metadata.
The purpose of this presentation is to bring to light the use of spatial data sharing software built on django to enable different relief agencies share spatial data. This presentation highlights the tool's use during the Eastern Africa droughts.
There will also be a brief outline on how the same platform has been adjusted for risk modelling.
by Zack Voase
The modern Web—indeed, the modern user—demands that we write applications that work faster than the traditional request/response cycle. But how relevant is Django in the age of pjax, node.js and WebSockets? I believe Django remains a powerful utility in the new Web, and in this talk I'll share some techniques and tools for reducing the complexity of real-time applications. I'll explain how I manage code duplication when key business logic is split between the client and the server, and demonstrate ways to preserve a RESTful and accessible design whilst providing a more responsive experience to clients who support it. Technologies I'll touch upon include ZeroMQ, gevent and WebSockets, and I hope to leave everyone from beginner to veteran with some valuable insights.
by Erik Romijn
Django helps web developers in many ways, security included. But, it can't and won't handle everything - there's still security issues left that you need to take care of yourself.
This talk explores some of the most common security issues Django developers can face, with a specific focus on using the features Django already provides to help out. We'll look at how vulnerabilities can be exploited, how exactly Django tries to help and what you still need to take care of yourself.
If you always enable CSRF in your apps, but don't really know what it does or why, this is the session for you. If you always disable CSRF in your apps, this session may be just in time to save you.
by Lynn Root
I took my first computer science course in the fall of 2011. I sucked. During my exams, the only thought in my head was: “Well, I know some of these words.” After failing exams programming in C, I did my final project in Python using Django to make an awesome website. What a difference it made, and I finished the course with an superior marks.
Coming from a non-engineer background, with a new interest in Python, I organized a Python study series for Women Who Code, a ~1000 member meetup.com group in the Bay Area. After appealing to women how versatile Python can be with practical problem sets, our final project is to collaborate on one Django project to create a Women Who Code website. I will talk about the best way to adapt the available Django tutorials and other resources for those with little to no web development experience. I will also talk about creating a safe space for learning, different techniques I used, and how best to appeal the interests of newbies in the Python/Django community.
GUIs are great - no question about that - but in some cases nothing serves the user better than having a simple, highly customized, query or scripting language at his disposal.
In this talk, we will demonstrate how to build such a feature into a Django project using David Beazley's great ply package. As an example, we will implement a small but perfectly usable compiler taking expressions in a simple query language as input and yielding (django.db.models.)Q objects as a result.
Every application has its hotspots -- small portions of code that consume considerably more resources than all of the other code combined.
Django apps are no different. Some pages, invoked with the just the right, or wrong input, can bring a server to its knees, hogging the CPU and taking many seconds, or in extreme cases even minutes to render. By keeping workers tied up, the whole system can then become slow to respond, or collapse altogether.
Many webservers have a crude built-in failsafe to prevent this. They automatically kill workers that fail to complete their requests in time. As a result, you may not fully appreciate, or indeed realize at all that you are routinely serving 500 pages, denying users access to your service, or leaving uncommitted database transactions -- possibly even slowly corrupting data.
Workers killed by force leave virtually no forensic traces and so even when issues are suspected, it's hard to pin them down.
The cause behind these hotspots can be poorly generated SQL queries from the ORM, an algorithm with non-linear complexity, excessive disk or network IO, or lock contention in the database -- to name just a few.
Oftentimes these problems escape a developer's attention, as dev and test environments simply don't have the dataset, level of concurrency or sheer size of the real thing.
In this talk we'll address the challenges of tuning your Django app with continuous automatic runtime inspection tools, including homegrown Dogslow. We'll uncover the pages that consume disproportionate amounts of time and cycles to complete and the pages that get killed altogether.
We'll discuss several ways to help you identify and eliminate the hotspots, both passively through monitoring exclusively, as well as actively by selectively interrupting workers before they get killed and examine how to effectively interpret the automatically collected forensic evidence.
After years of working with all sorts of databases and wrangling with South to support just five of them, Andrew takes a look at databases (relational, document, key-value and more) and at some of the problems that Django programmers often come across with them.
The talk will cover (among other things) the disadvantages of relational databases, why "NoSQL" isn't always the answer, the pains of storing geographic data, a small amount of database theory, and the very small number of good things about MySQL.
by Karen Tracey
LFS is a online shop based on Python, Django und jQuery.
LFS enjoys growing popularity amongst users and developers. According to
djangopackages.com, LFS is the most downloaded Shop for Django (~60.000 download on PyPI).
The source code is watched by ~210 developers and the Google Group has ~165 members.
In this talk Kai Diefenbach, founder and core developer, gives an overview to LFS.
by Jonas Wagner
Whether it's SCSS, LESS or STYLUS, css preprocessors have become
a part of the modern web development tool chain.
The main objective of this talk is to give you an overview of the common features of css processors and how they can be used to drastically improve the fronted development workflow by increasing both development speed and maintainability.
It will also give you an overview of the existing options to help you choose the right tool for your needs.
Finally you will learn how to incorporate css preprocessors efficiently into a django project.
by Ludovico Magnocavallo
Wordpress is the leading platform for serving content on the web and has a great user interface and some fantastic features, but unfortunately it's not gentle with system resources, it's plagued by performance problems, and it forces developers to code in a messy, overcomplicated environment.
But what if you could use the Wordpress user interface, and serve its contents harnessing the power and flexibility of Django... WP Frontman does exactly that, by supporting all major features of Wordpress in a Django app: single/multiple blog install, custom taxonomies and post types, shortcodes and post formatting plugins, etc.
What you get compared to WP is a much simpler architecture, easy testing, enormous flexibility, and speed thanks also to a 3-level caching layer.
How should a CMS best publish information for an organisation?
Arkestra's approach is to create a semantic model of the organisation and its activities.
by Bastian Ballmann
Django Chuck is a modular, open source, command-based project build system, that gives you the power to create new projects as fast as pushing on a button.
It creates a virtualenv and a Django project for you, installs all required Python packages, creates the database and a fab file for automatic deployment and thanks to the module system you can easily add functionality like CMS, Facebook, Twitter, multilang and search engine support to a new or existing project.
But Chuck cannot be just used to create a project it can also checkout the source for you and setup everything until the Django server is running and you're ready to do your development work. Just leave all the annoying stuff to Chuck and if there is some task Chuck can't do for you at the moment you can add your own command to let Chuck configure your continuos integration system, setup your hosting or do whatever you might imagine!
Time zone support is a major new feature in Django 1.4, but empirical evidence shows it's often overlooked or misunderstood.
In this talk, I'll explore how dates and times are represented in Python, why their handling was overhauled in Django, and what it means for developers.
by Zach Smith
Ideally, all code would have test coverage, but this is not a reality.
When you start a new project, you want to move as quickly as possible. This often comes at the expense of test coverage. Besides, you don't even know if anyone will even use your application, so tests might never be necessary.
As your userbase and your team grow, however, testing becomes a necessity.
This talk will go over tools and strategies employed by Yipit in transitioning from a 3 person development team working on an application with no tests, to an organization of 14 engineers with a highly covered codebase.
Within Heroku you'll find many languages (Ruby, Python, Go, Erlang, Clojure), many tools (Pivotal Tracker, Github, Github Issues, Trello), and many forms of communication (Campfire, Grove.io, GChat, Skype). Heroku internally is comprised of many small teams, with a total of 50 engineers there exist nearly 20 teams. Each team interacts through their own preferred form of communication.
Despite their very different working styles, each team is able to and often do deploy on a daily basis without being blocked by other teams. We do this by building small sharp tools and letting systems communicate across well defined contracts and APIs. I'll cover how some of the teams use various tools, but more broadly how we use the platform and methodologies to grow our team without compromising ability to execute quickly or quality.
This talk dives into the specifics of why Django isn't always the best tool for the job, general frustrations with the framework, and potential fixes.
It will balanced out with many Django praises too, of course.
4th–8th June 2012