Reducing cost on DigitalOcean

In a Twitter thread between Vito Botta, Alex Ellis, and myself, we talked about how expensive DigitalOcean can be for personal projects. You often start off small with just a cluster for compute. Eventually you need a database to store your user’s information. As time goes on, these needs only continue to grow. In this post, I share some cost-saving techniques I’ve used to reduce my bill.

Conclusion: Tracking impressions on repositories

In this post, I bring a conclusion to my recent series on tracking impressions on repositories. While it’s the last in the series, I will likely continue to post updates as time goes on. For now, I feel my current approach has yielded a wealth of information that I’m still fully digesting. In this conclusion, I will walk through how several of my metrics have changed since my original approach.

Follow up: Tracking impressions on repositories

Last week, I put a tracking pixel on my GitHub repositories. And I’ve got to say, the results have been really interesting. In this post, I follow up on what I’ve learned since last week, changes I’ve made, and improvements I’m working through.

Tracking impressions on repositories

When working on open source projects, I often wonder how to improve the experience for my users. In order to improve my users experience, I first need to be able to measure and monitor it. On a website, I have Google Analytics which can help me understand my users paths through my site. This capability isn’t as accessible on GitHub or GitLab as it requires JavaScript execution. In this post, I will demonstrate how you can set up Google Analytics to track impressions on GitHub repositories.

For the love of programming

Join me on the WomenInTech show. In this episode, Espree and I discuss my journey into tech. From my early days working on things in high school to the work I do today. I hope you enjoy the show!

Home Lab: 1 year later

Last year, I wrote a series of blog posts covering the set-up of my home lab. The first post was on my decision to run Rancher’s k3s on my Raspberry Pis. Since then, I’ve made a few modifications to how its all managed. In this post, I discuss some of these changes I made over the last year.

Returning to Indeed

In November 2018, I decided to return to The decision to return did not come easy. Since then, I have frequently been asked about my reasons for rejoining. In this post, I hope to cover my interviewing process and some reasons that I had for returning.


Over the last year, I’ve been heavily working on draws it’s inspiration from a project that I worked on at Since it’s original inception, there had been a heavy push to move it into the open source space. In this post, I’ll discuss the process and rationale I applied as I rewrote this project in the open.

Cloud dependencies

Join me on the Software Engineering Daily podcast. In this episode, Jeff and I discuss my personal project We discuss benefits and tradeoffs to leveraging monorepos as well as challenges mainting source control at a large organization. I hope you enjoy the show!

Checking Service Dependencies in Kubernetes

Back in July, I found myself needing to better coordinate deployments of my applications to Kubernetes. After searching around, I found many ways that people where trying to solve this problem. Some used shell scripts to apply multiple YAML files with a fixed time sleep between them. Others used shell scripts and tailed the rollout using kubectl rollout status -w. Now, I manage a lot of my deployments using GitOps and Flux. So leveraging these shell scripts to manage my rollouts into clusters wasn’t really an option.

It wasn’t until I came across Alibaba Cloud’s blog post on solving service dependencies that I felt like I had something to work with. The article described two techniques. The first was inspecting dependencies within the application itself. At Indeed, we leverage our status library to do this. The second was to enable services to be checked, independent of the application.

In this post, I’ll demonstrate how to use my service-precheck initialization container (built off of the Alibaba blog post) to ensure upstream systems are up before attempting to start a downstream system.