All posts.
Every EasySpawn article, newest first — deploying AI-built apps, Claude Code, databases, security, and the infrastructure underneath.
422 posts · page 3 of 18
"No Space Left on Device": Finding and Freeing Disk Space on a Server
When a server's disk fills up, databases stop writing, deploys fail and apps crash with ENOSPC. How to find what's using space with df and du, the usual culprits (logs, Docker, journald, old releases, deleted-but-open files), inode exhaustion, and how to stop it happening again.
Next.js App Router vs Pages Router: Differences and Whether to Migrate
Next.js has two routers: the older pages/ directory and the newer app/ directory built on React Server Components. How routing, data fetching, layouts and API routes differ, which one new projects should use, and a sensible incremental migration path.
Message Queues Explained: When You Need One and Which to Use
A message queue lets one part of your system hand work to another without waiting. Queues vs pub/sub vs event streams, delivery guarantees, dead-letter queues, and an honest comparison of Postgres, Redis, RabbitMQ, SQS and Kafka for a small team.
Lovable vs Bolt vs v0: Which AI App Builder Fits Your Project?
Three AI app builders, three different bets. Lovable builds full apps with a backend for non-developers, Bolt runs a whole dev environment in your browser, and v0 is strongest at Next.js and UI. What each produces, where each struggles, and how to choose.
localStorage vs sessionStorage vs Cookies: Where Should You Store It?
Three ways to store data in the browser, with different lifetimes, sizes and security properties. What each one is for, why login tokens shouldn't go in localStorage, the size limits, and a simple rule for choosing.
LLM Temperature Explained: Why the Same Prompt Gives Different Answers
Temperature controls how random an AI model's word choices are. Low temperature gives consistent, predictable answers; high temperature gives varied, creative ones. How it works, what values to use for which tasks, top-p, and why temperature 0 still isn't fully deterministic.
Linux Namespaces Explained: The Kernel Feature Containers Are Made Of
A container is a process with its own namespaces. What each of the eight Linux namespaces isolates — mount, PID, network, UTS, IPC, user, cgroup, time — how to build a container-like process by hand with unshare, inspect one with nsenter and /proc, and what namespaces do not protect against.
How to Learn to Code With AI (Without Letting It Think for You)
AI can be the best coding tutor you've ever had, or a crutch that leaves you unable to fix anything. A practical way to learn with AI: explain-first prompts, building real projects, reading before running, deliberate practice without AI, and a 12-week outline.
JavaScript Array Methods: map, filter, reduce, find and Friends
Most JavaScript in AI-generated apps is arrays being transformed. What map, filter, find, some, every, reduce, sort and includes do, with plain examples, how to chain them, which ones change the original array, and the mistakes that cause bugs.
"TypeError: X Is Not a Function": The Common Causes and Fixes
"is not a function" means you tried to call something that isn't a function — usually undefined, an object, or the wrong kind of value. The usual suspects: .map on a non-array, wrong import, missing await, a typo, or a name collision. How to diagnose each.
HTTP/1.1 vs HTTP/2 vs HTTP/3: What Changed and Whether You Should Care
HTTP/2 multiplexed requests over one TCP connection; HTTP/3 moved to QUIC over UDP to escape TCP's head-of-line blocking and speed up handshakes. How each works, what they fix, what they break, how browsers discover HTTP/3, and what to actually configure for your app.
How to Price Your SaaS: A Beginner's Guide to Charging for Your App
Pricing is the decision first-time founders avoid longest. How to pick a pricing model (flat, tiered, per-seat, usage), how to set a first number, why free plans are expensive, how AI costs change the maths, and how to raise prices later.
How to Center a Div (Horizontally, Vertically, or Both)
The internet's favourite CSS joke has simple answers now. How to center anything horizontally, vertically or both with Flexbox, Grid, margin auto and absolute positioning — with the Tailwind classes — and why your centering isn't working.
How Coding Agents Work: The Loop, the Tools, and the Context Behind Them
Under the hood, Claude Code, Codex and similar agents are a model in a loop with tools and a carefully managed context. The agent loop, tools, file editing, search, context compaction, subagents, permissions and sandboxing — and what it means for you.
Hashing vs Encryption vs Encoding: What's the Difference?
Three ways to transform data that people mix up constantly — sometimes with security consequences. Encoding changes format (Base64), encryption hides data with a key you can reverse, hashing makes a one-way fingerprint. What each is for and the mistakes to avoid.
Google Search Console for Beginners: Set It Up and Read It
Search Console is Google's free tool for seeing how your site appears in search. How to verify your domain, submit a sitemap, read the Performance and Pages reports, fix 'Crawled — currently not indexed', and use URL Inspection to get a new page noticed.
Deploy to a VPS With GitHub Actions: Push to Main, Ship to Production
Automate deploys to your own server: run tests in GitHub Actions, then SSH in and run your deploy script — or build a Docker image and pull it. Deploy keys, secrets, known_hosts, environments with approval, rollbacks, and keeping the SSH key's power limited.
Git Push Rejected: "Updates Were Rejected Because the Remote Contains Work"
git push fails with "rejected — fetch first" or "non-fast-forward" when GitHub has commits you don't. How to pull and combine them safely, when force-pushing is fine and when it destroys work, and the other rejection messages: protected branches, large files, and secrets.
"Permission Denied (publickey)" on GitHub: How to Fix It
GitHub rejected your SSH key — either you don't have one, it isn't added to GitHub, your SSH agent isn't offering it, or you're using the wrong account. A step-by-step fix with ssh -T, plus the HTTPS alternative and the 'Support for password authentication was removed' error.
Git Fetch vs Git Pull: What's the Difference?
git fetch downloads new commits from GitHub without touching your work. git pull downloads them and immediately merges (or rebases) them into your branch. When to use each, what origin/main actually is, and how to see what changed before you pull.
Git "Detached HEAD" Explained: What It Is and How to Get Out
"You are in 'detached HEAD' state" means you've checked out a specific commit instead of a branch. It's safe to look around; commits made here are easy to lose. How you got there, how to get back, and how to save work you did while detached.
Git Cherry-Pick Explained: Copy One Commit to Another Branch
git cherry-pick copies a specific commit from one branch onto another — handy for getting a bug fix into production without merging everything else. How to use it, picking ranges, handling conflicts, and when a merge is the better choice.
How to Get Your First 100 Users (Without an Ad Budget)
Launching doesn't bring users; going where they already are does. Practical ways to find your first 100 users — direct outreach, communities, launch sites, content, and your own network — and how to keep the ones you get.
GET vs POST (and PUT, PATCH, DELETE): HTTP Methods Explained
Every request to a web server has a method that says what it wants to do. GET reads, POST creates, PUT and PATCH update, DELETE removes. The differences that matter in practice — caching, safety, idempotency, where the data goes — and the mistakes AI-generated APIs make.