Blog Posts

Mastering Communication with AI: A Guide to Effective Prompt Engineering

Introduction Interacting with AI tools like this requires a specific skill set often referred to as prompt engineering. This involves learning the nuances, constraints, and effective strategies for framing requests to get reliable, complete outputs. Our journey through creating a blog post about Syncthing synchronization highlighted several key lessons in...

Read more


Migrating to a Modern Django Workflow: UV, Ruff, and CD

Introduction We recently undertook a significant migration across our five Django projects to streamline development, improve code quality, and automate deployments. This process involved adopting several modern Python tools and updating our operational practices. Key Migrations & Best Practices Implemented 1. From Pip to UV (The Speed Upgrade) We replaced...

Read more


Choosing the Right Tools: A Modern Django Stack for CMS, E-commerce, and CRM

Choosing the Right Tools: A Modern Django Stack for CMS, E-commerce, and CRM Building a suite of five interconnected, monetized websites requires a careful selection of robust, complementary tools. We’ve consolidated our technology preferences—focusing on avoiding manual JavaScript, leveraging utility-first CSS, and ensuring reliable backend automation—into a single, powerful architecture....

Read more


Debugging the GitHub Feed: Celery, Redis, and the Elusive 401 Error

Debugging the GitHub Feed: Celery, Redis, and the Elusive 401 Error When setting up the github_feed application locally for the first time, several friction points emerged related to environment configuration, pathing, and authentication. The primary issue preventing the feed from working was a consistent 401 Client Error: Unauthorized. Here are...

Read more


Streamlining Django Deployments: Building a Reusable Project Manager Script

Automating Django Deployments: A Reusable Shell Script Managing multiple Django projects on a single server can quickly become complex, especially when coordinating code pulls, migrations, static file collection, and service restarts (like uWSGI, Celery, and Apache/Nginx). Manual execution is error-prone and time-consuming. The solution is a robust, reusable shell script...

Read more


Bringing Dev Activity to Life: Building a Dynamic GitHub Feed in Django with Celery

Introduction Every developer wants to show off their recent work, but manually updating a "recent projects" list is tedious. We wanted a live feed of our GitHub commits directly on makeitexist.net. The challenge? Fetching data from an external API (like GitHub's) live on every page load can slow down your...

Read more