Technical Resources
Educational Resources
Connect with Us
At Papertrail we are software engineers who are passionate about programming, debugging, logging and pretty much everything about building and running applications. We enjoy keeping our coding skills sharp and playing with new technologies. Below are some of things we have picked up along the way.
Fully Functional for 14 Days
In the landscape of containerized applications, Kubernetes has emerged as the de facto orchestration tool. However, effectively managing a Kubernetes environment demands a deep understanding of observability. In this article, we’ll dive into Kubernetes observability, distinguishing it from traditional monitoring, and discuss its significance, challenges it addresses, popular tools, and how to choose the right tool for your needs.
There are times when you need to quickly see what’s happening with your applications in Kubernetes. For this, reading the most recent log lines is the most immediate thought you might have. Well, a quick way to troubleshoot and explore logs is to use the kubectl logs command. With kubectl logs, you can even read logs as they’re generated and focus only on the most recent ones. You can also read logs from all containers in a pod or a deployment. In this post, I’ll show you different ways of reading logs from your application using the command line tool. I’m going to focus on teaching you how to tail the logs, or read the most recent log lines, with a few common scenarios. Before I dive into that, let me start by covering a few basic concepts.
Last updated: February 26, 2024
Life would be much simpler if applications running inside containers always behaved correctly. Unfortunately, as every sysadmin and developer knows, that is never the case. When things inevitably start going wrong you need diagnostic information to figure out how and why. Being able to gather useful information from your Docker container logs can mean the difference between a minor issue and a critical outage.
Last updated: February 5, 2024
HAProxy (high availability proxy) is a critical part of modern systems infrastructure. It’s ideally the first point of contact for users who access your application. When configured correctly, HAProxy improves your app’s performance significantly. Through load balancing, HAProxy makes sure each service your application depends on is accessible to users, especially under load conditions otherwise impacting application performance.
Last updated: February 5, 2024
After the introduction of Docker, the life of a developer became much easier. Kubernetes solved many problems and offloaded the task of setting up all the necessary runtimes, libraries, and servers from developers. For small projects, it was enough. However, managing multiple containers for bigger applications becomes difficult. Fortunately, Kubernetes solves that problem, making complex deployments easy. However, using Kubernetes also creates a few new problems, such as memory usage issues. In this post, you will learn how to use logging efficiently to find and avoid common issues with misconfigured resource allocation in Kubernetes.
Last updated: February 1, 2024
.NET 5 is a shifting point for the .NET ecosystem, bringing Mono, Xamarin, and .NET development into a single codebase. Almost a year later, however, there’s still some confusion lingering, especially when it comes to migrating your old apps.
Last updated: January 22, 2024
The allure of quickly spinning up an app on a platform as a service (PaaS) instead of cobbling together a solution on an infrastructure as a service (IaaS) makes Heroku an appealing option for many developers. With the explosive growth in the platform as a service market, new features and capabilities are continually rolling out. Along with the fast-paced evolution of Heroku comes an increase in complexity, which can create challenges for application developers.
Last updated: January 22, 2024
Logging is an essential part of any application, no matter the tech stack or service to which you deploy. When things go wrong in production, logging might just save you from going blind when trying to fix the issue.
In this post, you’ll see how to implement logging for your .NET 5 Asp.NET app on Azure Web Apps.
Last updated: January 18, 2024
Modern garbage collectors use sophisticated algorithms to manage unused memory, so you don’t have to. But when things aren’t working right, you need a way to peek under the hood and troubleshoot issues. Analyzing garbage collection (GC) logs can provide key insights into the behavior and performance of programming languages using automatic memory management, such as Java. If you suspect you’ve got a memory problem with your Java app, the GC log is the first place to look.
Last updated: January 18, 2024
Robust application logging is central to any quality strategy. Unfortunately, many quality strategies fall short, implementing logging in a less-than-stellar way. Java application logging is no different. And since we’re talking about one of the most popular programming languages, investments in improving the overall Java logging strategy could pay off many dividends in the future.
Fully Functional for 30 Days
Contact our team, anytime.