Notes
How to Handle AI Model Deprecation Before It Breaks Your Workflow
A model that works today can have its quota cut to zero with little warning. Build for that reality, not around it.
How to Add a Validation Step So Your AI Pipeline Doesn't Save Garbage
A working demo isn't the same as a trustworthy system. Test it with input it was never designed for.
How to Write AI Prompts That Reliably Return Clean JSON
Structured extraction prompts need explicit keys, explicit allowed values, and an explicit refusal path.
A Debugging Method: Isolate, Read the Real Error, Fix One Node at a Time
The same three-step approach worked for a DNS issue, an SSL issue, a deprecated model, and a binary data bug, all in the same afternoon.
How to Start, Stop, and Restart Docker Containers the Right Way
The handful of docker compose commands that cover almost every situation.
How to Write a docker-compose.yml for Self-Hosting Any App
The minimum shape of a docker-compose file that runs reliably and survives restarts.
How to Install and Auto-Start Docker Desktop on Windows
Get Docker running and set it to launch automatically so self-hosted containers survive a restart.
How to Keep a Docker Container Running Forever with restart: unless-stopped
One line in docker-compose.yml is the difference between a container that self-heals and one that silently stays down.
How to Expose a Local Server to the Internet for Free (No Card)
Local Docker plus a tunnel beats most free cloud tiers, once you factor in card walls and sleep timers.
How to Get a Free Gemini API Key from Google AI Studio
Free tier AI that handles both text and vision, no card, but check current model quotas before committing to one.
How to Set Up a .gitignore to Prevent Future Credential Leaks
Add this before it's needed, not after something sensitive almost gets committed.
How to Handle Binary Files in n8n Without the Code Node Bugging Out
Converting an image to base64 by hand in a Code node can silently return a storage reference instead of the actual file. Use the built-in node instead.
How to Debug a Failing n8n Workflow Using the Executions Tab
Stop guessing which node failed, the Executions tab shows the exact error and the exact request that caused it.
How to Add a Fallback Path in an n8n Switch or IF Node
Without an explicit fallback output, unmatched cases go nowhere, and nobody gets told.
How to Import and Wire Up an n8n Workflow from Scratch
Where the import option actually lives, and the order to wire credentials in without missing a node.
Why You Need to Re-Publish n8n Workflows After Every Edit
Saving a node is not the same as the live, webhook-triggered workflow actually using that change.
How to Auto-Start ngrok on Windows Login
Make the tunnel relaunch itself after a restart, instead of remembering the command every time.
How to Set Up ngrok with a Permanent Free Domain
Get a stable public URL for a locally hosted service, free, no card, no expiry.
How to Structure a Portfolio-Ready GitHub Repo
A README, organized folders, a license, and an explicit security note turn a pile of files into something worth showing.
How to Scan a Project for Leaked Secrets Before Pushing to GitHub
A quick grep across every file catches what a visual skim easily misses.
How to Read and Use a Supabase Connection String Correctly
Breaking down what each part of the connection string actually means, so filling in a client's form isn't guesswork.
How to Get a Free Postgres Database with Supabase
A real Postgres database, free tier, no card, with a browsable table UI included.
How to Fix Host Not Found on Supabase (Direct vs Session Pooler)
Direct connections are IPv6-only, which silently fails on a lot of home networks. Use the pooler instead.
How to Fix Self-Signed Certificate Errors When Connecting to Supabase
A specific, common error when connecting via the session pooler, with a one-toggle fix.
How to Keep AI Prompts and Database Schema in Sync as a Project Grows
The list of categories an AI is allowed to choose from, and the list of categories a database actually tracks, are two separate lists that will drift apart unless you treat them as a pair.
How to Create a Telegram Bot with BotFather
Get a bot token in under two minutes, free, no approval process.
How to Build Anything for $0 Without Ever Entering a Credit Card
It's genuinely possible, but it means choosing tools by their actual signup requirements, not just their pricing page.
n8n webhook nodes don't retry by default
A failed downstream call silently dropped a workflow run until I enabled retry-on-fail manually.
Postgres indexes default to B-tree, and that's usually right
Spent an hour considering a custom index type before realizing B-tree already covers the query pattern I had.