Saving state to make it easier to resume work

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:

  1. Open Visual Studio project
  2. Make sure I’m working on the latest version
  3. Start RavenDB (local database server)
  4. Start RabbitMQ (local message-broker)
  5. Start IIS (local web server)
  6. Open JIRA ticket for implementation details
  7. 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.

It sits in my lil homelab together with my other servers

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:

  1. Open Jump Desktop
  2. Connect to the development machine
  3. 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.

2020 © Jerico Aragon