Unnest with Reflection in Go

Recently at work I needed to write a utility to sync a PostgreSQL database with another data source. In my attempts to make the synchronization efficient, I came across a very helpful StackOverflow question which explained how to perform bulk insertions and updates. The recommended solution looked something like this:

[Read More]

Homelab Phase 1 - Complete

As discussed in a previous post, I started breaking improving my home network for the sake of knowledge and experience acquisition. But before I could get very far, I needed a plan. I wanted to at least theoretically be increasing my network security, and I hoped to enable playing with technologies used at work such as Kubernetes. Finally, this was an opportunity to see the ExtraHop network monitoring tools, which I have helped create, as a customer. [Read More]

Root Certificates Container

This website, like most of the services I host in my homelab runs in a Docker container which is hosted in a small Kubernetes cluster. I’ll go into more detail about the Kubernetes cluster in a later post. In this post I want to demonstrate a very simple container I have created which bundles the root certificates distributed with most operating systems, making them available to the application running within.

[Read More]


Grit, in addition to being the sand in your food, is the term given to the character trait of sticking with something. Persistence in a passion. A runner with grit, for example, sets a goal to complete a marathon, trains for weeks in advance, and conquers the challenge, despite there being significantly easier methods of traversing those 26 miles.

[Read More]

To Homelab?

My home network worked really well. It was stable, fast, and simple. I had a standard consumer-grade wireless router, a modem better than the one provided by the cable company, and a switch to hook up the ethernet to various rooms. The server holding my media and running a couple small websites sat in the front room and routed all of the port 443 and 80 traffic coming into the house. [Read More]

No, I'm not learning Esperanto

But I sure wish I was. Have you learned about this language? The Esperanto Flag I had heard about it. I knew it was some sort of failed attempt at a universal language. I knew that very few people spoke it, and they were probably “weird” in some way. But that is all I knew. Sadly, most of what I thought I knew was wrong or just a very small part of the truth. [Read More]

Workbench Upgrades

When I moved into my house there was a workbench in the basement. This bench was a custom made, one-of-a-kind, piece of crap. But I did’t know that yet. For the first several years I thought this bench was great. It had a hard plywood top that I wasn’t afraid to get dirty. It had storage drawers and shelves to keep my fasteners and some tools in. Best of all, it was free. [Read More]

Running TiddlyWiki on Node.js

TiddlyWiki is an awesome personal wiki, but if you have found this page then you probably already know that. Either you know me personally, and I won’t stop talking about it, or you have searched for TiddlyWiki explicitly and don’t need me to tell you about it. I have been using TiddlyWiki to keep track of just about everything for the last couple of years, from packing lists to general research notes. [Read More]

Bicycle ReConstruction

Before building an electric bike, I first need a bike suitable for electrification. With the expected expense of the project, I wanted to ensure I was building something to last. For the past few years I have been riding an ill-fitting mountain bike which actually belongs to my fiancé, so the first step was going to be finding a bike I liked enough to call my long-term rider. Growing up I always had a cheap mountain bike. [Read More]

De-Duplicating Unit Test Setup

Go (or if you are using a search engine, Golang) has great unit testing functionality built directly into the language. Create a file ending in _test.go and define a function with the signature func TestMyFunction(*testing.T). Executing go test will now run any tests in the current package. Very easy. As an application grows however, the number of tests explodes and it maintaining organization becomes difficult. To solve this problem, while developing the new REST API at ExtraHop I began using GoConvey from the very gracious developers at SmartyStreets. [Read More]