Sign in

Distinguished Engineer @AmericanExpress building payments systems. Author:, Thoughts, & Opinions are my own.
Photo by Jose Antonio Gallego Vázquez on Unsplash

Working with TCP servers is a great way to become familiar with low-level network communications. When writing applications that communicate directly over TCP sockets a multitude of socket management steps are required. Actions that you typically don’t have to take for a typical HTTP-based application.

Sometimes, those extra management steps…

Photo by Sean Stratton on Unsplash
Photo by Sean Stratton on Unsplash

I was recently restructuring one of my early Go side projects. As I was changing the project layout, I was reminded there are many recommendations out there but no set standard for structuring Golang projects.

In other programming languages such as Java, there is a typical project layout that most…

Photo by Oxa Roxa on Unsplash

I see this one question pop up in channels over and over again.

“What is the best way to mock a database for unit tests?”

For most, the thought of mocking responses from a database is daunting. …

Photo by Eutah Mizushima on Unsplash

Note: This article is a republish of a 2012 blog post, Medium doesn’t support back dating… Forgive the dated material.

Linux has many tools available for troubleshooting; some are easy to use, some are more advanced. …

Photo by Jametlene Reskp on Unsplash

When working with HTTP-based services in Go, many developers (including myself) like to use HTTP Multiplexers (mux). Multiplexers, also sometimes referred to as Request Routers, offer a suite of features and capabilities. The simplest form allows users to register a specific handler function with specific URL patterns and methods.


Photo by Austin Lowman on Unsplash

Recently I wanted to revamp one of my side projects go-quick. This project is a boilerplate web application meant to be a starting point for Go apps. Previously, I wrote a custom config package within the project to pull configuration from Environment Variables as per the 12 Factor Apps manifest

Photo by Phil Hearing on Unsplash

When I was learning Golang, one of the concepts that took me the most time to grasp was Interfaces. Golang’s Interfaces are a great way to make modular and testable code. But they can also be a bit confusing at first glance.

One of the best ways I’ve found to…

Photo by Markus Spiske on Unsplash

Before learning Go, I used to write most of my applications in Python. When I was transitioning from Python to Go, I was familiar with parsing JSON, YAML, etc., into Python dictionaries. What I never understood is why I would see so many examples parsing JSON into Go structs. Why…

Photo by Marc Liu on Unsplash

This article is part of a multi-post series on Software Design. In the last post, we took our design and scaled it up to meet our unique performance needs. In this article, we will start ensuring that our platform is highly available.

As mentioned in previous articles, this application platform…

Photo by JOSHUA COLEMAN on Unsplash

This article is part of a multi-post series covering Software Design. In the previous post, we outlined a high-level architecture of our example platform. In today’s article, we are going to explore scaling that high-level architecture to meet new demands.

Since this article is “by example,” It is worth calling…

Benjamin Cane

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store