Photo by Alejandro Luengo on Unsplash

Nowadays, when someone picks up a their first programming languages it is likely to be Python, Ruby, or JavaScript due to their popularity and relatively shallow learning curve as compared to lower level languages such as C++. These three high level languages accomplish this relatively shallow learning curve and general usability by abstracting out various task that other languages require the programmer handle. In this instance, the abstraction I would like to discuss is memory management.


Polymorphism does not have to be a scary word

Photo by Nong Vang on Unsplash

Abstraction, encapsulation, inheritance, and polymorphism are the four pillars on which object oriented programming (OOP) is built. Following these principles will lead to clean, reusable, and modular code but your first need to understand what they mean. Initially these terms can be intimidating but with simple examples you will quickly wrap you mind around the concepts.


Photo by CDC on Unsplash

A large part of programming is writing tests to make sure your code works as expected. On smaller projects writing tests can seem cumbersome but they will show their value as features are added, modules are refactored, and the team grows. Most software engineers are familiar with the basic testing types such as unit tests, integration tests, and acceptance tests. Today I wanted to talk about keeping unit tests hermetic to ensure they remain unit tests instead of becoming integration tests.


Photo by Yancy Min on Unsplash

Git is an extremely useful tool that has become almost ubiquitous with programming itself. Unfortunately, learning it can be a bit overwhelming with the seeming endless git documentation. Eventually everyone masters manipulating and merging branches on small projects but as repositories grow in size as well as contributors things can get complicated. Fortunately git is excels on large projects and has many advanced commands which allow you fix almost any mistake you make, the key is knowing which commands to use in which situation. …


Half of Being a Great Engineer is Quality Documentation

Photo by Stellan Johansson on Unsplash

The ability to convey your thought process, assumptions, approach, and solution to a given problem is a fundamental skill in engineering. There are numerous tools available for documentation but one used often in the world of software engineering is Markdown. Markdown is a lightweight markup language for creating formatted text using a plain-text editor. Unlike other popular markup languages such as HTML, Markdown is designed to be easily human readable. I find myself using Markdown on a daily basis via Github for pull requests, comments, READMEs, etc and I have found the following syntax useful. …


Data Structures in JavaScript

Photo by niko photos on Unsplash

A binary tree is a specific type of graph data structure and is often the first graph people learn. Binary trees contain a root node that has two branches which are arranged from left to right in ascending order. Each branched node can have up to two branches of its own, and so on. If these two requirements are not met then the data structure is likely still a tree, just not a binary tree. For instance, if a node had three branches it might be considered a ternary tree. This article will cover only binary trees as they are…


Data Structures in JavaScript

People Queue
People Queue
Photo by Halacious on Unsplash

Every person has waited in a queue, whether it is at the grocery store or to get into you favorite concert. A queue’s operation is simple and intuitive, you get in the back of the line and wait your turn until your in the front of the line before exiting the queue. This is the same way the data structure of a queue works.

Node Class

In the person queue analogy, each person can be considered a node that contains some data and points the the next node. …


Data Structures in JavaScript

Stack of Pancakes
Stack of Pancakes
Photo by nikldn on Unsplash

There is nothing better than a stack of buttermilk pancakes to calm that early morning sweet tooth. Now, I normally slice through the whole stack and eat a bit from each pancake at once but lets pretend, for the sake of this discussion, that I am a reasonable person that eats a single pancake at a time. To do so, the top most pancake would be pulled off of the stack and consumed followed by the next pancake on top. This is the same way the linear data structure of a stack works. …


Data Structures in JavaScript

Photo by Jon Tyson on Unsplash

In the previous “Data Structures in JavaScript” discussion, we walked through the methodology used to construct a node class which represent each “link” in the “chain” that is a linked list. From there we discussed how to construct a singly linked list from a an array. Building on the previous discussion, we will now dive into editing that singly linked list. If you are not familiar with the code and terminology covered in the previous article it is recommended you review Building a Singly Linked List.


Data Structures in JavaScript

Photo by Stephen Leonardi on Unsplash

Most likely you arrived at this article because your preparation for an interview has lead you down a LeetCode rabbit hole. Linked lists are a favorite of many interviewers to test an interviewees understanding of basic data structures as well as your problem solving skills. Whether you're just a bit rusty from school or this is your first time encountering linked lists they can be a bit tricky to understand at first.

Mathew Phillip Wheatley

I am a software engineer with a mechanical background. Interests swing from aerospace, to woodworking, travel, skiing, hiking, running, climbing, and lasers.

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