How Stateful/Stateless design and Atomic design vie for my attention as I approach a major refactor.

Introduction

How should I organize the components and directories in my React app? This is a hotly contested debate that exists between front-end developers. The end goal is to build out a structure that is easy to comprehend, scalable, and is of course modular. That much everyone can agree upon. We can also agree upon the fact that it is almost always easier and more efficient to decide on a design pattern at the beginning of a project and adhere to it, rather than switch halfway through and spend countless hours refactoring. …


npx create-react-app

npx create-react-app my-app

Anyone who has started a random React project from scratch has undoubtedly used the above line of code. Well, maybe not titling your app ‘my-app,’ but you understand. React does so much legwork for you when building out the framework of your new app, and unless you’ve done some digging under the hood, a lot of it might as well just be magic. One incredibly important thing that React does is it utilizes webpack.

webpack is an open-source module-bundler for modern JavaScript apps that runs on Node.js. webpack processes your app’s modules, builds a dependency graph that…


Guard rails for your relational database

What does one think of when they hear the word ACID? Chemists may think about a solution’s pH, mechanics may jump to some type of degreasing solvent, and festival-goers might think of the mind-altering substance that changes one’s perception of reality. The ACID that I am referring to is actually quite the opposite of the latter.

ACID is an acronym that stands for atomicity, consistency, isolation and durability. These four terms are a set of properties that belong to relational databases. Together, they ensure that during a transaction, the data isn’t corrupted, even during power failure, random errors, corrupt drives…


The shortest path problem at its core is very simple; find the shortest path between two nodes, or vertices, in a graph while accounting for the weight of the connecting edges. There are an ever-growing number of solutions to this problem. In fact, once you understand search algorithms there is no reason why you couldn’t write your own search algorithm. In the meantime, it might just be best to use tried and tested algorithms that are known to work, and known to work well.

This list is not at all comprehensive. There is a nearly inexhaustible list of search algorithms…


As a budding software engineer I received my first taste of algorithms through watching a popular YouTuber present interview questions as coding challenges to other engineers. I was blown away by the complex problems that these engineers could solve in a matter of minutes by implementing specific algorithms with their code. I rushed to my favorite search engine to search all of these new terms I had been hearing. What is Kosaraju’s algorithm? What are strongly connected components? What is an articulation point or a bridge?? Every time I looked something up I realized there was a more rudimentary principle…


RSpec is an incredibly powerful Ruby/Rails meta-gem that allows your to write very simple tests that test the efficacy of very complex code. It’s a meta-gem, because when it is bundled it includes multiple different versions of the same basic gem. Each version can be used for specific purposes or with specific versions of Rails. When I reference RSpec, I will be referring to the meta-gem, not a specific version.

Test-driven-development is a very important skill to possess as a software engineer, but knowing where to start can sometimes seem a daunting task. I spent weeks in a software engineering…


For budding software engineers, the first pair-programming project is usually clunky and disjointed. All coding experience up until that point has most likely revolved around listening to lectures, doing code-alongs, and practicing in some form of a shell inside the terminal by one’s self. I certainly know that mine was. Then along comes that first pair-programming project. Two people must join forces to solve whatever problem has been placed before them with little-to-no experience at doing so in group setting.

The questions begin flooding in. Who will do what? How will we share our code with one another? What if…

Christopher Michael Clark

A climate scientist turned software engineer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store