/writing

Using Jekyll with Esbuild

I know. What an unholy union. Why would anyone do this? Why would anyone want that?

Continuous Deployment with GitHub Actions and Kamal

Kamal is a wonderfully simple way to deploy your applications anywhere. It will also be included by default in Rails 8. Kamal is trivial, but I don’t recommend using it on your development machine.

The Simplest Static Site Generator

Sometimes, you want to build a simple HTML page and populate it with some data. You may have some JSON lying around and want to make a simple website to visualize its contents. Or perhaps you want to show off how many books you read in the last few years.

Processing images with ActiveStorage and Imgproxy

ActiveStorage has a nifty feature that allows you to serve variants of uploaded images. Think of a user uploading a profile image. You won’t need the full-sized original most of the time. Instead, you can serve smaller versions of that image, which, of course, consume less bandwidth and load faster.

Load testing GraphQL with WRK

For performance testing wrk is one of my favorite tools. Whether you are trying to get a quick benchmark or building a performance test suite - it is fairly simple using wrk.

CLI OAuth in Ruby

Have you ever used a command-line application that triggered an OAuth authentication flow to log you in and wondered how that works? For example, Google Cloud SDK does this, as does Heroku CLI.

Use GitHub Actions to find Outdated Dependencies

Keeping up with dependencies can be a pain. That is especially true if you build a tool that heavily relies on some library. If that library changes in a major way, you’ll have to be quick with updating or risk issues piling up.

Pull Request Previews with Rails, Cloud Run, and GitHub Actions

If you work in a larger organization, chances are you have access to some sort of staging environment where you can preview work that is currently in progress. Staging environments can be immensely useful to get early feedback, be it from QA or other departments, which can speed up the development of new features significantly.