I maintain and add/fix features to an eight-year-old codebase (web app). I like maintaining and keeping things running. My main challenge here is every time a new feature has to be implemented/fixed, I have a long list to do before I get to the actual work. Regardless on how simple it is.
To get started I need to:
- Open Visual Studio project
- Make sure I’m working on the latest version
- Start RavenDB (local database server)
- Start RabbitMQ (local message-broker)
- Start IIS (local web server)
- Open JIRA ticket for implementation details
- Finally, start working on the feature
This is only to get started. It doesn’t cover doing the actual work, testing, and deployment. There’s too much friction.
What I tried but didn’t fully resolved my issue
My initial solution was to use a dedicated laptop for web app-related work. This worked for a while but I didn’t like maintaining two laptops. If I forgot to charge the laptop, it shuts off leaving me to do those same thing all over again.
The second thing I tried was to run VM in Azure for development work. It has an image with Visual Studio pre-installed. I was able to ship a few features using this workflow. The lag was noticeable but every time I logged in, I resume where I left off. My issue is the cheapest VM costs around $20 a month (2 vCPU, 2gb ram, non-ssd storage). Build time is also considerably longer because of the specs, which becomes critical for hot fixes.
What I found to be working for me
I discovered cheap tiny PCs in FB Marketplace. Cost is only P10k for a fairly recent Intel i5 9th gen processor (6 cores). It idles at 10 watts (a full pc idles at 100w). I added 2x 16gb DDR4 ram and 1TB SSD. Total cost is only around 20k.
I’m using it as an always-on headless machine that I access through Jump Desktop. Jump Desktop is a remote desktop app that has its own STUN servers. This means I can access the machine anywhere as long as there’s internet.
This solved my main pain point when working on this particular codebase. I’m also back on bringing only a single laptop with me if I go out.
My new process now:
- Open Jump Desktop
- Connect to the development machine
- Since everything is in place already, I only need to start working
This is me accessing the machine remotely from my Mom’s home (the machine is in my office). As soon as I connect, I resume where I left off. Visual Studio is open, local servers are running, build time is fast, and it doesn’t use too much electricity when idle.