DevOps Quick Fix are solutions to common DevOps problems, usually encountered during client engagements Problem When creating a new AWS EC2 (either via Packer for AMI or via Terraform for EC2), the usual next immediate step is to install Unix packages via yum or apt. You may get intermittent errors like: "Package has no installation candidate" "Unable to locate package" "Error: Unable to find a match" "No package available" Solution Running yum or apt before EC2 finishes initialization is
Your site has gone down. Users are contacting you for support, but you have no idea what could be causing the issue. Mild panic sets in. This scenario is all too common, and recently, I also encountered this issue. It turned out that the problem was not in the code I had recently written; but in my failure to realize the software development kit (SDK) I was using was deprecated. This article will explore the risks of using an outdated SDK and provide tips to avoid its pitfalls. So, what exa
A note to preface: you can find the project repository here. The origin story After a while developing software in Java, I was intrigued by all the praise of Kotlin and also interested in Kotlin/Native as a way to develop applications that don't require a VM to run. Inspired by this Golang implementation of traceroute, I settled on trying my hand at implementing traceroute with Kotlin/Native. tracerte is already available on every operating system, so why the hell would I rewrite it? Good qu
In this article, we will explore the usefulness of GPT-3 for developers by examining its performance in handling three common challenges that they may encounter in their work. These challenges include generating new code, explaining unfamiliar code constructs, and deciphering unusual error messages.
There is a better way.
Our project began with a small ask: build a small Python back-end using AWS Lambda and API Gateway (with just a handful of endpoints to support a few pages) and use Serverless [https://serverless.com/] to manage the Cloud Formation setup. Not very involved, not much code, not even much configuration for the deploy. Next came authentication. In pursuing the joint dreams of DRTW ("don't reinvent the wheel") and WALCAP ("write as little code as possible"), we selected AWS Cognito over other opti
Nowadays just about everyone, everywhere, regardless of age and ability, uses a smartphone. With that in mind, it’s more important than ever to consider all the different ways to make your app accessible to everyone to ensure an inclusive experience. In this series, we’ll be discussing different ways iOS developers can make their apps more accessible. First up, we’ll be talking about Dynamic Type. Dynamic Type is a feature on iOS that enables the app’s content to scale based on the user's
This tutorial will describe how to... install Rust, create a new project and manage dependencies, Set up a simple web server, and compile the app and deploy to a virtual server. I'll be working on Ubuntu 20.04 but most of the setup should be the same on macOS or a different flavor of Linux.
Our mobile devices and the apps that run on them have a unique insight into our lives. We use them for communication, entertainment, shopping, photography, navigation, and myriad other purposes. Consequently, apps have access to a great deal of information about our preferences, our contacts, where we go, what we buy, and who we are. As app developers, we need to be cognizant of the information being handled by our apps and to safeguard it accordingly. The protection of sensitive information is
We were recently transitioning a client to use Heroku build pipelines for their Next.js project that handles most business logic through an external API, including authentication and cookie handling. This pipeline uses Heroku's review apps [https://devcenter.heroku.com/articles/github-integration-review-apps] as well as separate instances for staging and production environments. The client handled their domains through AWS's Route 53 [https://aws.amazon.com/route53/] DNS service. Pointing thei
The following article was created from a 2021 CppCon talk given by Jonah Jolley. One of our clients has a software product that must comply with federal regulations. For them, they must submit technical documents to a governing body. However, in their case, the codebase didn’t accurately reflect what was documented. This led to an unmitigated, unsafe condition. To solve this issue, we used Clang LibASTMatchers to check the codebase and ensure they were indeed compliant. Why Compliance in Cod
Apple delivered several exciting and innovative new APIs for developers at WWDC this year. You might have heard or read about the SwiftUI and Combine revamp, but I want to address the new world of native WebSockets! The historically complicated connection protocol is now delivered as a first class citizen! Before we dive in on how awesome this is, it's important to have a basic understanding of Sockets and the road we've traveled to reach this point. What is a socket? By definition a socket is
Docker is a helpful tool for both developers and ops. It can simplify both the development of an application as well as deployment and management of it. In this post we are going to explore a common pitfall related to developing an application in Docker on the Mac and see what we can do to mitigate the issue and work as productively as possible. Developing in Docker Developing in Docker has a number of advantages over developing directly on your Mac. Before we begin, let’s remind ourselves of a
Properly configuring and tuning your Airflow deployment to be generally performant can be a nontrivial endeavor. You can easily shoot yourself in the foot if you don’t do it right at first. You’ll discover and experience sporadic bottlenecks in Airflow-wide and DAG-level execution. You’ll apply solutions to those as they arise. You run the risk of developing a fragmented and mystical understanding of Airflow’s goings-on. You’ll have many questions and, frustratingly, fewer answers. Why are more