Брат ми каза – “Абе тука намерих едни яки, искаш ли да ги чуеш?” Така за пръв път се сблъсках с Manowar, а първата тяхна песен, която чух беше Metal Warriors. Така братлето ми даде един от основните стилове, които слушам и до днес и ще е част от мен завинаги. Благодаря, Светльо.
2007
Стефан, някогашния ми най-добър приятел, ми пише по IRC: “Недко, Manowar ще идват в България, в Каварна!!!”
Тогава бяха едни от най-силните години на метъл културата извън София.
Стефан, сам по себе си беше далеч от хеви метъла и повече към дед/грайндкор метъла, но споделяше с мен мечтата ми. Защото така правят приятелите. Помня за рожденния си ден, че имаше събиране в нас и помолих приятелите да не ми дават подарък, а пари за да мога да си взема билета. Събрах пари, уговорихме едни палатки около Каварна, намерихме си и транспорт с един червен Форд Ескорт на около хиляда години.
Помня много ясно (точно този спомен изплува много често когато ходя по концерти) как се видяхме със Стефан 2 часа преди да дойдат да ни вземат. Ходихме да пием по едно кафе, взехме си нещо за ръфане по пътя и една двулитрова бутилка с някаква съмнителна енергийна напитка (от която като се уригне някой, а това ставаше често, трябваше да отваряме всичките прозорци за 4-5 минути) и час преди срещата бяхме на спирката. Спирката и до ден днешен си е там, но тогава имаше от онези зелените стъклени панели и беше изрисувана с разни тъпотии. Стефан написа датата – 30.06.2007, сигурно още стои там. Надписа е преживял едно приятелство, три концерта на Manowar и 12 години.
Навън беше един от най-приятните юнски дни. Стефан мрънкаше, че краката му в тия кубинки са заврели, аз стоях и гледах в една точка. Птиците пееха, нямаше почти никакво движение по булеварда, обелвахме по 1-2 думи, стоейки на счупената пейка и мечтаехме за събитието, което щеше да се случи след само няколко часа . Това е един от най-хармоничните и най-приятните спомени, които имам изобщо.
Колата дойде, пътувахме цяла безкрайност до Каварна, вътре крещяхме, пяхме и само дето не си блъскахме главите една в друга от радост. Радостта на двайсетте ни години.
Нямам ясни спомени как направихме организацията, предполагам след като е приключил концерта някой е дошъл да ме вземе и да ходим към палатките, Стефан помня, че беше отвън и разказа, че е откачил от кеф, макар и да не е фен. Аз влязох, сам, с тениска, която ми беше сигурно 2 номера по-голяма и незнаейки какво да очаквам, беше ме малко страх, че ще се разочаровам. Имаше толкова много хора с огромни коси, кожени дрехи, очила. Тогава сигурно за пръв път се почувствах добре в тълпа от напълно непознати. Набутах се малко по-напред и започна шоуто на Sixth Sense за които нямам абсолютно никакви спомени.
Ноо после излезе зашеметяващата Maria Breon заедно с останалите от Holyhell и изнесоха прилично шоу. И точно когато смятах, че няма колко по-добре да стане, защото бях сигурен, че Ерик Адамс няма да излезе да изпее с Maria Breon The Phantom of the opera… чух първите ѝ ноти и към средата излезе … Ерик Адамс. Публиката тотално откачи, имах чувството, че се вдигнахме на метър над тревата на стадиона. Беше тооолкова яко за двадесет годишното ми аз, че си мислих, че по-добре не може.
И сбърках.
По времето на подгряващите групи беше мега горещо и охраната пред нас ни поливаше с маркучи вода, бири се лееха с тонове (без да преувеличавам), беше нечовешко.
След бърз сетъп излязоха Manowar и без да губят и секунда започнаха с едноименния си сингъл. Тогава не очаквах да влязат с вратата, а първо речите на Джоуи ДеМайо от по 20 минути, а, у и чак тогава. Помних текста на всяка една от двадесет и двете песни. Всяка.
И след като приключиха с потресаващото Hail and Kill (което по случайност слушам точно в момента в който пиша статията) времето спря и два акорда шокираха публиката. Все едно наякой хвърли бомба в краката ни и ние не можахме да реагираме когато нещо избухна. И то се случи – първите два акорда на нашия химн прозвучаха от Manowar. После следващите два, после още малко, после Ерик Адамс пя на български. Всички в публиката ревахме като говеда.
Тогава нямаше още националистически партии, псевдопатриотите бяха малко и не пускаха химна на всяко събиране на себеопределили се спасители на клета България. Тогава химна се пускаше рядко и по правилните поводи. И това остави следа толкова дълбока в мен, че докато го пиша пак се просълзявам.
Копелетата дойдоха, грабнаха душите и сърцата ни и си тръгнаха като абсолютните победители.
Следващите няколко дни шепнех, защото не можех да говоря и точно в този момент, точно в тези няколко часа преди по време и след концерта се чувствах лек и щастлив.
Сетлиста от 2007 година можете да намерите тук. Галерия със снимки – тук.
2008 г.
Вече съм навлязал с двата крака в своите двайсет и една години учейки в ултра престижната кочина наричана Шуменски Университет. Събрали сме се на Бункера – емблематично място в Добрич и пием бирички и си говорим за неправдите в нашите животи (‘щото, нали) и Митко супер casual хвърля бомбата: “Абе знаете ли, че Manowar ще идват в Каварна след месец?”
След първоначалния шок, защото не очаквах да дойдат толкова скоро се разбрахме да ходим заедно. Преживяването по пътя, нетърпението и всичко останало беше бледо, отидохме там с уговорката, че след концета ще ходим на палатки, но като излязох всички бяха пияни и така спахме в колата – аз, Митко, брат му и приятелката (на един от двамата, не се сещам на кой беше). Щяхме да умрем в това Алеко.
За концерта обаче нещата бяха различни. Отидохме с много сериозните очаквания и там вълшебството продължи. За разлика от “само” 29-те песни през 2007 година 2008 беше петчасов душевен оргазъм, който според Manowar са счупели рекорда за най-дълъг хевиметъл концерт в историята. 47 песни, една след друга, без никакво прекъсване. В петте часа и една минута бяхме всички заедно, един огромен, мощен глас от сърцата и душите на феновете. Тогава знаехме всички текстове на всички песни, беше не-ве-ро-ят-но. Дойдоха си и с класически оркестър и имаше страшна заря на съпровода на The Crown and the Ring.
Цяла седмица бях без глас. Цяла!
Сетлиста от 2008 година можете да намерите тук. Галерия със снимки – тук.
2010
В своите двадесет и три години по много случаен начин попаднах на един постер във фейсбук в който пишеше само “Dano da e istina”. И беше. Metallica, Slayer, Megadeth и Anthrax в ден първи и Rammstein, Manowar, Stone Sour, Alice in Chains в ден втори. В София.
Беше най-мащабния концерт на българска територия като освен това в 800 киносалона в цял свят даваха на живо, последваха записи на DVD и BluRay.
За другите групи и за това как не можех да повярвам, че ги слушам на живо ще пиша друг път. Но тогава, преди точно девет години, се срещнах за последно с Manowar. И тогава, понеже Dio беше си заминал само 2-3 месеца по-рано, Джоуи ДеМайо излезе и говори. И говори. И говори. И изяде 1/2 от така или иначе малкото време на Manowar. Изсвириха само седем пестни и това повлия сериозно на имиджа им тук, в България. След техните 7 песни и дъъъъълги речи Rammstein излязоха и всички забравихме за бледото представяне на Manowar. Както и за това, че са били там.
Сетлиста от 2010 година можете да намерите тук. Галерия със снимки – тук.
2019
Вече в моите тридесет и почти три години, сгоден, дебел, работещ и с ясна посока в живота пак потрепервам като се сетя, че ще ги чуя пак, за последен (според тях) път, тук – в България. И си правя равносметки. И се радвам. И ми е малко тъжно. Но дано последната ни среща е толкова запомняща се като първата за да имам какво да разправям на внуците си един ден когато Manowar няма да ги има, но ще живеят в сърцата на всичките си фенове.
Вальо, Вельо – пригответе се. Този път ще е безмилостно.
И всеки път когато ходя на концерт на когото и да е било се връщам обратно през 2007 година, на онази спирка, със Стефан, когато чакахме неизбежното, бяхме на ръба на онази пропаст между детско-юношесктите годни и живота и се усмихвахме, готови да се гмурнем с главите напред. И го направихме.
Сега repo-то на DVWA заедно с апаче, база данни, PHP и една кофа неща са при вас. За да ги направите достъпни, трябва просто да стартирате контейнера:
docker run --rm -it -p 80:80 vulnerables/web-dvwa
1. SQL Injection
SQL Injection най-общо казано е възможност за изпълняване на нерегламентирани SQL statements като SELECT, UNION и т.н., които не са предвидени в текущата функционалност на приложението. С други думи ако параметризирате без подходяща валидация и/или санитизация някой параметър, може да има драма. Пример за драма: GET request:
http://nedko.info/sql_injection/inj.php?drama=1
Кода, който работи отдолу:
$drama = $_GET[‘drama’]; $getDrama = “SELECT * FROM vulnerabilities WHERE type = ‘$id’;”;
Ако въведете валидни данни всичко ще е супер, ноо (второто О е за допълнителна драма) ако счупите заявката ще стане любопитно.
Най-елементарния и емблематичен пример е Светия Апостроф. Ако набием един ‘ след параметъра ?drama=1’ ще строшим SQL заявката.
Пример в DVWA с класически SQL injection (линк към локалния DVWA – http://localhost/vulnerabilities/sqli/):
Но понеже живота на penetration tester-а (или на смъртния човек, който е решил да се занимава с това) не винаги е лесен (никога не е) и може вече някой програмист далновидно да е решил да направи валидация и да избегне този балъшки тест.
Тогава идва ред за нашето последно късче надежда или т.нар. Blind SQL Injection (или както след лекцията някой каза – Орхан Мурад SQL injection), който можете да намерите в менюто на DVWA – SQL Injection (Blind). По самото си същество това е същата уязвимост, но не получаваме веднага потвърждение от типа на бял екран или експлозия на еднорози. Но лесно можем да проверим какво става като отворим inspector-а на Chrome (естествено става и с всички други модерни браузъри, дори и с Онова, което никой не нарича браузър) и влезем в таб Network. Там ще минат всички request-и (POST/GET ни интересуват най-много, но ще видите и images, JS, CSS files и всичко от което има нужда ресурса, който сте отворили).
Сега като набиете един ‘ в полето “User ID” наблюдавайте какво ще се случи в Network Tab-а:
За да продължим към екшъна ще ни трябват и кукитата на скрипта, защото все пак, за да достигнем тази функционалност минахме през логин. Cookies можете мега лесно да намерите на същия екран, но в подтаб (има ли такава дума?) “Cookies”:
До момента използвахме само браузъра за нашите дребни шегички с администраторите. Сега е ред да използваме нещо по-могъщо – sqlmap.
Note – чудите се къде са SQL break characters, къде ви е cheatsheet-а с който можете с copy/paste да трошите сайтове? Понеже на лекцията имах само 25 минути нямаше време за това, няма да го покажа и тук (освен ако някой наистина иска да види какво става отдолу, тогава на драго сърце бих дописал статията с малко теория). За наше щастие sqlmap прави всичко за нас. Ние само трябва да му дадем параметъра, който смятаме за уязвим и cookie-тата, за да може инструмента да се “логне”. Туй то, както казваме в Добричко/Варненския край.
sqlmap – our secret weapon
За да подкарате sqlmap, трябва да имате първо Python. Инсталацията му е лесна и няма да имате грижи.
По ред на information gathering процеса ще запиша тук всичките стъпки, през които трябва да минем:
И ето, че намерихме базата, която използва DVWA. Сега ще ровим още, за да получим имената на таблиците на същата база (ако новите и старите богове нямат нищо против):
-D dvwa – казваме, че целта на нашата задача е база с име dvwa
–tables – покажи всички таблици от базата дефинирана по-горе.
И ето, че без много зор стигнахме до таблиците на база, за която нямаме никакви credentials. И понеже чичо Недко е нагляр по природа продължаваме да видим докъде можем да стигнем:
Както забелязвате няма нужда да въвеждаме името на базата и таблицата тук, защото sqlmap си ги пази. Това значи, че ако решите да си reproduce-нете целия сценарии отново, трябва да минете през горните точки също.
И ето, че с последната команда направихме все едно един select user, password from users, взехме хешовете и направихме dictionary attack в който съпоставихме хешовете с тези в dictionary файла. Естествено за демото паролите не бяха t@snipi4ki!, а тривиални, за да може да не използваме +10GB файлове и часове чакане, а покажем как работи sqlmap-а.
Малко тъпо заглавие, но друго не измислих. Идеята е, че ще направим малък трик, с който ще успеем да качим PHP файл, който ще представим за PNG и в последстиве ще преименуваме директно на сървъра с command injection, за да изпълним зловредния си код (зъл смях).
Преди време имах трудни периоди с един програмист, който пишеше upload форми като казахтстански опълченец – без никакви валидации освен разширението на файла. След десетки спорове стигнахме до консенсуса да ползваме getimagesize в PHP. Хитринката е, че освен размера на image-а функцията проверява и дали файла е от тип image или някой хитряга се опитва да върти номера. Тогава при моите си опити да кача нещо друго освен image, не увенчах успех. Но днес ще ви покажа как да прескочим и това.
Преди това обаче свръх малко теория – подобни функции изчитат сигнатурата на файла, която е в началото му и ако срещнат съвпадащи такива с типа, за който се представя файла, го приемат за чиста монета. До момента, в който някой не реши да смени тази сигнатура (laugh in Spanish).
За да редактираме сигнатурата на файл, ни трябва HEX редактор и PHP кода от по-горе запазен във файл с разширение PNG (в моя случай е hack.png). На по-старите кучета, които са живели във времето, в което това беше актуално, няма да обяснявам какво е, а за по-новите кучета – също. Просто си изтеглете WinHEX или който и да е друг подобен инструмент, отворете hack.png и от страницата File Signatures Table намерете PNG и го копирайте в началото на файла:
И ето, че имаме handcrafted файл, който можем да си използваме да си тестваме upload формите.
Нека сега опитаме да качим файла през upload формата на DVWA:
И ето, че имаме качен успешно файла в две директории нагоре /hackable/uploads. Ако сега го достъпим, браузъра ще се опита да отвори файла като image, но ще покаже някаква простотия. Пътя до файла е http://localhost/hackable/uploads/hack.png
Понеже сега не можем да изпълним PHP-то, идва ред на третата и последна атака, която ще направим днес:
Command Injection
Целта на тази атака е да намерим функционалност, която извиква директно команда от системата и да слепим с нея втора, която ние да си изберем. В конкретния случай ще преименуваме hack.png в hack.php.
Като цяло извикването на команда директно си е за бой, но ако извикате команда през PHP без да имате нужните валидации, сте за хвърляне зад Вала. Както повечето атаки и тази разчита на липса на валидации за специфични кейсове. Атаката се осъществява мега лесно със знак за конкатенация. Пример за такива знаци има в кода на DVWA (ниво на трудност High):
Нашата нищожна атака ще е супер проста. Както виждате от примера по-горе на трети ред след| има интервал (демонстриращ, че човешката грешка също е важен показател). Тоест с | ще можем да слепим втора команда след валидно подадена такава (като не забравяме, че не трябва да има интервал след знака, за да не мине валицадията). Ето и пример с това как можем да видим системен файл директно от WEB чрез command injection:
localhost|cat /etc/passwd
И както виждате можем да видим съдържанието на системен файл без проблем, за това ще опитаме да преименуваме файла hack.png в hack.php и да го изпълним. Командата е: localhost|mv ../../hackable/uploads/hack.png ../../hackable/uploads/hack.php
Изпълнението на зловещия план
След като създадохме файл, който специално обработихме, качихме и преименувахме, е време да го изпълним и да видим дали всичката тази играчка ще сработи. Ще се опитаме да видим съдържанието на конфигурационния файл на DVWA:
И ето, че с тези елементарни похвати успяхме да извлечем потребителските имена и пароли от базата на DVWA, да му прескочим upload формата и да изпълним произволна команда.
Линк с презентацията можете да намерите мааалко по-долу. Публикувам я as it is макар, че малко се счупи при импорта от PowerPoint към Google Slides. #Yolo (или както Исуската казва – #YOLT (you only live twice).
Заключение
На всички ни е ясно, че новите ORM frameworks например се грижат за SQL injection още на много ниско ниво, че command injections могат да се разрешат лесно с използването на почти произволен framework и правилна конфигурация, но всеки трябва да се замисли поне малко за сигурността, докато пише проложения, за да може тези, които го тестват да кимнат одобрително с глава и като го пуснат в production, да са поне една идея по-спокойни.
P.S. Ако ви е интересно мога да разпиша повече по темата с DVWA като XSS, CSRF, чупене на хешове с John the Ripper, сигурност в WordPress (скенери, атаки, как да се предпазим, а, у) и т.н.
P.S.S. Преди време говорих на WordPress meetup-а във Варна за сигурност, ако ви е интересно – има повечко системни неща, има и dictionary attack-а и подобни:
Днес се самообявих за най-големия олигофрен, който познавам.
Мигрирам 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.
Добро утро.
Винаги е приятно да влезеш в зала с десетки хора, които говорят за 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.
По традиция и тази година ще има live blogging на ISTAcon.
Денят започна с opening speech и проблеми с микрофоните и озвучението. Добре, че беше първия лектор да разсее малко малките спънки и да поговори с харизмата на човек, който познава нещата в детайли:
Keynote Session: The Internet of Things is dead, long live the internet – Brandon Satrom, Co-Founder and CEO of Tangibl
Говорейки за харизма един от най-приятните за слушане лектори тази година определено отива към Брандън. В неговия keynote той ни разказа за разбиранията си за Internet of Things, където неизменно ми светна за LoraWAN и Варненското и Великотърновското общество, което разпространява идеята.
Според Брандън Internet of Things не може да бъде стабилна прекалено много време поради много фактори и предлага да го разглеждаме като … Интернет.
Разказа ни за Mesh networking, нещо, което е супер интересно и при интерес ще разпиша малко повече за него. Много грубо казано това е вътрешна мрежа, която не е expose-ната за външния свят и не зависи от интернет свързаността. Например ако имате датчик за наводнение и помпа за отводняване не е нужно и двете да са свързани с интернет, да разчитат на него и да пращат данните/респективно да се контролират от сървис, който е някъде навън като може комуникацията да стане вътрешно, датчика да подаде сигнал към помпата, която да си свърши работата. Разбира се няма да е приятно да не знаем какво става в дома ни, но не е ли по-добре automation-а да си свърши работата отколкото докато къщата се пълни с вода и настава микро катаклизъм те да ping-ват сървиса да видят дали не е Online? :)
В почивката се видяхме с Виктор Славчев и Александър Тодоров. Винаги е приятно да се видим и поговорим макар, че липсваше бирата. Ще видим довечера дали ще наваксаме :)
Developer’s survival guide: bug fixing for smart devices – Alexander Kostadinov, Senior Software Engineer at Musala Soft
Александър Костадинов говори и миналата ISTA за проекта, който разработва.
Към момента лекцията му беше основно репорт за това какво са постигнали. Разказа за (QA) процесите по техния проект, които звучат доста стандартни към момента. Интересно е, че са си организирали бъговете по категории (пак не е нещо революционно, но е интересно) и се показват интересни неща.
Явно момчетта имат афинитет към категоризиране на неща. Показаха и reaction Average reaction time по категории (find cause, re-test, apply fix re-deploy). При интерес ще пиша повече по темата с категоризациите, че е хубави за всички да видят по-голямата картинка от време на време.
Иначе бяха категоризирани някои от основните принципи, които си заслужава да бъдат споменати отново, защото са важни:
Как да преживеем като тестващи хора (не само QA, а и всеки, които тества каквото и да е в коя да е фаза на проекта) в свят на бъгове и неработещи (от всякакъв тип) неща:
Използвайте всяка възможност за тестване – при писане на код, когато имате други задачи, които не са свързани с тестване, когато се присетите за някой евентуален flow докато deploy-вате кода си. Това ще ви позволи да погледнете проекта през друг ъгъл, който понякога изтърваме докато се опитваме да покрием други критерии. Например при deploy на testing environment съм се сещал да правя експерименти с липсващи библиотеки или такива със стари версии. Беше грозно :)
Преди deploy (без значение дали е на dev/QA/pre-prod или prod среда) винаги проверявайте какво по приекта е ъпдейтнато. Например ако има нови dependencies/нова верия на API/framework е важно да се види changelog-а и да се изтества, защото е добро място за задаждането на много сконфузни ситуации от типа на – “Ама то работи при мен…”.
Bug avoidance
Опитайте се да покриете всички възможни ексепшъни за които се сещате (превода ми е покъртителен. В оригинал е “Try to make sure you handle all possible exception”)
Логвайте, но внимателно. Там където няма нужда от 120 редови stack traces по-добре не ги логвайте. Знам, знам – винаги е по-добре да има колкото се може повече информация, но хората, които дебъгват могат много лесно в цялата вълна от логове да изтърват критичните моменти. Обратната ситуация с логването на почти никакви данни също е лоша практика.
Логвайте stack traces само при реална грешка. Това може да е да кажем липса на достъп до някой сървис. Няма смисъл да логвате stack traces за нещо като активирана валидация, например (би било жалко, нали? :D )
Не игнорирайте и логиката при висока конкурентност, особено при асинхронни операции. При нужда винаги приотизирайте
Без значение от code change-а, винаги правете full regression. Малък bugfix може да породи още 10
Тук аз трябва да добавя 1-2 забележки. Физически не е много оправдано да се прави full regression при най-малкия code change, но тук unit testing-а е наш най-добър приятел. Viva la automation!
Нека QA да тества по време на development фазата. Тук много зависи от организацията на компанията и процесите, но винаги е добре някой да види парче от вашата работа и да даде идеи и насоки за които не сме се сетили;
По възможност нека целия екип да е ангажиран с тестването в development фазата. Не говорим за това да дърпаме PM-а за ушите да гледа полуработещи неща (или функционалности без дизайн), но е страхотно да се обсъжда (дори на идейно ниво) текущата ни работа с целия екип. Така могат да бъдат отстранени проблеми още в зародиша им.
Bug investigation
Рестаритрането на машината почти никога не оправя проблемите;
Направете си предифинирани сетъпи за тестване. Ако тествате десктоп приложение например, което трябва да работи в предварително конфигурирана среда винаги е добре да имате една виртуална машина/контейнер, който да ви е фундамента в тестването. Така времето ви за реакция ще се намали драстично (представете си след всяка преинсталация на приложението да чистите/модифицирате регистри, да триете файлове, да конфигурирате разни сървиси, етц);
При тестване, респективно логване на бъгове е важно да описвате и версиите с които reproduce-вате. Иначе изобщо не е изключено да стане една километрична кореспонденция за да може след няколко изгубени човекочаса да стане ясно, че някой тества със стара версия на някоя билиотека/ОС/framework). Been there – done that.
Не забравяйте да гледате логовете. Те са ваш приятел, дори и да са много (за референция прочетете няколко точки по-нагоре)
Приемете го – unhandled exception може да се логне като бъг, дори и да се вижда само по логовете. Handle-вайте си ексепшъните за да няма драма
Наистина се постарайте преди да кажете, че бъга е “not reproducible”.
How we survived?
Постоянна комнуникация между всички членове на екипа (ако не правите daily meetings – те са добро начало);
Let’s face it – ако нямате добър domain knowledge колкото и добър програмист да сте ще е трудно не само на вас, но и на екипа в който работите;
Обикновено при development фазата програмистите не са много сговорчиви за bug fixing, но това е нужно. Опитайте да ги редувате – хем за разведряване на обстановката, хем да не ви се наложи да фиксвате десетки бъгове след development фазата.
Пф. Изписах си писането. Ако на някой му е интересно или има въпроси нека не се стеснява и да пита.
CI/CD in cloud independent environment – Toshko Todorov
Тошко започна силно с няколко мемета. Темата му за Continuous Integration / Continuous Delivery е интересна.
Разказа малко философски за контейнерите (в лицето на Докер), за CI и CD
Като цяло презентацията му беше много обща и наистина нямам какво друго интересно да ви предам.
Понеже пак се очертава огромен разказ ще го разделя на няколко отделни поста за да е по-лесно прехвърлянето на безинтересния текст и да се проследи криво-ляво timeline-а на събитието.
В тази част ще поговорим за мотивацията, тренировките и логистиката до старта на събитието.
Тренировките
В последните почти 4 месеца наблегнах върху колоездачните тренировки и храненията като за второто използвах професионалните умения наГеорги Ненов отlivetolift.com, който си има и свой подкаст носещ желязното име “Свръхчовекът с Георги Ненов“. Жоро се хвана и започна да ми предава своите знания методично и уверено, без да ме начупи с мега рестриктивните диети или да ме кара да правя абсурдни хранения така, че едвам да ставам сутрин от леглото. Започнахме първо с измерване на мерките ми и не беше приятно като заигра метъра. След това започнах да си водя дневник на това какво ям, кога и как се чувствам. В началото беше странно да пиша всичко това и да знам, че някой го следи, но изигра огромна роля при по-нататъшното – “От една вафличка нищо няма да ми стане”.
После дойде ред на специализираната част с колоезденето – храненията на колелото, в почивките, преди и след тренировка, възстановяване, пейсинг и много и малки tips and tricks, които ми влязоха в страхотна употреба.
Жоро е мотиватор, който има супер дълбоки разбирания за това как работи нашия организъм, от какво имаме нужда и как да го направим. Доволен съм от избора си и работата с него.
Ще спомена само някои от промените, които тялото им изпита от Юли до Септември:
Талия: -11.5 см;
Корем: -11 см.;
Задник: -5.5 см;
Килограми: – 102 кг. –> 94 кг. (note, че около май-юни бях 105 кг.).
Относно техническата част – с тренировките се стараех поне веднъж седмично да правя по-дълга дистанция (между 100 км и 200 км) с експерименти откъм пейсинг, хранене, прием на вода и други. Освен това гледах 2 до 3 пъти в седмицата да правя и стандартни дължини от до 50-тина км. експериментирайки. Например преди няколко седмици за едно каране направих катерения на две баирчета във Варна (този на Почивка и на Борисовата Воденица) общо 20 пъти, друг път правих TT, трети път – смесени маршрути.
Карах големи и дълги изкачвания, опитвах се да анализирам къде ми стига лимита и колко мога да издържа, и си направих изводи, които използвах по-късно на събитието.
По колелото направих няколко значителни ъпгрейда като основните са – сменени жила и брони, нова задна гума (старата беше направо като решето), ново колче и кормило (кормилото е compact, което ми е мечта от години). Общото му тегло в този вид е 10.5 кг.
Подкрепата
Обикновено когато човек каже на близък или приятел, че ще отиде да кара почти 700 км. за 48 часа среща два типа реакции:
С какво мога да помогна?
Това не мислиш ли, че е излишно? Не мислиш ли, че е по-добре да си почиваш вкъщи и да не се натоварваш толкова?
Е – срещнах и двата типа, но това не ми попречи кой знае колко на мотивацията (за разлика от предни пъти). За това изигра основна роля Златина, която на моменти беше по-мотивирана от мен да ходя на тренировки, интересувашe се от всичко, което правя и ме надъхваше най-вече в моментите, в които аз нямах на какво да се опра. Без нея дори не бих отишъл на старта. Предполагам знае колко много значи това за мен и особено факта, че последните 3 месеца бях на колелото повече от 80 часа, време изяждащо нашето заедно. Тя го прие и насочи към най-доброто за мен. Думите свършват някъде тук.
Пешо от друга страна направи всичко с техническата и планиращата част – намери двама човека, които да карат поддържащата кола с нас, да носят нещата ни, да ни помагат, да не спят повече от 3 часа за двата дни от състезанието, направи денивелационен план с по-вълнуващите части от трасето и timeline с времената, които трябва да покрием за да финишираме. Той организира и спонсора ни –Isostar, който ни приготви едно страхотно кашонче с всичко от което имахме нужда, както и подкрепата на веломагазин за светлини и резервни части при нужда.
Семейството и приятелите реагираха първоначално малко резервирано, защото знаеха не по-малко добре от мен какво ме очаква заедно с всички евентуални негативни последици. Но с улягане на идеята съдействаха с каквото можаха, което ме направи безкрайно щастлив.
Пътуване и логистика
Реших да използвам услугите на WizzAir за да се дотътря до София, а за колелото и двете раници с екипировка използвах Еконт. Останах приятно изненадан като разбрах, че всичкия багаж + обявена стойност на колелото и GPS-а + застраховка излезе 20-тина лв. Аз си бях приготвил единия бъбрек. Момчетата от Варненския офис на доставчика бяха ангажирани сигурно 40 минути с опаковането на колелото, свършиха добре работата, но им писна в някакъв момент и сигурно ми теглиха по една като си тръгнах.
Няколко дни преди да тръгна получих мейл, че получавам безплатен ъпдейт до WizzPrority, което ми осигурява сигурност, че чантата ми ще е в кабината и отделно помещение за чакане на опашката за shuttle-а. Е – излязох отпред и … чакахме 30-тина минути на 30+ градуса. Усещате ли иронията?
После последва коронния ми номер със спането с отворена уста в самолета. По правило ако някой друг ме вози и нещо не ми държи ангажирано вниманието заспивам моментално. И не знам защо, но ВИНАГИ с отворена уста. Отворих очи и първото което видях беше двете стюардеси да ме гледат и да се смеят. Радвам се, че още мога да забавлявам хората и също, че нямаше мухи в самолета.
Престоя ми в София беше интересен. Видях се със сестрата на Злати (където останах Вторник и Сряда), която ме посрещна топло както и двете ѝ момиченца – Катито и Габито, с които взаимно си стопихме лагерите от игри, видяхме се с колеги и дойде Четвъртък – времето за тръгване към Видин. Запознах се с Любо и Ева, които бяха отговорните хора за транспорта и обслужването ни по време на карането. По пътя към Видин спряхме да хапнем в една кръчма на средата на нищото със страхотни манджи и продължихме. Пристигайки във Видин, Пешо си направи застраховка живот и отидохме на мястото за провеждане на първоначалния инструктаж.
Там бяха 30-тината юнаци и юначки с които щяхме да атакуваме заедно Дунава. Презентацията на Борис Бегъмов беше прекалено дълга и с прекалено много детайли, които забравих още с излизането си от вратата. Запознахме се с няколко човека, запалихме джапанките към Баба Вида да си направим първото селфи, хапнахме, подготвихме велосипедите и легнахме.
Ден първи
Телефона звънна в 5:00, станах, изкъпах се набързо (доколкото мога да изкъпя и изсуша набързо косата…), Любо вече беше буден. Приготвих си багажа, сложих екипировката и се срещнахме с Пешо и Ева (които спаха в друг апартамент) и оттам – към старта. Беше към 7, когато отидохме на центъра и зачкахаме. Участниците се събраха един по един, организаторите бързаха да си приготвят нещата и така в 7:30 започна официалното откриване. Борис и кмета на Видин Огнян Ценков говориха, пожелаха ни успех и … СТАРТ. Ама чакай – не истински старт, а за пред фотографите и дрона. Пък и центъра разоран – ще го ремонтират. “Ей там, напред до пътя тръгнете”. Тръгваме ние, знаейки, че ще боли, ще гоним време, ще се борим със себе си и всички други драми и … никой не идва. След малко дотичаха едни жени облечени като от кметството (то няма от къде другаде да бяга де) и задъхани – “Кмета ей сега идва”.
Чакахме 20 минути кмета да се придвижи пеш от Баба Вида до Старта. ДВАДЕСЕТ МИНУТИ. Да бяха му дали едно колело на човека, преди казаха, че бил триатлонист, щеше да се справи.
Малък teaser – ако не бяха тези 20 минути закъснение много часове по-късно на финала нещата щяха да са наистина инфарктни.
Как да е, преглътнахме го това, часът вече е 8:20, камери, полиция, кмет, организатори, 5-6 изключително недоволни шофьора, че нещо се случва и не могат да минат с нормалното си темпо. Организатор и кмет стискат ръце за последно, всички сме върху педалите (#nohomo), тръгваме…
“Чакайте, чакайте, изтървах ръкостискането” вика една нахакана фотографка, предполагам от местния вестник. Аз се разбеснях вече, че ми писна и тръгнах, заедно с всички останали.
Темпото в началото с полицейския ескорт организаторите определиха като несъстезателно и стегнато, така и караме и ние. Полицейската кола кара с 20 км/ч, ние отзад. След малко колата кара с 40 км/ч, преди баир нагоре намаля, отзад става половин километров ластик, спираме, чакаме да се съберем и да пропуснем движението, тръгваме. Бавно, ластик, спираме, тръгваме, спираме, ластик, тръгваме. След като полицаите ни оставиха разбрахме, че отзад имало няколко човека, които издъхнали в началото и чак тогава ми светна за грешката, която организаторите направиха – просто не беше честно да тръгваме в една група хората, които бяхме декларирали, че ще изминем маршрута за 48 часа и тези за 5 дни. Вторите можеха да си позволят цялото време на света, да се разхождат и най-вече – да карат с приятно за тях темпо и да не се бъхтят като ненормални. Според мен трябваше да направим едновременен старт, но петдневните да са зад втората полицейска кола с адекватно темпо, за да не се чувстват пребити още в началото.
Как да е – приключихме с полицейския ескорт и милионите снимки от тази същата фотографка (снимки, които съм сигурен, че няма никой никога да види) около Арчар и започнахме с карането. Аз все гледах наляво – Дунава е голям, а аз не бях стъпвал толкова на запад. Подминавахме гледки, които бяха толкова различни от това, което съм свикнал да гледам, че понякога ми се приискваше да бяхме направили петте дни, за да можем да се разходим като хората по поречието на реката.
Първото ни изкачване беше на Арчар на 28 км. Добри Дол, Сливата, Орсоя та чак до Лом пътя беше прав, настроението – отлично. Влизайки в Лом ни очакваше първия от общо седемте сериозни баира по пътя. Това е2.8 км. със средно 5% наклон. Не, че не го изкарахме, изкарахме го, но ми се окоти коня (този израз така и не разбрах от къде е дошъл и ме е страх да питам), а паветата караха леките болки в ръцете да се засилят с още малко. За пръв път в живота си карах толкова дълго на павета.
Пътя мина през лошия асфалт на Ковачица, там и по спомен спряхме за почивка. Ева и Любо бяха спрели на една отбивка и бяха приготвили хапване и вода, имаше даже и столчета на които да седнем. Бегъмов спря с буса и си поговорихме малко, снимаха ни, а–,у, и продължихме. Надявахме се това да е най-лошото трасе по целия маршрут, но surprise – не беше.
Прекосихме едно приятно мостче на р. Цибрица и след нея последва баира, отвеждащ ни до покрайнините на Горни Цибър. От там последва едно страхотно спускане към Козлодуй, където трябваше да се отбием на първия ни за деня чекпойнт. Още като завихме от основния път усетихме, че това посещение ще е специално. Парка на Козлодуй е може би най-красивия парк, който съм виждал изобщо. Имаше една дълга улица от двете страни с приятни къщички, кестени, които ни пазиха от вече сериозното слънце, и приятна атмосфера. Стигнахме до паметника, направихме по едно селфи с Пешо и отидохме при колата, където рая вече беше слязъл. Нашите ходили до магазина, взели още яйца, сирене и бекон, айрян и бяха извадили от доматите на бабата на Пешо. Всичко беше приготвено и ни чакаше. Беше толкова яко, че ми се искаше да останем там още няколко часа.
Потеглихме с известна неохота и продължихме. Вече бяхме направили първите сто километра и всичко беше приятно. Само слънцето да не печеше толкова…
Потеглихме към АЕЦ Козлодуй и едно кратко изкачване. Учидих се на огромните мащаби на АЕЦ-а, после се учудих защо се учудвам. Учудих се и на това.
Следващите 25 км. преминаха в сравнително равни участъци с неприятен на места асфалт. Подминахме Хвърлец, Гложене, пресякохме р. Огоста и се насочихме към четвъртия от седемте баира на Дунав Ултра – този на Оряхово.
Сам по себе си не беше нещо, което не сме виждали с Пешо – ~5км с около 5% наклон и лош на места асфалт, но вече беше топло. Усещането беше все едно някой ни поливаше с гореща вода докато сме във фурна в къща, която гори. Хубавото беше, че в наше ляво се показваше Дунава и това ми даваше сили.
През всичките почти 700 км. нямаше и момент, в който като видя Дунава нещо да не ми трепва и зарежда вътрешно.
Километър 140, а навън времето беше станало адски горещо. Пешо трудно понесе това и се надявахме в Лесково наистина да има пункт от местни жители, които да ни насочат към чешма или поне сянка. Спирайки там рая дойде. Имаше местни, усмихнати люде, приготвили нещо за хапване и вода за пиене, а до тях имаше нещо дори по-ценно – чешма. Красива и голяма, изрисувана и добре поддържана чешма с деца и усмихнати хора наоколо. Пешо влезе буквално целия в нея и светна, аз потопих само краката до колената. Напълнихме вода, поговорихме си с хората и продължихме напред освежени и готови да атакуваме най-стръмния баир по целия маршрут на Дунав Ултра – с. Остров.
Табелата на с. Остров ни посрещна равнодушно, лошия асфалт преди селото малко ме наплаши, че изкачването ще е още по-трудно. Знаехме вече, че местните ще ни посрещнат топло и последвахме табелата. Чакаха ни кметицата на селото и още две жени. Посрещнаха ни топло, поговорихме малко и избухахме няколко парчета солена и сладка баница, която кметицата лично била замесила предната вечер. След разговора се отбихме до близката будка в която продават кафе и бухнах първото кафе за деня. Продължихме по живо по здраво. Притаихме дъх, готови да атакуваме. Минаха 20 метра, 50 метра, 100 метра и питам Пешо – “Абе тоз баир няма ли вече да идва, че ми писна!”. Оказа се дълго село. Как да е, точно в подножието му Пешо видя табела “Евтаназия по домовете”. Беше малко doomsday общото настроение в селото.
Малко за анатомията на баира – дължината му е ~2.5 км със среден наклон от около 6.5% като имаше няколко участъка от по 10-тина процента. Общо изкатерихме около 160 метра в положителна денивелация. Ако това не ви говори нищо ще обобщя – беше трудно. И все пак не беше невъзможно. Аз се притеснявах дали ще успея да го изкарам и да запазя силите си (все пак бяхме на 540 км от финала), но в компанията на Пешо го изкарах и дори не беше кой знае колко страшно.
Появиха се и фотографите на събитието. Двамата бяхме целите в пот, но настроението беше добро. Подминахме един циганин, който още не беше еволюирал до финалната си форма, посмяхме се, а, у, дойде спускането и БАМ
първа спукана гума
Влязох зверски в много неприятна дупка и чух шляпането. Спирам, Любо светкавично ми подаде помпа, щангички, гума и аз се заех със смяната. В това време фото екипа спря до нас с едно раздрънкано Пежо и предложиха помощ. Като видяха, че се справяме започнахме да си дрънкаме някакви неща, дойдоха и двойката румънци, които помолиха Пешо да им помогне, че на момчето му се беше прецакал нещо задния дерайльор и по негови думи каза, че последните 50 км. карал на най-леките предавки :D Сигурно се е пръснал.
Към средата на процедурата въпросното Пежо тръгна само по баира надолу без човек в него. Аз се пръснах да се смея, фотографката изприпка и я спря. Малко по-напред беше колелото на Пешо и малка бездна.
Гумата беше сменена, на Claudiu колелото беше оправено и потеглихме. Очакваха ни още около 120 км. Следващата ни цел беше с. Гиген или по-точно римското селищеУлпия Ексус. Когато стигнахме направихме по едно селфи и поговорихме с другите колоездачи, които засякохме там. Вече беше започнало да се смрачава и изкарахме светлоотразителните жилетки, стопове и фарове.
Преминаването през с. Гиген беше много приятно – първо, че поддържащия автомобил караше зад нас и се чувствахме с пъти по-сигурно, и второ – времето беше много приятно, свеж въздух преминаваше през нас, няколко къщи светиха, a темпото беше добро.
В продължение на 50-тина км. карахме с равномерно темпо по напълно прав път без нито един баир, но километрите вече натежаваха.
Последва ни предпоследния баир на ден първи – този на Сомовит – около 3 км. с лек наклон от около 4.5%. Не беше голяма драма, но дупките бяха отвратителни.
В Никопол седнахме на непредвидена вечеря с румънците, Любо и Ева. Вече бяхме адски изморени, а плана беше към 23:00 да сме в Свищов. Беше ясно, че няма да успеем да стигнем навреме. Освен това асфалта беше много особен – мега грапав, спусканията ги взимахме с 20 км/ч и това постоянното избягване на дупки беше също доста изморително.
В крайна сметка ден първи свърши в 2:30 в околията на гр. Белене (веднага след като си направихме по едно селфи на табелата).
Пешо, Ева и Любо разпънаха палатките и спаха там, аз реших да спя в колата. Въртях се сигурно един час докато си успокоя духа и тялото.
Ден втори
Часът е 5:30, алармата звънна. Събудих се странно свеж знаещ, че денят ще е дълъг и интересен. Изпихме по един горещ чай с Любо, Пешо и Ева и тръгнахме по своя път. Учудващо, бяхме починали достатъчно за да продължим, духа и на двамата не беше пречупен, а задника и дланите ми не бяха тотална щета. Все хубави неща.
До Свищов, както писа и Пешо, стигнахме на автоматик, а и пътя беше супер равен. Посрещнахме изгрева, спряхме на една бензиностанция на Свищов, бухнахме по едно кафе и продължихме към точка номер 5 – църквата с въртящите колони. До нея за окончателно събуждане ни чакаше един кратък, но лют баир до църквата.
След това се отправихме към единствения несъборен паметник на Ленин в страната – този в Новград. Спряхме, поговорихме малко с местните, напълнихме вода и потеглихме. След едни приятни спускания телефона ми звънна и беше Борис Бегъмов. Каза ни, че сме объркали маршрута и трябва да се върнем. Не беше тежък на връщане, но отне около 40-тина минути, малко баири и бяхме на прав път директно към лошия път на Белцов/Ценово.
Та точно пресякохме р. Янтра и попаднахме на един от най-лошите пътища изобщо – имаше дупки тук-там, но лошото беше неравния асфалт. Имаше стърчащи камъчета, които го правиха добър по време на дъжд или може би сняг, но когато караш колело с 25 мм. широка гума надута на 7 бара чувството не е яко.
Не знам дали споменах, но за разлика от ден първи ден втори, противно на това, че се насочваме към равна Добруджа, беше много по-хълмист. Положителната денивелация беше 2,75 км, което е рекорд за 400 км. за един ден за мен (баси изречението, а?).
Първият сериозен баир беше и този с гадния асфалт между Ценово и Обретеник – почти 5 км изкачване с общо 200 метра денивелация.. последва едно страхотно спускане и пак – баир, после пак. Така нещата продължиха до Русе – малки изкачвания.
В този момент ясно помня как грохнах.
Ей така от нищото уж се смачках. Помня как мрънках на Пешо да намали макар, че времето изобщо не беше с нас и така направихме смяна и водих аз. Заведох ни в Русе за снимка, но усещах как състезанието за мен скоро ще приключи. Усещах липсата на всякаква енергия, демотивацията, огорчението, че ще проваля и двамата. Бях навел глава и въртях колкото можех, но трябваше поне два пъти повече за да имаме някакъв, какъвто и да е било то шанс да се впишем в 48-те часа.
Четиридесет и шест километра бях между това да припадна и да опитвам да държа темпото на Пешо докато той беше намалил осезаемо. Беше най-трудната част от карането. И най-трудното беше не това, че нямах сили, защото вече бяхме карали 30+ часа, а това, че психиката ми беше на косъм да се предаде. Нямах никакво желание да кажа – “Повече не мога”, но знаех, че нямаше да изкарам много.
И все пак въртях. Въртях точно толкова, колкото ми беше максимума и така 46 км. И понеже вярвам в щастливи съвпадения, но не и за моя сметка, бях безкрайно учуден като се засякохме с врачанско-видинската група.
Нека ви разкажа за тях, защото толкова колорит е трудно да бъде описан само с едно изречение. Врачанско-видинската група е единствената четворка на Дунав Ултра 2018. Най-ниския участник там е 190 см, средния ръст е около 2 метра. Всичките четирима са в много добра форма, но не това е най-интересното в тях. Те са по друг начин интересни. Те са цветни. И то толкова цветни, че като тръгнат да говорят и човек може да се спука от смях.
И така, видяхме ги, поговорихме малко с тях, Пешо обърна на врачански и вдигна още повече настроението, аз стоях отстрани насран и ,знаейки, че сега ще е още по-тъпо ако не мога да им наваксам темпото. Карахме малко заедно, но аз нямах повече какво да дам. Тогава Пешо дойде и ми каза – “Това е последния ни шанс. Ако ги изтървем никога няма да приключим в 48 часовата рамка”. И беше прав. Имахме още над 220 км., нощта беше близо. Напънах наистина колкото можах, че и повече. Това беше моя абсолютен предел. Броях на ум, следвах темпото, опитвах се да карам плътно зад последния.
Не успях.
Правих постоянно ластици и това сигурно изнерви момчетата, но сигурно са ме видели, че давам каквото мога и се случи това, за което ще им бъда благодарен винаги. В района на Тутракан последва един 3км баир, който не беше нещо кой знае какво, но аз грохнах. Педалирах прав, седнал, сменях начините на дишане, хапнах малко и успях да направя сигурно 300 метра ластик.
Не спрях.
Някак тия петимата ми показаха, че мога да бъда с тях, но трябва да го заслужа.
И въртях. Ставах, сядах, дишах. Пак ставах, пак сядах, дишах.
Изчакаха ме.
Болеше, но продължих. От този момент до следващите 200 км. се сформира един колективен дух в който станах член и аз.
В спорта често можеш да разпознаеш сърцатите хората без да говорят много и те го показаха, и петимата.
Пристигнахме в Тутракан, направихме по едно селфи, поговорихме си малко с фото екипа, който беше там, напълнихме вода, хапнахме малко, заредихме, приготвихме се за една дълга нощ и тръгнахме. Следващата ни цел беше Силистра. Тези 60 км. ги взехме с 18 минути почивка. Момчетата въртяха здраво, аз стисках зъби като на места бях толкова изтощен, че се чудих дали няма да падна някъде.
Дългата поредица малки, но стръмни баирчета се гъбаркаше с мотивацията и това, което е останало от мен, но така и не се откъснах от групата.
Стигнахме Силистра, а там Любо и Ева бяха паркирали до марка и осмия чекпойнт и правиха омлет. На тротоара. Спряхме, аз се строполих на земята, но нещо дълбоко в мен знаеше, че няма да оставя момчетата както и те мен. Вдишах няколко глътки въздух, хапнах, посмяхме се с момчетата и тръгнахме.
В първия-втория ден на новолунието вечерите са тъмни като в гъз. Толкова тъмни, че ако е облачно човек може да се дезориентира без много трудности.
Дойде времето за последния сериозен баир на Дунав Ултра на 150км от финала. Участъка на пътят Силистра-Добрич продължи около 19-тина км. като се наредиха две катерения. Не те бяха трудни, но спирахме често, нямахме още кола зад нас, която да свети и най-лошото беше, че не можехме да видим кога най-накрая ще свърши проклетия баир. 80 минути катерене и спускане на спирачки и общо под 20 минути почивка стигнахме върха на нашето приключение. Карахме с доста добро темпо, дрънкахме си някакви неща, аз си възвърнах силите и мотивацията, ума ми беше супер свеж.
Карахме вече към моя роден град – Добрич и започнаха шегите. Всичко беше страхотно докато не видяхме в далечината няколко светкавици, които раздираха облачното, тъмно като катран небе. Дадохме си експертните оценки, че няма да ни вали и не мина много време докато стигнем до Средище, където заваля един малък порой. Понеже бяхме подготвени набързо облякохме непромокаемите горнища, но то веднъж като те навали… Почакахме малко да намалее и тръгнахме. Наядохме се на кал чак до Добрич.
Оттам маршрута мина през летището, което с ръка на сърце мога да кажа, че беше най-лошия път през целия маршрут. Гониха ни кучета, беше тъмно, имаше мокри участъци със скрити дупки, скъсахме спица.
След като минахме най-лошия път по трасето тръгнахме в посока Кардам (с. Стефан Караджа, Генерал Тошево – Кардам). Там участъка е нов и идеално прав (буквално, денивелацията до Кардам му е само няколко метра). Тръгнахме бавно с Пешо докато видинско-врачанския отбор не оправиха скъсаната спица и след няколкостотин метра зад нас се чу буквално вой, който каза нещо от рода на: “Хайде последна атака, пустиняци!”. Оставаха ни около 70 км, слънцето още не се беше показало. Настръхнах, настъпих педалите (#nohomo) колкото можах и се учудих, че изобщо мога да си контролирам още краката. С едно отмерено движение четворката ни изпревари и ние се залепихме зад тях. Не знам какво е да изпитваш религиозно увлечение (макар, че съм имал въображаеми приятели), но в този момент изпитах нещо такова. Часът по спомен беше някъде около 5:00 и непрогледната новолунна нощ започна да сменя леко-леко цветовете си. Признавам направи го бавно, имаше и мъгла на места, но го направи. В първите успели да пробият лъчи на новия ден ние карахме със скорост, с каквато никога не съм мислил, че ще мога да се движа след 600 км. и общо три часа сън.
Тогава се случи нещо интересно. С времето в подготовка четох много и не мислих, че ще има нещо фундаментално ново за мен, което ще срещна по време на Дунав Ултра, но ето, че се случи. Когато подминахме с. Стефан Караджа и се отправихме към нашата финална атака на Дунав Ултра осъзнах, че получавам халюцинации… от няколко часа. Беше забавно, защото съм сигурен, че бях с всичкия си, но разтегливите форми променяха вида и цвета си покрай мен. Беше странно абстрактно. Нещо като organic augmented reality – насложена реалност върху нашата. Предполагам, че освен от умората и недоспиването може да съм изпаднал в някакъв сериозен дефицит на нещо (я витамин, я минерал, я нещо друго).
Та, да се върнем на летенето. Когато карахме в участъка с. Стефан Караджа – Генерал Тошево усетих онази близост с моя край, която като, че ли ти казва – “Добре дошъл”. Почувствах се силен – бях изкарвал тази отсечка неведнъж и всеки път беше абсолютното удоволствие. Удоволствието да караш с тия петимата, които вече виждах повече като войни, беше нереално.
И за добро или лошо свърши хубавия път, стигнахме до Кардам и там, мястото за последната снимка всички спряхме и бойния дух се върна в нива подобни на тези в старта на тази лудост. Посмяхме се, заредихме с вода, пуснахме по една такава и остана последната точка – около 36 км. до табелата на Дуранкулак. Не съм сигурен дали преди съм виждал толкова целеустремени хора, но гледката беше направо настръхваща – всеки се беше съсредоточил (това е думата, защото за всичко друго бяхме вече прекалено уморени), всеки се бореше с последните малки демончета, които бяха останали в него и всеки имаше една цел, която преследваше като хрътка (раздразнителна и много, много гладна хрътка) – последния метър.
Участвах в Дунав Ултра, за да изпитам върховната умора, чувството на прераждане (което изпитах на два дуатлона, 2-3 бревета и един sky-run) и да докажа на себе си, че още мога. И ще бъда честен – за 600 км. не бях изпитал в концентрация това, освен на няколко малки глътки. И това ме натъжи.
Ето, че броейки последните метри, а когато караш 670 км. 30 км. се чувстват като метри, попаднахме на един много лош участък. От момента помня само, че слънцето вече се показваше, имаше пъстра сянка по отвратителния асфалт, бяхме развалили формацията, за да се спасим поединично от огромните дупки, и …
Чу се все едно се счупи метал.
Шляп,
шляп,
шляп.
Втора спукана гума на 30км. от финала и най-вече – време, в което най-малкото забавяне ще ме дисквалифицира. Продължих да карам. 100 метра, 200 метра, 300 метра. Бях убеден, че ще изкарам, вече не мислих за колелото, знаех, че няма да има остри завои по пътя. Исках да приключа колкото се може по-скоро.
Не можах.
Момчетата ме спряха, погледнаха ме (всички без изключение знаехме, че ще финишираме или няколко минути преди края на контролното време (48:20 часа) или ще се провалим. Сервизната кола вече беше по пътя си към Дуранкулак където щеше да ни чака, аз нямах никакви инструменти в себе си, Пешо също. Това беше най-голямата ми грешка в цялото каране. Тогава капитана на четворката ми даде помпа и резервна гума, което беше огромен жест. Ако нещо се случеше с някой от тях нямаше да влезем в контролното време и всичките тези усилия щяха да бъдат напразни.
Сърцатите хора се познават по действията.
Пешо искаше да остане с мен, но нямаше смисъл – нямаше да сменим гумата по-бързо.
Не мисля, че ми отне повече от 3-4 минути да сменя гумата, още 1-2 да я напомпам до 7 атмосфери (което е абсолютен рекорд за мен) и да потегля отново. Ръцете ми бяха целите в масло (от веригата), трепереха, но не от друго, а от вълнение. Ума ми беше бистър, усещах върховното чувство на това, че състезанието започва едва сега. Състезанието беше със самия мен и този път нямаше къде да избягам, да се скрия.
Когато скочих на колелото, за да догоня момчетата усетих какво е издало звука на счупен метал – колчето на кормилото ми се беше строшило на две, но болта и контра-гайката си бяха здрави. Това ме постави в ситуацията, в която трябваше да избирам да спра и да не рискувам или да карам още около 30 км. до финала. За тези, които ме познават няма да се чудят дълго време какво ми беше решението.
И малко за това защо реших да продължа. За разлика от (да кажем) градските велосипеди шосейните не се управляват от кормилото, а от цялото цяло на колоездача, подобно на моторите. Основната част за управление на велосипеда е (както би казал Карен) – гъзът. Накланяш леко наляво и колелото отива там, накланяш на дясно и отиваш на дясно. Единственото, което трябваше да съобразявам през тези последни минути беше да държа ръцете на симетрично разстояние една от друга, за да запазя баланса на кормилото спрямо болта и да изнеса цялата си тежест (94 кг. съм ако не помните цифрите в началото) на кръста/гърба, за да може ако се счупи болта да не падна, а да запазя някакъв баланс.
Продължих. Polar-а беше умрял и пуснах Strava от телефона. Тя отчете последните 11 км и средна скорост от 28 км/ч. Шестотин осемдесет и седми километър, въртя като вятъра. Имах чувството, че за точно този малък, микроскопичен момент аз правя нещо. Чувствах се значим пред себе си, което е толкова рядко. Чувствах, че ще настигна момчетата и ще финишираме заедно. Чувствах, че мога, чувствах.
Вдишай-издишай, вдишай-издишай. Бях на прага на хипервентилацията. Гърдите ми се раздираха от сутрешния въздух, в мен гореше пожар, който нямаше да мога да загася ако не финиширам навреме. Болеше, но знаех, че ще боли повече ако не можех да финиширам навреме. Средния ми каданс беше между 110 и 120 оборота за минута, което е нещо крайно нетипично за мен.
Вдишай-издишай, вдиш…
Нещо ме стисна за гърлото грубо, силно и (не)очаквано.
В далечината, в последното спускане, в последния, шестотин деветдесет и осми километър, в последните завъртания на педалите, с последните вдишвания и издишвания се показа малката тълпа от хора, които стояха до табелата и започнаха да викат като ме видяха на хоризонта.
Часът беше 7:59.
Последните метри бяха нещо, което не исках да се случва. Исках да продължа и да карам още дни, да се радвам и да знам, че мога. В 7:59 се движих с 42 км/ч и въртях толкова, колкото не съм въртял никога.
Финиширах точно в 8:00
Пешо ми подаде последния сигнал, знаеше, че не можем и двамата да разчитаме на моята преценка. Аз слязох от колелото, оставих го на земята, стиснах силно ръката на Пешо и легнах на земята.
Не съм сигурен какво беше чувството, когато финиширах. Исках да си продам колелото, да го хвърля някъде или да се прибера на ход към Варна. Не чувствах удовлетворение, не чувствах, че съм победител. Не чувствах.
Поговорихме малко с Пешо, с Любо и Ева, с момчетата от видинско-врачанската група, върнах им помпата и нова резервна гума, някой подаде кенче, отпих една глътка, повече не можах.
Брат ми вече беше на финала готов да ми прибере тленните останки към Варна. Беше се подготвил повече от подобаващо – имаше една кошница с няколко бири (имаше и безалкохолни), солено и сладко за хапване, газирана вода, минерална и още неща, но аз бях толкова изморен, че не можех да поема повече нищо. Закара ме до Варна като през половината път аз просто бях заспал като пън.
Трябваше да минат две седмици, за да мога да почувствам нещо. Чувството не е като да си победител, защото не беше състезание, но не почувствах, че победих себе си. Пешо, момчетата, Любо и Ева не ми позволиха да стигна до абсолютното отчаяние, да се предам. Дължа им много.
Дали ще има друго такова каране сигурно питате? Още не знам. Не съм сигурен, че искам да го карам без Пешо, Евтим, Сашо, Наско и Иван, Ева и Любо и Златина.
За да можете да си представите настроението около гр. Тутракан можете да хвърлите едно око на видеото;
И малко статистика:
Изминато общо разстояние (с отбивките): 698 км.
Изминало време: 47:41:28 ч.;
Време на движение: 37:39:57 ч;
Време на почивка: 10:01:32 ч. от които 3 часа в сън;
Средна скорост: 14,6 км./ч;
Средна скорост на движение: 18,5 км./ч;
Общо изкачване: 4423 м;
Общо спускане: 4428 м;
Най-висока точка: 276 м.н.в., Карапелит – Добрич;
Най-ниска точка: 14 м.н.в., Силистра;
Денивилационния план за двата дни (+11 км на финала, защото Polar-а умря) можете да видите в галерията. Ако имате въпроси по тях ще отговоря на драго сърце. Ако са ви интересни и профилите на някои от баирите също мога да ги включа;
Този разказ го писах две седмици без ясна причина защо. Бяха направени почти 50 редакции по него, анализа на данните отне също съществено време. Пътят е отъпкан така, че следващия път би трябвало да съм по-експедитивен. Благодаря за търпението <3
Последните дни чета доста за карането на дълги разстояния на висок каданс и нещата изглеждат постижими. Днес ще завъртя пак към Албена да видим резултатите.
По този повод предното ми каране с подобна цел беше преди няколко дни и като приключих Polar-а ми каза да си гледам работата. Беше се счупило нещо в данните и така и не можах да ги извлека. Още ме е яд. А от поддържката ми казаха, че нямам шанс да взема дори и счупения файл (понеже запазва с XML-like format данните лесно може да се намери проблема ако не е нещо тотално осрано). И така.
Ако при ъпдейт на WordPress получите “Briefly unavailable for scheduled maintenance check back in a minute” не се шашкайте. Това е добра идея, защото при ъпдейт за малък период от време сайта ви може да хвърля грешки, логове и каквото се сетите. За това от WordPress са направили тази страничка, която да показва нещо адекватно в такива случаи. Проблема обаче е, че понякога не иска да се трие. Оправянето на проблема е много лесен и просто трябва да изтриете .maintenance файла от основната директория на вашата инсталация. След това си вижте правата по директориите, защото това е една от вероятните причини;