How to Tell What Kind of Pulumi Access Token You Have

Pulumi access tokens all look the same but you can use the Pulumi CLI or API to figure out what kind of token it is.

2026-08-03 · 4 min · 840 words
Setting Up a Time Machine Drive from the Command Line

Steps to set up a Time Machine drive from the command line.

2026-08-02 · 12 min · 2473 words
Failed Time Machine Backups Fill Up Your Internal Drive Too

Failed backups prevent older snapshots from being released. Old snapshots retain deleted files and can take up a bunch of space.

2026-07-30 · 3 min · 637 words
Terminal Colors Are Just Text

ANSI escape codes are used to colorize text in a terminal.

2026-07-01 · 3 min · 603 words
You Can Detect if Code Is Being Run Inside a Terminal

Most programming languages have a way to detect if it’s being run in a terminal.

2026-06-28 · 2 min · 318 words
.gitignore Isn’t the Only Way To Ignore Files in Git

You can ignore files in .gitignore, .git/info/exclude, and ~/.config/git/ignore

2026-06-18 · 3 min · 432 words
How to Install a Specific Version of a Homebrew Package with brew extract

Use brew extract to install a specific version of a homebrew package.

Proxying GoatCounter Requests Through CloudFront to Bypass Ad Blockers

How to configure CloudFront to proxy requests to GoatCounter so that adblockers don’t block page views.

2026-04-09 · Updated 2026-04-18 · 5 min · 885 words
I Created My First AI-assisted Pull Request and I Feel Like a Fraud

I used AI to contribute to an open source project. The code was merged. I didn’t learn anything and I felt bad as an engineer.

2026-03-23 · Updated 2026-04-04 · 3 min · 468 words
I Hate Workday

Workday makes it a huge pain in the ass to apply to companies.

2026-02-18 · Updated 2026-02-28 · 1 min · 171 words
Adding Headers to HTTP Requests in Go

Build requests with http.NewRequest() to add headers, then send them with http.Client{}

2026-01-30 · Updated 2026-03-28 · 2 min · 267 words
Using time.Sleep() in Go

Examples of using time.Sleep() in Go because the official documentation is lacking.

2026-01-29 · Updated 2026-01-30 · 2 min · 307 words
Setting up WireGuard on Synology DSM 7 using Docker and Gluetun

A guide to connect a Synology NAS to a WireGuard VPN server, with qBittorrent as an example.

2025-12-31 · Updated 2026-05-06 · 7 min · 1421 words
What I Actually Want To Say in Tech Interviews

Honest answers to common interview questions in the tech field.

2025-12-29 · Updated 2026-02-08 · 2 min · 264 words
GitHub Actions for Pulumi with an AWS S3 Backend

How to set up GitHub Actions for Pulumi when the state is stored in an AWS S3 Bucket.

2025-12-11 · Updated 2026-03-26 · 3 min · 504 words
How to Actually Copy a List in Python

Copy a list in Python using the copy() method, not the assignment operator.

Creating High Quality GIFs from Asciinema Recordings

Use agg with a huge font size to get high quality GIFs.

2025-10-04 · Updated 2026-02-05 · 1 min · 184 words
Quick Tip: Mute the Terminal Login Message with a .hushlogin File

Create a .hushlogin file in your home directory to silence login messages.

2025-09-28 · Updated 2026-04-01 · 1 min · 102 words
How to Use an AWS S3 Bucket as a Pulumi State Backend

Self-host Pulumi state with an S3 Bucket, an IAM User, and the Pulumi CLI.

2025-09-20 · Updated 2026-04-25 · 4 min · 673 words
Local Text Summarization With Ollama and Python Is Just String Manipulation

Generate a string with Python, pass it into Ollama, and you get a string in return. That’s it.

2025-08-24 · Updated 2026-01-25 · 3 min · 620 words