At this point many people are familiar with the concept of face detection technology. There are many popular apps and social media platforms that integrate face detection into their products. This technology is at the core of the many camera filters that change peoples appearance and the suggestions for tagging friends in social media pictures. Face detection also has many uses for security and law enforcement. So how does face detection actually work?

The ability to recognize a person is not something that we put very much conscious thought into. When you see the face of a friend or family…

If you’re someone who has spent time using a computer you have probably spent a lot of time using a shell. A shell is one of the most central parts of an operating system on a computer, but most people are not familiar with this term. So what is a shell? A shell is a computer program that takes in user input and allows the user to access all of the different tools provided by the operating system. These shells generally fall under one of two categories, command-line shells, and graphical shells. A command line shell is a text based…

Throughout the course of human history there have been many technilogical breakthoughs that changed the way that we communicate and live our lives. The invention of the printing press transformed our ability to rapidly spread information and ideas around the world. Later on the creation of the telephone cut the wait time out of long distance communication. The arrival of the internet gave everyone instant access to information, and connected people around the world in real time. This eventually lead to the cell phone, which in a sense combined these previous technologies all into one! Over the past decade we’ve…

Using a web browser to explore the internet is an experience that almost everyone is familiar with. You open up your web browser of choice, type in the websites URL, press enter, and the page you’re looking for appears on the screen. It seems like a pretty straightforward process, but there is a lot more happening behind the scenes than you might think.

Before we can understand the first step in the process we first need to know two terms, IP and DNS. IP stands for Internet Protocol and is an address that is assigned to each device connected to…

Ever since its creation, the internet has had a huge impact on the way we live our lives. It has allowed us to accomplish things that were thought to be impossible for most of human history. The internet provides access to an almost endless amount of information, instantaneous communication with anyone across the globe, and so much more. Having access to the internet expands the percentage of the world that you have access to; it allows you to transcend the boundaries of your physical location. At first internet connectivity was limited to desktop computers with a wired connection and no…

Whether you know it or not, chances are machine learning plays a big role in your day to day life. Even people who don’t spend much time on the computer are exposed to machine learning in ways they might not be aware of. Machine learning is used in health care, banking, retail, and even by the government. The term is thrown around a lot, but what does machine learning actually mean? To understand machine learning, you first need to understand what an algorithm is. According to Wikipedia, “an algorithm is a sequence of instructions, typically to solve a class of…

Libraries are a very powerful feature of the C programming language. They greatly extend what your program is capable of doing, and can be very convenient for the programmer. So what is a library? A library is a collection of external functions that can be added to a program. C is a simple language with a very small number of built in functions. Libraries greatly increase the number of tools your program has access to, and reduces the need to reproduce the same functions every time you need to accomplish a common goal. …

What happens when you type gcc main.c?

If you’ve ever written a program in C you’re probably familiar with the term compilation. After your code is written you need to compile it into a program that a computer can run. But what is a compiler? How does it turn your C code into an executable program? What’s going on behind the scenes?

Before you can compile a file, you’ll need to get a compiler. One of the most popular compilers for the C language is called GCC. GCC stands for GNU Compiler Collection, and was originally released in 1987 by the GNU Project.

The process starts with…

What is the difference between a hard link and a symbolic link?

There are two different kinds of links in Linux, a hard link and a symbolic link. But what is a link and what’s the difference between them? In linux a link is a pointer to a file. They allow you to create shortcuts to files so you can access them more easily from other places.

Hard links and symbolic links are both shortcuts to files, but they act differently. A symbolic link is not updated, so if the linked file is deleted or moved, the link will stop working correctly. It is pretty similar to a shortcut on the desktop…

Have you ever wondered what really happens when you type a command into a bash terminal? It may seem pretty simple to type in a command like ls and get a list of files and directories, but there’s more going on behind the scenes than it appears.

It all starts with a search for the binary that corresponds to ls in the PATH environment variable. The stat() function calls to PATH to find the executables location and check that it exists. If the file is found, the system makes a call to execve(), which will start load the binary into…

Danny Hollman

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