Monitoring n8n Workflow Failures in Grafana: Why Your Green Dashboard Is Lying

n8n's Prometheus endpoint tells you the process is alive and busy. It does not tell you a workflow stopped producing correct output. This post walks through the three failure families that slip past a default n8n dashboard, the PromQL that catches each one, and how to close the gap with a second source of truth from the executions API.

Continue ReadingMonitoring n8n Workflow Failures in Grafana: Why Your Green Dashboard Is Lying

Bootstrap a VPS With Ansible in One Run Without Locking Yourself Out

A single Ansible run can take a blank VPS to a hardened, reproducible server. The hard part is not the tasks, it is the order. Here is the ordering that keeps you logged in, the failures that pass green and bite two weeks later, and how to make the second run as safe as the first.

Continue ReadingBootstrap a VPS With Ansible in One Run Without Locking Yourself Out

GitLab CI vs GitHub Actions vs Jenkins: Choosing Without Regretting It Later

A practical comparison of GitLab CI, GitHub Actions and Jenkins that skips the feature table. What actually decides the choice is where your code lives, whether the runner can reach the deploy target, and who owns the control plane at 2am. Includes the cost mechanics, the security failure modes, and a decision procedure you can run in an afternoon.

Continue ReadingGitLab CI vs GitHub Actions vs Jenkins: Choosing Without Regretting It Later

Automating Server Provisioning for New Clients Without Building a Snowflake Farm

Hand-built client servers fail quietly: you only find out they were never reproducible on the day you need to rebuild one. Here is how to automate server provisioning for new clients using cloud-init for first boot, Ansible for convergence, per-client secrets and a verification gate that refuses to hand over a half-built box.

Continue ReadingAutomating Server Provisioning for New Clients Without Building a Snowflake Farm

WP-CLI Commands That Save Hours (And the One That Bites Back)

The dashboard is fine for editing a post. It is a terrible tool for anything touching a thousand rows, twelve plugins or two servers. Here are the WP-CLI commands that save hours on migrations, plugin conflicts, stalled cron and integrity checks, grouped by the job that eats the time, with the failure modes each one hides.

Continue ReadingWP-CLI Commands That Save Hours (And the One That Bites Back)

Apache Airflow on AWS: Building SaaS and API Pipelines That Don’t Lie to You

Most API pipeline failures are green DAGs producing incomplete data. A practical guide to running Apache Airflow on AWS for SaaS and API extraction: choosing between MWAA provisioned, MWAA Serverless and self-managed, the pool setting that silently stops throttling when you go deferrable, retry and pagination design, secrets handling, and the four cost lines that actually move.

Continue ReadingApache Airflow on AWS: Building SaaS and API Pipelines That Don’t Lie to You

Building a Jira Analytics Pipeline with AWS Lambda and Athena (Without Double-Counting Everything)

Jira's built-in reports stop at the board boundary. This guide walks through a Jira analytics pipeline built on AWS Lambda, S3 and Athena, organised around the four failure families that actually bite: the removed search endpoint, silently truncated changelogs, incremental loads that duplicate rows, and an S3 layout that quietly inflates your query bill.

Continue ReadingBuilding a Jira Analytics Pipeline with AWS Lambda and Athena (Without Double-Counting Everything)

The Column That Never Shows Up: Fixing Redshift and Zoho Analytics Schema Mismatches

You added a column in Redshift, clicked Sync Design, and it reported success. The column still isn't in the dashboard. That's documented behaviour: one unresolved mismatch anywhere blocks new column information everywhere. Here's how to clear them and stop them coming back.

Continue ReadingThe Column That Never Shows Up: Fixing Redshift and Zoho Analytics Schema Mismatches