One day a client of mine found his websites banned by the Russian govenment’s
censorship. How ban it is? How many users are affected? How to even find it out?
With some help from a number of free (and one cheap) tools, I’ll show you how
to answer this question with a nice data visualisation.

As interface{} is Go’s go-to tool when accepting unknown types in a
function, sometimes we need to work on modify those types. One of the tasks
that comes up fairly often is to modify a field in a structure that was
passed into a function via interface{}-type parameter.

Many tools and libraries which deal with HTTP requests provide means
to dump full request and response data for debug purposes. http package
in Go, by itself, does not provide this capability – but it can be easily
extended with httputil to do so.

Working on moving a large part of data from our database into the offline
storage, I and my team have faced a problem of keeping it gzipped in the
filesystem, but at the same time making it easy to send it for processing
to Elastic Search. The obvious solution was to use Logstash as the middleman,
but it doesn’t really handle archived data from the box.

Let’s see how we can write an input plugin for Logstash to make this process
easy.

In part 1 of
this series we set up a remote image file as the backup storage, with some
extra scripts for easier operations.

Now, let’s move on to actually backing up our data, using ruby backup gem.
I’ll show you today how you can quickly and easily back up your database,
and essential small-to-medium-sized file directories.

One of the most important things when setting up a new application server, especially for a greenfield project on untested hardware, is to make sure you have a solid backup setup to ensure the safety of your data.

Ruby makes it really easy with backup gem, and with some shell scripting we can supplement it to build a really robust and effective backup solution.

Presentation from the talk that I gave at JN Solutions office on April, 2013. Gives an introduction into working with processes and threads in Ruby, together with a deeper look at some underlying differences between various Ruby versions and implementations.