Page 24 of 52

02.03.2019

Днес е Събота. И за разлика от преди 5-6-7 години не искам да умра от главобол. Хубава разходка направихме със Златината и си взех най-накрая прилична мишка – нещо за което все се каня и все нещо излиза.
Та – запознайте се с Logitech G603 – wireless/bluetooth, гейминг мишката, която има основна сила да издържа неприличните 500 часа офис работа на 2хАА батерии.

Защо си взех мишка с АА батерии а не с вградена такава? Много просто – ако вградената батерия съврши ще имам downtime, който може да е неприятен в неправилния момент. В днешно време правят мишките употребяеми дори и като се зареждат (с USB кабел), но пак някои от тях имат лимитации. А така ако батерията свършва (Windows-а показва колко % ѝ е батерията) просто купувам още 2 и съм в играта. Минуса е изхвърлянето на еднократните батерии, но за тази цел ще взема скоро rechargeable батерии с адаптер и ще спестя и този проблем.

01.03.2019

Иии ето, че започва първия от 31-те ми блогпоста за този месец, както вече обещах.

И днес беше ден за Docker/docker-compose. Бихме се, карахме се, псувах в нас като чобанин (което никога не е карало нито един софтуер или хардуер да тръгне, но все опитвам). – не стана и не стана.
Казуса беше тривиален – трябваше да засиля 2 глобални променливи към единия контейнер в който живее един react app. И съвсем успешно го правя, но react-а изобщо не зацепи. И така след данеказвамколковреме и общ дебъгинг се установи, че React-а си има изискване за именуване на променливите. Нещо, което НЕ намерихи в документацията нито на реакт нито на докер. За тези, които се чудят – трябва да започват с REACT_APP_

И така ми замина половината ден. Но пък е интересно. Docker и контейнерите се оказаха технология с която съм в love-hate relationship. Оказа се, че изобщо не е толкова лесна материята колкото си мислих, но като започне да ти се просветлява нещата стават мега яки. Например мога да направя multi stage build, което значи, че вдигам един контейнер съдържащ целия ми dev environment с всички библиотеки, пакети и каквото му е нужно, билдвам, правя втори контейнер и там изсипвам вече готовото binary. Така контейнера ми става няколко мегабайта. Забравих да кажа, че говоря в аспекта на Go.


Иначе в личен план нещата се развиват интересно – от извесно време смених работната обстановка и вече работя от нас основно. За момента ми се отразява учудващо добре. Иначе продължавам да работя за Немечек и нямам намерение да ги сменям. Казвам това, защото последно време фейсбук ми показва засилено групата на DevBG-Jobs и гледайки на какви висоти ни са HR-ките направо ме е страх да си помисля, че може някой ден да разчитам на някаква точилка, която знае четири съкращения (JS, .NET, PHP, DB) и пише обяви на поразия. Не, че няма къдърни, но мнозинството е шлака.

Те така. Ден първи – completed. Ш’ме извинявате, че няма in other news, но днес – толкова :)

26.02.2019

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

Освен това в офиса нещата се случват доста добре. Имах възможност да се докосна до docker (и docker-compose), научих много покрай него и ако на някой му е интересно мога да разпиша една статия по темата. Освен това съм в дилема дали да не прехвърля инфраструктурата на marvin към контейнери. Питах интернета и той спомена застрелване в крака. И понеже трудно се вслушвам в хорското мнение най-вероятно ще вдигна още един VPS и ще мигрирам. Вероятно е и да сваля целия VPS както направих последния път :D

И така. Resolution-а за следващия месец е да блогвам по един пост дневно. Ако някой чете този пост ми се иска да пише от както се интересува и ако ни съвпаднат интересите да разписвам нещо по темата.

06.02.2019 – размисли разни

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

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

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

Такъв искам да стана като порасна.

30.01.2019

Не съм писал от толкова отдавна, че не знам от къде да започна. За това и няма да започвам от никъде.
Този пост ще е по-скоро моето обещание към мен самия, че ще започна да пиша редовно в блога както миналата година, но без да забивам на една тема. С учудване виждам, че доста трафик от търсачките идва когато хората са търсили неща за Raspberry Pi и разни технически чудесии. Предполагам, че ще ви е интересно ако напиша 1-2-3-4-5 по-технически статии.

Освен това един малък tease – поканен съм на една голяма техническа конференция на която имам идея да направя няколко интересни демота и един proof of concept, пък да видим какво ще стане.

Ако някой иска му е интересно нещо и иска повече информация можете да пишете коментар под тази статия и ако ми е интересно и на мен ще се постарая да напиша нещо интересно.

Те така. Поздрави от бай Недко.

Равносметката 2018

Мина още една година. И по навик казвам нещата, които не съм направил първо, защото са по-важни.

  • Почти не снимах. За поредна година, макар и да взехме нов фотоапарат с добър портретен обектив;
  • Не танцувах;
  • Не говорих на TEDx. Темите ми щяха да бъдат свързани с депресията или Quality Assurance in real live. Тази година като видях организацията на варненския TEDx се хванах за главата. Ако говоря някой ден вероятно няма да е във Варна;
  • Почти не свирих на китарата;
  • Не четох толкова, колкото исках. Гледам всяка година да чета повече, но колкото повече чете човек толкова повече осъзнава огромното разнообразие и това, че цял живот няма да му стигне да прочете всичко, което си струва;
  • Не написах нито един стих, само 1-2 пътеписа и нито един разказ. Нито един. В блога също писах рекордно малко.

Нещата, които се случиха:

  • Станах чичо;
  • Говорих пред 500 човека на – QA Challenge Accepted 4.0 за performance testing, смешки и закачки. Беше едно от най-трудните неща, които съм правил (за което също искам да говоря на tedX, защото това, което научих не го намерих някъде синтезирано и готово за консумация);
  • Най-накрая участвах в Дунав Ултра, за който писах вече. Беше безкрайно изпитание на духа и тялото, боля, смяхме се, ревеше ми се на моменти, почти не спахме, но минахме, изядохме и изчувствахме цялия маршрут по поречието на р. Дунав с Пешо;
  • Георги Ненов ми взе интервю за неговия подкаст с основна тема – Дунав Ултра. Той беше и човекът, който ме подготви за карането започвайки три месеца по-рано;Пътувахме със Злати много. Обикаляхме из България, но следващата година – повече;
  • Купихме си кола, най-накрая. От 20.11.2018 до 02.01.2019 имаме 3400 км. и карнето тепърва започва;
  • Продължавам да разцъквам микроконтролери и още ми е интересно. Тази година се надявам да сложа нещо в production;
  • Бягах 25 км. в гората. И за пръв път се пречупих. Тук можете да прочетете разказа за Коджа Кая, която ме сдъвка и изплю;
  • След втори опит направих успешно първите си 200+300 км. за един уикенд. Мислих си, че ме боля и че бях изморен докато не минах 700 км. за 48 часа на Дунав Ултра;
  • marvin продължава да съществува. Смених VPS провайдъра на DigitalOcean и към момента съм доволен. По традиция благодаря на Владо и Никото за помощта и за това, че и тази година не ме наругаха на куповете въпроси, които валяха от мен;
  • Отидохме на Varna Mega Rock и слушахме Nightwish, Apocalyptica, Kamelot, Глен Хюз, Кикимора. Ходихме за рожденния ми ден на Stone Sour в Букурещ и беше незабравим концерт (+ дъжд, бира и приятели);
  • https://www.goodreads.com/user/year_in_books/2018/46041874
  • Не мога да повярвам колко дълга ми стана косата.

Нещата, които ще ми се случат:

  • Дунав Ултра 2019;
  • Да правя хората по-добри. Винаги съм вярвал в споделянето на знания и ще продължавам да го правя докато мога което включва повече конференции, повече полезни блог постове;
  • Да чета приказки в дома за деца лишени от родителски грижи и/или за хора с увреден слух;
  • Да се случи моето Голямото каране 2 – този път 500+ км за седмица, вероятно пак сам (това стои от миналата година в todo list-ата ми);
  • По-силна бреветна година – 200км, 300км, 400 км, 600 км преди Дунав Ултра 2019;
  • Да изкарам първия си мартон/или да участвам пак в Коджа Кая на 25 км.

Нещата, които заболяха:

Да видим какво може новия Gutenberg

Както писах скоро излезе WordPress 5.0 с новия редактор Gutenberg.

Галерията пак и отново не е с някакъв slideshow + lightbox или нещо от типа, а пак просто плющи thumbnails на снимките и това за това. Не ме кефи, защото трябва да се инсталира и още един плъгин и стават 5 милиона неща…

Има и разни hading-и

и т.н. pull quote

Както и build-in embed на доста външни услуги.

WordPress 5 иде. Като лавина. От лава. И гръмотевици.

Днес трбява да излезе WordPress 5.0,за който говорят толкова време, че вече ми втръсна. Основното подобрение спрямо 4.9.8 (latest към момента) е, че ще използва нов редактор – Gutenberg (на името на човека измислил печатарската преса Johannes Gensfleisch zur Laden zum Gutenberg). Няма други значими функционални ъпдейти, няма и оправени някакви security проблеми.

На кратко за Gutenberg – опитах да го подкарам, но при мен гръмна с редица JS грешки, предполагам е от мен проблема. От екипа обещават това да е еволюция в редакторите, но аз единственото което искам от него е:

  • Проекта да не е 2000+ файла;
  • Респективно да не се зарежда за 1.5+ секунди в браузъра;
  • Да не генерира gibberish HTML при paste на форматиран текст.

Туй то. I’m a simple man – I see fast and reliable wysiwyg editor, I use it.

Та след масовия ъпдейт, който започва от днес имайки предвид, че 30% от интернет е задвижван от WordPress, което е около 76.5 милиона сайта (като ежедневно се създават над 50 000 сайта на WordPress) очаквам при ъпдейта а се строшат немалко инсталации.

Защо?

Ако имате чиста инталация на WordPress със стара версия и ъпдейтнете до 5.0 предполагам (даже съм сигурен), че всичко ще мине гладко и за секунди.
Но ако имате от онези пребити website builders или някоя тема, която носи със себе си 96 плъгина, 500 файла и е кракната очаквайте няколко безсънни нощи.

 

Няколко препоръки от мен:

  1. Задължително днес си направете бекъп на файловете и базата (не разчитайте на хостинга, те може да имат стари бекъпи);
  2. Огледайте се кои плъгини използвате и кои не. Не забравяйте, че дори и да не е активен плъгина може да бъде exploit-нат (при някакво security issue). Проверете плъгините, които използвате дали са съвместими с 5.0 (това от WordPress repo-то). Ако не са тествани не е задължително да се строшат, но шанса не е малък;
  3. Огледайте си правата на WordPress-а. Ако сте имали неприятности и сте набичили всичко с chmod -R 400 . вероятността нещо да се счупи не е малка;
  4. Помните ли първа точка с бекъпа?
  5. By default от 5.0 нататък редактора ни ще е Gutenberg. Ако сте любопитни го има в repo-то на WordPress и можете да го инсталирате с версия 4.x като плъгин. Можете да видите и малко ревю тук.
  6. Можете да използвате и стария редактор като го инсталирате като плъгин;
  7. Ако сте религиозни – недейте. Вярвайте на бекъпите, особено ако имате по-посещаем сайт от този, който четете.

 

Нека бекъпите бъдат с вас и дано Gutenberg да ви хареса.

Добре, че не станах системен администратор

Днес се самообявих за най-големия олигофрен, който познавам.

Мигрирам marvin от един VPS provider към друг и изведнъж достъпа ми до стария VPS по SSH спря. И не мога да се логна нито от офиса нито от нас. И писах едни мейли, една кореспонденция, едно чудо.
И успявам да се закача за console applet-а , но не мога да прехвърля файловете си през SSH.

ДВЕ СЕДМИЦИ. Две седмици ми отне да се сетя, че имам fail2ban, който явно не съм конфигурирал или съм конфигурирал по някакъв тъп начин и съм си blacklist-нал сам достъпа до двете IP-та.

За тези на които хипоталамуса им изтръпва при този проблем – четете долните редове. Ако сте сисадмин и знаете отговора – затворете сайта и никога повече не влизайте. All the shame…

Та – играта ви е в:

/etc/hosts.allow

/etc/hosts.deny

Влизате с нужните права в /etc/hosts.deny и вижте вашето IP дали не е там. Ако е – можете да го коментирате и да го добавите в /etc/hosts.allow.

ISTA 2018 live blogging, day 2

Добро утро.
Винаги е приятно да влезеш в зала с десетки хора, които говорят за Agile, код и тестване.

 

Всичко започна с лекцията на Mathias Verraes – “Design Heuristics”

Това, бога ми, беше първия keynote speech без презентация, който гледам. Чувството е като онези push-up bras. Всичко беше ок, но нещо липсваше.

Аз лично се изгубих напълно още в началото.

 

Hindsight lessons about API testing
Viktor Slavchev

 

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

И да не звуча тенденциозно мога да го хейтна (без хейт не може!1!!) – тази брада трябва да расте, по вързможност до колената! Край на хейта.

Сега, сериозно.

Лекцията му започна с препрепълнена зала и хора седящи по земята.

Първо да уточним думата hindsight. Това е “умението” да разбираме някакво събитие или ситуация само след като то се е случило. И един много подходящ пример “With hindsight, we would recommend exactly the opposite.”

Виктор каза нещо познато, което трябва да се казва много по-често и да се използва – “Tools don’t make software (tools are not a solution). You’re the one who solve the problem”.

Преди да влезем в контекста на API тестинга трябва да обясним какво е web service и Виктор го обясни по интересен начин:

Web service-а е като комуникацията със сервитьор*:

  • Правите поръчка (request);
  • Получавате отговор (от типа да/не) (status code);
  • Получавате това, което сте поръчали (data, result)

Извън контекста на презентацията на Виктор – примера със сервитьора може да се използва и при security testing-а като му поръчаш да ти сервира ‘, *, NULL, 0 OR 1=1, шкембе с крутони и т.н. И после следим резултатите.

 

Относно точката за status code-а – понеже статус кодовете наистина са много и е хубаво да знаем поне основните най-лесния начин за това е да видите http status cat. От там аз научих повечето :D

 

Няколко неща преди да започнем с API тестовете:

  • Документацията не е винаги е пълно описание на продукта. Особено автоматично генерираната, outdated или зле написаната документация. За това трябва да мислим, да идентифицираме да  намерим нашия testing oracle (дефиницията си я намерете в блога на Виктор), да задаваме въпроси;
  • Настройката ви при писане на тестове – не пишете тестове, които минават, светят в зелено и еднорози скачат по репорта, а тестове, които тестват функционалност (понеже тук може да се говори много можете да пишете коментар в този блогпост или в поста на Виктор в неговия блог);
  • При API тестинга често забравяме да тестваме истински сценарии, а не само кой call какви отговори връща;

 

Кои тестове си струва да автоматизираме

  • Всички тестове, които връщат грешен response code (status code checks);
  • Всички тестове, които връщат грешни данни (structure checks);
  • Всички тестове, които не връщат никакви данни;
  • В добавка – освен единични, изолирани тестове е нужно да правим тестове по цели сценарии, знаете, но да кажа.

 

Status code checks – плюсове и минуси:

  • Плюсове:
    • Пишат се бързо и лесно;
    • Много дефинитивни;
    • Работят като sanity/smoke тестове.
  • Минуси:
    • Много повърхностни;
    • Трудно получаваме някаква полезна информация ако използваме GET методи (получаваме само status code без никакъв контент);
    • Status code checks сами по себе си не дефинират сериозни проблеми;

 

Structure checks – плюсове и минуси:

  • Плюсове:
    • С тях лесно може да проверим данните, които получаваме (no shit, Sherlock);
    • Тестовете могат да са много конкретнил
    • Ако използвате Codecept, например, можете да използвате regex.
  • Минуси:
    • Тези тестове са използваеми само за тестване на съдържание;
    • Трудни са при тестове на променливи данни;
    • Не са лесни когато имате deep nesting/дълги респонси.

 

Scenario checks – плюсове и минуси:

  • Плюсове:
    • Много близки до потребителското изживяване;
    • Използваеми при намирането на integration problems;
    • Могат да бъдат изпозлвани като леки regression suits;
    • Когато пишете scenario checks приемайте API-то като приложение (не ме целете с домати, но помислете за това). Много по-лесно е да измислите някакъв flow и да работите по него..
  • Минуси:
    • Бавни за писане/изпънение;
    • Изискват добра абстракция;
    • Трудно е да се каже кога са достатъчни

Както е писано неведнъж – при писане на тестовете използвайте ААА метода – arrange, act, assert. Това е достатъчно. Ако обаче се оплетете в морето от arrange/act-ове драмата ще е по-голяма от тия в индийските сериали.

Сега като си препрочетох описанието с тази кирилско/английска плетка не ми звучи толкова добре колко я чух, може би трябваше да я опиша на английски.
В блога на Виктор има голяма част от това, което каза на лекцията така, че смятам ще ви е интересно.

 

 

Sales Skillz for IT People
Iancho Dimitrov, VP Innovation, Strategic Clients & Business Development, Musala Soft

Доста извън моя интерес реших да участвам в лекцията на Янчо Димитров, който беше представен като легенда. Сигурно е.

Разакза ни малко за продажбите като имаше две интересни попадения:

  • “Sales are not bad thing if done right”;
  • “People don’t want a quarter-inch drill, they want a quarter-inch hole” Ted Levitt.

 

Why Teams and Culture Matter: Leadership lessons – Vasil Popovski

Преди години слушах за пръв път Васил Поповски на едно от първите издания на ISTA. Тогава той работеше за VMWare и тогава и сега разказваше супер интересните неща. И понеже този път няма да мина през превеждането на термини и презентация ще е на английски.

 

 

Google have quite interesting project called project Google Aristotle. With that in mind Vasil gives us couple of vision about what’s the most important thing in team:

5) Impact – team members think their work matters and creates change;

4) Meaningful work – is personally important to team members;

3) Structure and clarity – team members have clear roles, plans and goals;

2) Dependability – team members get things done on time and meet Google’s high bar for excellence;

1) Psychological safety – team members feel safe to take risks and be vulnerable in front of each other.

 

How to build a great team:

  • Team is not family – family is structure that is inherited, you cannot make changes there;
  • Lead the team, do not manage it – lead people, manage projects. Manager says “Go”, leader say’s “Let’s go”;
  • Foster a culture – culture is the shared core values, practices and beliefs of the team members.
  • Integrity is what you do when no one is watching

 

Hiring:

  • Hire for cultural fit;
  • Prefer skills over knowledge (skill is to know how to apply knowledge);
  • How many interviews you do as company – Google make a survey (how much interviews to hire someone) – fourth interviews was enough to predict a new hire’s performance with 86% confidence. After the fourth interview the accuracy of the mean score increases by less than one percent. More info can be found here
  • In Leanplum for example one backend developer goes trough next interviews:
  • Algorithmic
  • Coding/OOP
  • Design
  • Cultural fit
  • For Leadership skills

Performance management:

  • A single negative employee or bad performer can cause a 30%-40% drop in a team’s performance.