RSSAmplifier

Blog

David Seddon

My website, built in Jekyll.

seddonym.meRSS feed ↗10 posts

Latest posts

Six lines of code to prevent Python spaghetti

Python projects have a habit of getting tangled. The latest Import Linter contract type can help.

The trouble with transaction.atomic

Django's transaction.atomic context manager is an important tool for maintaining data integrity. But its guarantees are frequently misunderstood.

Model, Behaviour, Code: a three step process for designing software

Design is crucial to good software development, but many people lack a process for doing it. In this blog entry, I explain the three step process I use.

Three Techniques for Inverting Control, in Python

Inversion of Control, in which code delegates control using plugins, is a powerful way of modularising software. It may sound complicated, but it can be achieved in Python with very little work. Let's examine three different techniques for doing this.

Meet Import Linter

Python is a wonderful language that is a joy to develop in. But I've found that projects written in Python can easily grow into an unmaintainable mess. Keeping a code base maintainable, particularly when it's large and complex, is difficult.

What is Inversion of Control and Why Does it Matter?

Inversion of Control is a principle for improving the modularity of software. It's a powerful strategy for simplifying systems that might otherwise become tangled and difficult to understand.

A Guide to the Rocky River

Without a planned structure, larger Python projects can become a complicated web of interdependencies. The Rocky River is an architectural pattern to help make larger projects easier to work with.

Meet Layer Linter

A tool for imposing architectural constraints on your Python projects.

What is a Django app?

Apps are a fundamental concept in Django. But what exactly are they and when should we use them?

When to Use Django Signals

Django signals are a great way of communicating between your apps. But they are often misused. Find out what signals are for, when to define your own, and when to avoid them.