I originally drafted this article in 2015, when I was managing a production MariaDB Galera cluster for Stockopedia. It’s been gathering dust in my drafts since then. I don’t remember why I didn’t complete it; maybe the subject needed more treatment, maybe I couldn’t find a proper conclusion, or maybe I just lost interest. I don’t know. It’s Jan 2020, I’m finally pushing it out so I can call it done. This article reflects my learning from that period. I have since moved on, both from active duty at Stocko and managing databases in general. The state of the affairs may have improved since, I haven’t kept up. FYI
At Stocko I wear many hats, one involves running a MariaDB Galera cluster as our primary RDBMS. We came to Galera after running a MySQL async replica for a while. Our rationale was to start with what’s built-in, as that is the path of least resistance. In time, we knew we needed a better way to guarantee cluster reliability. After some research, it became clear Galera was the only active, open-source solution that could do multi-master replication.
I’ve just started to get my feet wet with development in Python 3. It was all going great until i needed to
pip install pandas. That broke with weird errors.
A few weeks ago we decided to look for alternative compression formats that we can use as a replacement for gzip. We take several backups of our MySQL & MongoDB data daily, and these are several gigabytes large, compressed. Any improvements on compression would benefit us in two ways :
I haven’t posted anything in here for a while, so i thought i’d post a short snippet until i can think of something more meaty. Here’s a snippet that has helped me whenever I’ve wanted to delete a large number of keys in Redis. Read more
TL;DR In this post I write a small bash script that updates your Git repos in the background. It is completely hands-free, and pops up a desktop notification whenever it syncs up.
At my workplace I commit to 11 different Git repos. And that doesn’t include my open-source work! If you, like me, have several active projects on Github, it’s not possible to remember to keep them updated. Read more
XDebug integration with Netbeans has always been flaky for me. It works one minute, and not the next time round. In this post, I’ve outlined some simple and robust steps to get XDebug working with Netbeans 8 on Ubuntu 14.04.
The command line has been the primary interface for Unixes for over 40 years now. It’s design is reminiscent of it’s terminal roots, and it has remained much the same in form and function for decades now.
The terminal, or shell (as we will call it), is batch oriented, i.e: it runs one command at time. But that’s just one part of it. The shell also supports parallel processing, i.e the ability to run multiple commands, asynchronously from a single script. Parallel processing is an old problem and is supported in various ways. In this article I will explore some solutions in BASH , the ubiquitous shell on Unixes, and talk about the pros and cons of each.
HAProxy is a reliable and high performance load balancer for TCP and HTTP(S) based applications.
There are several detailed tutorials around the web on how to install HAProxy. As is usual of my “Tech Recipe” posts, I’ve boiled those instructions down to the quickest way to have HAProxy installed and running on your Ubuntu machine. You will have a running and configured version of HAProxy 1.5 running in under 2 minutes, and ready to go into production. Read more
RabbitMQ is an implementation of AMQP, the emerging standard for high performance enterprise messaging. The RabbitMQ server is a robust and scalable implementation of an AMQP broker.
I recently had to setup a RabbitMQ cluster from scratch on a brand new Ubuntu 14.04 server. This is easy. Read more
In an earlier post I summarized a series of git commands to work with branches. In this post, I attempt to classify those commands, according to their purpose. My approach in this article is to take a series of common development scenarios using git and see how we can solve them. At the end of the article we will use what we have learnt (and some) to create a couple of useful git aliases.