Logging without losing money or context.
(26 May 2020)
In order to minimize logging costs, conventional wisdom asks that you filter logs by severity and/or implement sampling.
This article articulates why that may be a bad idea, it then proposes an alternative that loses you neither money nor context and then finally it
presents a proto-type implementation of that alternative.
Build a Go package that annotates errors with stack traces.
(18 November 2019)
This article assumes that you have come to the conclusion that you need stacktraces in your errors.
We are going to build a package that can annotate any errors - including the ones created by the stdlib errors
package - with stack traces.
Understand how celery works by building a
(15 July 2019)
How do Celery, Resque, Sidekiq, among other background task processors
In this blogpost, we figure that out while building our own background task processor one step at a time.
Storing application logs in an SQL database.
It's almost unheard of, these days, to store application logs in a structured datastore.
In this blogpost I propose and implement a logging pipeline that involves storing logs in
How to use any programming language on AWS lambda.
Sometimes you may have a usecase for AWS lambda but the programming language that you are
using is not natively supported by AWS lambda.
But you can still use your favorite programming language with AWS lambda even if it is not natively
In this article, we explore how to do that.
An early peek at Go modules.
(20 July 2018)
In this article, we add versioning to a go package while working outside of GOPATH.
We take a peek into the future of developing in Go, we stumble and we rise.
Migrating a python application to AWS lambda as is; without code
In this article, we will go through an example of how to migrate a python application to AWS lambda.
We will not make any code changes(or re-architect it) to our app in order to migrate it.
Exploring consensus via python.
(24 Mar 2018)
How do you get different computers that are part of a larger cluster to agree on what the value of
We try and answer that question.
We also learn about, CASPaxos, the consensus protocol.
Go Garbage collector and Large maps with pointers.
(25 Jan 2018)
I'm left wondering, shouldn't the Go runtime then not do it for me/you by default?
Anytime the runtime sees a map that is larger than X and the keys to that map contains pointers,
the runtime inlines(for lack of a better term) that map into one whose keys are ints(or whatever) and does
hashing for you without you even noticing.