The Raygun service is made up of many moving parts, each specialized for a particular task. One of these processes is written in Golang and is responsible for desymbolicating iOS crash reports. You don’t need to know what that means, but in short, it takes native iOS crash reports, looks up the relevant dSYM files, and processes them together to produce human readable stack traces.

At one point or another, every developer gets stuck converting a pile of files from one character encoding to another. Go's native character set is UTF-8, and the core Go libraries don't come with tools for converting character sets. However, one of the Go extension libraries makes this easy.

In object-oriented programming, an “interface” is a description of the things an object can do. Usually, this takes the form of a list of methods an object is guaranteed to have. C# and Java both support interfaces, and so does the Go programming language, but Go’s interfaces are especially easy to use.

We all use a lot of packages when constructing our applications, both internally developed and third party packages. This blog post will show how you can easily mock these packages using mockery and stretchr/testify/mock.

Created to serve the need for uploading, downloading and backing up website code for WordPress sites which only support SFTP access. Backup routine saves files to .tar.gz file without intermediate step of saving remote files locally and then tarring that folder. Upload will take configured folders and upload to designated spots in the remote system. Download will do a similar but reversed operation to the upload. Each step is configurable in terms of the local and remote locations to act upon. Integrates with SSH Agent or Pageant (on Windows) for SSH Key-based authentication, but also supports Password authentication as a fallback.

In my previous blog post on using golang in production, I have mentioned that interfaces are my favorite feature in golang.

As a follow-up of this comment, I would like to share how we are using (my current project is also in golang!) the interfaces to keep our code clean and consistent through a series of three blog posts
This blog post series assumes that you are familiar with the basics of interfaces in golang. If would like to know what it brings to the table, I strongly recommend to check out this well-written article by Yan Cui.

Release 0.9 has just been announced (here and here and here) and to me it already looks quite mature and really promising. One key feature is that pipelines can pass not only text but also other data types like lists, maps, or functions.