All posts by Anonymous

SSHfix.sh – the small tool I use to enable SSH public/private key login

Post Syndicated from Anonymous original http://deliantech.blogspot.com/2017/11/sshfixsh-small-tool-i-use-to-enable-ssh.html

I am just dropping that here. This is sshfix.sh – a small tool I use to enable SSH login to a remote host.

I use it the same way I use ssh:


./sshfix.sh delian@remote-host

The code:

#!/bin/sh
[ -f ~/.ssh/id_rsa.pub ] || ssh-keygen -t rsa -b 2048; ssh $* “(mkdir -p ~/.ssh; echo \”$(cat ~/.ssh/id_rsa.pub)\” >> ~/.ssh/authorized_keys)”

File deduplication written in bash

Post Syndicated from Anonymous original http://deliantech.blogspot.com/2017/05/file-deduplication-written-in-bash.html

Once there was this guy asking me would I be able to write a file deduplication script in shell.

It is not very hard and it is a curious problem, so I am publishing my code here:

#!/bin/bash
[ ! -d $1 ] && echo “$1 is not a directory! exit” &&  exit 1
cd $1
oldsize=”yyyyy”;oldname=”xxxxx”
find . -type f -ls | awk ‘{ print $7″:”$11 }’ | sort -k 1,1 -n -r | while read line; do
  size=${line%%:*}
  name=${line##:*}
  if [ “$oldsize” == “$size” -a -f “$name” -a -f “$oldname” ] && diff -s “$oldname” “$name”; then
      rm -f “$name”
      ln “$oldname” “$name”
      continue
  fi
  oldsize=”$size”
  oldname=”$name”
done

I am wondering, would it be possible to be made even simpler…

UNIFICli – a CLI tool to manage Ubiquiti’s Unifi Controller

Post Syndicated from Anonymous original http://deliantech.blogspot.com/2017/04/unificli-cli-tool-to-manage-ubiquitis.html

As mentioned earlier, I made a nodejs library interface to the Ubiquiti Unifi Controller’s REST API which is available here – https://github.com/delian/node-unifiapi
Now I am introducing a small, demo, CLI interface, which uses that same library to remotely connect and configure Ubiquiti Unifi Controller (or Ubiquiti UC-CK Cloud Key).
This software is available on GitHub here – https://github.com/delian/unificli and its main goal for me is to be able to test the node-unifiapi library. The calls and parameters are almost 1:1 with the library and this small code provides great example how such tools could be built.
This tool is able to connect to a controller either via direct HTTPS connection or via WebRTC trough Ubiquiti’s Unifi Clould network (they name it SDN). And also you have a command you could use to connect to wireless access point via SSH over WebRTC.
The tool is not completed, neither have any goal. Feel free to fix bugs, extend it with features or provide suggestions. Any help with the development will be appreciated.
Commands can be executed via the cli too:

npm start connectSSH 00:01:02:03:04:05 -l unifikeylocation

node-unifiapi – NodeJS API to access Ubiquiti Unifi Controller API

Post Syndicated from Anonymous original http://deliantech.blogspot.com/2017/03/node-unifiapi-nodejs-api-to-access.html

I have completed the initial rewrite of the PHP based UniFi-API-Browser to JavaScript for NodeJS.
The module and some auto generated documentation with some basic examples is available here:
The supported features includes all of the UniFi-API-Browser calls via the direct REST http calls or via WebRTC (using Ubiquiti Unifi Cloud) as well as SSH access to Unifi Access Points via WebRTC.

КЗП пита защо СМС-ите на кирилица стрували повече отколкото на латиница

Post Syndicated from Anonymous original http://delian.blogspot.com/2017/02/blog-post_9.html

КЗП иска обяснение защо е неграмотна и не разбира как работят кодовите (а не криптиращите) таблици. На операторите им е трудно да отговорят с цензорен език и без препоръка да се върнат в училище.
За другите неграмотни, също обяснявам.
Един СМС предава 160 байта данни. Защо 160 байта е друг въпрос, но не е важно.
СМС-а може да транспортира всичко, от текстови съобщения до системна информация и дори данни. Една от ранните имплементации на WAP протокола е върху SMS.
Какво си предават през СМС изпращача и получателя е без значение за оператора. Той не се интересува от съдържанието на съобщението, нито променя начина по който го предава в зависимост от съдържанието. За да го прави, би му трябвало инфраструктура, която би увеличила цената на обработка на СМС многократно, и следователно и цената за крайните потребители.
Само крайните устройства (терминалите/телефоните) избират как да кодират съобщението и какво му е съдържанието.
Ако крайните устрийства използват Concatenated SMS/EMS (допълнителна информация към вашият текст в смс-а, която казваа как текста е кодиран и дали има свързани в едно малки SMS-и), можете да изпращате текст съдържащ едновременно всякакви знаци от Unicode кодовите таблици, както и съобщения по-дълги от 160 байта, и дори файлове и картинки. Те просто се разбиват на съобщения от по 160 байта, в които се слага header, който казва как са кодирани знаците и данните вътре, и на как няколкото SMS-а може да са свързани.
Това не е избор на оператора, отново това е конфигурация и избор на телефонният апарат. 
Tелефонният апарат би декодирал байтовете в СМС-а до текст, в зависимост от кодовата си таблица по подразбиране.
И сега, когато изпращате нещо на кирилица, се използва (отново избор на телефоните е, а не на операторите, но за да имате съвместимост този избор трябва да е еднакъв и от двата комуникиращи си телефона, и за това ако променяте настройките може и да не ви разбере получателя) типично UTF-8 кодова таблица. Тоест латинските знаци се предават с 1 байт, но кирилцата, гръцките знаци, и разширените латински знаци, и китайските знаци и математическите символи и т.н. се предават с 2 байта.
Тоест ако пишете СМС само на латиница, може и да имате 160 знака, но ако пишете само с кирилски букви, ще имате 80 знака в съобщение.
Ако добавите EMS/Concatenated SMS (който се включва автоматично, в момента в който напишете по-дълъг текст, на латиница над 160 знака, на кирилица около 80-тина знака), той ще раздели съобщението ви на малки смс-и, и ще добави във всяко едно допълнителен хеадър, с който ще идентифицира например е тези смс-и съставляват едно съобщение и в какъв ред са те.
Тоест, ако напишете текст с 160 латински знака, той ще заеме точно един СМС за да бъде транспортиран.
Но ако напишете текст с 160 кирилски знака, той ще заеме 3 (ТРИ!) СМС-а за да бъде транспортиран. Причината е, че ви трябва минимум 8 байта хеадър за Concatenated SMS, и следователно можете да пренесете само 72 знака в един SMS. Тоест ще ви трябва един SMS за първите 76 знака, един за вторите 76 знака и един за третите 8 знака.
Така реално ще ползвате 3 смс-а и съответно ще платите 3.
А защо кирилицата се кодира с 2 байта а не с 1, обвинявайте тия дето са измислили компюторите, че не са знаели и ползвали всекидневно кирилца.

Дори и не искам да коментирам по същество, защо КЗП се занимава с глупости, от които няма техническа полза за гражданите. В момента над 80% от договорите за мобилни услуги в страната на практика включват неограничено количество СМС-и, и въпреки това средното количество СМС-и, които гражданите изпращат на месец намалява с всеки изминал ден и слиза стабилно под 30-40, половината от които реклами и системни съобщения. За пример преди 10г средното количество СМС-и на абонат бе 3-4 пъти по-голямо. СМС е мъртва услуга, защото е заменена от по ефективни (и предаващи много по големи и мултимедийно богати) услуги работещи върху данни (Skype, Viber, Facebook messenger, Yahoo messenger, Whatsapp, Snapchat, Google Hangouts/Duo/Allo, etc).
Заради ниската употреба на тази услуга, се обмисля на европейско ниво тя да бъде извадена извън системните услуги (тоест да не е задължителна, за да си получаваш например роаминг смс-а). И отново заради ниската и употреба операторите я таксуват на фиксирана такса. Където вече няма значение каква е цената на един СМС (тя е нула) и колко СМС-а са нужни за да напише някой псувня на български.
А усилията на КЗП да вдига патриотичен шум в предизборно време около безсмислена активност, от която реално няма много хора, да могат да се възползват, е изключително интересна

Малко за новият Skype

Post Syndicated from Anonymous original http://delian.blogspot.com/2017/02/skype.html

Новият Скайп е много интересен. По същество е написан изцяло на JavaScript върху Electron (по подобие на Viber за някой платформи) и използва XMPP за комуникация (вероятно върху WebSockets wss). Аудиото и видеото са имплементирани през WebRTC използвайки стандартни кодеци (за електрон), и си е буквално едно WWW приложение. Единственото допълнение, е Conference Mixer плъгин за елекетрон. Всъщност ако ползвате Skype за Web те почти сигурно споделят основната част от кода си.
Мрежата отзад е майкрософтският CDN, като като за бакенд вероятно използва опростен messaging bus и някакъв сторидж за информацията (подозирам стандартни за Azure, за да може да ползва CDN-а).
Вече няма нищо общо с оригиналният скайп, нито като архитектура, нито като инфраструктура.
Връзката със старата мрежа е вероятно с Bridge някъде, но тя постепенно се спира. Skype за MAC и Skype за Windows вече използват само новият модел (старите вече не се поддържат от тази седмица за тези платформи), както и Skype за всички мобилни платформи.
Само Skype за Линукс (този, който не е новата Alpha) е останал да ползва старата мрежа, но Bridge е в толкова ужасно състояние, че не се получават доста от съобщенията и има много проблеми.
Архитектурата на новият Скайп е много подобна на тази на Lync от едно време (само че той бе базиран на IE).
Когато Microsoft казваха на времето, че ще обединят Skype и Lync, аз си мислех, че ще убият Lync и ще мигрират клиентите към Skype. Те обаче са имали предвид обратното.

Не разбирам защо вярващите отричат науката

Post Syndicated from Anonymous original http://delian.blogspot.com/2017/02/blog-post.html

Опитвам се да разбера каква е най-простата дефиниция на абсолютичният бог, и единственото, което остава, е че това е съществото, което е създало светът. Защото, ако не отговаря на това условие, престава да бъде абсолютично. Разбира се, отново увисва въпросът кой и как е създал бог, но да се абстрахираме от този парадокс за момента.

Това, което не разбирам е, масовото желание за отричане на науката от тези, които вярват в религии с абсолютични божества (грубо, предимно секти принадлежащи на ехнатонската група, стари египедски вярвания, еврейските религии, християнство, мюсюлманство и производни секти).

Науката е просто инструмент за изучаване на светът около нас, създавайки предположения, които предвиждат бъдещето с вероятности от минимум 3 сигма (типично за по-точните науки, 6+ сигма), тоест точност по-висока от 99.7% (при 6 сигма, точността е над 99.99966%).

Науката не отрича нито признава Бог, тя просто няма отношение към него.

Единственият конфликт между науката и религиите, е в догми свързани с религиите, които не отговарят на истината измерена от науката с описаната точност, или пък твърдения, които не са следствие извлечено по научен метод.

Бог не е доказан по научен метод (тоест няма нито едно предположение, и нито един експеримент, който да предполага единствено и само съществуването на бог, и който да е доказан с повтаряемост определяща го за истина, извън рамките на статистическата грешка).

Това не значи, че бог не съществува, нито че съществува. Просто всичко, което знаем за светът и вселената може да бъде обяснено отлично и без бог.

Обаче в религиозните догми, и теологията, както и в свещенните книги, съществуват тези, които са или абсолютно невярни или неподлежащи на проверка.

И точно тук е основният конфлукт между религиозните авторитети и науката.

Защото науката може и да няма отношение към бог, но има отношение към някой религиозни догми, от които произлиза религиозната власт на религиозните авторитети. И тяхното решение е, вместо да ревизиртат догмите, да отрекат науката, защото тя може да постави в риск религиозната им власт.

Но това поставя в интересен конфликт вярващият, към какво трябва да се насочи той – към науката или религиозните авторитети отричащи я, дори и да си остане вярващ.

И това ме връща към началото на разсъждението.

Ако бог е създал светът, то всяко нещо около нас, всеки предмет, всяко листенце, всеки атом, всеки физичен закон е написан и направен от него.

И това е проверимо по научен път от всеки, без да се налага да вярва на доверие в някой друг, чрез експерименти и обяснения, по пътят на научната логика, които можеш да извършиш сам по всяко време и на всякъде.

А свещенните книги дефиниращи религиозните авторитети са писани от хора. Дори да предположим, че бог е комуникирал с тези хора, от една страна имаме директното творение на бог – светът, изучаван от науката, което е безкрайно проверимо и предвидимо, а от друга страна имаме твърдения писани от хора по твърдение индиректно произлизащи от бог, които влизат в конфликт с проверимите преки творения на бог.

При това положение, очевидният извод би бил, че при конфликт грешката е в човешката интерпретация и поддържащите я религиозните авторитети.

Което ме връща в началото на расъждението, чудейки се, защо вярващите предпочитат да вярват, вместо да проверяват вярата си. Самата вяра, ако е вярна, би трябвало да може да издържи всяка проверка, нали? Все пак вярата на Исус е била проверена от дявола три дни в пустинята.

Лидерът на румънските социалисти казал…

Post Syndicated from Anonymous original http://delian.blogspot.com/2017/02/blog-post_42.html

Лидерът на румънските социалисти казал, че едва удържал натиска от регионални структури да докарат с влак милиони поддръжници на правителството в Букурещ за контра протест 🙂 Вероятно полицията ще ги води за ръчичка от гарата до местният Орлов Мост да не вземат да се отклонят до моловете, и там те ще се наслаждават на страстна целувка между коалиционните партньори 🙂 Социалистите по цял свят са еднакви

В Румъния вече са на тема #оставка

Post Syndicated from Anonymous original http://delian.blogspot.com/2017/02/blog-post_14.html

В Румъния вече са на тема #Оставка заради това колко дълго правителството защитава извънредният си таен нощен акт. Социалисти тролове викат – защо, нали ви дадохме каквото искате (още не са, обещали са да махнат акта някак си в понеделник)? Недейте да разделяте нацията, милиони от която са съгласни с този акт (който по същество спасява лидера на социалистите обвинен в корупция). Въобще, социалистите по цял свят са еднакви.
Още по интересното е, че идеята за отмяна на акта преди да е влязъл в сила е точно толкова юридически спорна колкото отмяната на решението на НС за избора на Пеевски, за да не се налага той да подава оставка и да си остане депутат. Толкова съвпадения

Похвално за БСП конгресът

Post Syndicated from Anonymous original http://delian.blogspot.com/2017/02/blog-post_5.html

От една страна похвално решение за пряк избор на ръководството и ограничение на мандатите до 3 на депутатите от БСП. Но без поддръжка в другите партии, това ще превърне депутатите в туристи. Божидар Димитров, Лупи, Първанов, Бисеров и Цонев ще им разкажат как се прави

БСП имала идея от къде щяла да вземе този път пари

Post Syndicated from Anonymous original http://delian.blogspot.com/2017/02/blog-post_6.html

Стефан Данаилов казал, че за пръв път БСП имала идея в програмата си от къде ще вземе парите за обещанията си. Спешно трябва да я прочета, че сигурно се канят да ги вземат от мен

Не ми излизат сметките…

Post Syndicated from Anonymous original http://delian.blogspot.com/2017/02/blog-post_4.html

За да постигне БСП “след 30г” обещаните днес 8 милиона души, без миграция, трябва да увеличи раждаемостта над 100к годишно още тази година. Сметката е проста 8 мил / 78г очаквана продължителност на живота + време за натрупване (което интересно е точно 30г). Официалната раждаемост е 65% от нужната

Private Properties with JavaScript (prototypes)

Post Syndicated from Anonymous original http://deliantech.blogspot.com/2017/01/private-properties-with-javascript.html

Some are saying that JavaScript does not have private properties with prototypes and it is not like TypeScript or Python.
However, that is not fully correct, especially with this comparison.
Python doesn’t have anything private. All the scopes are globally addressable and all the variables, properties and methods are accessible globally (as long as you know the scope path, which could be easily traced from within the software itself).
TypeScript is just a pre-processor. It will do extra semantic checks during compilation, but no enforcement of anything on runtime. 
However, it is generally untrue that you have no private properties available in JavaScript.
You do have scope inheritance and you don’t have global access to any scope from outside. Therefore you can make private properties easily.
For example, if you have:
function F1() {
  var XXX = 0;
  return function () {
     return XXX;
  }
}
F1()() will respond with the value of XXX but there is no way to access XXX from outside.
So what about prototyping?
You can do this there too.
function F1() {
  var XXX = ‘yyy’; // Private property
  function F1() {
     // You constructor is here
     this.YYY = ‘xxx’; // public property
  }
  F1.prototype.method1 = function() {
    return XXX + this.YYY;
  }
  return new F1();
}
Then if you do:
x = F1();
or
x = new F1();  // Both works the same way
and check:
console.log(x.YYY); // output ‘xxx’
console.log(x.XXX); // output Error
console.log(x.method1()); // output ‘yyyxxx’
So everything works! You have prototyping with private and public properties.
The same way you can do private and public methods.
The only thing that will not work with this method is instanceof
x instanceof F1 will respond with false, because x is not an instance of the upper F1, but the inner F1

The current ES6 standard have classes, but they are essentially a wrapper on top of prototype. So this technique still apply. Additionally with Object.defineProperty you could apply extra protection on top of a property.

There is another approach to the problem. Without prototypes.


function F1() {
  if (!this instanceof F1) return; // Protect against global scope polution
  var XXX = ‘yyy’; // Private property
  this.YYY = ‘xxx’; // Public property
  function PrivateMethod() {
    return XXX + this.YYY;
  }
  this.method1 = function() {
    return PrivateMethod();
  }
}

With the shown above approach you have both private and public methods and properties, with workable instanceof

Python UniFI API for management of Ubiquity UniFI infrastructure

Post Syndicated from Anonymous original http://deliantech.blogspot.com/2017/01/python-unifi-api-for-management-of.html

I am porting to Python the UniFi Browser API (PHP) which could be used to manage the UniFI AP infrastructure from external application to the UniCK Controller.
The port is completed, however, the work is ongoing, the API is updated (adding new calls and support for HotSpot 2.0) and changes may happen.
Documentation will come a bit later, but I guess the code is self explanatory.
For those who are interested, you could find it here:

Защо не ми харесва идеята на Горанов да превърне индивидуалните партиди в общи

Post Syndicated from Anonymous original http://delian.blogspot.com/2016/04/blog-post_25.html

Защо не ми харесват предложените промени на Горанов за вторият пенсионен
стълб (http://www.dnevnik.bg/biznes/finansi/2016/04/25/2749044_goranov_za_vtorata_pensiia_moje_da_se_naloji_decata_da/).
Държавната пенсия (първи стълб) се формира по солидарен модел. Сегашните
работещи правят плащания в общ пул, от който се плащат пенсиите на сегашните
пенсионери. Често пенсионерите разсъждават грешно, че получават пенсията си, от
парите, които са си внасяли когато са работили. Не, те тогава са плащали
пенсиите на тогавашните пенсионери. И сега получават пенсията си от сегашните
работещи. Когато приходите не достигат, държавата доплаща (тоест преразпределят
се пари от другите данъци на сегашните работещи и се допълва пенсията).
Естествено, в рамките на възможностите на държавата, които са пропорционални на
броят на работещите (когато работещите намаляват, няма как този модел да
гарантира високи пенсии, те също намаляват). Това е класическият солидарен
модел. Той не гарантира висока пенсия. Той не гарантира пенсията ти да е
пропорционална на вноската ти, докато си бил работещ. Той гарантира само
преразпределение на малък дял от текущият пул от постъпващи пари, съгласно твоята
заслуга, така както тя е оценена към момента от държавата. Технически твоите
деца (и другите деца) ти плащат пенсията.
И тъй като държавата не е добър управител на пари (обича повече да харчи,
отколкото да изкарва), у нас бе въведен втори пенсионен стълб по холандски
модел. Част от вноската на гражданите отива в частни пенсионни фондове, които
инвестират парите на гражданите, под контрола на КФН и по идея трябва да докарат
по-голяма доходност. Пенсията от тези фондове се очаква в добри времена да
нараства по-бързо от държавната, но си носи и риска напълно да бъде загубена
(ако фонда фалира от грешно управление, и не упражнен контрол – виж КФН).
Не се предполага, втората пенсия да е до живот. Ако парите в партидата привършат,
просто спираш да я получаваш. Пенсията от него, не е и гарантирана (виж фалит
на фонда). Нито има гарантиран размер, по висок от този на вноските, които си
правил. Тоест вторият стълб е рисково вложение. За това и гражданите трябва да
си избират фондовете умно, и да знаят че при грешен избор, носят повишен риск.
Ползите обаче са – при добър избор, пенсията вероятно ще расте повече от държавната
(освен ако няма държавен популизъм, който да преразпределя данъци с по-голяма
скорост на нарастване, отколкото е икономическият растеж на държавата).
Пенсията е индивидуална, тоест получаваш колкото си вложил. Ако си вложил
малко, получаваш малко, ако си вложил много, получаваш много (все едно си си
държал парите в банка на много дългосрочен влог). Ако парите ти свършат,
получаваш нищо (остава ти само гарантираният държавен стълб), ако починеш преди
парите ти да свършат, наследниците ти ги получават (както би станало и с
дългосрочен влог). Ако икономиката се е развивала добре, пенсионният фонд е
инвестирал умно, ще получиш лихва по-голяма отколкото би получил в банка,
съизмерима и дори по-висока от икономическият растеж на държавата, повече
отколкото при честно преразпределение и равни условия, държавата би могла да ти
осигури (и се доказва много лесно математически).
Възможно е, фондовете да управляват парите ти лошо. Да ги инвестират в яхти
или собственост на собствениците си (с което собствениците да си купуват за
себе си неща с твоите пари). Тогава ти губиш, защото част от потенциалният ти
растеж на вложението ти, се е превърнал в частна собственост на трети страни,
на които си се доверил да управляват парите ти. Тук обаче, това е проблем,
който се предполага да се проследява и проконтролира от КФН. Ако ти като
гражданин имаш съмнения, имаш правото да си смениш фонда (на всеки 2г). Колкото
по-рано, толкова по-добре.
Сега обаче идва идеята за реформата на Горанов.
Той се притеснява, че:
       КФН не си е вършила работата, и за това
много фондове са кухи и нямат никакви пари, или парите им са в собственост на
собствениците, или не са ликвидни (в хотел, който не може да се продаде за да
се плащат пенсии). Мавродиев обаче е невинен
       Горанов се притеснява от това, че някой
граждани може да се оплачат, че ще получават малка пенсия от вторият стълб,
защото (1) са влагали малко пари (за това са си виновни те но нека и припомним,
че за това е виновна и държавата, защото не позволи увеличаването на вноската
към частните фондове, според първоначалният план и те никога не получиха
парите, които се очакваше, че е трябвало да получат) и защото фондовете не са
управлявали парите достатъчно добре (2) понеже КФН не ги е надзиравала добре
(много е важно да се отбележи, че Мавродиев е невинен!)
       Горанов се притеснява, че някой граждани
ще бъдат недоволни, задето след известно време няма да получават пари от
пенсията си по вторият стълб (а само от първият), понеже живеят по дълго
отколкото пенсионният фонд е предвидил
       Горанов се и притеснява, че пенсиите от първият
стълб (държавните) са достигнали критичното число, като държавен разход, което
държавата може да си позволи, и дефицита на НОИ технически само нараства.
Последните реформи (на Калфин) създават само временно намаляване на дефицита,
но е лесно да се види как той никога няма да стане нула и от един момент отново
ще продължи да нараства
Предложението на Горанов за решение на притесненията му е, парите натрупани
от частните пенсионни фондове да бъдат обединени в общ пул, от който да се
изплащат пенсиите на всички.
Тоест партидите престават да бъдат индивидуални, а стават общи. Така:
       Ако КФН не си е свършила работата
(Мавродиев е невинен!), гражданите може и да не разберат веднага, защото ако
поне един фонд си е свършил работата, то той ще плаща и за тези, които не са.
Тоест КФН ще продължава по този добър начин, а фондовете инвестиращи в собственост
на собствениците си, също, тъй като ликвидният проблем ще бъде прикрит от
общият пул (също като проблемите с ликвидността на НОИ или фонда за защита на
влоговете, които купуват държавни облигации и технически нямат ликвидни пари)
       Този, който живее по-малко, ще плаща
пенсията на тези, които живеят по-дълго
       Тъй като няма да има индивидуални партиди
(влогове) по които да се определя, кой колко пари е натрупал, пенсията няма да
се плаща според това какво си вложил, а ще се плаща според това какво някой
(например невинният Мавродиев в консултация с Министерството на Финансите и
Горанов) е преценил че заслужаваш (и колко е преценил, че си заслужил да
живееш). Технически, вторият стълб се превръща в НОИ и започва да копира
неговият модел
       Частните пенсионни фондове просто се
превръщат технически в инвестиционни посредници, без конкуренция по между им (всичко
което направят отива в общият пул) и без своя печалба. Тоест техният интерес се
принуждава (не че до сега не е бил, виж КФН и невинният Мавродиев) да бъде единствено
и само на кого да бутнат пари, а не колко да изкарат за вложителите и за себе
си.
И тъй като форсирайки фондовете да плащат пенсии като НОИ, по заслуга (а не
стойност с натрупване), то вторият стълб се превръща във второ НОИ, с държавно
управление на разхода (КФН и наредби от МФ), но с частни инвестиционни
посредници, които поради това, че са освободени напълно от отговорност, стават
заинтересовани да правят далавери, и след известен бум на далаверите, идва
третият вероятно интерес на Горанов – просто да национализира НОИ 2 при
натрупаното обществено недоволство и да го събере с НОИ 1 и временно да си реши
проблема с нарастващият дефицит, нещо което Дянков опита веднъж, и Горанов
опита веднъж (вадят им очите парите натрупани в частните сметки в банките, и
индивидуалните партиди в пенсионните фондове).
Това предложение вероятно се прави тактически, преди да минат стрес тестовете
на фондовете, за да мине по-лесно покрай стреса, който ще се появи след това
(когато се обявят стресиращите резултати). Защото всички очакваме много
проблеми и дори можем и да залагаме, къде точно ще се появят те. Важно е да
отбележа, че въобще не искам да намекна каквато и да е вина на Мавродиев.
Мавродиев е невинен!
Ясно е, че трябват отговори на следните въпроси:
       Какво да се прави, ако даден фонд е без реална
ликвидност? Безспорно е, че трябва да има някаква форма на защитен механизъм
като при банките. Но също така да се знае, че той само ще гарантира определен
минимум, който в основата си е гарантиран от пенсията по първи стълб. Това че
КФН не си върши работата, или законодателят не и е дал достатъчно механизми за
това, не значи, че механизма и идеята да се комбинира споделена (първи стълб) и
индивидуална партида (втори стълб) е лош. Трябва да се решават конкретните
проблеми конкретно, а не да се прави фундаментална промяна с дву (или едно)
стъпкова национализация, която временно да прикрие проблемите. Разбирам страха на Горанов от потенциално КТБ на пенсионните фондове, и новите дългове за бюджета, които то може да донесе. Но държавата и специално Горанов са участвали в избора на ръководството и в създаването на правилата на КФН и трябва да могат да си носят политическата отговорност. А разхода, ще го преглътнем като КТБ, стига да знаем, че причините за проявата му са поправени и няма да се появяват пак. Горанов, Мавродиев е невинен!
       Какво да се прави, за хората които
получават по-малко отколкото са очаквали? Аз знам нещо за себе си, колкото и да
получавам е все по-малко отколкото очаквам. За да бъдат активни хората в
управлението на парите си, и полагането на контрол, и да имат коректни
очаквания, те трябва да носят известен риск но и известен механизъм да
упражняват контрол. За момента държавата се е погрижила да носят само риск. Но
вместо да им даде механизъм за контрол, тя им предлага размазване и
разпределение на риска между всички
       Какво да се дава на хората, които живеят
по-дълго отколкото фонда е очаквал – това е проблем и на фонда, но и на
държавата (определяща пенсионните правила). Логично е, фонда да плаща, колкото
пари има по индивидуалната партида. Ако те свършат, защото някой живее по-дълго,
държавата (която е виновна в определянето на пенсионните правила) би трябвало
да носи отговорност, и тя трябва да награждава живеещите по-дълго, с пенсия
дълголетие (идваща да речем след 70 годишна възраст) чиято идея ще е да
компенсира (частично) пенсията изчезнала от частният пенсионен фонд.

И да не забравяме, Мавродиев е невинен!

Граждански дълг да гласуваш

Post Syndicated from Anonymous original http://delian.blogspot.com/2016/04/blog-post.html

Аз съм против задължителното гласуване, поради цял ред морални и технически
причини, които дългогодишно съм излагал в моят блог.
Току що, парламента прие в ИК нещо, което публично се определя като
задължително гласуване, но в действителност не е нито риба нито рак.
Доколкото разбирам, гласуването се превръща в “граждански дълг”. Тоест ти
имаш дълг като гражданин, но не задължение. Интересна подборка на думи, с която
хем да изглежда задължително, хем да не е реално (за да не падне на КС), и да е
препоръчително. Ако не гласуваш, не следват последствия (иначе, не че и сега не
може, може би паднало на КС, защото гласуването в конституцията е право, а не
задължение, макар че знае ли човек, КС има противоречива практика по отношение
на превръщане на права в задължения, като например с решенията си за здравните
вноски), освен че биваш отписан от списъка за гласуване на следващите избори.
Което не е точно формално ограничение, тъй като можеш да се запишеш отново (но
трябва да станеш проактивен, сам трябва да отидеш да се запишеш, в определен
ограничителен тесен срок преди избори). Така избирателните списъци ще се
прочистят по същество от тези, които са систематично възпрепятствани да
гласуват (умрели, болни, намиращи се в чужбина където държавата не иска да
отваря избирателни секции, не желаещи да гласуват). Парламентът е отхвърлил и
предложението на ДПС, всеки български гражданин да има гарантирано право да
гласува (тоест тези, които желаят да гласуват, да могат да го направят – държавата
да е задължена да осигури механизъм за да може да гласува всеки желаещ
гражданин, в страната или чужбина). Липсата на гарантираност на правото да
гласува в комбинация с отписване от списъците за негласувалите (тоест
затрудняване на бъдещото им гласуване), създава потенциален механизъм държавата
да може избирателно да отписва (и отказва гласуване) на определени хора, чрез
простото не създаване на удобства за тях – например не откриване на секции в
чужбина или в страната (оправдано, за да пести пари, или чрез прекомерни и
неравностойни изисквания за откриването им), ограничавайки достъпа им до
гласуване (няма електронен вот например), или просто затруднявайки ги (например
въвеждане на уседналост, по стари регистрации) така че да превърне гласуването в
скъпо удоволствие, което би принудило с времето все по-големи и по-големи групи
да се извадят от вота обезверени, и да останат да се мерят само твърдите ядра
между партиите. За мен изборният кодекс е сякаш моделиран в посока да се
отфилтрира “случайният вот” (вота от хората, които не са твърди ядра на някоя
партия), който представлява 70% от вота у нас, и е почти 90% от тези, които
системно не гласуват. При запазване на този ИК, в няколко години ще останат
само твърдите почитатели (или редовно мотивираните) на няколко системни партии,
а “изненадите” ще бъдат сведени до минимум. Другата опция е, отново още на
следващите избори този ИК да се промени в обратната крайност, и “добри идеи”
реализирани ужасно лошо, да бъдат заменени с още по лошо реализирани други “добри
идеи”. Въобще ИК, който навява всичко друго, но не и “стабилност”.

По повод внесеният в деловодството на НС закон за електронното гласуване

Post Syndicated from Anonymous original http://delian.blogspot.com/2015/11/blog-post_12.html

Не съм чел още предложението на РБ за електронно гласуване. Но по това, което чувам, то не е добро.
Аз подкрепям електронното гласуване, но смятам, че:
– В закон не трябва да има технически детайли, а само административна процедура
– Всеки закон, особено този, трябва да е преминал през сериозно и продължително публично обсъждане, а не да се внася бързо и изненадващо
– Закона трябва изрично да иска софтуера на кода, процесите и алгоритмите да бъдат публикувани поне 6 месеца преди провеждане на избори с тях, за да могат да бъдат изследвани и тествани от гражданите и изследователи на сигурност
– По един такъв закон (всъщност по всеки закон) трябва да бъде постигнато едно минимално ниво на обществен консенсус (общественият консенсус в полза на електронното гласуване е безспорен, но този в полза на този конкретно закон е доста спорен)
Смятам, че така претупан и подаден, такъв закон няма да бъде в полза на електронното гласуване, а напротив, гарантирано ще докара някоя издънка, било то ПР, парламентарна или имплементационна, и с това значително ще навреди, вместо да помогне на реализацията на идеята.
Бих разбрал нетърпението на РБ и опитите им хващане на обществен интерес, или бъдещи дивиденти (ние бяхме за, другите против), но действията им не смятам, че са в полза на електронното гласуване.

Емоционално за електронното гласуване

Post Syndicated from Anonymous original http://delian.blogspot.com/2015/10/blog-post.html

След като написах моите опорни точки защо смятам да гласувам ЗА на референдума за електронно гласуване, и след като се опитах да напиша една техническа идея как той може да бъде реализиран без да се налага дори промяна на конституцията (какъвто бе оригиналният смисъл на тройката референдуми, от която НС остави само този) влизах в много дискусии за или против електронното гласуване.
Повечето хора, които искат да дискутират с мен, са предварително настроени да гласуват против. Предполагам настроените да гласуват за не смятат, че имат нужда от повече убеждение.
В този смисъл коментара ми в този текст е насочен и движен от дискусиите с приятелите и познатите ми, които са предварително настроени да гласуват против.


Аз разделям потенциалните проблеми на три основни групи –
  • Технически. Които са най лесните, защото са решими. Техническите проблеми не включват само технологията, а процедурите по изпълнение, законодателните и юридически промени. Те са напълно решими. До сега, не съм чул един не решим технически проблем не само за електронното гласуване, но и принципно за който и да е проблем. Това е хубавото на техническите проблеми – те са по дефиниция винаги решими.
  • Принципни – това са проблеми свързани с естеството на дискутираният проблем, които нямат ясно или видимо решение. Това не значи, че са нерешими, а че не знаем как да го направим в момента. Тук може да има и нерешими проблеми. Аз лично обаче не съм чул такива до сега, свързани с дистанционното електронно гласуване. Много хора бъркат технически проблеми за принципни, представят ги като такива и после в дискусията откриваме, че това е по същество технически (и решим) проблем.
  • Емоционални предубеждения – проблеми не свързани с темата, но емоционално влияещи върху нея, които хората представят като принципни или технически проблеми на темата. Често чувам технически проблем да се примесва с емоционално предубеждение и след това да се представя за принципен и нерешим проблем. Но е много лесно от страни да се види, че техническата част е решима, принципен проблем няма, просто има емоционално предубеждение.


Много е трудно да се бори човек с емоционалните предубеждения. Аз лично кътам доста в себе си, и когато някой изкаже нещо, което съвпада с моите, съм много по склонен като две ревящи жени над чаша вино, да лея сълзи и сополи и да подкрепям, отколкото да вниквам в ситуацията по същество. И въпреки това, мозъкът ми казва да гласувам положително за дистанционното електронно гласуване. Защото то подкрепя моите лични цели, свързани с моят живот и промяната на средата около мен.
А именно:
  • Аз смятам че тази дискусия за дистанционното гласуване трябва да започне най сетне по същество. Тя идва и си тръгва на 4-5 години от ефира, но остава само там. Спомням си “обществените обсъждания” сред приятели, на Изборният Кодекс на Манолова, където електронното гласуване дори не бе допуснато на обсъждане. Щеше ли да има нужда от референдум за електронното гласуване, ако политическата каста желаеше да го обсъжда по същество? Референдума е тук, и той може да бъде едно добро основание да преминем на следващата фаза – дискусията.
    Някой хора според мен погрешно смятат, че ако бъде успешен Референдума, това означава победа и задължително въвеждане на електронно гласуване. Българският закон за референдумите е много странен, но най вече той не задължава никой с нищо. Липсата на задължение е видна още в член 9 от закона. Ако референдума излезе със задължаващ резултат, той задължава да приеме АКТ (което може да е всичко, например обещание да се изпълни работата след 100г, или решение да не се прави. Законодателят се е опитал да си спести изричното описание на всички възможни случаи какво трябва да приеме НС, но крайният ефект е свободно тълкуване) в рамките на 3 месеца, но още точка 7 веднага изследва хипотезата какво става ако НС не направи нищо и не приеме акт (което прави тази хипотеза напълно допустима). Ако НС не приеме АКТ навреме и референдума е ПРОТИВ точка от съществуващото законодателство, тя спира да работи веднага. Но ако НС не приеме АКТ а референдума изисква от НС да направи нещо (както е хипотезата на този референдум) то не следва нищо. Тоест, без значение от резултатите от референдума – положителен и задължителен, положителен, отрицателен, не е задължително да последва нищо. Няма да коментирам пред-референдумното ударно вдигане на прага до невъзможност за считане за валидност. Но все пак за мен положителен резултат от референдума би бил достатъчно добър натиск за започване на дискусията по същество.
  • Аз смятам, че България трябва да бъде отворена държава, противно на мнението на много, че трябва да се затваря. Между 16 и 20% от българчетата се раждат в чужбина, и ние имаме стабилен емигрантски тренд основно сред най младото население от 3.56 души на 1000. Това са всъщност 25000 души годишно. Официално. Най вероятно числото е двойно, защото се отчитат само тези, които са обявили пред институциите миграцията си (гражданство, обява пред ЕСГРАОН, обява пред НЗОК, не преиздаване на паспорти и други). Три четвърти от мигрантите запазват българското си гражданство (защото са в ЕС). Лесно можем да сметнем, че ако тенденцията се запази, в рамките на 20 години 25% от Българите ще се раждат в чужбина. Това е всеки 4-ти Българин. Единственият начин да запазим националноста си, е да игнорираме всякакви тръшкания и да приемем, че българите няма да бъдат единствено и само на тероторията на България, и трябва да положим усилия да останат свързани по между си, и със страната, културно (тук изключвам чалгата) и административно. Последното означава рязко свиване на всички административни взаимоотношения между държавата и гражданите, и залагането на безприсъствени такива. Не само за гласуване, за всичко.
  • Аз смятам, че в нормална ситуация взаимоотношението на човек с държавата трябва д е минимално и то само при нужда от страна на гражданина, а не при нужда от страна на държавата. Сега държавата изисква от гражданите да бъдат комутатори на съобщения между държавни институции, както и им прехвърля свои отговорности. Давам пример – ти си задължен да си извадиш паспорт. И това ти струва пари. Но паспорта ти е инструмент за взаимодействие с държавата, която те задължава. Ти си задължен да си вадиш съдебни свидетелства за взаимодействия с държавата. Ти си задължен да отидеш и да си извадиш справка от имотният регистър и да я дадеш на общината, за да приеме тя, че някой твой роднина живее на твоят адрес. Аз смятам, че всички тези задължения трябва да изчезнат. Държавата наистина трябва да използва информацията си вътрешно, и трябва да се грижи за удобството на гражданите си, а не да ги наказва, за това че живеят, за това че пътуват, за това че раждат деца, понеже на държавните служители не им е удобно. И колкото и да е парадоксално, електронното гласуване отваря много врати в тази посока. Защото форсира процеси, които са иначе затлачени в мързел.


Типичните противопоставяния на електронното гласуване съм ги описал в този пост тук – опорните ми точки.
И те не се променят по същество. Някой го е страх, че електронните подписи ще са скъпи, а ние дори не сме решили, че така ще става оторизацията. Други ги е страх, че някой ще гласува с чужда бюлетина, което е технически въпрос (нищо не пречи да има видео и да тече същата форма на оторизация, каквато има в избирателните комисии), трети ги е страх, че хакери могат да хакнат цялата система и да модифицират гласовете на всички хора – което пак е технически и решим проблем (можем да имаме разделяния на секции, а верижно подписване от категорията на block chain или това, което съм описал аз в моят пример, изолират значително тези възможности, всъщност намаляват риска до много по малък от този, който имаме сега).


Но винаги след като приключим с техническите аргументи, излиза това, което те всъщност прикриват – емоционалните предубеждения на гражданите, че държавата ще реализира нещата зле. И всъщност държавата е нашият враг.


И да съм честен, аз също имам подобни предубеждения. Аз твърдя, че дистанционното гласуване може да бъде реализирано добре и с много по малък риск (клонящ към нула) за почти всички технически проблеми на сегашното присъствено гласуване (което също може да бъде реализирано по добре). Но то може да бъде реализирано и много зле. И в това няма принципен проблем. Всяко нещо може да бъде направено добре и може да бъде направено зле. Но това не е проблем на референдума нали? Това е проблем на техническата реализация и гражданският и контрол, след като ако НС реши да има електронно гласуване, след да речем 100 години, след като мине евентуално положително политическата дискусия, след евентуално положително решение на референдума.
Не искам да филосовствам върху това, защо някой не смее да реши да си строи къща, понеже ако има евентуално земетресение тя ще му падне на главата. Този риск е безспорен. Но е също така вярно, че в повечето време ще живееш по добре. И дали се фокусираш върху страховете си или върху новите възможности е в много голяма степен личен избор илюстриращ човека.
Да чакаме всички, да са готови да карат кола, имайки шофьорски книжки, преди да разрешим употребата на автомобили е също парадоксално. Защото е гаранция никога да не караме коли 🙂 Винаги ще има някой, който да не е готов. Така че за мен е безстойностно твърдението, че повече население трябва да свикне с електронните технологии за да има електронно гласуване.
Но нито едно от тези не е принципен проблем – това са емоционални проблеми –
  • Недоверие към държавата
  • Недоверие към гласуването
  • Ирационален страх (принципно, и индиректно оправдаван с технически или политически теми)
  • Консервативен подход в много форми “не знам как аз ще се оправя, за това по добре никой да не може”


Но това не са проблеми на електронното гласуване. Ако пуснем референдум за гласуването по принцип, същите проблеми се отнасят със същата сила, защото те произлизат не от формата и не от технологията, а от личната ни емоционална нагласа.

Аз ще гласувам за електронното гласуване. Защото смятам ползите от него за много по големи и компенсиращи значително недостатъците (които аз и оспорвам по същество).
Аз съзнавам отлично, че най голямата борба тепърва ще дойде, ако случайно стигнем до момент да се обсъжда техническата реализация. Ще има борба за модифицирането на дребни но важни елементи от много закони. Ще има борба срещу всякакви опити за злоупотреба, добронамерени или злонамерени. Ще има борба срещу опитите на политици да вкарват дупки в процедурите, за да си оставят вратички за фалшивикации. Ще има борба срещу опитите за усложняване на процедурите пък с цел да се минимизира ефекта за повишаване на изборната активност, отново от политици разчитащи на твърд електорат. Ще има борба срещу опитите да се даде това или онова да го правят нечии приятели, не защото имат опит, а защото държавата трябва да им даде едни пари. Ще има много борби. Борбата тепърва започва. Но за мен ползите са много повече, и не ме е страх от борбата.

Passport-http Digest Authentication and Express 4+ bug fix

Post Syndicated from Anonymous original http://deliantech.blogspot.com/2015/10/passport-http-digest-authentication-and.html

Passport is quite popular environment for implementing authentication under Node.JS and Express Framework.
Passport-http is a plug-in that provides Digest Authentication interfaces and is very popular for Passport.
However, since Express 4, the default approach to the Express routes is them to be relative.
Example – 
Express <=3 default application assumed that every file who extend Express with routes should specify the full path to the route in a similar to this approach:
app.js:
app.get(‘{fullpath}’,function)…
Or:
require(‘routes/users’)(app)
Where users.js do as well:
app.get(‘{fullpath’,function)…
The default app of Express 4+ uses relative routes, which is quite better as it allows full isolation between the modules of the application.
Example:
app.js:
app.use(‘/rest’,require(‘routes/rest’));
Where rest.js has:
router = require(‘express’).Router();
router.get(‘/data’, function)… // where data is relative url and the actual will be /rest/data
This simplifies the readability. Also it allows you to separate the authentication. You could have different authentication approach or configuration to each different module. And that works well with Passport.
For example:
app.js:
app.use(passport.initialize());
app.use(passport.session());
rest.js:
var DigestStrategy = require(‘passport-http’).DigestStrategy;
… here there should be a code for authentication function using Digest …
and then:
router.get(‘/data’,authentication,function) ….
This simplifies, makes it more readable and isolates very much the code necessary for authentication.
Personally, I write my own authentication functions in a separate module, then I include them in the express route module where I want to use them and it became even more simpler:
rest.js:
var auth = require(‘../libs/auth.js’);
Router.get(‘/data’, auth(‘admins’), function) …
I even could apply different permissions, roles like – if you have pre authenticated session, then the interface will not ask you for authentication (saved one RTT) but if you don’t it will ask you for digest authentication. Quite simple and quite readable.
However, all this does not work with Passport-http, because of a very small bug within.
The bug:
For security reasons, passport-http module verifies that the authentication URI from the customer request is the same as the URL requested authentication. However, the authentication URI (creds.uri) is always full path, but it is compared to req.url which is always relative path. The comparision has to be between creds.uri and req.baseUrl+req.url.
And this is my fix proposed to the author of passport-http, which I hope will be merged with the code.

EmbeddedJS – async reimplementation

Post Syndicated from Anonymous original http://deliantech.blogspot.com/2015/09/embeddedjs-async-reimplementation.html

I like using Embedded JS together with RequireJS in very small projects. It is very small, lighting fast and extremely simple, powerful and extensive.
However, there are hundreds of implementations, most of them out of date, and particularly the implementation I like is not supported anymore. But that I mean not only that the author is not supporting it, but also it works unpredictably in some browsers because it rely on Sync XMLHttpRequest which is not allowed in the main thread anymore.
So I decided to rewrite that EJS implementation myself, in a way I could use it in async mode.
So allow me to introduce the new Async Embedded JS implementation, which is here at https://github.com/delian/embeddedjs
It supports Node, AMD (requirejs) and globals (as the original) and detect them automatically.
A little documentation can be found here https://github.com/delian/embeddedjs/blob/master/README.md
The new code is written in ES5 and uses the new Function method from ES6. That makes it working only in modern browsers (IE10+). But it makes it really really fast. By current estimates about twice faster than the original.
It is still work in progress (no avoidance of cached URLs for example), but works perfectly fine for me.
If you use it and hit a bug, please report it at the Issues page at Github