Delivered once every Week. No Spam Ever.

Issue - 22


Worthy Read

If you work on a short-lived, allocation heavy program and care about a tiny (maybe 0.5%) performance improvement, this post is for you.

3 Ways Our Dev Teams Create Velocity with Multi-System Integrations

I have read many blogs, watched talks and gathered all these tips & tricks into a single place. Firstly I would like thank the people who came up with these ideas and shared them with community.

We’ll build a one-value clustered database. Which means, numerous instances of our application will be able to work together. You’ll be able to set or get the value using a REST interface. The value will then shortly be spread across the cluster using the Gossip protocol.

Comparison and subtraction of times observed by time.Now can return incorrect results if the system wall clock is reset bewteen the two observations. We propose to extend the time.Time representation to hold an additional monotonic clock reading for use in those calculations. Among other benefits, this should make it impossible for a basic elapsed time measurement using time.Now and time.Since to report a negative duration or other result not grounded in reality.

A few days ago I had a problem with high CPU usage in one of my Go-based microservices. The microservice has evolved into two distinct components: a HTTP web-app and a batch processing service. At some point, we’ll probably split these out. But in its current guise, we were seeing HTTP request latencies of greater than ten seconds. It turns out that the reason is due to the Go scheduler not scheduling the HTTP receiver thread. Read on to find out why.

9 DBs to choose from, 5 min setup, auto-scaling, Cloud hosted. Free for 30 Days.


Trivial implementation.

Just learned an interesting subtlety about Go. There are two ways to “cast” values. I put cast in quotes because one isn’t really casting but it’s just the general term I always use for saying “change on type to another one”.

Elixir and Go have both grown significantly in popularity over the past few years, and both are often reached for by developers looking for high concurrency solutions. The two languages follow many similar principles, but both have made some core tradeoffs that affect their potential use cases. Let’s compare the two by taking a look at their backgrounds, their programming styles, and how they deal with concurrency.

Download high-resolution images taken by the Himawari 8 satellite. A command line tool written in Go.

In this post I'll quickly investigate a new way to trace a Go program: dynamic tracing with Linux 4.x enhanced BPF. If you search the Internet for Go and BPF, you'll find Go interfaces for using BPF (eg, gobpf). That's not what I'm exploring here: I'm using BPF to instrument a Go program for performance analysis and debugging. If you're new to BPF, I just summarized it at linux.conf.au a couple of weeks ago (youtube, slideshare).

This post will discuss a Creational design pattern Abstract Factory and we will implement it in Golang. There are too many complex definition of Abstract Factory written by very very wide people, but I call my self a normal guy, who just understand the basic language. I will try to explain it in a same way and will implement in Golang.


Projects

wuzz - 13 Stars, 0 Fork
Interactive cli tool for HTTP inspection. Wuzz command line arguments are similar to cURL's arguments, so it can be used to inspect/modify requests copied from the browser's network inspector with the "copy as cURL" feature.

batchputs - 11 Stars, 0 Fork
Super fast batch inserts/updates to sql database, by packing data into sql with the least database roundtrip.

golang-project - 4 Stars, 0 Fork
Defining the good golang architecture. This project is for trying to define the better architecture for golang project. I strongly believe this "Any fool can write code that a computer can understand. Good programmers write code that humans can understand" -Martin Fowler. statement and do the work in same passion. So I have added comments describing my code wherever possible.

mesos-fwgo - 1 Stars, 0 Fork
This is the Apache Mesos framework implemented by Golang