How to make a side project last
In the past decade or so I've started and abandoned numerous side projects so here's my biased opinion about side project maintenance - Easy deployment and minimal dependencies is the 'make or break' for side projects.
The flow of most of the abandoned projects looks like this:
- Get excited about a shiny new idea.
- Build it
- Deploy it
- It runs for about a year.
- Oh no, a bug
- Getting the dev-env + deployment up and running will take an hour so I never get to actually do it!
- ☠️ Dead project ☠️
The ones that are still active all share one thing in common - dead simple development env + deployment mechanism.
My best project is using this tech stack:
- Only language - golang
- compiled to one statically linked binary so the deployment is just scp and run
- strong type system - I get some degree of protection even though I don't write any tests.
- Dev container for the development env with a static go version.
- Version control - private github
- Server - Raspberry Pi
- Transport - Telegram
- Telegram bot system is trivial so there's no need for a dedicated domain.
That's all the infra - no domain, no db (just json files), no complex deployment workflow.
It allows me to easily jump right in whenever I need to fix or improve an year old project.