Holberton's latest updates about Coronavirus
Pictured is a PLD session Pictured is PLD Session Pictured is PLD Session

Articles by Holberton Students

Articles by Holberton Students

How Machine Learning Will Change Software Development

As AI technology matures and the number of use cases grows, you would think that developers would already be using machine learning to automate some aspects of the software development lifecycle. However, Machine Learning on Code is actually a field of research that is just starting to materialize into enterprise products. One of the pioneers of movement is a company called source{d}, which is building a series of open source projects turning code into actionable data and training machine learning models to help developers respect technical guidelines.

- by Katya Kalache on January 25, 2019

Why AIOps is the Next Frontier for DevOps

Algorithmic IT Operations (AIOps) is a solution-based term that describes the use of machine learning and artificial intelligence to automate tasks and processes that have traditionally required the involvement of a human employee. AIOps uses algorithms where known, monotonous and everyday mundane problems can be resolved with AI, while human engineers solve new and more complex problems. This whitepaper discusses the best use cases for AIOps on a root-cause analysis basis, and what benefits and solutions AIOps provides.

- by Max Johnson on November 05, 2018

Anaxi App Shows the State of Your Software Project

Considering that it’s already hard to keep track of the progress on one of your projects, working across several of them becomes a struggle...to help combat this, Anaxi was created to help give you all the information on the state and progress of your projects in one single interface.

- by Robert Malmstein on October 17, 2018

What is Ethereum?

Ethereum is currently being used mostly by crytocurrency traders and investors, but there is a growing community of developers that are building dapps (decentralized applications) on the Ethereum Network.

- by Lee Gaines on July 27, 2018

Machine Learning: A Micro Primer with a Lawyer’s Perspective

With modern tools, lawyers can load the entire body of documents into one database. First, they will code a representative sample (a number of “examples”) for whether the document should or should not be included in the production of records to the government...

- by Evan Sznol on July 27, 2018

Machine Learning Made Easy

Believe it or not, “intelligent” human decisions and actions can be boiled down to just mere patterns and can be recreated utilizing math.

- by Melissa Ng on July 13, 2018

Cloud Computing Technologies Transforming Businesses

As companies make decisions on new technologies, it is crucial to understand which are poised for wide-scale adoption — and which will fizzle as hype. Here is a look at developers’ priorities over the next one to two years: Containers, continuous integration/continuous delivery (CI/CD), and cloud-native architecture rank highest in companies’ plans in the next year. This is followed by DevOps, which is currently more in use than planned, and Artificial intelligence/Machine learning (AI/ML), which is less used, but very much part of companies’ future plans.

- by Mitali Sengupta on June 29, 2018

Stack vs Heap. What’s the Difference and Why Should I Care?

What happens with the stack when we call multiple functions? To illustrate the stack in it’s LIFO manner, let’s solve a problem using recursion. When we call multiple functions in our application, we use multiple stack frames in a last-in-first-out approach meaning that the last stack frame we’ve created on the stack is the first stack that will be released after the function is done executing its logic.

- by Nickolas Teixeira on June 28, 2018

Python 3: Sometimes Immutable Is Mutable and Everything Is an Object

Think of an object in Python as a block of memory, and a variable is just something that points/references to that block of memory. All the information relevant to your data is stored within the object itself. And the variable stores the address to that object. So it actually doesn’t matter if you reassign a variable pointing to an integer to point to a different data type.

- by Mitali Sengupta on June 25, 2018

Rookie’s Guide to Ethereum and Blockchain

The main reason we even have this cryptocurrency and blockchain revolution is as a result of the perceived shortcomings of the traditional banking system. What shortcomings, you ask? For example, when transferring money to overseas markets, a payment could be delayed for days while a bank verifies it. Many would argue that financial institutions shouldn’t tie up cross-border payments and funds for such an extensive amount of time. Likewise, banks almost always serve as an intermediary of currency transactions, thus taking their cut in the process. Blockchain developers want the ability to process payments without a need for this middleman.

- by Mitali Sengupta on February 20, 2018

What Happens When You Want to Create a Special File with All Special Characters in Linux?

The first type of quoting we will look at is double quotes. If you place text inside double quotes, all the special characters used by the shell lose their special meaning and are treated as ordinary characters. The exceptions are “$”, “\” (backslash), and “`” (back- quote). This means that word-splitting, pathname expansion, tilde expansion, and brace expansion are suppressed, but parameter expansion, arithmetic expansion, and command substitution are still carried out. Using double quotes, we can cope with filenames containing embedded spaces. So this means that you can create file with names that have spaces between words — if that is your thing, but I would suggest you to not do that as it is inconvenient and rather an unpleasant experience for you to try to find that file when you need !

- by Mitali Sengupta on January 29, 2018

Everything You Need to Know About GitFlow

There are a few branching models out there for Git, and GitFlow has some similarities with them, such as using a central repository as the main communication between developers, and having developers work locally, then push branches to the central repo. The main difference between GitFlow and other models is the structure of the branches.

- by Samantha Scislowicz on October 17, 2017

How to ‘Git’ Your First Contribution to the Open Source Community

Collaboration is the fulcrum of Holberton School, the full-stack software engineering program in San Francisco where I received my software training. We have learned to manage our software systems and code bases on the Ubuntu distribution of Linux, and we use many other open-source technologies such as MySQL, Docker, VirtualBox, HAProxy, Emacs, GCC, git, and more. With this foundation, as we neared the end of our first 9 months of training, our leaders challenged us to begin contributing to the open source community; I decided to take on this challenge.

- by David John Coleman II on October 04, 2017

From painting to Software Engineer at Tesla

I still paint in my spare time. But during the day, I am practicing my love for an art I recently discovered: coding. And now, I do it for a living, at Tesla.

- by Anne Cognet on September 18, 2017

Rise of the SMACK Stack

Modern web applications require a myriad of services in order to function properly; a site is expected to be able to store transactional data, generate dynamic web pages and manipulate the data being stored via server-side scripting. Most modern developers use the LAMP stack in order to provide these capabilities. The LAMP stack has done its job in meeting those requirements. However, as companies scale and demand more intensive processes from their infrastructure, a new set of technology has appeared—the SMACK stack. The open source community created this entirely new wave of technology out of necessity, and companies are adopting this stack at an alarming rate—for good reason.

- by Lisa Leung on August 17, 2017

Overview of Wireshark: A Packet Analyzing Tool

Wireshark is open source packet analyzing software that allows you to examine packets moving through a network. The software was developed in 1998 under Ethereal by Gerald Combs. After Combs left his job, he unsuccessfully tried to reach an agreement with Ethereal to acquire the trademark. Instead, in 2006, Combs and a development team rebranded the project as Wireshark. Wireshark is now one of the most popular packet analyzers around. We will examine the benefits and uses of Wireshark, and provide a quick overview of the software’s UI layout.

- by Lisa Leung on August 08, 2017

SMS Chatbot Using Twilio and API.ai

In this tutorial, you can set up a simple SMS chatbot using the Twilio and API.ai platforms. You will get a step-by-step process for setting up your Twilio and API.ai accounts, and integrating the two platforms together to form a simple SMS chatbot.

- by Lisa Leung on July 25, 2017

GitLab Outage: How to Respond to Downtime

Notify the public or any stakeholders in a timely manner. Nobody likes downtime. However, your users will generally be more understanding if you keep them up-to-date on the issue.

- by Lisa Leung on June 28, 2017

How to Design a Chatbot

While it sounds amazing to create a chatbot with artificial intelligence, many developers should aim to have chatbots perform straightforward tasks rather than have them achieve a certain level of artificial intelligence. The reason—Many chatbots promise a high level of conversational behavior and fall short of that promise. I am sure that some of you have encountered a bot that replies with irrelevant information.

- by Lisa Leung on June 21, 2017

Is Docker insecure? (Hint:No)

Docker believes that security should be strong by default, without additional setup. That's why containers automatically start with a limited set of capabilities, dropping all Linux capabilities except those needed. To help reduce the risks of container breakout, Docker has the feature user namespacing. When a container is deployed, user namespacing allows containerized applications to run without having root permission. This means that the “root” user within a container has much less privileges than the real root user. By creating a set of namespaces for each specific container, Docker provides a simple form of isolation between containers, which prevents them from interacting with each other. Namespaces also reduce the host surface area, which in turn restricts access to the host, and protects both the host and the containers. And if you’re wondering how the Docker daemon (or server) has control, the Docker daemon will still run as root but the containers are handled separately.

- by Samantha Scislowicz on June 19, 2017

Testing Simple Scripts in a Docker Container

This guide is intended to be a quick guide for first time Docker users, detailing how to spin up a container to run simple tests in. This is definitely not meant to be an exhaustive article by any means! There’s tons of documentation for Docker online, which can be a little daunting, so this is just meant to be a super short walk-through of some really basic commands. For the SRE part of the Holberton School curriculum, we’re required to write several Bash scripts that essentially provision a fresh Ubuntu 14.04 Docker container with a custom-configured installation of Nginx. The scripts are checked by an automated system that spins up a container, runs our script inside of it, and grades us based on the expected result. So obviously, the best way to check our work is to spin up a container ourselves and run the script!

- by Tim Britton on March 13, 2017

How to Learn to Code the Hard Way

Take some time to look up Betty Holberton, Kay McNulty, Marlyn Wescoff Meltzer, Ruth Lichterman, Betty Jean Jennings, and Fran Bilas. The next time you’re wondering what to learn first, think about what these six talented women were able to accomplish.

- by Samantha Scislowicz on February 16, 2017

Worst Abuse of the Rules

In 1988, the International Obfuscated C Code Contest (IOCCC) decided a winner under the category of “Best Abuse of the Rules.” The C code that was submitted was a single line: #include “/dev/tty”.

- by Ian Liu-Johnston on January 04, 2017

Journey into the Machine: An Optimistic Killer

I am learning to code in C, and I find it so interesting to see how intertwined the OS and C are. I tend to always looked down on the hardware as a limitation to my creativity. But now, as I see where and get a little bit of the why it does not work, I marvel at the complexity and overall efficiency of the work the OS is doing.

- by Anne Cognet on December 28, 2016

Untangling Macros in C

As programmers, in our daily office/school life, we are expected to write code following best practice, to comment it wisely, so that when need is to re-read it, well someone can do it. To take a break from all those constraints, we can head to the IOCCC the International Obfuscated C Code Contest.

- by Anne Cognet on December 01, 2016

Dreaming in Reverse Engineering

I am currently a student at Holberton School, named after Betty Holberton, one of the first female computer pioneers. It is said that Betty would often dream about coding, and solved many problems in her sleep. Like Betty, my mind doesn’t stop when the workday ends at 5:00, or even during sleep. I hope to follow in Betty Holberton’s path, and make an impact in the programming field.

- by Jennie Chu on November 21, 2016

Dreaming in Reverse Engineering

Every week at Holberton School, we are given 2-3 problem sets, which always include some advanced extra credit problems. In our fourth week, we were given an executable program, written in C, that accepts a specific password. Our task was to create a random password generator that returns credentials for the executable. The goal of this exercise is to introduce us to assembly and reverse engineering, a process where, given a piece of software, one attempts to recreate its source code. For this project, I used the GNU Project Debugger (GDB), which can disassemble a program into human readable assembly code.

- by Jennie Chu on November 17, 2016

Using Tesseract on Ubuntu

In this tutorial, I will show you how to install and use Google’s Open Source OCR engine Tesseract

- by Bilal Ahmad Khan on August 31, 2016