How to Collaborate With AI to Build Better Software
AI is changing how software gets built. But the engineers getting the most out of it aren’t the ones moving fastest — they’re the ones who stay in the loop.
I'm John, an entrepreneurial, full stack engineer with decades of experience building and operating SaaS products. I write articles and tutorials — based on personal experience — about software development and cloud infrastructure.
AI is changing how software gets built. But the engineers getting the most out of it aren’t the ones moving fastest — they’re the ones who stay in the loop.
Learn how to override the default DNS server on Ubuntu using systemd-resolved, so you can quickly mitigate DNS resolution failures without waiting on your hosting provider.
A practical guide to solving browser cache issues for static assets using a Python-based approach, with code you can drop into your deployment and templates.
PostgreSQL spawns a new process for every client connection, which becomes expensive under load. Learn how to install and configure PgBouncer to pool connections and keep your database performing well at scale.
A practical, phased runbook for migrating PostgreSQL from an old primary/replica pair to a new primary/replica pair using logical replication for the major-version move and streaming replication for steady-state high availability.
When multiple feature branches depend on the same code, your branch strategy can either keep development moving or create merge chaos. This guide covers two practical approaches: daisy-chained branches and sibling branches from a shared base.
A comprehensive guide to deploying a Next.js application on a production server using Nginx as a reverse proxy and PM2 for process management and zero-downtime deployments.
From early home computers to modern Linux servers, the terminal has been a constant companion through four decades of change.
Learn how to use systemd timers to schedule recurring system jobs. Systemd timers provide better logging, prevent overlapping jobs, and integrate seamlessly with the rest of your infrastructure.
Learn how to manually create and install Let’s Encrypt SSL certificates using DNS or HTTP validation when automated renewal isn’t an option.
Learn how to configure an SSH jump server to add an extra layer of security to your production infrastructure by routing all SSH connections through a single hardened proxy.
When a PostgreSQL query gets stuck or runs too long, it can consume database connections and cause your application to become unresponsive. Learn how to identify and terminate these queries before they bring down your system.