CategoryFuture articles

ISTA 2018 live blogging, day 1

По традиция и тази година ще има 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

Като цяло презентацията му беше много обща и наистина нямам какво друго интересно да ви предам.

Свръхчовекът и интервюто му с мен

Както писах преди време Жоро от Свръхчовекът с Георги Ненов ме покани да поговорим малко за Дунав Ултра, мотивация и за още няколко интересни неща.
Подкаста излезе и можете да го чуете тук:

 

Благодаря на Жоро за страхотното интервю!

Излезе видеото на лекцията ми в QA: Challenge Accepted!

Излезе видеото от лекцията ми на QA: Challenge Accepted 2018.

 

Освен, че гласът ми трепери като на ученичка мисля, че не се справих толкова лошо.

В канала са и останалите видеа и lightning talks също.

03.2018

Този месец се учудвам колко малко съм писал.

Personal update – в офиса ми дадоха освен QA задачи по новия проект и да вдигна един VPS като staging server с nginx, mysql, проекта е писан на Laravel. Деплоя мина добре, проектите са up and running и като има задачки на сървърно ниво ги поемам аз, което ме кара да се чувствам много добре. И това основно заради marvin, който неведнъж съм искал да запаля. Our relationship is complicated, както казват :)

Иначе ето няколко неща, които се случиха последните седмици без явна подредба:

 

  • След Meltdown и Spectre дойде ред на amdflaws. Това са колекция от сериозни уязвимости според сайта. След един бърз и некомпетентен поглед от моя страна май не са като Meltdown/Spectre, а Линус Торвалдс тегли една майна на авторите. Няма да ви развалям удовоствието от четенето. Линус си е епичен както обикновено :)
  • Branch prediction attacks на много ниско ниво откриха в семейството процесори на Intel (само те са били тествани). Прочетете статията, дава малко светлина върху една интересна техника за branch predictions;
  • Semantic Versioning е проект, който описва по прост начин идеята за означението на версиите (versioning) като например какво значи версия 3.2.17. За хората с опит това е ясно, но за по-новите в бранша е ценен ресурс;
  • Камерата на Google Pixel използва AI-то, което правило снимките по-яки или поне така твърдят. В общи линии използват image segmentation, което разделя снимката на сегменти и ги сглобява с техен си алгоритъм. Така според тях качеството на снимките се подобрява значително;
  • Новината на годината в digital signed certificates сектора е, че Let’s Encrypt пуснаха поддръжка на wildcard certificates на цената на техните нормални сертификати или точно 0 лв! За целта трябва да добавите TXT domain record и да използвате техния API endpoint. Имайте предвид, че трябва да използвате certbot 0.22.0 или по-висока. Другото можете да направите с подобен синтаксис:
./certbot-auto --server https://acme-v02.api.letsencrypt.org/directory -d *.nedko.info --manual --preferred-challenges dns-01 certonly
  • Излязоха данните от годишната акнета на StackOverflow за 2018 година. Винаги тази анкета е служила за много добра индикация накъде сме откъм технологии, навици, заплащане и т.н.;
  • Професор Стивън Хоукинг си замина на 76 г. оставяйки в много от нас нуждата да знаем, да погледнем нагоре (или в нас) и да се борим. Почина 50 години по-късно отколкото лекарите му бяха казали, че ще живее с ALS;
  • YouTube имат намерението да борят fake news с линк към Wikipedia под видеата. Много се кефя на идеята, но ако човек гледа видеа за рептили е малко вероятно да седне и да изчете 5-6 страници статии и научни обосновки да кажем. Ще видим, дано помогне;
  • На Pi Day излезе моята любима джажда Raspberry Pi  3 Model B+ (последния да затвори вратата). Новия модел ще има 1.4 ghz quad-core Cortex A-53 процесор, 802.11.ac и Bluetooth 4.2, гигабитов нет (over usb 2.0) и подобрено оглаждане. Цената остава $35;
  • Фейсбук ми напомни, че преди 7 години им писах един благодарствен мейл, който още им виси на сайта. Бях техен клиент от около 2007 до 2016;
  • Едно леко извратено видео как елементарните неща, които можем да правим с десетки библиотеки и драйвери навремето на асемблер са се пишели на ръка. Това не е урок как да пишете на Асемблер, а по-скоро да си даваме по-често сметка колко ненужни ресурси заемаме с някой елементарен npm пакет, js библиотечка или каквото се сетите;
  • И как можем да подкараме Kali Linux на Windows 10 – native! Изисква много малко подготовка и работи добре;
  • Google изгуби продъжилия над 8 години съдебен спорт с Oracle относно и трябва да платят около 8.8 милиадра долара. Така, че внимавайте с лицензите ;)
  • Винаги съм се кефил много на ентусиастите, а на Paulo Constantino съм особен фен откакто разбрах, че е направил 8 битов процесор ей така just-for-fun. Схваща ми се ларинкса само като видя колко сложно изглежда на външен вид;
  • А ако някой има нужда да деплойне Laravel server някъде може да ползва tutorial-а на DigitalOcean, който на мен ми свърши страОтна работа;
  • Из българския интернет (блогосфера звучи тъпо) Божо говори за две наболели теми тия дни – това, че ГДБОП НЕ ни следят чатовете и повече информация за защита на личното ни пространство;
  • Програмист сте и си пускате локална среда, която в hosts файла задавате да бъде neshtosi.dev или neshtosi.foo. Отваряте го през Chrome и/или Firefox и БАМ – не можете, защото сертификата ви не е валиден? Какъв сертификат, бе? И не можете да продължите, защото имате HSTS? WTF? Споко – проблема не е във вас. От извесно време насам Chrome и Firefox force-ват gTLD-тата .dev и .foo към https с hsts. Повече информация можете да прочетете тук;
  • GitHub преживя най-голямата DDOS атака някога. Историята е интересна и препоръчвам да я прочетете;
  • И свързано донякъде с горния ред – да не забравите да си ъпдейтнете memcache-а;
  • Един модел за git branching, който е кратък и извънредно полезен;
  • Най-тъжното нещо, което съм чел тази година е едно несъмсигуренколкоточно изследване финансирано от изобщо неподкупните и политически независими 24часа. Няма да пиша нищо за него, защото брадата ми е още мокра от сълзите, които текоха като реки докато го четох първия път;
  • От серията “Научи xx за хх минути”, този път JS от Jeremy Thomas;
  • Ся, нещо важно – пускат Unity C# под reference-only license;
  • ngxtop е един много полезен проект, който ви показва в конзолата real-time метрики за натоварването на nginx. Писан е на Python и се инсталира елементарно през pip:
    pip install ngxtop

    Можете разбира се да намерите и WEB модул, който прави това, но официалния е Luameter и струва 40 евро.

 

P.S. Ако се чудите каква връзка има комикса със статията – няма. Но ми е любим откакто го открих :D

 

P.P.S. Генерирането на Akismet api keys не работи така, че който иска да ми спами блога сега е момента.

Замина си Стивън Хоукинг

Както вече разбрахте, днес IQ-то на света падна рязко. Всички се правим, че знаем колко голям е бил, но лично аз не мога да разкажа повече от 1% от това, което той е направил. И все пак е бил badass. Защо? Освен, че е гениален Хоукинг притежава още няколко неща, които прекалено малко хора имат. Едно от тях е, че през 60-те години, когато го диагностицират с ALS му казват, че ще живее още няколко години. Почина 50+ години по-късно вкопчил се в масивния клон на любопитството и нуждата да разгадае колкото се може повече загадки докато е жив. И успява. А теориите върху които е работил са:

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

Книгите, които издаде (или участваше в издава) заслужават да бъдат изчетени и аз със сигурност ги мятам скоро:

 

И последно, обещавам, искам да цитирам големия Самуил Петканов:

IQ-то на човечеството падна наполовина

ЗА ЩАСТИЕ САМО НА ПЛАНЕТАТА ЗЕМЯ – Видът homo sapiens sapiens се върна на библейските си нива на разум считано от рано тази сутрин.

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

Резкият спад в умственото ниво на вида, измислил неща като “София: Ден и нощ” и същевременно “Черни дупки, бебета вселени и други есета” надали ще доведе до особени катаклизми и Вселената ще продължи да си вселенува.”

 

Господ в паника: Само Хоукинг знаеше как работи цялото това Нещо

АМ ГОРЕ – Всевишният изпадна в паника, след като професор Стивън Хоукинг спря да съществува рано сутринта вчера.

“Само той знаеше горе-долу как работи всичко това, което аз създадох в един от своите пиянски периоди” – завайка се Господ.

Той нерядко е ползвал знанията на Хоукинг, за да поддържа Вселената в сравнителен порядък и в някаква степен логична.

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

Единственият вариант с поправяне на Вселената сега е тя да бъде застрахована, но Бог смята, че застрахователите ще го изпържат и винаги ще казват, че щетите са по негова вина поради небрежност.

 
 
 
Не почивай в мир, а бъди сред звездите, намери отговорите и се усмихвай в някоя галактия, so far away.
 
 
 
P.S. Хокинг е известен и с това, че е забавен и много ироничен (основно със себе си).

Датчик за фини прахови частици – как, защо и няколко идеи

Снощи най-накрая свързах датчика за твърди частици с този за температура и развойната платка и всичко тръгна от раз.

Хардуерът

Развойна платка: ESP8266
Датчик за твърди частици: SDS011
Температурен датчик (+атмосферно налягане и влажност): BME280

 

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

Софтуерът

От софтуерна гледна точка нещата са елементарни. В сайта на Air Bulgaria са публикували готов firmware, който прави впечатляващи неща с контролера. Някои от тях:

  • WEB сървър, който сервира данните от датчиците в малка страничка достъпна от всеки потребител логнат в същата мрежа в която е устройството;
  • Вдига сам Wi-Fi spot към което потребителя може да се закачи за първоначална настройка. След това esp8266-то се закача за вашата мрежа и става клент както всяко друго Wi-Fi усторйство закачено към домашния ви рутер;
  • DHCP сървър за първоначална инициализация;
  • Може да изпраща данни към един или повече API endpoints;
  • Изпраща автоматично данните към http://luftdaten.info, а оттам https://airbg.info ги взимат и парсват до подходящ вид на тяхната карта;
  • Може да изпраща данните към InfluxDB;
  • Поддържа OTA updates (On-The-Air);
  • Поддържа доста сензори и дисплеи, които се настройват елементарно.

 

Моята идея

Към стандартната функционалност бих искам да добавя следните неща:

  • Физическо укрепление на системата (кутия, термошлаух, както писах по-горе и други малки неща);
  • Данните ще хвърлям и към InfluxDB, който (по идея на Стан) ще бъде в контейнер (хем да се науча да работя с тях, крайно време е!);
  • Grafana dashboard, защото всеки обича да му е красиво и функцоинално;
  • Независимо захранване. Понеже SDS011 не пести много ток, ще мисля вариант с измервания на една минута. Същото се отнася и за температурния датчик (и евентуална корекция за да синхронизирам двата). Енергонезависимостта му ще е осигурена с power bank (ако някой ден ми попадне соларно панелче, което да пълни power bank-а през деня ще стане епично).

 

Ето и как изгелжда работещия проект на с firmware-а на airbg.info:

 

Ако някой има интерес или въпроси може да пише под статията. Ако мога ще отговарям.

 

P.S. Най-важните неща за накрая. Нямаше да се хвана с този проект ако не бяха три основни фигури – Орлин, който на Zara Code Week миналата година ни показа, че електрониката изобщо не е толкова сложна колкото си мислим и че всеки в днешно време може да реализира IoT проект за отрицателно време, на Стан, че ми подари без причина ESP8266 и на Златина че ме изтърпя докато в нас беше катаклизъм от кабели, платки и документация.

Малки SQL трикове за WordPress

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

Как да покажем общия брой публикувани постове за определена година

В този блог за 2017 година съм публикувал 155 поста. Чудя се това малко ли са или много, но колкото-толкова.
Интересно е друго – начина по който видях това. Оказа се съвсем лесно с SQL заявка, която изглежда по този начин:

select count(*) from wp_posts where YEAR(post_date) = 2017 and post_type = 'post' and post_status = 'publish'

Имайте предвид, че тази заявка показва само публикуваните постовете (не page или някакъв custom post type) за 2017 г.

Примерен резултат:

mysql> select count(*) from wp_posts where YEAR(post_date) = 2017 and post_type = 'post' and post_status = 'publish';
 +----------+
 | count(*) |
 +----------+
 | 155      |
 +----------+
 1 row in set (0.00 sec)

Ако искате да видите колко draft-а имате можете да изпълните тази заявка:

select count(*) from wp_posts where YEAR(post_date) = 2017 and post_type = 'post' and post_status = 'draft'

Примерен резултат:

mysql> select count(*) from wp_posts where YEAR(post_date) = 2017 and post_type = 'post' and post_status = 'draft';
 +----------+
 | count(*) |
 +----------+
 | 116      |
 +----------+
 1 row in set (0.00 sec)

 

И не – няма грешка. Имам цели 116 поста, които така и не съм публикувал, повечето от които са започнати и недовършени истории, няколко tutorial-а (още ме е яд, че не завърших този за HTTP/2) и няколко пътеписа.

Как да сменим siteurl и homeurl с един ред

Ако не сте чували за siteurl и homeurl няма страшно. Но ако се наложи да мигрирате сайта, да смените домейна или да добавите/премахнете HTTPS поддържка ще се наложи да поработите с тях.

UPDATE wp_options SET option_value = replace(option_value, 'http://www.nedko.info', 'https://www.nedko.info') WHERE option_name = 'home' OR option_name = 'siteurl'

След изпълнението на тази заявка при опит да достъпя сайта ще бъда пренасочван автоматично от non-HTTPS към HTTPS версията на блога. Можете да я използвате и при смян на домейн да кажем като смените втория линк на този, който желаете. Не е най-добрия пример, но е важно да схванете как работят siteurl и homeurl. Друга полза е ако ъпдейтвате сайта и имате да мигрирате да кажем https://nedko.info/v2 към https://nedko.info.

Работа с пароли

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

UPDATE wp_users SET user_pass = MD5( '123456' ) WHERE user_login = 'admin'

Тази заявка ще смени паролата на потребителя admin с 123456.

 

Ако ви се наложи да работите върху клиентска инсталация, но не искате да сменяте паролата на потребителя можете първо да запишете хеша ѝ със следната заявка:

select user_login,user_pass from wp_users

Примерен резутат:

mysql> select user_login,user_pass from wp_users;
+------------+---------------------------------------------------+
| user_login | user_pass                                         |                           |
+------------+---------------------------------------------------+
| admin      | $P$B5&50UGz0.kW3tq6jifraX.hT!РqZP.                |
+------------+---------------------------------------------------+
1 row in set (0.00 sec)

Сега запишете стойността на user_pass полето, изпълнете горната заявка, която ще смени паролата на 123456 и като сте готови просто изпълнете следната заявка за да върнете старата парола:

UPDATE wp_users SET user_pass = '$P$B5&50UGz0.kW3tq6jifraX.hT!РqZP.' WHERE user_login = 'admin'

 

Изтриване на всички спам коментари

Преди време ми се наложи да изтрия от един блог над 10 000 коментара. Tricky-то беше, че имаше и коментари от хора, не само спам. Решението е тривиално и се нарича Akismet. Безплатната версия върши страхотна работа, но имах проблем с привилегиите на DB потребителя и коментарите маркирани като спам не се триеха. За това използвах тази заявка за да ги изчистя (~10 000 коментара от които 90%-95% спам се изтриха за под 2 секунди):

DELETE FROM wp_comments WHERE comment_approved = 'spam'

Ако искате да изтриете и тези със статус awaiting moderation можете да ипозлвате следната заявка:

DELETE FROM wp_comments WHERE comment_approved = '0'

Как да видим всички неизползвани тагове

Ако искате да видите дали имате тагове, които никога не са използвани можете да изпълните тази заявка:

SELECT name,count from wp_terms wt INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count=0

Примерен резултат:

mysql> SELECT name,count from wp_terms wt INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count=0
 -> ;
+--------+-------+
| name | count |
+--------+-------+
| blabla | 0 |
+--------+-------+
1 row in set (0.00 sec)

Ако обаче искат да видите (спорд мен далеч по-практично) тагове, които са използвани 5 или по-малко пъти, сортирани по възходящ ред можете да изпълните следната заявка:

SELECT name,count from wp_terms wt INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count<5 order by wtt.count DESC

Примерен резултат:

mysql> SELECT name,count from wp_terms wt INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count<5 order by wtt.count
+--------------------------------------------------------+-------+
| name | count |
+--------------------------------------------------------+-------+
| blabla | 0 |
| humor | 1 |
| кино | 1 |
| котка | 1 |
| vulnerability | 1 |
+--------------------------------------------------------+-------+
5 rows in set (0.00 sec)

Извличане на всички мейли от коментарите на потребителите

Маркетинг хората имат нужда да пращат таргетирани съобщения до разни хора и един страхотен начин да изкарате списък с всички мейли от коментиралите по блога хора е следния:

select comment_author_email,comment_author_url,comment_date from wp_comments order by comment_date DESC

Тази заявка ще покаже мейла, сайта (ако има такъв попълнен) и датата на коментара. Това можете да го ползвате като ориентация.

Примерен резултат ще върне следните данни:

somemail@gmail.com | http://www.somedomain.com | 2017-11-01 17:18:19 |

Иначе можете да лимитирате само до списък с мейлите така:

select comment_author_email from wp_comments

 

P.S. For non-Bulgarian speakers:

  • What are you doing here?
  • If you think that the article will be useful I can translate it in English.

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

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

  • Не водих лекции в Социалната Чайна. Преди няколко месеца излязоха открито и казаха, че парите им не стигат. Тогава се свързах с тях и говорихме да водя лекции в тяхната зала, а приходите (всеки плаща колкото реши) да отиват в Чайната. По същото време смених работата и реших да забавя нещата за да мога да се концентрирам върху нея;
  • Почти не снимах. За поредна година;
  • Почти не танцувах;
    • Нямам нито едно представление за годината.
  • Не говорих на TEDx. Темите ми щяха да бъдат свързани с депресията или Quality Assurance in real live;
  • Не говорих на WordCamp Varna 2017. Предложените ми теми бяха за security и performance testing. Не ги одобриха;
  • Почти не свирих;
  • Не карах колелото точно колкото исках. За това вече писах;
  • Не четох толкова, колкото исках;
  • Не писах толкова, колкото исках.

 

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

  • Започнах нова работа. За момента това е най-доброто място в което съм работил в съотношение колеги/проект/условия. Компанията е Немечек;
  • Направих моето Голямо Каране. До половината. Три дни интензивно каране и общо 264 км, спане в колата, катерене на връх Ботев, ядене на малини и ягоди на средата на нищото;
  • Случи се това. И близките ми за здрави и повечето дори са щастливи. Повече не мога да искам. Дори и котката Иво е жив и здрав (и дебел);
  • Изкарах 2 дуатлна (Злати се включи във втория и го изкара също), на единия дори и завърших в контролното време. Имам си и медал!
  • Пътувахме със Злати много. Обикаляхме из България, а тази година направихме и няколко пъти Варна-София-Варна със самолет;
  • Изкачихме връх Ботев за ден и спечелих от габровец 10-тина бири;
  • Говорих в WordPress meetup Varna за “Security of WordPress”. Получи се много добре;
  • Говорих и в “ИТ Форум” в Технически Университет Варна. Там организацията беше зле, след като си написах лекцията после 5 (!!) човека от предната фирма в която работих я редакритаха, рязаха, добавяха, осакатяваха докато не стана една страхотно скучна лекция типична за скучно-университетските и/или корпоративни среди. И имаше 10 човека (заедно с лекторите);
  • Говорих във “Вечер на таланта” за моето Голямо каране. Беше интересно, даже има и видео как фъфля;
  • Говорих в “EU Code Week Varna 2017” – беше най-класното и посещаемо събитие провело се в зала “Black Sea Hall” на хотел “Черно Море”;
  • Месец по-късно говорих в “Zara Code Week 2017” поканен от Венко Добрев. Беше най-сърцатото събитие, срещнах ценни хора, имаше крайно черен хумор вечерта преди моята лекция, заразих се от ентусиазма на Орлин. Абе беше страхотно преживяване;
  • Започнах да се заигравам с микроконтролери. За момента съм загърбил Raspberry Pi-то и си играя с ESP8266 (контролер с 80 Mhz процесор, micro USB захранване, вграден WiFi, I2C, etc.), DH11 (датчик за температура, влажност и атмосферно налягане), BSP280 (като DH11, но много по-точен и производство на Bosch) и голямата ми гордост – SDS011 (датчик за твърди частици). Като сглобя всичко това ще се включа в Air Bulgaria да следим в колко мръсен въздух живеем;
  • marvin е още жив. Покрай него научих супер много за системната администрация и как работи отдолу nginx. Нико, Владо – благодаря за помощта, която ми дадохте през времето когато го омазвах солидно;
  • Тръгнах да чета Хари Потър, до момента съм към края на петата част – “Хари Потър и Ордена на Фениска”. Четох и Бакман, Весела Тотева и Агата Кристи. Следващата година ще дочета Потъра и после – Глуховски. И повече от 9 книги за годината(срам, срам…);
  • Отидохме на Hills Of Rock, счупихме главите и си изкарахме потресаващо добре.

  • Не мога да повярвам колко дълга ми стана косата.

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

  • Да направя каквото мога за Чайната;
  • Да правя хората по-добри. Винаги съм вярвал в споделянето на знания и ще продължавам да го правя докато мога;
  • Да чета приказки в дома за деца лишени от родителски грижи;
  • Да се случи моето Голямото каране 2 – този път 500+ км за седмица, вероятно пак сам;
  • Силна бреветна година – 200км, 300км (евентуално 200+300 във Варненски бреветен уикенд) и ако успея да вляза във форма – и един 600 км (400 е за ден, а 600 има време човек да поспи 2-3 часа за това казват и че е по-възможен);
  • Дунав Ултра – много се надявам да успея да участвам и да финиширам в контролното време;
  • Да изкарам първия си мартон.

 

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

Мина EU Code Week Varna 2017

И ето, че мина Code Week Варна 2017.

Презентацията си я направих на 90% Петък вечерта стоейки до около 2:00., а сутринта отидохме два часа по-рано от старта на Code Week-а в Costa Coffee, изсмуках едно flat white (което съдържа три къси еспресота) за отрицателно време и пренаписах 80% от презентацията.

Качихме се в презентационната зала на хотел “Черно Море” и останах много доволен – имаше мек килим под нас (който е от съществено значение да се изчисти кънтенето в залата), страхотни столове, тюлени пердета, които не пропускат светлина за да може да се вижда какво презентирам на проектора.
Малко преди старта оставих малките изненадки, които Немечек любезно ми предоставиха (отварачки за бира, които са и поставки за такава, весели химикалчета с ръчички и тефтерчета със скрити в тях бонбонки (казващи се “Plan B – creativity boosters”)) и беше крайно време за първи контакт с хората (и тест на това дали всички ме чуват добре. Побърборихме си малко с всички (докато все още влизаха хора) и си личеше от тогава, че презентацията ще е приятна – средната възраст беше под 27, хората бяха разговорливи и не се притесняваха да комуникираме открито.

Презентацията започна в 10:10, Галин Желелязков, организатора на EU Code Week Varna, започна с всъпателни слова за Code Week, разказа с лекота за организацията и идеята на събитието и дойде моя ред като първи лектор.

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

И на IT бога Светлин Наков на който му обърках името.

Останалите лекции бяха на:

Страхотни лекции. Юлиан по навик е харизматичен и надъхващ, Преслав Михайлов с който се запознахме преди началото на събитието беше приятен и с лекота разказа нещата, които очевидно са му доста интересни, Жан говори със страстта на човек, който се кефи супер много на това, което прави, Галина Момчева отново демонстрира класа с нейните идеи, а накрая Aaron събра всички около себе си и демострира колко е интересно човек да се занимава с 3D Printing.

 

И малко линкове:
Линк към събитието във Фейсбук;

Медийна подкрепа на събитието имаше от moreto.net, БНР Варна, kmeta.bgyouthub.bg, Информационна агенция “Черно Море” и интервю с Галин Желязков. Искаше ми се информационните агенции и “информационните агенции” да имат малко въображение и да си пишат новините сами, а не да copy/paste директно от събитието.

Презентацията ми:


(Ако се чудите как се embed-ва Google Slides в WordPress (и не само) можете да прочетете тук)

Моите видеа:

Част първа:

Част втора:

Част трета:

 

 

Всички видеа можете да намерите тук:

 

И малко снимки :)

Преживях първия си дуатлон

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

От около месец в главата ми беше идеята да се включа в дуатлон дисциплината на iRun – “Горско бягане и колоездене “Аладжа манастир”” – 35 км. колоездене и 13.5 км. бягане.

Искам да уточня две неща:

  1. На истинско MTB (добре запознатите сигурно ще ми се изсмеят с онзи пренебрежителен начин по който само един MTB колоездач може да се изсмее на шосеен колоездач като чуе Sprint Apolon Pro 27.5″ да минава за истински MTB велосипед, но на мен ми хареса), което наех от Здравко от Устрем (благодаря за което!) и карах точно веднъж преди състезанието;
  2. През живота си не съм бягал повече от 7 километра и то по асфалт.

 

tl;dr

Жив и здрав съм. Организацията беше невероятна, маркировката и пунктовете – също.
Мамо, татко – не четете надолу. Може да има неща, които може да съм пропуснал да ви разкажа :)

Подготовката

Ден преди състезанието имах възможност да изляза да пробвам МТБ-то. Подкарахме колелетата със Злати и отидохме да се запиша там, където се провеждат редовните бягания на iRun в Морската Градина. 30 кинта назад (защото се записах в последния момент, иначе цените бяха респективно 20 лв. и 25 лв. за по-късно записалите се) и се сдобих с номер петстотин и две, който щеше да бъде извикан по мои сметки около девет пъти на седем контроли и два финала с и без колело и един як бъф, който носих със себе си по време на състезанието. След това потеглих сам към Декатлон от където си взех резервна гума и зацепих с пълна мощ към Аладжа Манастир. И понеже не познавам MTB маршрутите реших да мина по шосе до Аладжата и после да направя малко горско каране.

 

Крах и един научен урок

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

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

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

Едвам стигнах до Аладжата, баира го взех с яд и дойде ред на насечения (за мен) терен. Вече преполовил силите си влязох на територията на MTB-то и напуснах своята. Отключих шока и се понесох по равните пътеки около манастира. Усещах колко много абсорбира шока, колко абсурдно добри са спирачките и как големите и меки 27.5″ (на около 2.0 бара) гуми стъпват стабилно на земята. Усетих как си измених позицията и как започнах да се чувствам по-сигурен и стабилен. За жалост това продължи около 20-тина минути.

След края на карането ми и връщането в града се чувствах съсипан – емоционално и физически. Средната ми скорост на най-бързия ми и любим терен беше едва 17 км/ч, а само преди няколко дни бях направил рекордните за себе си 27.9 км/ч по почти същия маршрут с шисейката. Знам, знам, няма нужда дори да си помисляте, че ги сравнявам, защото са напълно несъпоставими, но при каране на почти един и същи терен волно или не се сравненията сами изплуваха.

Научих, че ако искам да карам MTB трябва да се науча да карам наново. И да видя колко красива е природата по горските маршрути.

 

Състезанието, част първа

По традиция преди състезания и бревети ставам по-рано, закусвам бавно, слушам малко музика, проверявам екипировката и велосипеда си още веднъж и ако имам време чета своя разказ “Не мога?” (колко помпозно, а?). Този ден не беше изключение.
Едвам наблъсках колелото в колата и тръгнах към месността Аладжа Манастир около час и половина преди официалния старт. Като стигнах вече имаше доста хора, велосипеди, деца, кучета и всички бяха усмихнати (дори и добермана, който беше единствения вариант да си вдигна средната скорост по баирите нагоре, ми се стори усмихнат). Изкарах колелото, сглобих го, приготвих си номера (петстотин и две, да не го забравите до края на разказа, ей!) и потърсих приятели. Видях Право, Карен и още двама-трима. Отбих се при Никото от Нико Байкс и се заговорихме.
По едно време един човек дойде при мен и ми каза – “Случайно преди да си имал един Drag Grand Canyon?”. Учуди ме въпроса, защото Drag-а го продадох преди две години, но именно с него участвах на първото си (и единствено до вчера) MTB състезание пак на Аладжа Манастир. Оказа се, че ме помнил от тогава и ми изказа респекта си (това беше, защото Drag-а е хибрид, който някой би сметнал, че е убийство да бъде каран в такива условия на насечен терен и особено с 28 мм си гуми).

После минах покрай щанда на Допел Херц и се загледах в нещата им – имаше магнезии, витамини, малки еднократни дозички с кофеин и таурин (от които се възползвах) и две добре подготвени за повода жени зад щанда. Заредих, поговорихме малко с момчетата от Нико Байкс и се наредихме с Карен и всички останали колоездачи на старт/финиша. Имаше 20-тина минутно забавяне на старта, предполагам са имали солидна причина за това и смятам, че такива неща се случват така, че нямаше драма. 30 минути след нас стартираха и бегачите.

Старта

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

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

И последва първо изкачване, което по Страва профила ми е имало скакалка (или по-скоро стена?) с денивелация от 31.2% (в Strava профила ми на 22:11 минута). Бутах, карах, бутах, карах и го изминах.

 

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

Маршрута беше нечестно труден на места – имаше стени, които бяха по 4-5 метра високи, които по-слабите физически колоездачи (имаше едно момче, което беше под 40 кг например) сигурно никога нямаше да могат да прескочат без помощта на други. Имаше и спускания, които приличаха на много гъста крем супа с крутони забъркана предната вечер от дъжда от пръст и камъни. Имаше и пътеки, които бяха невероятно красиви, минахме през нива (да – минахме през средата на нивата. Бяхме инструктирани в началото на състезанието, че преди е имало път там, но предния ден са го изорали), минах през реки и стадо овце, срещнах интересни хора.

Моето състезание с другите свърши след не повече от 30 минути след старта и се изправих срещу най-големия си враг – самия себе си.

Времето минаваше и с него се срещах с други колоездачи, срещнах се и с един овчар, стадото му и огромното му рошаво с кални крака куче. Не се запознах с него, но имаше вид на човек, който се казва Данчо, насъбрал трудностите на селския живот на лицето си точно под гъста бяла брада. Махнах от далеч и с усмивка извиках – “Добър да е деня!”. Бай Данчо се опули малко и като ме прецени се усмихна блажно и каза – “Добър да е, момче. Хайде давай напред и успех!” докато бутна с гегата един коч. На 20 метра след това се озовах пред 30-40 см. дълбоко поточе. Вдигнах колелото и преминах по камъните като госпожичка за да не си намокря обувките, които вече се бяха превърнали в бълвоч от кал, пясък и слама.

Малко по-напред се срещнах с още трима колоездача като имаше време да си поговорим бутайки по огромния баир нагоре. Там беше и едно момче на около 13-14 години, което буташе мъжката колелото си нагоре. Предложихме му помощ с което той се обърна към нас и с неочаквана мъдрост и сериозност каза – “Колоезденето е индивидуален спорт. Ще се оправя сам, благодаря.”. Бях впечатлен и му разказах как ние като караме по бревети си помагаме с гуми, помпи, храна, вода и с каквото можем. После без да го питам му хванах единия грип и го избутахме заедно до някъде след което той искрено благодари и пое по своя път докато аз все още се опитвах да си успокоя дишането.

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

Преминахме още едно поточе, после още едно. Дойде контрола (всичките контроли бяха с ентусиазирани млади хора, които имаха всичко от което имах нужда (като на последната бегачна контрола имаше дори и сол в пакетчета), поговорихме си малко и тръгнах. Оставаха ми само шест километра, какво толкова може да се обърка? Е – обърка се. Терена беше каменист, а отдолу – прясно засъхнала почва. И това по баир нагоре. Шест километра ги изкарах (избутах) за почти един час! Това ме сломи. Напъвах се, дърпах, бутах, бях целия зачервен и бесен на себе си, псувах наум, чудих се къде съм сбъркал в разпределението на силите си, в храненето и пиенето на течности. Мразих се. Карах отвратително бавно, силите изцяло ме напуснаха. Исках да легна и да изчакам някой да дойде да ме прибере. Не исках повече. Бях обиден на себе си, че съм толкова жалък, че не мога да изкарам едва 36 км (като до преди 3 седмици изкарах 370 за два дни), че бях дебел. Очите ми започнаха да губят фокус и точно в този момент една груба нота на отчаяние излезе от гърлото ми. Беше нещо като приглушен вой. Това ме смути неимоверно много, защото имаше хора около мен и това сякаш ме стегна.
После ме настигна един бегач и ме изпревари, после аз го изпреварих, после той мен и така бях изпреварен три пъти от бегач на дълги разстояния (дисциплината му беше 32 км). Реших да се стегна. “Колко километра остават още?” попитах някого. “На тридесет и пети километър сме сега”. “Ъъъ колко?”, “Тридесет и пет”, казва някой. Не повярвах, че съм почти на финала.

Финиша

Дадохме газ аз и едно момиче и заедно с наистина сетни сили се запътихме за финалния спринт.

Видях финиша.

Бях на 20-25 метра от него, карах и започнах да мисля за бягането. И в този момент момичето, което беше само метър-два пред мен падна. Аз спрях, защото моето състезание с другите беше свършило отдавна. “Давай, тръгвай.” виках. Качи се на колелото, но веригата беше паднала, “Давай, давай” викнах. Финишира 2 секунди преди мен.

 

Бях жив. Духът ми се върна и последва второто състезание. Пак с мен.
В този момент вече ми бе ясно, че няма да мога да вляза в контролното време на дуатлонистите.
Спрях се при щанда на Нико Байкс, оставих си част от екипировката и велосипеда, взех си 2 барчета от раницата и тръгнах.

 

Състезанието, част втора

Бях изтощен. Започнах да получавам жестоки крампи на бедрата, нищо, че до този момент бях приел над 1000 мг магнезиев цитрат за да избегна това. Маршрута над средата беше същия като колоездачния. Проблема беше, че краката ми не можеха да понесат повече. Започнаха да не могат да се сгъват, а за моя огромна “радост” още в началото на маршрута последва стръмно спускане, което взех на бедра и накрая се предадох.

Спрях, строполих се на земята и бях напълно наясно с две неща:

  1. Нямаше да позволя да не изкарам маршрута;
  2. Трябваше ми пейсър.

 

Странна птица съм аз – волята ми е най-силна само когато положението вече започне да граничи с невъзможното. В този момент съм излязъл с двата си крака от зоната в която ми е удобно и нещо изплува много дълбоко от мен. Нещо човешко и кокалесто, нещо, което не те хваща за гушата за да те дръпне надолу, а точно обратното – кара те да се изправиш, да драпаш с крака и ръце, да се стегнеш и да дадеш да се разбере на теб самия, че тая работа няма да я бъде.
Започнах да пълзя за кратко, изправих се на крака и започнах да вървя.
Усетих, че съм към края на състезанието си, когато започнах да вървя като патка  (тоест на цяло стъпало, видео с един нагледен пример) – това е един почти сигурен признак, че мускулите ми излизат извън контрол, а сухожилията са се изпънали до безкраен предел.
Вървях така и мучах тихичко от болка докато не стигнах до първата чешма от маршрута. Измих си лицето, пийнах от студената вода, свалих си джърсито с дългите ръкави и продължих.
Не знам кое ме накара да живна, но се случи. Вероятно е от хората, които се разхождаха в гората и се усмихваха и пожелаваха успех или от човека, който подминах докато правеше барбекю на една поляна и се провикна – “Момче, ела да хапнеш с нас, да се подкрепиш” или с това, че стигнах първата контрола. Знаех, че нямам шанс за финиш в контролното време, но не се отказах. Състезанието за мен, срещу мен, беше в разгара си и щеше да свърши след пресичането на финиша.

И от умората вероятно започнах да си внушавам някакви неща. Понеже по маршрута се срещат доста гущерчета, които са шумни докато бягат по сухите листа за около 20-30 минути бях убеден, че зад мен голямо куче или вълк (може сега да ми е смешно като си го признавам, но тогава бях отчаян) и се обръщах на всяка трета стъпка.

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

Там ни посрещнаха с много усмивки млади и надъхани доброволци, дадоха ни храна и вода и ни отпратиха.

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

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

Финиша

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

Финиширахме заедно и извън контролното време.

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

 

Следфинално

Отидох при щанда на Нико Байкс да си взема екипировката и колелото, поговорихме малко с тях и видях другия Карен (до преди година и нещо не познавах нито един Карен, а сега познавам цели двама) от Averi Beers и взех един червен Гларус. Отпих една глътка, тежко въздъхнах и усетих спокойствието да се влива във вените ми.

Огледах се и видях Ели и Свилен, които видях и малко преди да започне моето бягане. “Недко – искаш ли супа?”, попита тя. Беше риторичен въпрос. Наля ми една 500 мл. боб чорба, взех си филия хляб и рая слезе на земята. Бях спокоен, не ме болеше и знаех, че за ден мога да си позволя да бъда горд със себе си.
Прибрах се – чакаха ме Злати и котката, топъл обяд и един приятен ден.

За спорта

Спорта е нещо много повече от потене по фитнесите, по горите, на колелета и с насинени крака и обелени колена. Спорта е споделено съзнание, което кара хората да стават по-добри. Кара ни да мислим за хора, които не познаваме, да спрем и да помогнем с каквото можем на човек в беда, да работим в екип и да се радваме искрено, когато всеки един финишира преди или след нас.

Малко линкове и статистики:

Снимки