Programming and Exciting Things

EasyMail Managment interface

Published on 15.02.2017
Last few days I was working on first version of Managment interface for project of my friend "RunEasyMail". In short it is a collection of bash scripts which automates installation and configuration of email server.
My contribution for this is connected with managment part of users and for now is REST API which makes adding/removing users and domains very easy.
More information about project can be found at https://www.runeasymail.com/.
Any suggestions, requests and bug reports are wellcomed for API at https://github.com/runeasymail/ManagementAPI

Равносметката за 2016та

Published on 31.12.2016
Равносметката за тази година може би няма да е толкова лесна колкото очаквах, но за разлика от миналата година, сега се чувствам че съм изпълнил по-голяма част от нещата, които съм планирал за изминалата вече година. Годината беше бурна както в професионален така и в чисто емоционален.
Пътувах доста, надявам се тази година да разширя още повече периметъра си... Италия, идвам :D
Влюбих се, разделих се, преживях доста трудни моменти в личен и емоционален аспект, но имах подкрепата на хората около мен, за което им благодаря от все сърце. Май не съм чак толкова лош човек щом приятелите ми ме търпят все още.
В професионален аспект нещата се стекоха доста благоприятно, имах огромно количество предложения за работа но дори и за мое учудване все още съм в Mansion, даже раста кариерно, май съм уцелил компанията и екипа с който работя. В този контекст искам да благодаря и на всичките ми мениджъри за търпението и вярата в мен, без тяхна помощ шанса да имплементираме Go в prod. среда в такъв бранш би бил немислим.
Какво друго ... а да купих си кола, което от своя страна увеличи пътуванията ми, запознах се с един страхотен човек, който има дейно участие в последните ми разходки по света и у нас и за който се надявам да продължи още дълго време да бъде все така интересна част от живота ми.
Здравословно съм почти добре, ще пропусна тазгодишният ски сезон, но това е дребно неудобство ... просто ще се отдам на СПА :D
Настоящето ... ами то е сложно и продиктувано от прекалена емоционалност, която на моменти пречи на трезвото ми мислене и виждане на очевидни неща, може би се оставям да бъда лъган но все още е рано за да правя заключения.
Може би вече най-важният въпрос е накъде. Имам 2-3 големи идеи които ще се опитам да реализирам, но нека да не издавам все още тайни :) В краткосрочен план искам да затвърдя малко повече знанията си относно някои програмни езици и да дам втори шанс на чистото C++. Въпреки, че към момента съм изключително доволен от избора си да заложа на Go.
Надявам се следващата година да е по-добра, наситена с повече положителни емоции и да съм все така близко до любимите си хора!

Docker redis image

Published on 09.08.2016
From yesterday I'm in process of moving some of my services in new VPS which is based on latest Ubuntu LTS. Some of software that I'm using is "conterized" but not all of them. So moving to new VPS is time to fix that and Redis is first in my list. After quick research I figure out that I preffer to use Phusion base image for Redis also, instead of getting new images :) and because of that I update a little bit original Docker file to: So we can save this in some directory in Dockerfile after that we can user Result will something like: That is :) we can quickly use it with something like Result will be: And woala we have fully functional Redis instance.
Happy codding

Routing specific IP blocks over VPN on MAC OS

Published on 26.07.2016
I have one NAS device at home and I want to access it from office unfortunately default VPN client in MAC OSX doesn't have built in option to specify which traffic to go over current connection, it has only one checkbox which says "Send all traffic over VPN connection" but I don't want to send all traffic over my home router, it's slow and etc.
Probably good option is to use some other VPN clients like "Shimo" but there is other quick and simple solution.
Solution is pretty simple, because I'm using PPTP for VPN which is basically "pppd" program, I can create a script in "/etc/ppp/ip-up" with execution permissions, for example:
And file content can be:

IP address 192.168.89.255 is given by VPN server to me and it's same every time.
When the VPN link drops, those routes are automatically removed.
More examples for ip-up script can be found at
http://www.tldp.org/HOWTO/PPP-HOWTO/x1455.html and https://ppp.samba.org/pppd.html

Implement Android Notification Listener using NotificationListenerService

Published on 01.05.2016
NotificationListenerService was introduced from Android team as part of API 18 (Android 4.3), this class allows an application to receive information from notifications when it's created and removed.
To use it we need to implement 2 callback methods. Both of them have paramether named sbn which is object of StatusBarNotification class.
In this example I will show quickly how to listen notification events with just print them to console.logs
Let's start with creating new Java Class named NotificationService.java with following content:
Also we need to update our Manifest file to include this newly created service.
So basically that is :) Run and enjoy :) Note: User require to enable notification permission from "Settings > Security > Notification access".