Open in app

Sign In

Write

Sign In

Jack Lindamood
Jack Lindamood

1.3K Followers

Home

About

Apr 30, 2020

Using Docker and Terraform for hermetic AWS Lambda CI/CD

Context We are using AWS Auora to manager our databases and I want to setup automatic rotation of database passwords. I start by storing them in AWS Secrets Manager. …

AWS Lambda

5 min read

Using Docker and Terraform for hermetic AWS Lambda CI/CD
Using Docker and Terraform for hermetic AWS Lambda CI/CD
AWS Lambda

5 min read


Oct 10, 2019

After using both, I regretted switching from Terraform to CloudFormation

An unambiguous best practice for systems is to codify your infrastructure in a repeatable text format, rather than clicks in a UI. The common name for this is Infrastructure as Code. By far, the two most popular ways to do this, especially in AWS, are Terraform and CloudFormation. I used…

AWS

10 min read

After using both, I regretted switching from Terraform to CloudFormation
After using both, I regretted switching from Terraform to CloudFormation
AWS

10 min read


Sep 17, 2019

Closure driven tests: an alternative style to table driven tests in go

Table driven tests are a popular model for testing in Go and a clear improvement to traditional testing of one function per case. However, there’s an alternative style that can often be clearer than table driven tests that relies on function closures. I’ll reference the example code on Dave Cheney’s…

Golang

2 min read

Golang

2 min read


Sep 11, 2019

Using Go 1.13’s new ReportMetric API to benchmark t-digest implementations

Histograms are an important part of metrics and monitoring. Unfortunately, it is computationally expensive to accurately calculate a histogram or quantile value. A workaround is to use an approximation and a great one to use is t-digest. Unfortunately again, there’s no such thing as an accurate approximation. …

Programming

5 min read

Using Go 1.13’s new ReportMetric API to benchmark t-digest implementations
Using Go 1.13’s new ReportMetric API to benchmark t-digest implementations
Programming

5 min read


Aug 7, 2019

Interface Contracts Matter

Misused abstraction causes a vulnerability in the go-redis client — A recent vulnerability in the go-redis library allowed correctly configured clients to return the results of other redis commands in the event of redis failures. While all code is subject to bugs, this one could have been prevented if proper care was taken when creating and using interfaces. Bug behavior Most clients…

Programming

5 min read

Interface Contracts Matter
Interface Contracts Matter
Programming

5 min read


Jul 2, 2019

Go’s wrapped return pattern to clean up objects with background goroutines

Protecting against memory leaks — Problem You have a constructor function that creates an object with a background goroutine. You want the object to garbage collect itself even if people don’t explicitly close it. This isn’t possible since since the background goroutine is always running and pointing to your created object. Solution Wrap the returned object and…

Golang

3 min read

Go’s wrapped return pattern to clean up objects with background goroutines
Go’s wrapped return pattern to clean up objects with background goroutines
Golang

3 min read


Published in The Startup

·May 29, 2019

Design better software abstractions using bipartite composition

Problem You’ve written an object or class. It’s somewhat complex and you want to iterate ways to better abstract your code but are unsure how to start. There exists documentation about what good abstraction looks like, but no concrete iterative steps. Being deep inside your own code can make you blind…

Programming

2 min read

Design better software abstractions using bipartite composition
Design better software abstractions using bipartite composition
Programming

2 min read


Jun 12, 2018

Go’s append is not always thread safe

Problem Example I commonly see bugs appending to slices in Go in a way that is not thread safe. A simple example is the unit tests below. This test has two goroutines append to the same slice. If you run this test with the -race flag, it works just fine. Now…

Golang

3 min read

Go’s append is not always thread safe
Go’s append is not always thread safe
Golang

3 min read


Jan 26, 2018

Using Go 1.10 new trace features to debug an integration test

I had an integration test that was very complex (most are, sadly) and took too long to start. I was able to diagnose why using new features of Go’s 1.10 trace tool. This post describes my workflow and what led me there. The example code I’m using for this post…

Golang

5 min read

Using Go 1.10 new trace features to debug an integration test
Using Go 1.10 new trace features to debug an integration test
Golang

5 min read


Dec 18, 2017

Aspects of a good Go library

A short checklist of what I wish for in a good Go library, in no particular order. This is a companion to the effective go list, Go code review comments list, and Go proverbs list. In general, when given two reasonable ways to do something, defer to the option that…

Golang

6 min read

Golang

6 min read

Jack Lindamood

Jack Lindamood

1.3K Followers

Software Engineer

Following
  • Julie Zhuo

    Julie Zhuo

  • Jimmy Hua

    Jimmy Hua

  • Alex Yakunin

    Alex Yakunin

  • Ryan Browne

    Ryan Browne

  • Vincent Blanchon

    Vincent Blanchon

Help

Status

Writers

Blog

Careers

Privacy

Terms

About

Text to speech