fun mCullenMcClellan(thoughts: List<Thought>?, work: List<Work>)

Cullen (me)

They say a jack of all trades is a master of none, but most do not know that this axiom ends with but oftentimes better than a master of one. As a passionate full stack software developer and agilist, business professional with an extensive background in both sales and operations, and a dabbler in graphic design as well as photography, this old saying resonates with me well.

Join me on my growth journey through the trades.

k r J s j l p n P d

Major Changes to the Blog

03-07-2023

A few months ago, I finally found the time and put in the effort to revamp my blog site. Though I was reasonably happy with the application, its original intent was to showcase what I had learned over the past few years and with that mission came some major inefficiencies and complexity. The website itself was very slow to load. It was rendered entirely client-side, made a cross-origin network request on every page load to an external server, and had an unnecessary data abstraction. I mentioned many of these issues in a previous blog post which I will link below. As of today, all of these inefficiencies have been addressed and the site, though still retaining much of the same look and feel, is almost entirely new under the hood.

Building Linux From Scratch

09-05-2022

Last week, I decided to go through the process of building Linux From Scratch on a physical machine. At first this might seem like a rather daunting task, but in the end it was actually pretty straightforward. Linux From Scratch, or LFS, is a guide to building a minimal GNU/Linux operating system by compiling each application from a source tarball. This requires that you know how to execute basic terminal commands and have a working system with a POSIX compliant shell (e.g., bash, zsh, dash) to start the process. I used a bootable USB that had a GUI environment and a web browser to make the process a bit easier. The first step is to partition the disk you want to install LFS on and then create a cross-compiler which contains the tools necessary to compile the packages on the disk. After you have that set up, you mount the disk and change the apparent root (chroot) of the host environment to that disk's root directory, where you compile all the necessary packages for the OS, until finally, you configure your kernel and reboot into your shiny new system.

Test Driven Development: What it is and what it isn't

08-16-2022

Test Driven Developement, or TDD, is a highly debated developement practice. Some engineers will say that it is pointless, product managers will tell you that it slows you down, and many advocates of the practice will say it is the only way to code. Sadly, I believe that most people in the industry don’t know what TDD is exactly, even many of those who attempt to practice it. I, for one, was one of them. I firmly believed that I understood what TDD, wrote my test first, and almost always ensured that I have an extremely high code coverage, but I have come to understand that Test Driven Development has very little to do with all of that. In fact, it’s really not about the tests at all. It’s about the behavior.

How I Made This Blog Site

08-14-2022

At the beginning of this year, I wanted to challenge myself by building a blog application with a microservices architecture using the technologies that I knew best. The intended purpose of the blog was to share what I’ve learned over the past few years and as a portfolio. In this article, I will give an overview of the architecture and technologies used when constructing this blog, the challenges I faced along the way, the lessons learned, how I feel about the product in its current state, and new features that I hope to implement in the near future.

REST: What it is and How to Use it

02-25-2022

A few months ago, I was pairing with a colleague of mine and was asked if I understood REST. Of course, I said yes, because I had briefly skimmed over a document over a year ago that talked about the pattern. I knew what made a GET request a GET request and what made a POST request a POST request. Heck, I even knew that PUTs could create new records, if they didn’t already exist, though its primary function is a full update of a domain object. I had lots of status codes memorized. That’s enough, right? Well, as I came to find out it isn’t quite enough and I was kind of missing the whole point of REST in the first place. What I was describing was merely HTTP protocol, not REST, and though they may seem similar on the surface, they are not the same. In fact, HTTP was influenced by REST, not the other way around.