The Language Decision


When building services for my homelab, I chose Go. Here's why:


1. Performance


Go compiles to native binaries that are incredibly fast and use minimal resources. Perfect for a homelab where every MB of RAM counts.


2. Single Binary Deployment


No dependencies, no runtime. Just copy the binary and run. This makes containerization trivial:


FROM scratch
COPY app /app
ENTRYPOINT ["/app"]

3. Built-in Concurrency


Goroutines make it easy to handle multiple requests efficiently. My services can handle hundreds of concurrent users without breaking a sweat.


4. Standard Library


The `net/http` package is production-ready out of the box. No need for heavy frameworks.


Real Examples


  • AvidLearner: Go backend serving React frontend
  • Ebook Reader: Pure Go with embedded static files
  • LabMan: CLI tool with SSH session management
  • Rebalancer Operator: Kubernetes controller-runtime

The Results


My Go services typically use:

  • 10-20MB RAM
  • <5% CPU under load
  • <10MB container images (with distroless)
  • <100ms response times

This efficiency lets me run more services on the same hardware.