Peter Baumgartner, Founder at Lincoln Loop

All Posts by Peter Baumgartner

Peter is the founder of Lincoln Loop, having built it up from a small freelance operation in 2007 to what it is today. He is constantly learning and is well-versed in many technical disciplines including devops, scaling, back-end, and front-end development. Peter is a frequent speaker at DjangoCon and has …
View Peter's profile

Distributed Locking in Django

As you start scaling an application out horizontally (adding more servers/instances), you may run into a problem that requires distributed locking. That's a fancy term, but the concept is simple. Sometimes you …
Read More

Goodconf: A Python Configuration Library

I've been working quite a bit lately on streamlining Lincoln Loop's standard deployment systems. One thorn we've always had is how to handle application configuration. In the past, we would have our …
Read More

Python Dependency Locking with pip-tools

Two of the biggest benefits pipenv and poetry are dependency locking and hash checking. Dependency locking means you can specify the direct dependencies your code requires, for example, celery==4.4.* and the tooling …
Read More

Single-file Python/Django Deployments

This post covers portions of my talk, Containerless Django, from DjangoCon US 2018. Deploying Python has improved significantly since I started working with it over a decade ago. We have virtualenv, pip, …
Read More

Saying Goodbye to BotBot.me

Our venerable IRC logger, BotBot.me logged its first lines in the summer of 2012 . Since then, it has logged over 100 million lines for more than 400 IRC channels, primarily on …
Read More

Sandboxing Services with Systemd

With Ubuntu 14.04 (Trusty) now a year away from end-of-life, we've been planning and performing upgrades for the soon-to-be legacy OS. The biggest change is the move from Upstart to Systemd for …
Read More

Logging to Systemd's Journal in Python

I'll be the first to admit that I was skeptical about Systemd and its companion log aggregator Journald, but after working with if for a few months, I've seen the light (or …
Read More

Goodbye manage.py

Every Django project starts with a manage.py file in its root. It's a convenience script that allows you to run administrative tasks like Django's included django-admin. In our last post, we discussed …
Read More

Django Logging, The Right Way

Good logging is critical to debugging and troubleshooting problems. Not only is it helpful in local development, but in production it's indispensable. When reviewing logs for an issue, it's rare to hear …
Read More

Disabling Error Emails in Django

One of Django's nice "batteries included" features is the ability to send emails when an error is encountered. This is a great feature for small sites where minor problems would otherwise go …
Read More

Dynamic Test Servers with Salt

One of the things I love about the DevOps movement is how (when done right) it empowers developers to work with infrastructure in a safe and controlled manner. Once you've nailed down …
Read More

The Trouble with Thumbnails: Part 2

In this long overdue follow-up to Part 1, I'll be discussing the infrastructure issues associated with creating and serving image thumbnails at scale. The naive solution to generating thumbnails is to declare …
Read More

Django Patterns: Fat Models and cached_property

One of my favorite patterns in Django is the combination of "fat" models and cached_property from django.utils.functional. Fat models are a general MVC concept which encourages pushing logic into methods on your …
Read More

Django Anti-Patterns: Signals

Django's Signal Dispatcher is a really powerful feature that you should never use. Ok, it has valid use cases, but they may be rarer than you think. First, to dispel a misconception …
Read More

Multiple Sites with Routing in uWSGI

In another of our "you can do that?!?" with uWSGI posts, today I'll show you how to use uWSGI to host multiple sites and properly route traffic based on the hostname to …
Read More

10 Years of Lincoln Loop

April marked Lincoln Loop's 10th anniversary in business. As I reflect on that, I find myself going through all the typical platitudes: it's been a roller-coaster ride, how proud I am of …
Read More

Serving Static Files with uWSGI

Serving Static Files with uWSGI As noted in a previous post, uWSGI is a Swiss Army knife of functionality. One of its features is a built-in static file server. When to Use …
Read More

The Trouble with Thumbnails: Part 1

Images are everywhere on the web. Whether you're building a simple blog, a CMS, or a true web application, chances are good that you'll need to deal with images. Editors, authors, users, …
Read More