Over the past few weeks, I have seen more and more developers asking about using Linux as their man development based OS over on Twitter. It seems that many more developers have become Linux-curious.
I just wanted to prefix this article, that this is not saying that I use Linux, therefore you must too. In my opinion developers should use whatever tool, platform or operating system, that they are the most comfortable and productive with. My preferences have evolved over the years, and I'm positive they will undoubtedly continue to evolve. This post is primarily targeted at those developers that are Linux-curious as I'm sure my story will resonate with them.
As dotnet developer, who has been primarily focused on using Dotnet on Linux, since 2017 -ish, and I have also been developing on Linux through various fits and spurts since 2014-ish, with a couple of side tracked visits back to both Mac OS and Windows for various client based work. However, for the most part, I've been using Linux as my preferred daily driver since 2017. I thought I might have one or two points worth sharing for others who might be keen to explore making the switch.
When and why did I start using Linux
My journey into starting to use Linux, actually started way back in 2013-ish when I was working on a project and we were exploring making use of Raspberry Pi to develop a bespoke energy monitoring and management application for client. At the time, we were just getting familiar and exploring the capability of the Pi which is primarily a Linux based computer.
My background at that point, is that I was predominantly a Windows based .net developer, developing classic n-tier windows web based software applications. In fact, I would have to say at that point in my career, I had never had to consider using any other operating system, everything I had worked on primarily involved the Windows Ecosystem. Mostly working on systems for Central Government or Financial Services in and around London. Linux was around, but within the eco-system and community I was predominantly working in, it simply wasn't discussed or even considered much. I think at that point in time, Windows was pretty much considered the Enterprise de-facto standard.
Most of my time back then would've been taken up writing and debugging code primarily in MS Visual Studio predominantly in C# using what is termed now as Full Fat .net Framework and very seldom having to break out the Command window to execute batch script here and there.
I remember first getting this new little credit card sized computer and quite literally not knowing what to do with it. Once we figured out how to get it up and running and finally seeing some output on the screen, myself and a colleague both staring at it saying, "What do we do now?"
A few weeks or so later, we were up and away coding away happily in Python and really getting grips with the Linux Operating System. I had become so enamoured with the operating system, that I decided to install it on one my old Windows laptops, it was an old 32 bit laptop that used to be able to run Windows 8, but had gradually begun to start running slow.
All I'd done at the time, was reformat the disk and Installed Fedora (Spherical Cow), I remember being really impressed that I had suddenly just breathed new life into this machine, that had seemed to be dying. Not only had things just worked, but it seemed things worked way better than they had before! I was really impressed with the Operating system and as I recall just how intuitive it seemed to me at the time.
It was also around that time, that I managed to get my hands on a number of laptops that were being decommissioned from a large enterprise, all I needed to do was scrub the hard drives using Eraser to completely remove sensitive data from the hard drives and then I could do whatever i wanted to. In total I had a fleet of around 10 -12 laptops, so I decided what I would do, is install a different distro of Linux on them and evaluate them and see which ones I preferred.
If I recall correctly at the time,I installed a number of the distributions that were often recommended on various forums etc. Memory may be a bit hazy here, but I certainly remember installing and playing with with
- Red Hat
There were probably a few more and some only lasted a couple of hours and others I played with for weeks or months. Executing different tasks and generally trying to use them as daily driver for work I was doing at the time.
I really enjoyed that time and my knowledge of Linux really expanded. Each distribution certainly had it perks and cons. However, for me the one that certainly stuck out as probably the most business ready at the time, was certainly without a doubt Ubuntu.
Ubuntu became my preferred distribution and it still is. I know others in the Linux community would probably strongly disagree with me, and honestly that is OK because what is great about Linux in general is that you have choice and the freedom to use whatever you want and prefer.
Why I prefer Ubuntu over other Distributions
Every choice is subjective and just because something works for me, it doesn't mean that it will work for you. Your expectations, desires, needs and use cases will likely be very different.
My career, has certainly evolved over time and I would say I am now probably more of a back-end focused developer, predominantly focused around Micro-services, Cloud Native architectures, Kubernetes, Docker and predominantly Linux is the platform of choice.
The vast majority of the services and apps I develop I predominantly are what are known as headless apps, which are essentially applications with no or very minimal user interfaces. In most cases these will inevitably be mostly REST based API, using my API Template Pack, to essentially build a microservice with an API.
I generally don't do any or even use my computers for any graphic intensive operations. Probably the most graphic intensive applications I would use on a daily basis are my IDE's which for me and preference are all Jet Brains based IDE's.
I know even my preferred choice of IDE's might cause frowns and tuts from folks in the Linux community as from as far as I tell most seem to bang on how they would most likely prefer Emacs or Vim. I've tried these tools, and I really and I have to say, they did not particularly suit me. I've worked with many people and have often had to endure long periods of listening to them praise and preach the virtues etc, but it's just not for me.
In every field there are these differences, just Heavy Metal and Jazz, Classic Music and Rock and everything in between. Opinions, tastes and preferences will vary wildly and there is no definite wrong or right configuration. In fact, that is one of the best features Linux is that you can certainly do whatever you want.
The primary reason why I like Ubuntu, is that for the most part it is Plug and Play, install it and its ready to go.
I will have to admit, I'm probably very unusual in the Linux space because I actually do very little customisation of my Desktop, other than tweaks to icon size and installing Brave as my default browser, as I believe online privacy is important .
The rest of my set up is primarily setting up my development environments, which again as regular readers know, I'm a big fan of any Jetbrains based IDE, my current favourites that I seem to be predominantly using and tinkering around with these days are
- Android Studio
what machines do you use
As mentioned previously, when I first started using Linux, I would just get an old Windows based format it and install my Linux distro of choice on it and that would be that. However, back in 2015 I wanted to buy a new machine purposefully built for Linux and surprisingly at the time there wasn't a load options available unless you built the machine yourself. Which I was thinking of doing at the time, but then I noticed on Ebuyer.com that a little known Vendor was selling specifically designed Linux.
The first dedicated Linux machine I bought was the Viglen Genie Desktop PC , back in September 2015, and the machine is still going strong today. It's a great desktop PC and I am really disappointed that the Vendor seem to have gone out of business a few months after my purchase, because I would definitely have bought a few more.
In 2019 I wanted to get a customised Linux laptop and after much searching I decided settle on System76 Darter Pro, which still very much in use. In fact, It is the machine I am using to type this very article!
I wrote a complete review of my Product Review: system76 Darter Pro for those that are interested.
During the course of 2021, I really wanted to power up my desktop development workstation. Despite my Viglen desktop still being able to handle most of the work I was throwing at it. I still wanted to get a machine with little bit more power.
I was initially going to go for one of the system76 Thielo, however when I went to order the whole global component shortage issue kicked off due to the pandemic etc. and I was informed that unfortunately there may be at least 6-8 week delay possibly more. I decided to have look around for other options and stumbled across Tuxedo Computers
Cut a long story short, I ended up Ordering the TUXEDO InfinityCube Intel-Core-Series v12 + Micro-ATX, Which is an incredibly awesome piece of kit and is my daily driver development desktop machine in my home office.
Why I prefer Linux as my development OS
When I started my development career back in the late 90's Microsoft was omnipresent in the Enterprise space, because most organisations were using Windows client machines and Windows servers, and for the most part Winforms applications were the defacto standard.
Gradually as the 00's progressed Webform development started gaining popularity, but for the most part in the enterprise space, Windows was most likely the preferred choice. However, towards the tail end it started to become apparent that users and organisations started to explore different options.
As the era of cloud adoption started to roll on, it seemed to popularise Linux within the enterprise software development space. Personally, for me around 2012 I found that many of the solutions I was developing and involved were no longer predominantly Windows based and my focus was always more aligned with back-end development.