Back in highschool, I remember obsessing over how many apps I could make portable. http://portableapps.com/ was one of my favorite pastime, and I definitely spent way too many hours of my free time making obscure apps portable. A good portable app had to bootstrap the app along with any of it’s necessary dependencies, maintaining state while running, and remove it’s footprints when it is done.

This often involved writing a wrapper around the executable that:

  1. Backup the system configs (fun times with registry keys on windows anyone?)
  2. Load in the necessary configs the app depends on (again, loading registry keys, inis, any necesesary dlls…)
  3. Monitor the changes the app makes
  4. On close, it should remove all files / state that the app had created / modified then reinstate the system state from the backup.

Everything was super tedious but super fun.

When college came however, I had forgotten about portable apps. It wasn’t until recently when I came across Docker that reminded me of sweet memories. “Want to run skype? Put it in a docker container! Office apps? Why not, dockerize that too”. No wonder it was love at first sight. So here’s to Docker. Containerize all the things!