Recent posts

RabbitMQ essentials with Go examples

on February 20, 2018

What is RabbitMQ? RabbitMQ is an Erlang-based implementation of AMQP (Advanced Message Queuing Protocol) which is an open standard that defines a protocol for systems to exchange messages. RabbitMQ provides support for the STOMP, MQTT, and HTTP protocols by the means of RabbitMQ plug-ins. Ok, simply speaking it’s a message broker (it accepts and forwards messages). Core Concepts Publishers (Producers) create messages and publish (send) them to a broker server (RabbitMQ).

Continue reading

Bonding wifi and ethernet interfaces

on January 10, 2018

How to aggregate multiple network interfaces into a single logical interface? If you haven’t heard about network bonding - it’s a network setup that allows you to use two or more network devices to act as one interface, giving you expanded bandwidth and some redundancy. Basically you can turn a 1 GiB link into a 2 GiB link for the one virtual interface. Usually it’s used to bond ethernet devices, but let’s try to mix wifi and ethernet.

Continue reading

Distributed system design patterns

on December 27, 2017

How to organize multi-container application Sidecar pattern Let’s start with a single node. It’s a common practice to seperate concerns also on the container levels. One container could act as a static content server, and the other could perform computations. They both exist on the same node and both have access to the same resources - although you may allocate different CPU and memory consumption. Another popular scenario is to have a seperate container that handles logs of the other container as both share the same disk volume.

Continue reading

Multiple git accounts

on October 2, 2017

How to associate different git account to different projects? Let’s say you have two github accounts, one used at work and the other for your own projects but you want to use both from one linux account. You want to work on each project without a need to type in appropriate credentials everytime you push changes. Firstly you need to generate unique ssh keys for each of them:

Continue reading