“Once a language gets complex enough, programming in it is more like carving out a subset from an infinite sea of features, most of which we’ll never learn. Once a language feels infinite, the costs of adding further features to it are no longer apparent". - [Mark Miller...
Audio visualization is a fascinating topic. We often take it for granted, but sound isn’t visible and only exists over time. In the case of a video stream, you can pick a frame/image and you have a snapshot of the video at this specific time. But you can’t do that wit...
Quick tip to improve the docker build speed using go modules.
Normally, I would do something like this:
FROM golang as builder
ENV GO111MODULE=on
WORKDIR /code
ADD . .
RUN go build -o /app main.go
FROM gcr.io/distroless/base
EXPOSE 8080
WORKDIR /
COPY --from=builder /app /usr/b...
I wanted to set up a high available nats-streaming-server cluster,
but couldn’t find a “quick” guide on how to do it.
In this post I’ll try to write something that would have helped me earlier.
First things first, we have 2 kinds of HA setups for nats-str...
PostgreSQL provides two JSON-related data types that you can use — JSON and JSONB. The principal differences are:
JSON stores an exact copy of the JSON input.
JSONB stores a binary representation of the JSON input. This makes it slower to insert but faster to query. It...
Prelude This is the second post in a three part series that will provide an understanding of the mechanics and semantics behind the garbage collector in Go. This post focuses on how to generate GC traces and interpret them.
Index of the three part series:
Garbage Collection In Go...
This post is a text version of packagemain #6: Building Desktop App in Go using Wails video.
As we all know, Go is mostly used to build APIs, web backends, CLI tools. But what’s interesting is that Go can be used in places we were not expecting to see it.
Prelude This is the first post in a three part series that will provide an understanding of the mechanics and semantics behind the garbage collector in Go. This post focuses on the foundation material on the collector’s semantics.
Index of the three part series:
Garbage Col...
Introduction In my first post on Goroutine Leaks, I mentioned that concurrency is a useful tool but it comes with certain traps that don’t exist in synchronous programs. To continue with this theme, I will introduce a new trap called incomplete work. Incomplete work occurs...