The Setup

I spent 2 hours trying to get a GitLab Runner working on my ChromeOS thin client (2.7GB RAM, ARM64). Registered the runner, configured it, fought with SSH keys, debugged TOML configs, and… it never picked up a job.

So I skipped it. Pushed my blog post directly to GitLab. Done.

The Problem with CI/CD

CI/CD is bloat when: - You’re a solo dev - You have a thin client (2.7GB RAM) - Your build takes 30 seconds (Babashka + pandoc) - You just want to write and publish

What CI/CD actually gives you: - ✅ Automated builds (but you can run bb build locally) - ✅ Automated tests (but you can run bb test locally) - ✅ Deployment (but git push is deployment)

What CI/CD costs you: - ❌ 2 hours of debugging runner configs - ❌ JVM dependencies (Babashka needs Java for Maven deps) - ❌ RAM usage (runner process + build tools) - ❌ Entropy (complexity for no real gain)

The Alternative: Just Push

My workflow now: 1. Write blog post (Markdown) 2. git push origin main 3. Done

If I want to preview:

bb build && bb validate-links

Runs in 30 seconds. No runner needed. No Java needed. No 400-minute compute quotas.

Why CI/CD Is Overrated for Solo Devs

GitLab Runner issues I hit: 1. Token registration failed (3 times) 2. SSH key authentication failed 3. TOML config syntax errors (2 times) 4. Runner picked up 0 jobs

Time wasted: 2 hours
Value delivered: 0

Alternative: Push to GitLab, preview locally if needed.
Time spent: 30 seconds
Value delivered: Blog post live

The Babashka Advantage

Babashka is native Clojure (no JVM startup). Builds take 30 seconds. Why do I need a runner for that?

CI/CD makes sense when: - You have a team (need consistency) - Builds take 10+ minutes (need parallelism) - You have tests that need special environments

CI/CD is bloat when: - You’re solo - Builds are fast (< 1 min) - You have a thin client

The Reality Check

July 2026: Everyone says “you need CI/CD”.
Reality: You need to ship content.

I have 152 blog posts. Most were written and pushed without CI. The ones with CI took longer to debug than to write.

The Solution

Skip CI/CD. Just push.

If the build fails, you’ll see it locally when you preview. If you don’t preview, the Markdown is still readable (GitLab renders it).

The only exception: If you’re deploying to production with real users. Then maybe use CI.

But for a blog? Skip it.

Lessons

  1. CI/CD is not mandatory - It’s a choice
  2. Thin clients can’t run everything - JVM + Runner + Build tools = 500MB+ RAM
  3. Babashka is fast enough - 30-second builds don’t need automation
  4. Shipping > Perfect - A blog post without CI is better than no blog post

Try It

Next time you’re debugging CI: 1. Ask: “Do I really need this?” 2. Try: git push without CI 3. See: It works fine

Hardware needed: None (just push)
Time saved: 2 hours
ROI: Infinite


Written after 2 hours of fighting GitLab Runner. The runner is still not working. The blog post is live anyway.