Keeping track of Django project dependencies

Introducing django-package-monitor

November 26, 2015

tl;dr We’ve released django-package-monitor, a django app to make it easier to see which packages are out of date.

UPDATE: I messed up the setup.py dependencies in the original package, and the latest package depends on a source install of semantic_version, so you will need to use the --process-dependency-links option when installing . . .

Unexpected UUIDField upset

That moment when you realise your Universally Unique Identifier... isn't.

October 07, 2015

We like UUIDs at YJ. One use of them we're particularly fond of is sticking specific yet meaning-free labels on objects, so we don't have to worry about exposing 'walkable' integer PKs or human-readable usernames or any of that awkward stuff.

As such, we've used our own . . .

Django, Whitenoise, and Heroku

September 16, 2015

tl;dr Heroku’s filesystem is ephemeral, so be careful when running the collectstatic command - it doesn’t necessarily do what you think it does..

Our current production asset delivery setup looks like this:

1. Run grunt locally to generate static files
2. Commit changes to repo
3. Push to Heroku
4. Run collectstatic to . . .

Migrating to Django 1.8: a journey logbook

June 09, 2015

Upgrading the framework your entire website relies on is a hard job, but someone has to do it. It was my turn here at YJ: migrating from Django 1.7.8 to 1.8.2.

Here's the list of things that broke on the way. Many of them are documented in the release notes, some of them are not: they're probably quite niche and specific to . . .

Securing a Django site at the perimeter

Sometimes contrib.auth just isn't enough

May 08, 2015

We run a number of working environments on Heroku - in addition to the live site we have dedicated UAT and DEV environments, a DEMO environment for the sales team, and since the recent Heroku pricing changes we're thinking about a spinning up a new environment per developer (so they can push feature branches to a public location for . . .

Keeping on top of Django's New Migrations

How to avoid being caught out by a missing Migration

February 20, 2015

For managing database schemas, as great and well-loved as South was, Django's new migrations framework is nicer, particularly thanks to better support for multi-developer, multi-branch projects like YJ.

However, the greater attention now paid to a model's changes has a potential gotcha, especially in a multi-dev environment: . . .

Simple request profiler for Django

From the "If you can't measure it, it didn't happen" department.

October 22, 2014

Premature optimisation is the root of all evil

The most important word in the above quote by Donald Knuth, who knows a thing about programming, is 'premature'. If premature optimisation really is the root of all evil, then how do you know when to begin? If you're anything like us, then "when people start . . .