This week I have been studying algorithms and data structures, so I figured we go in-depth with a common data structure often seen in technical interviews, binary search trees. To me, the best way to learn a new topic is to see how it is applied to a real-world problem so I will be presenting this topic in terms of solving a particular problem.

Let’s imagine you are working at a software engineering firm and a client approaches you with a problem. They work for a small airport with only a single runway. They ask you to develop a reservation system, which will keep track of landing aircraft so that there are no overlaps. They would like to be able to provide your application with a time T which represents the minimum amount of time, in minutes, between 2 flights landing. …

Image for post
Image for post
shamelessly stolen from the redhat website

Despite many applications employing logically modular architecture, many are packaged and deployed as a monolith. A monolith application is a single-tiered application in which the user interface and data access code are combined into a single program from a single platform. Monolith applications are simple to develop since our IDEs and other tools lend themselves so well to creating a single application. They are also easy to test and deploy. You can scale the application by running multiple copies behind a load balancer, and in the early stages of your project, all is well.

The problem arises over time, as your application grows in size. Soon you will find that what once was a small application is now a monstrous monolith, with millions of lines of code. You will soon find that any attempts at agile development and delivery will fall flat. Your application has become too complex for any one person to fully understand. As a result bug fixes and feature implementation become difficult and time-consuming. This soon turns into a downward spiral. Since your application is hard to understand, changes are prone to bugs, bugs which may be lost in a sea of code. …

Image for post
Image for post

In the process of preparing for my coding interview, I have read through many tutorials and suggestions as to what we should focus our time on. I can say with certainty that the one thing that never fails to show up is the concept of the big O notation. Big O notation speaks to how an algorithm scales in complexity based on its input size. It describes the upper bounds of a function’s growth. One misconception that is usually seen with big O notation is that it talks about how fast an algorithm performs. It is possible to make an algorithm significantly faster without ever effecting its big O complexity. …

Mechanical keyboards are a mystery to many. Some don’t see the point in spending potentially hundreds of dollars on a keyboard when the one they have works just fine. As a developer, however, I've come to not only appreciate but rely on my mechanical keyboard. Little things like macro keys, media keys and the soothing sounds of triggers help me to get in to “the zone” much faster when coding.

In this article, we will go over some basic concepts of choosing a mechanical keyboard to fit your needs. We will touch upon form factors, switches, and layouts.


The most famous switch manufacturer, and by far the best is Cherry Corporation. Cherry Corporation was founded in the United States in 1953 and started producing keyboards in 1967, making them the oldest keyboard manufacturer in the world still in business. The company moved to Germany in 1967 and were bought by ZF Friedrichshafen AG in 2008, but their keyboards and mechanical switches are still produced under the Cherry brand. …

Computers have revolutionized the ways we lead our everyday lives, but few people understand whats really going on below all that glass and brushed aluminum. Today I want to take a deep dive into how a processor goes about reading, interpreting and storing a piece of code and its outcome. Lets break it down…

The Pieces

Before we get into how the CPU work I want to give a light description of what each piece is. Don’t worry too much if it doesn’t make sense at first, as I will be going over their functions in detail in the next section.

At a basic level, a CPU consists of 6…

Recently I created a project which would grab all text files in a particular directory and it’s children directories and parse it for the keyword TODO:.While this project has been implemented in a much nicer way through extensions on your favorite text editor such as Visual Studio Code, Atom or Sublime, I decided to go ahead with this so that I could get some practice with traversing the file system through a ruby script and get a better understanding of the File and Dir classes provided for us in ruby.

Let’s jump right into it.

Lets jump right into it. …

I come from a family of artists.

My mother is hair stylist, my father is a photographer, and my grandmother is a concert pianist. I however fell in love with programming, but that is not to say that some artistic tendencies didn’t make it through.

I have the insatiable need to make my operating system and programming tools as beautiful as possible. I sometimes catch my self going off on a tangent for hours at a time looking into new desktop environments, color pallets and app themes.

As a developer I spend a lot of time interacting with the command line, also referred to as the shell (more on that in a sec). The shell is one of the most important tools a developer has at his disposal and therefore is used regularly. Too often, however, I will have a colleague ask me to help him/her debug their program only to tab over to the command line and see this. …


Gabriel Batista

Full-stack developer with a background in computer repairs, looking for my first break in software engineering.

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