For the projects we are working on I would recommend that you use a linux/unix environment.There is a high certainty that you will be working with these in some for if you are working in the field of software engineering or computer science. Even if it does not appear that you are exposed to these in a work environment you are using these systems in one fashion or another day. Many of the websites currently accessible through the internet are hosted on linux machines, including this site you are one write now. And over time if you follow the tutorials on here you will most likely have one yourself too.

Type 1: Your own personal computer or laptop


For this kind of system you can usually be running either some form of linux on your system or MacOS if you are a fan of working on Apple machines. These can either be in the form of a device you have installed linux on or that you have ordered installed with it. This is probably the easiest starting off point for a developer who is trying to get used to these system but also a bit more costly.

Type 2: A dedicated linux machine(Raspberry Pi)


The best and most prolific example of this is the Raspberry Pi. A Raspberry Pi is a single board computer that cost around $35 for the standard board and it runs linux. You do have to usually buy a an SD card and then connect to it via another computer sshing into it or connecting to it via a monitor, keyboard and mouse. If you are interested in this then there are many tutorials online on how to get it setup both written and video. I suggest that you set one of these up at least once and tinker around with it. They have many uses and you just find more the longer you are around. These are also a nice intro into working with hardware as they also have pins that you can easily attach sensor to as well.

Type 3: Virtual Servers


This type of linux machine is hosted for you, meaning that it is running on a server that someone else owns somewhere in the world. Some of the best known instances of these servers would be either AWS EC2 or LightSail and Digital Ocean droplets. These companies create you a virtual server running in their data center and then give you access to it. You can either ssh to it from your terminal or you could use one of their online consoles if they offer it. This is a nice way to go about gaining access to a linux server if you don't want to pay for the physical hardware yourself or maintain it physically. Another nice feature is that most of these companies charge by use and either have a free credit you get each month or a free set of credits that you get when you initially sign on for their service. If you haven't already take a look at the GitHub Student Pack which gets you a bunch of free credits for some pretty awesome services and even free compute from companies like Digital Ocean.

The biggest con of these virtual servers is that they can be quite costly if you do not watch what you are doing. If you spin up a resource that you forget to shut down you will be charged and that can leave you with a hefty bill at the end of the month. Also if you are creating a network of these services over time they can get complicated to manage if you don't have some automation put in place to manage them. If you are interested in learning how to manage larger groups of virtual servers or clouds service I suggest you take a look at terraform. It is also an in demand skill to have and if you are looking for tutorials on that or expertise just reach out.

Final Thoughts


At the end of the day you will probably work with each one of these three types of linux environments if you stay around long enough. I know I have after working for the past 7 or so years, this blog even runs on a VPS from Digital Ocean currently. Happy Coding!