Blog: The Big Log

You didn’t just do that, Heroku

April 17, 2023 » The Big Log » [Archived Version]

<div class="notice"> <div class="notice-content"> <p>Obligatory <a href="https://thebiglog.com#tldr">TL;DR</a> with spoilers at the end of the post.</p> </div> </div> Background MusicButler is the first web-app I ever built. It notifies its users about new music by artists found in their libraries. It’s also how I learned a lot of what I know about programming and most of what I know about web-development. I believe it played a huge part in how I got to make a career shift to a software develop…

Read More

You didn’t just do that, Heroku

April 17, 2023 » The Big Log » [Archived Version]

Obligatory TL;DR with spoilers at the end of the post. Background MusicButler is the first web-app I ever built. It notifies its users about new music by artists found in their libraries. It’s also how I learned a lot of what I know about programming and most of what I know about web-development. I believe it played a huge part in how I got to make a career shift to a software developer in my 30s. Before the dawn of Dockerized apps, one way a layman like me would get an app to production wa…

Read More

The Django Speed Handbook: making a Django app faster

Feb. 25, 2020 » The Big Log » [Archived Version]

Over the course of developing several Django apps, I've learned quite a bit about speed optimizations. Some parts of this process, whether on the backend or frontend, are not well-documented. I've decided to collect most of what I know in this article. If you haven’t taken a close look at the performance of your web-app yet, you're bound to find something good here. <details class="toc-container"><summary class="toc-title">What's in this article?</summary> <ul class="toc"> <li><a href="https://…

Read More

The Django Speed Handbook: making a Django app faster

Feb. 25, 2020 » The Big Log » [Archived Version]

Over the course of developing several Django apps, I’ve learned quite a bit about speed optimizations. Some parts of this process, whether on the backend or frontend, are not well-documented. I’ve decided to collect most of what I know in this article. If you haven’t taken a close look at the performance of your web-app yet, you’re bound to find something good here. What's in this article? Why speed is important Different apps, different bottlenecks Analyzing and debugging performance issues D…

Read More

How to scaffold Django projects with Cookiecutter

July 28, 2019 » The Big Log » [Archived Version]

import demoVideo from './cookiecutter-demo-minified-9.mp4' This post is a guide on how to scaffold (quick-start) new projects efficiently with Cookiecutter, a library that creates projects from project-templates. It outlines how I created my own Django cookiecutter, Scaffold Django X, but the same can be applied to Flask and pretty much any other Python project. Working on some Django articles, I found myself needing to start a new project more often than usual. It can get tedious: having to in…

Read More

How to scaffold Django projects with Cookiecutter

July 28, 2019 » The Big Log » [Archived Version]

This post is a guide on how to scaffold (quick-start) new projects efficiently with Cookiecutter, a library that creates projects from project-templates. It outlines how I created my own Django cookiecutter, Scaffold Django X, but the same can be applied to Flask and pretty much any other Python project. Working on some Django articles, I found myself needing to start a new project more often than usual. It can get tedious: having to initialize a project, filling boilerplate settings, adding te…

Read More

Django tutorial: as-you-type search with Ajax

May 26, 2019 » The Big Log » [Archived Version]

import demoVideo from './das-vid2-compressed.mp4' import demoVideo2 from './das-naive-comp.mp4' <div class="notice"> <div class="notice-content"> <p>Updated 24/03/2022: Django 4.0.3</p> </div> </div> This is a walkthrough tutorial on how to implement what's defined as “incremental search" in a Django app. We want results to refresh (with a tiny delay) as the user types their search term. We’ll also give a visual indication that the search is running by animating the search icon. Here's a demo o…

Read More

Django tutorial: as-you-type search with Ajax

May 26, 2019 » The Big Log » [Archived Version]

Updated 24/03/2022: Django 4.0.3 This is a walkthrough tutorial on how to implement what’s defined as “incremental search” in a Django app. We want results to refresh (with a tiny delay) as the user types their search term. We’ll also give a visual indication that the search is running by animating the search icon. Here’s a demo of the final functionality: The source code for this tutorial is available on Github. Our app Don’t worry, not another blog or to-do app. This time it’s a musi…

Read More

Grouping in Django templates

April 28, 2019 » The Big Log » [Archived Version]

I've recently deployed a tiny changelog app in one of my Django projects. The models.py file looks like this: # changelog/models.py (truncated) class ChangeLog(models.Model): IMPROVEMENT = ('improvement', 'improvement') FEATURE = ('feature', 'feature') BUG = ('bugfix', 'bug fix') CHOICES = (IMPROVEMENT, FEATURE, BUG,) title = models.CharField(max_length=560) description = models.TextField(null=True, blank=True) category = models.CharField(choices=CHOICES, max_leng…

Read More

Grouping in Django templates

April 28, 2019 » The Big Log » [Archived Version]

I’ve recently deployed a tiny changelog app in one of my Django projects. The models.py file looks like this: # changelog/models.py (truncated) class ChangeLog(models.Model): IMPROVEMENT = ('improvement', 'improvement') FEATURE = ('feature', 'feature') BUG = ('bugfix', 'bug fix') CHOICES = (IMPROVEMENT, FEATURE, BUG,) title = models.CharField(max_length=560) description = models.TextField(null=True, blank=True) category = models.CharField(choices=CHOICES, max_leng…

Read More