Building in Kubernetes Using Tekton
Continuous integration/continuous delivery (CI/CD) principles offer multiple benefits to software organizations, including faster time to market, higher-qua...
Continuous integration/continuous delivery (CI/CD) principles offer multiple benefits to software organizations, including faster time to market, higher-qua...
Once you’ve determined that you want to use Kubernetes as your base for developing applications locally, it’s time to figure out which development solution ...
I’ve complained before about using YAML when a programming language is what’s needed. But, when you’ve got configuring to do, YAML is pretty useful. It’s so...
Welcome back to a series on AWS Lambdas. Today I’ll be running a full REST HTTP API in a single lambda. Also, I’ll discuss why you might want to do so – the...
Kubernetes networking enables the components that make up the Kubernetes ecosystem, like containers, pods, and services, to communicate effectively with eac...
There are many reasons engineers look to Kubernetes when running their workloads, like support for containers and orchestration. Another major reason for ch...
When you start learning about Kubernetes, you quickly learn about the key components that you need in order to run your applications, such as pods, deployme...
As projects increase in complexity, so do the benefits of using tools to automate parts of the deployment process. Scaling your infrastructure and deploying...
Kubernetes persistent volumes provide data storage for stateful applications. They abstract a storage system’s implementation from how it’s consumed by your...
Previously, I built some GRPC things, and some AWS Lambda things, but can both be combined together? That is can I set up a go service, that runs as lambda...
Bash (bourne again shell) scripts give you the ability to turn series of manual commands into an easily runnable and repeatable script. This can be especial...
Kubescape is a free tool that improves Kubernetes security by scanning clusters and detecting YAML files that are not compliant with security standards such...
Creating kubernetes clusters locally is convenient: you don’t have to mess with production and it’s a low cost way for beginners who are learning Kubernetes...
As the field of DevOps and build release engineering continues to grow, many new tools are being developed to help make building and releasing applications ...
Let’s talk about a career in tech, but not the usual boring stuff about salary or how to pass the interview process at the place with the most oversized com...
When it comes to packaging an application, there are many ways to do it. However, with languages that have been around as long as C and C++, the community h...
Most applications have configuration parameters that need to be provided at runtime. It’s common to use command line arguments, environment variables, and s...
When working with large distributed teams, you often run into the issue of something working on one computer but not others. When building and running appli...
Podman is a daemon-less container engine for developing, managing, and running OCI containers on your Linux System. With podman, containers can either be ru...
Deployments have been one of the hassles for many organizations for a long time, with companies sometimes even hiring engineers whose sole job is to get app...
Intro Last time, I built a Node.js lambda function running in a container. Running a container as a serverless application worked out great: it meant it w...
You need the ability to search and manipulate text on the command line, especially when performing repetitive tasks. This is what makes sed, or stream edito...
Python is a versatile programming language, but running it can be a handful when you have to manage its dependencies—especially when you are sharing project...
Docker sits proudly atop its niche, with an estimated 83 percent of the container software market. Development teams use it to make deploying software faste...
Like any other programming language, Bash supports loops. The loops are used to repeatedly execute a set of commands based on some condition. Along with con...
Docker and similar containerization technologies have taken the tech world by storm. They have largely displaced virtual machines (VMs) as the de facto segm...
Did you know it’s actually possible to build a rich UI that runs completely in the terminal? Programs like htop and tmux use a terminal user interface (TUI...
Bash (bourne again shell) has been around since 1989 and owes its longevity to its usefulness and flexibility. While it’s the default login and command shel...
There’s a modern trend for enterprise applications to either be containerized or deployed in virtual machines (VMs). As a result, software engineers must e...
Do you love writing about software development? Then, write for Earthly, and you’ll get access to a larger audience, and we’ll pay you. Eathly’s blog gets...
Relational databases have been an easy way to store relational data for the last few decades. Over the years, many popular database management systems have ...
Most of the code I’ve had running on AWS’s cloud has been in docker containers, running in Kubernetes clusters. And from my perspective, AWS was invisible. ...
Introduction Welcome back! In my tutorial series on building an Activity Tracker, I built up a client and server communicating over gRPC. I then added RES...
Welcome back. I’m an experienced developer learning Golang. Last time I moved my service from REST to gRPC, but there are times when a simple REST end-point...
A repository in Go traditionally contains a single Go Module, which lends naturally to a polyrepo setup – but what if you try to build multiple Golang proj...
I’m currently working on a project comparing different CI/CD pipelines, trying to get a better idea of what each offers, how they run, and how much it takes...
Docker is a powerful development platform that enables users to containerize software. These containers can be run on any machine, as well as in a public or...
What Is A CSV File I first began to work with CSV files when taking the backend portion of my software engineering bootcamp curriculum. It wasn’t until I ...
Linux Containers (LXC) is an OS-level virtualization technology that enables you to create and run multiple Linux operating systems (OS) simultaneously on a...
Welcome back. I’m an experienced developer, learning Golang by building an activity tracker. Last time I added SQLite persistence. Today, I’m going to be p...
Among the many benefits of GitLab are how it facilitates CI/CD practices, that is continuous integration and continuous deployment. In CI, frequent software...
Docker is a common containerization solution that offers a user-friendly interface. It allows you to deploy your application as a lightweight process set ra...
database/sql
Welcome back. I’m an experienced developer, learning Golang by building an activity tracker. Last time I made a command-line client to connect to the JSON ...
Docker is among the more popular platforms for developing and deploying containerized applications. Containers are isolated environments that hold an applic...
What’s Wrong With Pie Charts Humans have a hard time comparing areas. Try it for yourself: Which slice is the largest? Which is the smallest? Can yo...
I’m an experienced software developer learning Golang by building an activity tracker1. I want a low-effort way to track my physical activity, and building ...
Error handling in Go is a little different than other mainstream programming languages like Java, JavaScript, or Python. Go’s built-in errors don’t contain ...
Even if you’ve used Docker for your smaller or locally developed software, you might find that it can be daunting for more complex tasks. This can especiall...
If you want to build a simple JSON HTTP web service that runs natively on a Linux server, then Golang is a great choice. At least this is what I’ve been tol...
Docker and Chef are two popular tools in the development world and are used extensively in build and deployment pipelines. However, even though they are use...
You can’t have a conversation about modern infrastructure technology without talking about containers. They provide a simple, secure way to package, distri...
For many developers, Docker was their first exposure to the wonderful world of containers. Containers have changed the way we develop and ship software, and...
You may be wondering, given that Docker is a containerization platform and Kubernetes is a containerization platform orchestrator, how can the two be compar...
Have you ever wanted your unit tests written for you? Property based testing is a powerful testing technique that, in a sense, is just that. You describe th...
Travis CI is one of the best known continuous integration (CI) tools on the market. It was founded in 2011 to automate builds and tests for Ruby, but now su...
Kubernetes has become the standard for deploying and managing containerized applications, but there are a lot of questions to be answered in the cloud nativ...
The software release cycle has developed over time, from the days of moving code from one machine to another to see if it works (which was frequently error-...
When the AWK tutorial came out, one of the questions on hacker news was how you use AWK with CSV (comma-separated value) files. The thing that prevents a...
AWS Lambda is a cloud computing solution that allows you to execute your backend applications without having to worry about server configurations or mainte...
Deployment is an integral part of the software development life cycle. It is the process where the application’s codebase is compiled, run through a series ...
Kubernetes has simplified the container management process for microservice applications, but developers often face challenges when using this notoriously c...
Deploying an application once meant provisioning a virtual machine, ensuring security protocols were in place, and installing the required frameworks—a comp...
Bash is not just a UNIX shell, it’s also a programming language. And like most programming languages, it has variables. You use these shell variables when...
One thing that bash is excellent at is manipulating strings of text. If you’re at the command line or writing a small script, then knowing some bash string...
CI/CD (continuous integration / continuous delivery) helps development teams optimize software quality tests before delivering committed changes into produc...
How do you rapidly deliver new features without delivering bugs at the same rate? By running automatic builds and tests on all of your code before it gets i...
On November 20, 2020 Docker began rate limiting requests to its popular Docker Hub registry. This change applied to all users, anonymous or free. When this ...
It turns out Awk is pretty simple. It has only a couple of conventions and only a small amount of syntax. It’s straightforward to learn, and once you underst...
When I started writing applications in 2010, things were simple. I would write the code, perform merges, run tests (if any), build, and upload to the App St...
Building software is a multi-step process—installing or updating dependencies, compiling the source code, testing, installing, and so on. In any moderately ...
make is a commonplace utility in the development world. It automates the process of generating executables, documentations, and other non-source files from ...
Background: Fingers, Head, and Google Whenever I reach a stopping point in my work, I use a bash alias called gwip1 to create a ‘work in progress’ commi...
Where Did All The Rain Go? It’s been a really dry summer here in Victoria BC (and the rest of the province). I couldn’t remember the last time it had ra...
How do you convert JSON values to CSV and back at the command line? I’ve done this task on many occasions and been stung by the edge cases frequently enough...
Microsoft announced recently a new Visual Studio Code extension to handle Makefiles. This extension provides a set of commands to the editor that will facil...
Automation testing is a crucial element to speed up your delivery process. It aims to flush out any potential regressions. The more you automate, the more c...
Lately, I’ve been doing a lot more things at the command line. I’m not a hard-core terminal guy – I use VSCode more than Vim – but I’m always surprised at t...
matplotlib
In A Docker Container
matplotlib is an excellent library for creating graphs and visualizations in Python. For example, I used it to generate the performance graphs in my merging...
Building and testing any large codebase is time-consuming, error-prone, and repetitive. Golang supports multi-platform builds, which is excellent, but it n...
Here is a problem. You are tasked with improving the hot loop of a Python program: maybe it is an in-memory sequential index of some sort. The slow part is...
Even though Python is regarded as an interpreted language and the files need not be compiled separately, many developers are unaware that you can still use ...
Concatenate Two Lists in Python Problem: You have two lists and you’d like to join them into a new list. Solution: Python 3.8.2 >>> one = [&q...
C++ is one of the most dominant programming languages. Although there are many compilers available, GCC still ranks as one of the most popular choices for ...
Many linting, code formatting, and static analysis tools exist for code. You can use eslint, gofmt, or many other static analysis tools, combined with a gre...
This tutorial is a follow up to creating and hosting your own deb and apt repo, but is written for creating rpm packages for redhat-based Linux distributio...
Some modern development practices are easiest to understand from a historical perspective: things started a certain way, and then steps were added or remove...
As an Ubuntu user, I find myself typing apt install … frequently as a way to install software on my system. But what if I wanted to distribute my code t...
In software engineering, continuous integration is the practice of merging all developers’ working copies to a shared mainline several times a day. Grady ...
Protocol Buffers serialize structured data so it can be efficiently stored or shared over a network. They were designed for internal use at Google in 2001 a...
At first glance, writing Dockerfiles appears to be a straightforward process. After all, most basic examples reflect the same set of steps. However, not all...
Distributing shareware from the 90’s in modern Docker images.
A monorepo is perhaps what you would expect from the name: a single code repository for your entire codebase. Wikipedia describes it as a decade-old softw...
Docker is the de facto model for building and running containers at scale in most enterprise organizations today. At a very high level, Docker is a combinat...
The Elixir language, along with the Phoenix framework, has been growing in popularity at a quick pace, and with good reason. Phoenix offers productivity lev...
There’s nothing more frustrating than a sluggish continuous integration system. It slows down feedback loops and prevents code from reaching production quic...
Bash scripts give you the ability to turn a tedious series of commands into an easily runnable and repeatable script. With many real-world use cases, like ...
How are containers made? Usually, from a series of statements like RUN, FROM, and COPY, which are put into a Dockerfile and built. But how are those commands...
Ngrok is a tool that allows you to create secure, publically accessible URLs for your locally running code.
Docker logging and its management are an important part of the containerization of your application. Once you’ve deployed your application, logging is one o...
A container is a simple unit that packages all your code and its dependencies so your application can run quickly and reliably from any computing environmen...
There is an excellent open-source project that you have probably used without realizing it. It’s called BuildKit, and it is what turns a Dockerfile into a D...
Have you ever wanted to see what kinds of requests a service or application on your machine is making and what kind of responses it is getting back?
We’re currently working on a server for sharing secrets between developers and CI systems, and one of the features we decided to support is passwordless log...
I was surprised to learn that Google protocol buffers (protobufs), were first introduced nearly two decades ago. They were used internally at google as earl...
Have you ever had a test fail in the build but not locally? I have. Have you ever then burnt half a day pushing small changes and waiting for your build to ...