41554 blogs · [
{
"id": "01a0878a-327c-732c-b82d-c4503124c570",
"title": "How to build a simple event-driven architecture",
"url": "https://www.jamesbeith.co.uk/til/2026-02-04/how-to-build-a-simple-event-driven-architecture/",
"published_at": "2026-02-04T05:00:00+00:00"
},
{
"id": "01a0878a-327c-732c-b82d-c4503195a413",
"title": "How to create a Django GeneratedField for extracting a timestamp from a UUIDv7",
"url": "https://www.jamesbeith.co.uk/til/2025-12-04/how-to-create-a-django-generatedfield-for-extracting-a-timestamp-from-a-uuidv7/",
"published_at": "2025-12-04T05:30:00+00:00"
},
{
"id": "01a0878a-327c-732c-b82d-c4503286208b",
"title": "How to use reserved domains in tests to prevent DNS queries",
"url": "https://www.jamesbeith.co.uk/til/2025-07-01/how-to-use-reserved-domains-in-tests-to-prevent-dns-queries/",
"published_at": "2025-07-01T06:45:00+00:00"
},
{
"id": "01a0878a-327c-732c-b82d-c450336218de",
"title": "How to optimise the order of HTML head elements using Capo",
"url": "https://www.jamesbeith.co.uk/til/2025-06-23/how-to-optimise-the-order-of-html-head-elements-using-capo/",
"published_at": "2025-06-23T01:00:00+00:00"
},
{
"id": "01a0878a-327c-732c-b82d-c45033d1b700",
"title": "How to write a custom alias for the Python debugger",
"url": "https://www.jamesbeith.co.uk/til/2025-06-19/how-to-write-a-custom-alias-for-the-python-debugger/",
"published_at": "2025-06-19T06:45:00+00:00"
},
{
"id": "01a0878a-327c-732c-b82d-c4503497f7d1",
"title": "How to catch missing referenced files in Django static files manifest",
"url": "https://www.jamesbeith.co.uk/til/2025-02-27/how-to-catch-missing-referenced-files-in-django-static-files-manifest/",
"published_at": "2025-02-27T01:00:00+00:00"
},
{
"id": "01a0878a-327c-732c-b82d-c4503566e97a",
"title": "How to use Django database function expressions directly",
"url": "https://www.jamesbeith.co.uk/til/2024-10-02/how-to-use-django-database-function-expressions-directly/",
"published_at": "2024-10-02T06:00:00+00:00"
},
{
"id": "01a0878a-327c-732c-b82d-c45035ca2e68",
"title": "How to enqueue Celery tasks using RabbitMQ message priorities",
"url": "https://www.jamesbeith.co.uk/til/2024-08-28/how-to-enqueue-celery-tasks-using-rabbitmq-message-priorities/",
"published_at": "2024-08-28T03:30:00+00:00"
},
{
"id": "01a0878a-327c-732c-b82d-c45036545798",
"title": "How to encode Unicode characters to store in AWS S3 object metadata",
"url": "https://www.jamesbeith.co.uk/til/2024-08-05/how-to-encode-unicode-characters-to-store-in-aws-s3-object-metadata/",
"published_at": "2024-08-04T23:00:00+00:00"
},
{
"id": "01a0878a-327c-732c-b82d-c45036e32aca",
"title": "How to create a Django model index with an upper case empty string condition",
"url": "https://www.jamesbeith.co.uk/til/2024-05-02/how-to-create-a-django-model-index-with-an-upper-case-empty-string-condition/",
"published_at": "2024-05-02T05:50:00+00:00"
},
{
"id": "01a0878a-327c-732c-b82d-c45037106c24",
"title": "How to structure Django projects",
"url": "https://www.jamesbeith.co.uk/blog/how-to-structure-django-projects/",
"published_at": "2018-06-25T11:00:00+00:00"
}
] posts Claim your blog