My first impressions about Go language

I am fascinated. Maybe that should be enough, but I guess I have to write a bit more here because we are not on twitter.

I spent a few days to get know Go language, and now I am more than satisfied. I mean, all the project ideas which are floating in my head should be written in Go.

First of all, I have rewritten Mambo-collector to go (https://github.com/banyek/mambo) because I have faced some serious errors when I used it on CentOS 7 – I blame systemd -: If the process was running as root then after a few days of data collecting, killing that process was lead to restart the entire system, which is not a bug, it is a catastrophe. I tried to debug it several ways, but I am not sure where the problem is, it could be at the ‘loghandler’ redirection or any other place in python-daemon, or it is simply there is a buffer inside which overflows – I don’t really care, because mambo was just a proof of concept – what I used in production. I decided to abandon the project, and rewrite it in a language, what is designed for what mambo is: a system process with a high amount of parallel data processing. In the original version, I spawned an os thread for every query which will run (and we know that there is no real multithreading in python because of the global interpreter lock, at the end, building a multithreaded application in python is just an illusion. It is good for helping you to imagine what will happen inside your the computer, but you cannot expect real multithreading. It wasn’t a real problem because I only ran/run a few queries with mambo – replication lag, all processes inside mysql, active processes inside mysql – but if there would be a need to increase the number of queries that could lead to trouble. And it’s needless to say if you have a lot of time.sleep in your program, that is not the wisest use of your CPU resources: if a CPU is sleeping, then you waste resources.I have enough resources to let waste a bit, but it always disturbed me.

At the end, I decided to rewrite mambo in go.

Continue reading “My first impressions about Go language”

Fish shell brace expansion

I mentioned that I use the fish shell, but I would like to share a common problem of mine – well, so far this is the only one I found.

I commonly use commands like this

find . -maxdepth 1 -type d -exec du -sh {} \;

This works great with bash, but in fish, you got the following error message

 du: fts_open: No such file or directory

This happens because fish acts more aggressive on brace expansion than bash. It doesn’t treats it as a part of a command, but tries to expand it – but cannot succeed, because there is nothing.
Simply put that inside apostrophes and the shell will skip the brace expansion.

find . -maxdepth 1 -type d -exec du -sh '{}' \;

Not a big thing, but handy.

My work environment

I was thinking if my work environment would be interesting or not, but I decided ‘yes’ – because I always like reading about others work env.

I am working with Linux/UNIX for more than 15 years now, and I have tried a lot of cool tools, but at the end, I always found myself using the same apps in the terminal.

I like the Unix philosophy about Do One Thing and Do It Well. I never really use big, bloated software, I like to use my editor for editing files, and my git client to use git. That’s simple.

Continue reading “My work environment”

Running multiple instances on the same hardware

Currently, we have one database cluster with 15 different schemas – these schemas could be either schema which contains “real” data, or just schemas with metadata.

I guess the next evolutionary step of our database stack would be to split up the database cluster vertically along these schemas. All the data schemas should be moved to standalone mysql instances and put the metadata schemas next to them. This also could be a good project for prepare to move a certain part of the database for example to a cloud provider while other parts are still kept on bare metal.

Continue reading “Running multiple instances on the same hardware”