Programming and Exciting Things

Равносметката за 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".

MySQL usage of new JSON field

Published on 25.12.2015
As a part from my new project, I'm using MySQL JSON field which was introduced in version 5.7, functions are described in https://dev.mysql.com/doc/refman/5.7/en/json-functions.html Creating JSON data is pretty simple like:
As you can see Create Table syntax is same, difference is in `custom_data` JSON . So let's insert some data to it.

And lets assume that we want to filter data in JSON field. Result is:
Or if we want to check existence of sub element:
Result is:
And one more example for extracting value from JSON:

It's look pretty easy, right ? :)