Published on
At Security Journey, we strive to create lessons that are compelling, engaging, and informative. Unlike other secure coding training providers that rely on simulations for hands-on lessons, we take a different approach. Every code example you view and modify runs in a real environment, ensuring the highest possible fidelity and a truly authentic learning experience.
But how do we do it? Through the magic of a virtual machine!
In this post, I’ll explain a virtual machine in simple, easy-to-understand terms, and then we’ll explore how virtual machines are used in our training platform.
What is a Virtual Machine?
You’re probably reading this on a computer, and yes, for our purposes, a mobile phone counts as a computer. Computers consist of hardware components like the CPU, memory, storage, audio system, a camera, etc. But it’s the operating system (OS) that enables you to interact with all that hardware. Typically, applications communicate with the OS, and the OS handles communication with the hardware. When everything works as expected, you get a smooth and seamless user experience.
The operating system gives applications access to powerful capabilities; so powerful, in fact, that an application can mimic an entire computer. That’s the idea behind a virtual machine: it’s a fully functional computer running inside another computer.
When you take a hands-on lesson, we assign you a virtual machine, often multiple virtual machines working together. This setup lets you write and run code without the need for a dedicated physical computer.
Virtual Machines in Our Training Platform
A Virtual Machine Running a web application
We often run real web applications inside a virtual machine. This allows you to interact with live, running software. Here we see a React app running on a virtual machine.
Accessing the Virtual Machine through a terminal
Many of our lessons give you access to the virtual machine’s operating system through a terminal interface (like bash). This gives you hands-on experience using real command-line tools in a real environment.
Accessing the Virtual Machine through a Desktop
What is a desktop? A desktop is simply an application that makes it easier to access operating system features. Chances are, you’re using one right now!
The image above shows a desktop application running Android Studio. This allows Android developers access to the same IDE they’re likely already using every day!
In Summary
Virtual machines play a crucial role in our training platform by providing flexible, scalable, and secure environments for hands-on learning. They enable learners to experiment with real code and systems without the need for physical hardware, making advanced training accessible and efficient. By leveraging virtual machines, we ensure that every learner can gain practical experience in a controlled, reliable setting, preparing them effectively for real-world challenges.