Easy EC2 SSM with Pulumi in Typescript

May 28, 2020

After watching this talk from Luke Hoban, I wanted to give it a spin. Hoban’s analogy of current tools as Assembly language of the could…

Speeding up json processing in go

May 17, 2020

We will be speeding up our JSON processing by 11x with a few tricks: reusing allocated memory the Flyweight pattern JSON parsing without…

Docker dynamic environment variables

February 15, 2020

You might have a use case to dynamically add environment variables to docker containers. If you have ephemoral hosts and using something…

TLA+ verifying a money transfer

December 07, 2019

What could go wrong with transferring money between two accounts? I have written about how easy it is to get wrong (giving away or losing…

Rust, wasm, and tetris

November 17, 2019

WASM has been making a lot of progress recently so I was looking for a small project to run through and tetris with rust came to mind. Its…

Insert speed and Postgres indexes

October 17, 2019

Adding too many indexes has a cost, we are going to run through some example data and what size of an impact it looks like A common rules of…

Web authorization with Casbin

August 16, 2019

Casbin is an authorization library that supports ACL, RBAC, ABAC permissions on resources. If you are not familiar with those terms, we will…

Imagining better flaky test management

June 30, 2019

If we imagined better tooling around managing flaky tests what could we come up with? One thing I have noticed in working with polyglot that…

What does an effective team look like

April 17, 2019

If you are building an effective team, do you know what you are building towards? Is it more than just putting smart people in a room…

What makes a great engineering manager

March 26, 2019

‘What makes a great engineering manager?’ is a question I hear getting asked a lot by both new and experienced managers. On the new manager…

4 Types of work

March 23, 2019

If you find yourself doing lots of work constantly but seemingly unable to get the things done that you planned to, categorizing work may…

Effective coaching

January 28, 2019

There is a really good chance you are not getting effectively coached, and you are not giving effective coaching. Has a peer come to you…

gke ssd helm

January 28, 2019

By default GKE does not use SSD for Persistance Volumes (PV), which is a little annoying since that is usually what I am looking for. I…

Golang finding memory leaks

October 29, 2018

We are going to look at finding memory leaks in golang using a tool called pprof. As a quick refresher, a memory leak is when an application…

Container from scratch

September 12, 2018

We are doing to be building a docker from scratch, and I do not mean a Dockerfile from scratch, I litterally mean the container. Getting…

Declarative Programming with Prolog

February 11, 2018

Prolog is a declarative language around logic programming, where we can specify the rules and facts of a problem and let the language…

Lost messages with sidekiq

January 28, 2018

Sidekiq is a great library for getting asynchronous library for quickly moving work into background jobs in Rails/Ruby apps, but it can drop…

Debugging slow PostgreSQL queries

January 04, 2018

If production is on fire from slow queries, the quick command to identify them is: The above command will output any queries that have been…

Graph queries with Cypher in Neo4j

January 03, 2018

Neo4j uses a declarative language called Cypher, that lets us easily make graph style queries that return some pretty cool data. We will be…

Neo4j bulk data import

January 01, 2018

Neo4j has a csv import tool that makes importing large datasets pretty easy, especially if you happen to be exporting data out of postgres…

Building a leaderboard with redis

December 24, 2017

Leaderboards can be cumbersome to build, especially building one that can scale past millions. Fortunately Redis has built-in data type that…