Learning Jsonnet

Jsonnet is a powerful data templating language. It extends JSON with variables, conditionals, functions, imports and more. As an engineer who never touched the technology before, I often struggled to understand it. In this post, I share my experience learning Jsonnet and my thoughts behind developing a starter.

SLOs for Open Source

Open source software has been used to build organizations for years. From libraries to complex infrastructure systems, the open source landscape provides a vast sea of solutions. For larger infrastructure projects, organizations are asking maintainers for service level objectives (SLOs). Many do not publish or provide any, even when projects come from organizations who likely had SLOs in place. In this post, I walk through my process for developing indicators and objectives for open source projects.

Working with Protocol Buffers

Google’s Protocol Buffers can be a power piece of technology. Yet, I often feel they are undervalued, underutilized, and underappreciated. Since joining Indeed back in 2013, I’ve had a fair amount of experience working with them. Boxcar (Indeed’s distributed services framework) was built on protocol buffers. As a previous maintainer of Boxcar, I’ve had hands on experience with low level components of protocol buffers. In this post, I discuss many of the benefits to using the technology.

Implementing Breadth-first Search Over gRPC

deps.cloud is an open source project that I started. It’s a tool that helps companies understand how their projects relate to one another. It does this by parsing files like package.json and storing the contents in a graph.

While graph databases do exist, finding administrative and engineering support is often hard. To add complexity to this, graph databases come in a variety of flavors. Since I wanted the workload to be portable, adopting a graph database was a non-starter.

On the other hand, finding support for relational databases is easy. The problem is that implementing graphs on relational databases tend to be slow. While there has been previous efforts, I felt gRPC was able to alleviate many of the problems they faced. In this post, I share lessons I learned while implementing such a graph database.

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.

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 Indeed.com. 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.