Reasons to use virtual machines for programming workshops, hackathons etc

virtual machines for programming workshops

I’ve been learning some new development skills recently and going to hackathons, meetups etc to try new things out. There have been some great talks and some interesting new technologies. There’s an increasing call for everyone to learn at least the basics of programming, which is awesome. However a frustrating and repeated experience is trying to get my computer set up to play with the thing we’re learning.

So what keeps happening?

Whether it’s been React Native, NPM, PHP versions or app emulation it’s involved a lot of swearing, installing things that we don’t understand and even wrecking our machines. This is not a good experience and in the worst case can put people off using a technology and break their work computer.

This can happen when the workshop/hackathon leader has their machine environment already configured for their daily work, and then tries to get people with a variety of skill levels and Mac/PC/Linux machines all set up to get us playing with a new technology. Things move fast and recent changes or dependencies may not be compatible.

Recent situations included:

  1. A PHP training course that ran off the command line, installing packages and a different version of PHP to what my Mac had installed. I didn’t want to learn package management and command line stuff, and their instructions broke both my command line and my install of MAMP PRO that I use on a daily basis for work. I was seriously put off and didn’t go back to that course. There’s no need to use any of that stuff to learn some basic PHP.
  2. A React Native workshop where the speaker’s machine was running an old version of NPM and a starter package plus Android developer studio and an emulator – a 2gb download. He then threw in some command line GIT. All we wanted to do was play with some React Native. I ended up with a command line full of errors and not being able to run it at all as the latest version of NPM wasn’t compatible with the starter package. This was massively broad in scope and overcomplicated when we could have just run some code in a browser based environment to see how it compares to vanilla Javascript. Free pizza afterwards softened the blow.
  3. A React hackathon where the tutorials were way out of date and resulted in a terminal full of errors. The hackathon organisers had found a collection of ideas online but not tested them. We wasted half the time available messing around trying to fix this instead of actually making something.  At least there was pizza again.

Why is this a problem?

Off the back of these issues, we can’t expect the people running the workshops to fix our computers after trying to set up their environment breaks them. We can be left with computer issues to solve that cost us money to fix in IT support bills and lost chargeable hours.

Range of experience

It’s easy to assume that everyone attending these events is at the same level, but there is a huge range of experience and knowledge. I’ve been making websites for many years without any command line trickery and some people are coming to these things for the first time. These events are aiming to get people into using new technologies, and in my opinion mostly failing due to frustration and confusion by introducing too many things at once.

One thing at a time

If I want to learn about React syntax or just even what it is, package management and GIT are nothing to do with that. I’d love to learn them too, but rushing to get up to speed with an experienced developer who already has it all installed while they are talking is not the time or place.

Admitting we’re stuck

It takes a brave person to put their hand up and admit that they’re completely lost and have no idea what’s going on. Even if we speak up, the event can turn into setting up everyone’s computers and not actually doing the thing we’re there to do.

How can we solve this?

I use virtual machines for testing and something like a VirtualBox Ubuntu image created before the workshop and made available for download as a torrent or on a USB drive would be a quick and easy solution. By installing all the things we need before the workshop/hackathon the leader can verify that the things work together and the potential for wrecking our work computers is removed. We can all play with the new technologies, break everything and then just delete the virtual machine and start again.


With a quicker and potentially less destructive way of getting started, all the time and effort speakers and workshop leaders put into their events will hopefully encourage people to keep going, rather than getting frustrated and giving up.