<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>PyVideo.org - Eli Ribble</title><link href="https://pyvideo.org/" rel="alternate"></link><link href="https://pyvideo.org/feeds/speaker_eli-ribble.atom.xml" rel="self"></link><id>https://pyvideo.org/</id><updated>2013-10-01T00:00:00+00:00</updated><subtitle></subtitle><entry><title>Django Toolsets: what are they buying you, what are they costing you?</title><link href="https://pyvideo.org/djangocon-us-2013/django-toolsets-what-are-they-buying-you-what-are.html" rel="alternate"></link><published>2013-10-01T00:00:00+00:00</published><updated>2013-10-01T00:00:00+00:00</updated><author><name>Eli Ribble</name></author><id>tag:pyvideo.org,2013-10-01:/djangocon-us-2013/django-toolsets-what-are-they-buying-you-what-are.html</id><summary type="html">&lt;h3&gt;Summary&lt;/h3&gt;&lt;p&gt;DJANGO TOOLSETS: WHAT ARE THEY BUYING YOU, WHAT ARE THEY COSTING YOU?&lt;/p&gt;
&lt;p&gt;Thursday 12:15 p.m.--1 p.m.&lt;/p&gt;
&lt;p&gt;Audience level: Experienced&lt;/p&gt;
&lt;p&gt;DESCRIPTION Django makes some things extremely easy. That doesn't make
them right for you, your application or your business. In this talk
we'll explore some things …&lt;/p&gt;</summary><content type="html">&lt;h3&gt;Summary&lt;/h3&gt;&lt;p&gt;DJANGO TOOLSETS: WHAT ARE THEY BUYING YOU, WHAT ARE THEY COSTING YOU?&lt;/p&gt;
&lt;p&gt;Thursday 12:15 p.m.--1 p.m.&lt;/p&gt;
&lt;p&gt;Audience level: Experienced&lt;/p&gt;
&lt;p&gt;DESCRIPTION Django makes some things extremely easy. That doesn't make
them right for you, your application or your business. In this talk
we'll explore some things HireVue does with Django, what fits our
business, what doesn't, and how you can learn from our mistakes.&lt;/p&gt;
&lt;p&gt;ABSTRACT HireVue's business is about digital interviewing. That means
large organizations with sensitive data and high availability demands.
In this presentation we'll discuss our experience using Django,
TastyPie, and South to convert our legacy PHP application into the brave
new world of Python. We'll discuss why we chose these tools and what we
expected to get out of them, how things when awry for us and how we
recovered from it. We'll also cover what decisions have allowed us to
continue to meet our obligations while using Django. Some topics
include:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Class methods on models and template tags to simplify queries - how
that led to thousands of queries per page&lt;/li&gt;
&lt;li&gt;Django granular permissions - how we twisted Django signals into an
extensive mandatory permissions system that strangled our development&lt;/li&gt;
&lt;li&gt;TastyPie - how we wrote an API really quickly that led us to shave a
small herd of yaks and didn't really meet our business needs&lt;/li&gt;
&lt;li&gt;South - how south made us not think about migrations any more. Until
we started taking down our production website with them.&lt;/li&gt;
&lt;li&gt;Django admin - how it allowed us to avoid any work to create real
internal tools and instead do work trying to train support personnel
as engineers. Badly.&lt;/li&gt;
&lt;li&gt;Django test runner - how we started writing unit tests. Lots of them.
Enough that we had to ditch it to be able to effectively debug test
failures&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;While our experience with these tools does not indicate that they are
bad or unworkable it does provide insight in to how you can choose to
use these, or other tools, depending on your business needs. We have
learned to constantly improve our toolset by evaluating what helps us,
what hinders us, what our tools buy us and what they cost us. From our
painful beginnings we've switched to&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Separating our platform from our view logic to control query count
and separate concerns&lt;/li&gt;
&lt;li&gt;Simplify our permissions system to consolidate business logic and
reduce database queries&lt;/li&gt;
&lt;li&gt;Separate out our API logic to use common code and provide services
that make sense for our business and are entirely separate from our
persistence layer&lt;/li&gt;
&lt;li&gt;Use south coupled with careful process to avoid downtime when running
migrations and allow developers to coordinate schema modifications&lt;/li&gt;
&lt;li&gt;Stop using django admin and build real internal tools&lt;/li&gt;
&lt;li&gt;Switch to py.test for our test runner&lt;/li&gt;
&lt;/ul&gt;
</content><category term="DjangoCon US 2013"></category></entry></feed>