RSSAmplifier

Blog

Cody Brunner

Articles on software development, web technologies, and life as a remote developer.

codybrunner.comRSS feed ↗56 posts

Latest posts

Speeding Up Self-Hosted Forgejo CI

My self-hosted CI pipeline got slower with every article I published. Here is how I traced where the time went, and the two config one-liners and one custom runner image that cut it roughly in half.

Writing A Tree Walking Evaluator

Writing a tree-walking evaluator in Go with an object system, environments for variable bindings, and type switches to finally run the Monkey language.

Hey Old Man

Six years after my grandfather died, and a funeral I could not reach from Colombia, this is the goodbye I never got to say.

Writing a Pratt Parser

Building a Pratt parser in Go to turn Monkey's token into an AST, using operator-precedence parsing and Go interfaces to model every node type.

Writing a Lexer

How to write a lexer in Go, turning Monkey source code into a stream of tokens by scanning the input byte by byte, and wiring up a first REPL.

Five Books to Build One Toy Language

Kicking off a Go series that builds an interpreter and then a compiler from Thorsten Ball's books, starting with a testing and Go-fundamentals warm-up.

Turns Out Being A Gringo Is A Marketable Skill

I have lived in Colombia for nearly six years and the one skill everyone here wants is the one I have never had to think about. Time to do something about that.

Life with Max

A year after putting down my ex-wife's dog Tommie, I adopted a terrified rescue named Max. He promptly introduced himself by shitting in my bedroom. We have been inseparable ever since.

My Tech Stack in the Age of AI

A breakdown of the tools, frameworks, and platforms I am reaching for in 2026 with an honest take on where AI fits into all of it.

Adding a Forgejo Activity Feed to the Website

How I wired a self-hosted Forgejo instance to my SvelteKit site through a Cloudflare Worker projecting away PII, caching at the edge, and stacking four layers of access control along the way.

From GitHub to Forgejo

All of my new personal projects live on a self-hosted Forgejo instance running in my house. Here is why I stopped using GitHub for personal work, and how I set it up.

Starting Over

Two years of hiding, a handful of losses, a divorce, a dog named Max. This is what starting over looks like when you do not have it figured out yet.

Certificate Issues Between Fly & Turso

That time I ran into issues with my certificates being invalid leading to problems communicating between Fly.io and my Turso database.

Tommie

An article to try my best and express who Tommie was and the happiness and love he brought my wife and myself.

Writing a HTTP Server with Go

Writing a simple HTTP Server using only what is provided via the Go Standard Library.

The City of the Seven Color Sea

San Andrés is a little slice of paradise in the Caribbean owned by Colombia. The perfect place to celebrate all the new gray hairs that came with turning 36 years old.

Adding Related Articles with Astro Content Collections

Astro's content collection feature is a game changer for easily managing content in a type safe manner. It also can help to easily add related collections or data types through referencing. In this article I show how I implemented a related articles feature.

Deploying Astro to Fly: Part 2

A quick how-to guide on deploying your server-side rendered Astro projects to Fly.io.

Deploying Astro to Fly: Part 1

A quick how-to guide on deploying your static Astro projects to Fly.io.

Working with Makefiles

In my journey into learning Go I have been learning how to use Makefiles within my Go projects. I had never worked with makefiles before and this post will touch on how to use them.

Going to the Gopher Side

The chaos that is the JavaScript/TypeScript ecosystem has become too much to bear in my opinion. I have become unhappy with my direction in the tech industry and in late 2023 made the decision to begin teaching myself Go and pivoting my career out of the Frontend & away from JavaScript.

From NextJS to Astro

In 2023 I began making the move from NextJS to Astro for my personal website and blog. This is my experience with the transition.

Climbing the Mountain

In November of 2023 I traveled to Salento, Colombia for the adventure of a lifetime, climbing and summiting Colombia's second highest peak, Nevado del Tolima.

Deploying a Qwik City application to Cloudflare Pages from GitHub Actions

A quick guide on how to deploy a Qwik-City project to Cloudflare Pages from GitHub Actions.

Breaking Up With Bitwarden

After Bitwarden's decision to terminate their VP of Software due to his answer to preferred pronouns in the workplace, I have decided to move to a different password manager.

Ectogram: Testing Ecto

Part 4 in the Ectogram series where I cut my teeth on testing the user schema with ExUnit.

Ectogram: Generating The Users Table

Part 3 in the Ectogram series where I generate the user table migration and schema.

Ectogram: Setting Up Ecto

Part 2 in the Ectogram series where I setup the project and make customizations to Ecto.

Ectogram: Introduction

A clone of the popular social media platform, Instagram, written in Elixir & Ecto.

A Far Too In-Depth Guide To SSH For Web Developers

Everything I have learned when it comes to SSH after setting up my Raspberry Pi Cluster.

Happy New Years

A post outlining my goals for 2022 and looking back on 2021.

Python Scripting In iTerm2

How to use the Python Scripting API in iTerm2 to open several tabs and execute commands in those tabs.

Creating Animated Social Icons With TailwindCSS

How I created the animated social icons on my website using TailwindCSS.

Migrating From Yarn To Pnpm

My experience moving from classic yarn to pnpm as my package manager in JavaScript land.

Renting As An Expat In Colombia

My experience with renting property in Colombia as an expat.

How To Kill Processes On MacOS

A quick posts on how to kill processes on macOS.

Looking At 2021 With 2020 Vision

A look back on 2020 and looking ahead to 2021.

Building A React Project From Scratch With TypeScript

Setting up a React project with Webpack 4, Babel 7, & TypeScript.

Through The Storm

Two years of hard work finally delivered my first dev job.

Building A Stopwatch With JavaScript

A guide for how to build a stopwatch with JavaScript.

Recursion & Memoization In Python

Working through Fibonacci using recursion and memoization in Python.

Writing A Connect Four Game Reader In Python

Writing a program that will read moves and populate a game board for the popular game Connect Four using Python.

Building A Black Jack Advice Generator With Python

How to build a simple black jack advice generator using Python.

Getting Started With Python3

Installation and setup of Python3 on macOS & development with Visual Studio Code.

Into The Great Unknown

Turning a new leaf and starting fresh in Portland, Oregon.

Turn the page

The admission and realization that I desperately need help.

How to build a Telegram Bot with NodeJS

My experience in building a bot for the popular Telegram Messenger Platform.

Happy New Years!

Where I've been and where I'm going in 2018.

Up & Running With iTerm & Zsh

How to get started with iTerm2, ZSH, & VSCode.

Rewriting My Site With Hugo

What I learned while rebuilding my site/blog with Hugo.