CategoryСтатии

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

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

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

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

 

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

Мина Дунав Ултра 2018

Понеже пак се очертава огромен разказ ще го разделя на няколко отделни поста за да е по-лесно прехвърлянето на безинтересния текст и да се проследи криво-ляво 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 часа среща два типа реакции:

  1. С какво мога да помогна?
  2. Това не мислиш ли, че е излишно? Не мислиш ли, че е по-добре да си почиваш вкъщи и да не се натоварваш толкова?

Е – срещнах и двата типа, но това не ми попречи кой знае колко на мотивацията (за разлика от предни пъти). За това изигра основна роля Златина, която на моменти беше по-мотивирана от мен да ходя на тренировки, интересуваш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

 

14.08.2018

Пък се бях зарекал да не спирам да пиша тук…

Та – жив съм, продължавам тренировките за Dunav Ultra с пълна сила и вече усещам началото на старта в гр. Видин след три седмици.

In other news днес няма да има, но скоро общеавам да започна да пиша по-често. Имам и за разказване доста.

 

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

Polar V650

Вчера тествах новия Polar V650. Ще споделя впечатленията си в няколко точки, ако на някой му е интересно да пита в коментарите:

  • Дисплея е огромен. Не е с изключителна резолюция, но специализираните touch screens са така. А този има и IPX7, което е малко успокояващо когато започне да вали;
  • Контролите са интуитивни;
  • Има си микро фенерче, което може и да мига. Полезно е ако сте достатъчно прецакани да нямате предни светлини поне да имат някакъв шанс видят;
  • За пръв път карам с каданс и HR сензори и са супер полезни, особено карането по зони;
  • Има 7 конфигурируеми екрана с всякакви данни (включително ако имам power meter да показва с кой крак какво усилие полагам по време на тренировката!);
  • https://flow.polar.com е много полезен инструмент. За разлика от Страва, която ако искам да си видя каданса да кажем ми иска premium версията.
  • Минуса е, че import-а на вашите вече записани карания понякога се прецаква много лошо и трудно се оправя. Ако можете да си pair-ните телефона с Polar-а няма да имате проблеми.

 

Понеже така и не приключих статията – ако някой смята да си купува Полар и има въпроси нека пише тук.

03.04.2018

Поръчах си Polar V650 и нямам търпение да го тествам! Ще пиша моите наблюдения по-натам.

In other news:

 

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

 

И последно за днес, цитат на деня от Дийкстра – “Selecting a tool first and then trying to fit it into an existing software development and testing process is a bit like buying a horse and then realizing you live in an apartment on the twentieth story of a Manhattan skyscraper: probably not such a good idea.”

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.