Author Archives: razvan

Common sense laws of programming

Just follow the best practices, not the rules. If you cannot figure out which is the best practice, then just pick the one that is most suitable for your project even if is not the most common.

If you want to build a new API stop thinking how to do it. Already there are thousands of people out there that did the same think. Just pick the most reasonable solution for your needs. I am sure you are not innovating anything if you decide to do a CORBA API just because to be different and so 10 years behind the trend. Or to use Pearl because the CTO of the company liked this 25 years ago.

Continue reading

Upload asynchronously to Amazon S3 using Tornado

TornadoWeb is a great non-blocking web server written in Python and Boto3 is the Amazon Web Services (AWS) SDK for Python, which allows developers to write in a very easy manner software that makes use of Amazon services like S3. Unfortunately boto3 S3 wrapper is blocking and if you would just use it out of the box in a Tornado application it will block the main thread because it uses a synchronous HTTP client.
Continue reading

Deploy cherrymusic using Nginx, Supervisord and Virtualenv on Ubuntu

Cherrymusic is a music streaming server written in python.

We assume the deployment is done in /home/user/


1. Go to the deployment folder and clone the cherrymusic repo

2. Create and enable the virtualenv

3. Test if the cherrymusic server starts and stop it afterwords

4. If you executed this commands under another user than the one under which you want to run cherrymusic

(eg: you ran the commands as root but you want to run under the user user)

5. Edit cherrymusic.conf from the user‘s home and set the basedir with the path where your music collection is stored.
eg: /var/music

Continue reading