Calculating the GitHub API's `sha` representation of a local file

I've recently been doing some work to commit files directly to a GitHub repository using the API, as part of my work on dependency-management-data. When you're updating a file with GitHub, you need to specify the sha of the file that you're updating, which can be retrieved in one...

Five Years Running a News Site on JAMStack

I started working as the Director of Technology at Spotlight PA the Tuesday after Memorial Day, 2019, over five years ago. There have been a lot of changes in technology, journalism, and the world since then, not least of which was the COVID-19 pandemic. I thought this anniversar...

Updating Snapcraft secrets

If you, like me, release your projects to the Snap Store using GoReleaser, you might need to eventually update the secret. It seems to me that the secret expires every year, and this is the time of the year I need to renew mine. To help future me, this is my recipe on how to do...

packagemain #25: Identifying Container Image vulnerabilities with Docker Scout

We all know, that Docker technology is great and brings us many advantages, but also, unfortunately, Docker images include many attack surfaces on different layers.

Ep. 3: Mastering Kubernetes: Setting Up Environments with Kind

Introduction: In this installment of the Ultimate Software Design series, Bill guides us through setting up a Kubernetes environment using Kubernetes inside Docker (kind). He breaks down the structure of Kubernetes and offers insights into effective cluster management, ensuring a...

Rust error handling is perfect actually

The night is dark and full of errors, so how should we handle these gracefully and safely in our Rust programs? Let’s introduce two of every Rust programmer’s favourite types: Option and Result.

Reasons to not expose Go's choice of default TLS ciphers

Join us on Substack

Today me and my friend/colleague Julien Singler are starting a new Substack Newsletter called “package main” (this name may sound familiar). It’s one-stop shop for mastering Backend, Cloud, DevOps, APIs, etc.

The long-overdue problem coming for some people in Go 1.23

Now

This page is a summary of what’s going on in my life currently (inspired by nownownow.com). Last updated: 2025-01-07 Writing the packagemain.tech Newsletter about Backend, Go, Cloud, Kubernetes and more.