Skip to content

Index

Profile Guided Optimizations in Go

A view of the mountains from the top of Pikes Peak

In this post, we'll explore Profile Guided Optimizations (PGO) introduced in Go 1.20 and how they can be effectively used to improve the performance of your production applications. PGO is a compiler optimization technique that allows you to tune the performance of your Go applications in an environment- and workload-specific way. The profiles themselves are simple metadata files that contain information on what functions are called, how often they're called, what system calls are used, and generally what the computational profile is of your application. This information can be used by the compiler to better inform what sorts of optimizations are useful in your specific environment and workfload.

Prefer Systemd Timers Over Cron

systemctl list-timers command output terminal

Systemd administrators often find themselves needing to run services on their bare-metal machines. Services can be broken down into roughly two broad categories:

  1. Long-running services that are started once and will run for the lifetime of the machine.
  2. Short-running services that are started at least once and will run for a short amount of time.

Long-running services comprise of the majority of the services in use by Linux. One of the challenging aspects of long-running services in a production environment is the dual question of monitoring and reliability:

  1. How do you know if your service is running?
  2. How will you be alerted if your service dies?
  3. How do you handle automatic retries should the service die?
  4. How do you enable automatic start-up of your services when a machine boots, and how do you make them start up in the right order?

Intech Sol Horizon Cellular Setup

In 2022, I bought myself an Intech Sol Horizon Rover. I had been looking at RVs for a long time and decided on this particular manufacturer because of the excellent build quality and reputation of the manufacturer. The Horizon was a good fit for my needs because it was spacious enough to be comfortable for two adults to live in for long periods of time, and small enough that I could tow it with my Jeep Grand Cherokee. My goal for this RV is to be something that I could work remotely from, which means I needed to get a reliable internet setup. This post will show you my journey with finding the right internet solution, the lessons I learned, and the resources I used to make this a successful build.

Introducing Mockery's New packages Feature

vektra/mockery is a Go package that auto-generates mock implementations of interfaces in your project. For those not familiar with what mockery is, please take a look at its documentation page. I took over the project in 2020 and have overseen a number of significant feature updates to the code. The most recent of these is a feature I call packages, and it's one I'm most proud of due to the enormous benefits it grants you.

AWS Batch Extended AMIs

AWS Batch provides an excellent way to process hundreds or thousands of batch jobs very easily, but the default configurations provided may not be enough for most users. This post will help address the limitations of the default Amazon Machine Image (AMI) used in the managed compute environment.