From Production — week of 2026-10-19
Static Analysis for the Uninitialized
Aaron Patterson
I really enjoy learning new things in my free time. Lately I’ve been studying this book on Static Program Analysis. The book is very good, but some of the formulas are quite dense so I like to try writing them out in code. The chapter I’m currently reading (chapter 9) has a section on finding possibly-uninitialized variables using bipartite graphs. I’ve found it to be quite enjoyable, so in this post I would like to describe, in my own words, how to do it. We’ll start by analyzing some code from a toy programming language the book uses called “TIP”, and then we’ll use the techniques we…
Build Your App Theme Without a Display Server
CodeName One
The Codename One CSS compiler now runs fully headless. Remove virtual-display setup from theme builds and review the visual details that a compiler change can affect.
A pragmatic guide to AI-assisted development
Thoughtbot
I’m currently staffed on a project in a codebase I have no familiarity with, so I’ve leaned on AI-assisted development more than ever. Along the way, I’ve found that writing the code is the easy part. Most of my time goes into understanding the problem, exploring solutions, and verifying the output. In this tutorial, I’ll walk through each phase of my approach as I work on a real issue. Feel free to follow along below, or browse the skills I used. Our base I’ll be working on our internal scheduling tool, Hub. Hub allows employees to set their experience and interest level for certain skills.…
Astro vs Next.js: How to Pick Between Islands and Server Components
SitePoint
A criteria-based Astro vs Next.js comparison: islands architecture, React Server Components, SSG/SSR trade-offs, and hosting — no synthetic benchmarks. Continue reading Astro vs Next.js: How to Pick Between Islands and Server Components on SitePoint.
Claude Code Hooks: Enforce Project Conventions with Gates and Linting
SitePoint
Configure Claude Code hooks to enforce project conventions: a pre-write gate that stops duplicate code, and a post-edit pipeline that runs Prettier and ESLint. Continue reading Claude Code Hooks: Enforce Project Conventions with Gates and Linting on SitePoint.
Top Accessibility Errors in Production and How to Avoid Them
SitePoint
The same accessibility errors have topped WebAIM’s report for seven years running. Here’s what they are, why they keep shipping, and how to catch them before release. Continue reading Top Accessibility Errors in Production and How to Avoid Them on SitePoint.
Asynchronous Tasks With Django and Celery
Real Python
Celery is a distributed task queue that processes tasks asynchronously, so slow work doesn’t hold up your web app’s response. When you integrate Celery with your Django application, you can offload time-consuming tasks and keep your users from waiting. With Celery and Django, you can handle jobs like sending emails, processing images, and analyzing data without slowing down your application. By the end of this tutorial, you’ll understand that: Celery is a distributed task queue that handles tasks outside the main Django app flow. Celery workers take care of offloading work, while Celery beat…
Python's Mutable vs Immutable Types: What's the Difference?
Real Python
Python’s mutable objects, such as lists and dictionaries, allow you to change their value or data directly without affecting their identity. In contrast, immutable objects, like tuples and strings, don’t allow in-place modifications. Instead, you’ll need to create new objects of the same type with different values. By the end of this tutorial, you’ll understand that: The difference between mutable and immutable objects is that mutable objects can be modified, while immutable objects can’t be altered once created. Python lists are mutable, allowing you to change, add, or remove elements.…
Digging Deeper Into Django Migrations
Real Python
You already understand the purpose of Django migrations and you’re familiar with fundamental usage patterns like creating and applying migrations. In this tutorial, you’ll dig deeper into the migration system and take a peek at some of its underlying mechanics, from the Django migrations table to the migration files themselves. By the end of this article, you’ll know: How Django keeps track of migrations How migrations know which database operations to perform How dependencies between migrations are defined Once you’ve wrapped your head around this part of the Django migration system, you’ll…
Django Migrations: A Primer
Real Python
Since version 1.7, Django has come with built-in support for database migrations. In Django, database migrations usually go hand in hand with models: whenever you code up a new model, you also generate a migration to create the necessary table in the database. However, migrations can do much more. In this article, you’ll get comfortable with Django migrations and learn the following: How to create database tables without writing any SQL How to automatically modify your database after you changed your models How to revert changes made to your database Free Bonus: Click here to get access to a…
Get this weekly — one click to unsubscribe, always.