Hi - My name is cotton and I like to hack and use Linux.
That’s okay to say around here right?
I’ve been a quite member around here since 2015, and I figured I’d write a blog post about my one year linux challenge, which started in 2012 and still goes.
I entered the fire service in 2010 as a firefighter/emt. After two years of fixing computers around the stations, the training division came to me and asked if I could create a training web application. I figured I could give it a shot.
This is where I get introduced to Linux. You see, I started watching videos on about HTML, CSS, PHP, MYSQL and Javascript. At this time, Nodejs was just breaking about. So in my course of learning I found a series on nodejs.
The guy popped open a terminal on his Macbook Pro and ran a npm command to download stuff. I said to myself, “Self - this is important and you should figure this out.” Only problem is I’m poor and can’t afford a Macbook Pro. Luckily the guy mentions that node and bash are available on linux for free.
This is when it starts. I remember standing up with my laptop, walking to the local library, buying a flash drive, downloading ubuntu linux, and unsuccessfully installing Linux several time. Finally, I got it up and running. This was my first day on linux sometime in January 2012. Since that day, I can’t remember a day I haven’t been on a bash terminal.
My first year consisted of building a print server in my house that my IPad could print to via wifi using CUPS. I built two web apps using a lamp stack. I also picked up on some things. All nix systems have perl, vi and bash. So for system adminstration I used my terminal, edited text in vi and would use either bash scripts or perl to do tasks on the nix machine. During my first yearI probably installed linux at least a hundred times.
By the start of my second year I had basic logic and coding down. Could write web apps from scratch using PHP and Javascript. I was hosting them on Apache Web Servers, but was still a newb. I’d say a solid newb, but newb none-the-less.
In my second year using linux I learned about virtualization and focused on object oriented programming in C++. Virtualization was cool because I could setup coding environments and deploy changes on my local lan and see how it would affect my applications before changing them on the production systems. It also taught me more about networking.
On the C++ front I was writing my code using vi (duh) and also compiling it using gcc and other tools like valgrind, on that beat up laptop I first installed ubuntu on the last year. The instructor for my C++ class thought it was cool (everyone else was using windows with visual studios code). He would spend his office hours with me teaching me how to use linux. He had over a decade in financial trading software development on linux. This was one of those special people you come across on your journey.
I was going to take Java, but they didn’t offer it on my days off from the firehouse so I had to take C++. I’m so glad that I took C++ because, still to this day, C++ taught me more about computers and engineering than any other study. I think a lot has to do with the fact I used linux while learning it, but it was very eye opening.
So by the end of my second year, I’m still running full stack web apps, my programming knowledge is past basic logic and now understand object oriented programming, compilation, and memory management.
It’s about this point I start coming around here. I’m a big lurker, unless I have an interesting problem I’ve solved and want to share, answer a question for someone, or the occasional shit post in the lounge. However, here I’ve found the single best Linux Community, hands down.
For the next several years I’m employed as a Linux Adminstrator at a University. This is my first time in an enterprise environment. Domain controllers, switches, email servers, etc. I get put as the admin for the programmers. These weren’t your typical programmers, they were database programmers. They teach me a lot about databases.
Consequently, I get close with a lot of the comp science professors and math PhDs. This is where I learn about algorithmic efficiency and data structures. Basically, they taught me to program “smart” and not just to get it to work. I learn about cryptography from the Math Department.
Interestingly, enough, I get really good at perl here. Mostly because everything was written in the 90’s using perl. This is where I learned regex also.
I write some interfaces and an ETL pipeline for the university, fix failing process because they compared lists using a double for loop (O n^2), so I introduce a hash table and loop over it and get it down to (O n), and get some open source bug reports in.
I hang up my fire helmet at this point. This is what I’m supposed to be doing with my life.
So, at this point I’m probably 6 years into this Linux thing. I get an offer from a software development company who wants me to build a cloud. So I take the challenge.
This is where I deploy a multiregional cloud using OpenStack. I learned a lot about networking, overlays, and web services. By this time, I’m good at debugging issues with linux, and the whole application stack runs on CentOS. This is where I learn about Kubernetes, containers, and microservice software architecture.
This is still the cloud platform the company’s application runs there app in. I’m promoted to cloud engineer.
Still since my goal is to become a software engineer I learn about software design patters with Object Oriented Languages and SOLID development practices. I read the Gang of Four, and realize that systems can treated in the same conceptual light as software systems. So I actually start actually implementing those practices in application I developed to maintain our cloud infrastructure and application deployment.
This is a very high level run through of a decade of my life, but I can tell you Linux can be a catalyst to a great career, but loads of hard work. I’ve greased over the all nighters, failures, and diffuculities that comes with this, but if you dedicate to learning linux as a tool, you will become a very knowledge computer technologist. For me, it’s as far as you want to take it.
At this point I’m going to hope out of operations and cloud engineering and take a job as a software dev.
Can I get my 1 year linux badge now?
cotton