After I have spent a lot of time optimizing the Go deflate compression, I found that a lot of my benchmarks were looking like this: This chart is visualization of a single benchmark. You have the speed up the vertical axis in MB/s. You have the size reduction on the horizontal axis – note that...| defer time.Sleep()
Once you get used to working with gofmt on a daily basis, you want to have it everywhere. I have been writing a good amount of assembler for Go, and I was getting annoyed by not having similar functionality for assembler. This lead to having to manually align and re-align comments. I also often encountered...| defer time.Sleep()
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. For my various packages, I find that I commonly copy+paste my CI tests,...| defer time.Sleep()
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...| defer time.Sleep()
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:...| defer time.Sleep()
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: type Writer struct { prevTail...| defer time.Sleep()
Last week I gave myself the challenge to create something in a week. Not a mockup, but a complete usable solution with documentation and enough tests to make it feel solid. I have been looking at DigitalOcean for some time, and while browsing their documentation I came across a sample script that would help you set...| defer time.Sleep()
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...| defer time.Sleep()
Update 2015: This is a re-post of a 2010 article I wrote for the Rawstudio blog, which at the time of writing is off-line. L1 cache sizes have not changed at all in 5 years. SSE 4.1 is more commonplace for flooring, but SSE2 is still needed for fallback. Intel has gather/scatter instructions on their...| defer time.Sleep()
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…| defer time.Sleep()