"Exam" by Alberto G.

Travis/AppVeyor CI Script for Go

Continous Integration tests are an important part of maintaining package stability. Since Travis has recently made it possible to run tests on OSX and with AppVeyor having Windows support, we now can create free CI tests for all the major desktop platforms.

"Benson Triplets" by Christopher Allison Photography

Fast Stream Deduplication in Go

This post will introduce the concept of deduplication and a Go package I have written to help you implement it. It is inspired by the work on the zpaq journaling archiver done by Matt Mahoney. If you are looking for a pure commandline tool, I can also recommend SuperRep by Bulat Ziganshin. This will however provide you…

"ahead only" (cc-by-nd) by Terry Freedman

An Async Read-ahead Package for Go

After looking at some rare poor performance in rclone, I have created a package for read-ahead functionality, which I have implemented a few times in different contexts. This gave me the opportunity to create a solid implementation with solid tests to make sure it works with good performance. For the impatient here is the package:…

"Racing down the runway" by Philipp Lücke (cc-by-nc)

The case of the subtle race condition

Yesterday I got a strange race condition reported after I wrote some additional tests for pgzip. At first I couldn’t really work out why I was getting the race reported, and I suspected that the race detector was reporting wrong line numbers. The race reported was boiled down like this:

"Back where I belong" by Carl Jones

Long Windows paths (UNC paths) in Go

Lately I have been working a bit with various backup/file tools written in Go, mainly rclone and restic. I noticed that both of them has issues when dealing with long Windows paths, which is quite unfortunate for backup utilities, so I figured that might be a good thing to cover on my blog. This issue…

"Golang" by Renée French (http://reneefrench.blogspot.com)

Intrinsics in Go

I have written a Discussion Piece about how it could be possible to implement assembler intrinsics in Go based on an experiment I have been working on the past week. The goal of the experiment was to see if intrinsics are feasible within the Go language without breaking the language. It is my impression that…

On the fast lane by taufuuu

Fast Linear Time Gzip/Zip Compression

This is the final chapter in our trilogy of exploring deflate performance. In this I will give a detailed description of how you can get close to constant time compression for gzip/zip and standard deflate running at approximately 150MB/s per core.

"Colorful windows" by Dino Quinzani

How to make your Go Applications easy to port

Go is really well suited for cross-platform work. My main development environment is Windows, but I always deploy to Linux-based systems. Therefore I naturally try to avoid things that will get me into trouble.   My attitude towards cross-platform support is that if you consider yourself a serious developer, your code should at least compile on…

Colors! by Andrew Hart

Gzip Performance for Go Webservers

In our previous performance test, we looked at high throughput compression, suited for log files, map-reduce data, etc. This post will deal with webserver performance, where we will investigate which gzip is best suited for a Go webserver. Update (18 Sept 2015): Level 1 compression has been updated to a faster version, so the difference…

Go gzip/deflate benchmarks

As a continuation of my release of a Optimized gzip/zip packages. I have done some informal benchmarks to get an impression of performance characteristics of the various libraries. I have compiled the results in a spreadsheet you can view yourself. Update (18 Sept 2015): Level 1 compression has been updated to a faster version, so the difference to…