Practical articles on Django, Python, Wagtail, AI and web development — written from experience building production systems for the UK Government, Gov.ie, HSBC, and LSEG. Tutorials, deep-dives, and honest takes on tools and trade-offs.
Modern Django typing for 2026 — null vs Optional, typed Managers and QuerySets with django-stubs, closed TypedDicts, the Self type, PEP 695 generic syntax, custom generic Django models, type-safe JSONField with Pydantic, and a complete typed app you can copy.
When GraphQL beats REST and when it doesn't, then a type-safe Strawberry Django API — schema from type hints, queries, mutations, the N+1 problem solved with the query optimizer and DataLoader, auth, and a performance comparison.
The patterns that work: eager-mode Celery tests, WebsocketCommunicator for Channels consumers, async ORM access via database_sync_to_async, group-send tests without a browser, and the eager-vs-real-broker decision.
JSONField querying and GIN indexes, full-text search, trigram fuzzy matching, window functions, CTEs, pgtrigger triggers and performance tuning — all from the ORM, with the SQL each query compiles to.
Modern Django typing for 2026 — null vs Optional, typed Managers and QuerySets, closed TypedDicts, PEP 695 generic syntax, custom generic Django models, type-safe JSONField, and a complete typed app.
Every layer of Django caching covered — Redis backend, per-view, template fragments, low-level API, ORM patterns, invalidation, and stampede protection.
Move beyond bolt-on AI. Design Django apps where intelligence is a load-bearing layer — async queues, token budgets, prompt registries, RAG, model routing, human-in-the-loop.
Fast code isn't always green code. Measure CPU energy with pyRAPL, track CO₂ with CodeCarbon, fix the Django patterns silently burning the most power.
Lazy imports, frozendict, sentinel type, comprehension unpacking, UTF-8 default, Tachyon profiler, and an 8–9% JIT boost. Every production-relevant change with working code.
Hardware costs, labour savings, hidden costs, and a Python break-even calculator. Honest look at when commercial & DIY ag robots actually pay for themselves.
GPS waypoint missions over MQTT, on-device TFLite weed detection on Raspberry Pi, variable-rate sprayer control over GPIO PWM, nightly Claude crop advisor.
LLM mental models, token arithmetic, prompt engineering, structured output, tool use, embeddings, RAG, streaming, retries, prompt caching, cost tracking.
342 US occupations scored for AI exposure by an LLM pipeline. Software devs hit 8–9/10. What that means and how to build the scoring pipeline in Python & Django.
Extend the Wagtail admin with snippets, SnippetViewSet, custom menu items, admin views, lifecycle hooks, dashboard panels, and permissions — with working code for each.
Advanced Django admin patterns — custom list filters, async bulk actions, custom AdminSite views, performance fixes, inlines, and audit trails. All stock Django, no third-party skin.
Full production setup: Dockerfile, docker-compose, Nginx, Gunicorn, PostgreSQL, Redis, WhiteNoise, volume-mounted media, SSL with Certbot, health checks.
Live price updates over WebSocket, Celery Beat refreshing prices every five minutes, price alerts, and a full DRF API — all on the free CoinGecko tier, no API key required.
Every block type, custom StructBlock, ListBlock, nested StreamBlock, ChooserBlocks, block templates, querying StreamField data, and handling rename migrations.
pgvector + OpenAI embeddings + Claude API — build a retrieval-augmented chat API for Wagtail with streaming responses and auto-indexing on page publish.
StreamField vs placeholders, Wagtail admin vs frontend editing toolbar, plugin systems, multi-site, search, and headless. Hands-on breakdown of which CMS to pick and why.
Wagtail API v2, CORS, custom API fields, ISR, StreamField rendering in React, responsive image renditions, and draft preview mode — the complete headless guide.
Sensors publish over MQTT, a Python PID controller drives vents and irrigation, Django persists the time-series, Django Channels streams live data to a dashboard.
Build a streaming Claude chatbot in two days — Django model, SSE endpoint, session history, floating widget, rate limiting, and production checklist.
Raspberry Pi robot captures plant images, POSTs to a Django REST API, Celery analyses each image with Claude Vision, Django Channels pushes real-time disease alerts.
From pip install to a published post — page models, StreamField body, tag filtering, pagination, RSS feed, and SEO fields. The complete step-by-step Wagtail beginner guide.
Install the client, configure the backend, define search fields, add autocomplete, boost fields for relevance, filter results, index StreamField, zero-downtime reindexing.
Stop blocking Django workers on slow LLM calls. Build a 202 Accepted → Celery task → poll pattern with AITask model, exponential backoff, SSE streaming, priority queues.
Official government data — Sachar Report, Census 2011, NCRB, Election Commission — shows under-representation in every institution and below national-average development indicators.
Production-proven patterns for structuring DRF projects — serializers, authentication, permissions, filtering, pagination, versioning, error handling, and testing.