Общо показвания

декември 17, 2016

Малко истини в книгите за лични финанси

Да започна с това какво мотивира този пост.

Преди няколко седмици попаднах на профила на млад български предприемач. Зарадвах се на успеха на един съвсем съвсем млад човек и доста време прекарах разглеждайки какво е споделил за себе си и пътя си.

Направи ми впечатление, че в една от статиите си споделя няколко книги, които са му помогнали да се развие като личност и да извърви по-бързо пътя към успеха. Една от тези книги беше "The richest man in Babylon" на Джордж Клейсън. Не бях чел книгата и реших да отделя време и да видя какво пък толкова може да помогне една книга.

Самият Даниел споделя, че посланието на книгата е простичко: харчи по-малко от колкото изкарваш.

В книгата обаче навсякъде се натъртва на още две неща: 1) отделяй една десета от онова което изкарваш и го инвестирай разумно и 2) ако имаш вече натрупани дългове отделяй 2/10 от онова което изкарваш за да погасяваш дълговете.

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

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


  • данните са от 2000 година насам, за да избегнем труса с деноминацията
  • използвали сме средната работна заплата така, както е докладвана от националния статистически институт
  • разработени са и двата варианта (с дългове и без такива)


Разяснения:

  • ако сме следвали логиката посочена в книгата и сме спестявали 1/10 от заплатата си, към днешна дата би следвало да имаме спестени 10,868.40 лв. 
  • също по съвет в книгата, ако сме спестявали така посочената 1/10 и сме инвестирали разумно (заложил съм 5% дивидент на годишна база при месечни вноски 1/10 от заработеното) днес бихме разполагали 15,320.00 лв
  • ако приемем че сме задлъжняли и през цялото време отделяме 2/10 от доходите за разплащане към тези задължения, то за периода бихме "върнали" 21,736.80 лв.
  • ако през целия период отделяме 3/10 от парите (защото нямаме задължения, но се чувствае някак мотивирани да пестим повече) бихме имали 32,605.20 лв, а ако сме ги инвестирали разумно* - 45,959.99 лв





В "най-добрия" вариант (спестяваме 3/10 или 30% и инвестираме) сумата не изглежда голяма наистина, особено на фона на инфлацията, която се шири из нашите краища от доста време. От друга страна обаче кумулативното инвестиране на 30% от припечеленото за 16 години резултира в 42%, грубо погледнато за 16 години имаме една разлика от 12%.

Струва ли си?

За да преценим дали нещо си "струва" е необходимо да го сравним с алтернативни варианти. Един такъв вариант е да сме харчили всичко, което изкараме и да имаме 0.00 лв или минус някаква сума.

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

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

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

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

Взимайки предвид всички тези неща, моето мнение е, че съветите дадени в книгата е по-скоро неприложими ако търсеният ефект е онзи, който подобни съвети са дадени преди 4-6 хиляди години по-рано.

Дали ще изберете да ги следвате зависи само от Вас самите.

Послеслов: един много интересен съвет има даден в същата тази книга: не доверявай парите си на съвета на жената на месаря или на грънчаря. Съвет искай и взимай само от онези, които се занимават с правенето/наптрупването на пари.

декември 07, 2016

Web worker, RAF, nextTick - what is there to it?

Let's start with the premise: we want to know the details on how a combination of a web worker (i.e. event based communication with a separate thread in JS) can be used to process data and communicate with the main thread in regards of asynchronous job scheduling.

What is what

Request Animation Frame - from MDN

nextTick - an API for scheduling work after the event loop is emptied. We use an emulation using iframes so basically we get message broker in frames covered instead of the actual setImmediate as it only works in IE10+.

Web worker - single threaded JS execution environment that is a separate process from the main thread (i.e. it does not share anything with it and scheduling execution in it is not related to the scope of async programming from JS developer's perspective - we cannot influence when things are happening there but we have the guarantee that those things that happen follow the same rules: async, single thread)

So what are test results showing


  • responses from web worker always come in order (assuming no async programming is done there)
  • the timing of the responses varies (i.e. run the test several times and see how sometimes 1, 2 or 3 responses arrive before the RAF or nextTick execution kicks in)
  • nextTick kicks in after the first RAF


If you want to review the results make sure to: a) run the test several times and b) test in different browsers.

The code is here.

Conclusion: it is not trivial to drive animations and data processing from a worker instance if you depend on input for it.