2026-07-14 Chaos AD

July 14th, 2026 by Vasil Kolev

Снощи отидох на концерт на братятя Кавалера, които изсвириха целия Chaos AD.

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

Въпреки това, си беше забавно. Публиката беше пълна с хора от всякакви възрасти, от възрастта на моите деца до почти дядовци и радва, че и младото поколение беше дошло да чуе малко класическа музика.

Започнаха с Refuse/Resist (започващо вероятно с най-известния запис на пулс ever) и завършиха с cover на същото парче :) Макс изглежда все още има глас, въпреки напредналите годинки, бяха довели буквално едно дете (Игор Амадеус, синът на Макс) на бас, имаха приличен китарист, и Игор Кавалера беше там като основната причина да бъдат чути (и слава богу не му бяха объркали много звука на барабаните, за да се чуе наистина както трябва). Направиха едно страхотно изпълнение на Kaiowas, което май беше най-добре получилата се песен на концерта.

2026-06-07 числа за IT-то

July 7th, 2026 by Vasil Kolev

Още малко числа, след първите и вторите, пак идващи от НСИ.

От миналата година (влизащ в действие от тая) има НКИД-2025, “Национална класификация на икономическите дейности” (или само класификация, среща се и без “Н”), в която разделиха предишната категория “СЪЗДАВАНЕ И РАЗПРОСТРАНЕНИЕ НА ИНФОРМАЦИЯ И ТВОРЧЕСКИ ПРОДУКТИ; ДАЛЕКОСЪОБЩЕНИЯ” на две нови – “ИЗДАТЕЛСКА И РАДИО- И ТЕЛЕВИЗИОННА ДЕЙНОСТ, СЪЗДАВАНЕ НА СЪДЪРЖАНИЕ И ДЕЙНОСТИ ПО РАЗПРОСТРАНЕНИЕ” и “ТЕЛЕКОМУНИКАЦИИ, КОМПЮТЪРНО ПРОГРАМИРАНЕ, КОНСУЛТАНСКИ ДЕЙНОСТИ, ИНФРАСТРУКТУРА ЗА ИНФОРМАЦИОННИ ТЕХНОЛОГИИ И ДРУГИ ИНФОРМАЦИОННИ УСЛУГИ”. Вече има данни в Демографска и социална статистика – Пазар на труда – Наблюдение на работната сила – Заети лица и коефициенти на заетост – национално ниво; статистически райони; области, в които може да се види, че за първото тримесечие има 110.3 хиляди човека заети в нашата област.

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

Тия дни ще си поискам данните за договорите, току-виж там има още нещо интересно.

2026-05-21 OpenFest 2026

May 21st, 2026 by Vasil Kolev

Та, ще случваме OpenFest 2026. В Интерпред, 7-8 ноември 2026.

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

Има въпросът “защо чак ноември” от една група хора, които държат много да е в средата на октомври. Отговорът е сравнително прост – в нашата държава нищо не се случва до края на август, а септември хората полудяват да се занимават с училища и т.н.. Съответно, ако имаме събитие, което искаме да е в средата на октомври и неговата програма да е online поне месец, то тя трябва да е готова в средата на септември. Което значи, че последните предложения за лекции трябва да са дошли до първата седмица на септември, за да може програмния комитет във втората седмица да направи програмата.
Разбира се, и двете не се случват – лекторите се бавят, пращат в последния момент и са заети, програмния комитет не успява да се събере и т.н. и т.н.. Тук дори не обсъждам всичките други неща, дето имат да се подготвят за два месеца и нещо от хора, които това го правят в малкото си свободно време.

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

В последните години беше горе-долу ясно – фирмите имаха нужда от хора, хората идваха на OpenFest, виждаха там фирмите и се харесваха по някакъв начин. Сега обаче всички са се скатали по всякакви причини, някои уважителни (фалираха), някои не (“AI-то ще премахне нуждата от хора”), и всякакви по средата.

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

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

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

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

Та, една от целите на OpenFest е била да даде място за срещане и изява на тази група. Като лектори, посетители, доброволци – всеки каквото му е на сърце.
(има около 400-500 човека, минали като доброволци през събитието по годините, и голяма част от тях след това отидоха да организират/правят неща, за които се научиха при нас, което винаги много ме е радвало)

(по същия начин, it турнето, дето се случва и което почнахме едно време, има за идея да направи същото, в по-малък мащаб, но из страната. Защото, като изключим Пловдив с TuxCon и едно време PlovDev, няма някой да се занимава с такива дейности.
Другото такова полезно място са hackerspace-овете, които обаче съвсем намаляха в последно време, и освен init Lab и VarnaLab, донякъде BurgasLab, не са останали. Те също са много важни, но за тях друг път)

Без тези събития и общностите, които се поддържат, съдбата на тая общност не е особено ясна. Няма да се изхвърлям и да казвам, че без нас общността ще умре, но определено няма да помогне. Може би аз съм в някаква такава странна позиция, но аз основно виждам как някакви по-малки групи се затварят и няма как да обменят идеи, няма някакви свестни дори online форми. За сметка на това конференции като FOSDEM (където участвам в организацията) и Chaos Communications Congress нямат възможност да съберат всички желаещи на едно място, и се вижда колко полезно е да се случват.

Та, тази година ще се случи. Не знам за следващата. Може пък да ни е дошло време да отмрем, знае ли човек :)

2026-05-17 TuxCon 2026

May 17th, 2026 by Vasil Kolev

(да, да, имам да пиша по-често)

Този уикенд ходих на TuxCon 2026, да помагам с видеото, и на практика да тестваме новия FOSDEM setup в production.

(Новият setup е една кутия, наша собствена камера, и видео миксер на самата кутия. Супер забавно е, ще го доразкажа някой път.)

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

Та, открихме сезона тази година, надявам се да мога да отида на още няколко събития и да видим новия setup как се справя. За сега основният резултат от този тест беше този commit да си форсираме на каква разделителна способност ни е изхода, че има проблем с fazantix, когато двата изхода (stream и проектор) са на различна разделителна способност.

(also, обявихме OpenFest 2026 за 7-8 ноември в Интерпред, ама може би ще го напиша допълнително отделно)

2026-03-31 DNS DDoS

March 31st, 2026 by Vasil Kolev

Нормалните хора се будят с кафе, аз – с DDoS.

Графика на DNS трафика.

Накратко, от вчера някакви хора DDoS-ват DNS сървъри, по TCP, с опит за рекурсивни resolve-вания, като не затварят връзките, и в един момент свършва опашката на сървъра. В логовете си личи по

Mar 31 10:16:48 marla named[221347]: client @0x7f2263433c98 177.54.96.29#40555 (arvika.se): query failed (REFUSED) for arvika.se/IN/TXT at query.c:5703
Mar 31 10:16:48 marla named[221347]: client @0x7f226e79a498 177.223.238.74#43398 (ns3.aixzellent.com): query failed (REFUSED) for ns3.aixzellent.com/IN/AAAA at query.c:5703
Mar 31 10:16:52 marla named[221347]: client @0x7f225e7d5c98 177.54.96.29#41861 (DAN.Net.uk): query failed (REFUSED) for DAN.Net.uk/IN/ANY at query.c:5703
Mar 31 10:16:54 marla named[221347]: client @0x7f226f595498 177.54.96.29#42734 (shop-goudwisselkantoor.nl): query failed (REFUSED) for shop-goudwisselkantoor.nl/IN/ANY at query.c:5703

Текущото временно решение е в server секцията да се добави:

        tcp-clients 10000;
        tcp-initial-timeout 100;
        tcp-idle-timeout 100;
        tcp-keepalive-timeout 50;
        tcp-advertised-timeout 0;

Това накратко вдига колко може да са паралелните връзки, смъква idle/keepalive timeout-ите, така че да не може да виси някой 30 секунди, и в отговорите казва, че не поддържа keepalive (т.е. клиента да си държи връзката отворена за още някакви въпроси). Изглежда да крепи на около 2000-3000 отворените връзки в момента в bind9 и да не се бави с отговорите, да видим дали ще има промяна.

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

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

2026-03-30 Heth 2

March 30th, 2026 by Vasil Kolev

Като продължение на предишното.

TLDR – сряда (01.04, така се пада, за съжаление) ще се съберем в “Дондуковъ” на ИББ да си говорим за Явор.

И си спомних една от всичките истории с него – 2005-та с него и Червото отидохме на WhatTheHack. За разлика от него, ние никога не бяхме ходили на палатки и изобщо извън цивилизацията, съответно бяхме прилично неподготвени – аз имах еднослойна палатка, а Червото някаква кръгла, в която спеше навит, щото не можеше да се събере иначе. В крайна сметка и двамата си изхвърлихме палатките там, и той спа в NOC-а, аз в съврърното. Човек би очаквал, че ще се поучим от младежа, ама на :)
(А той, типично в негов стил сутринта на летището откри, че си е забравил паспорта и спешно се връща. И това при условие, че беше останал да спи през нощта при нас, че да сме сигурни, че ще го събудим :) )

2026-03-27 Heth

March 27th, 2026 by Vasil Kolev

Днес сутринта е починал Явор (Heth).

Погребението ще е в неделя (29 март), 11:30 на централните софийски гробища.

Супер трудно ми е да измисля какво да кажа.

2026-01-03 равносметъчно

January 3rd, 2026 by Vasil Kolev

И понеже ме питаха къде ми е post-а за нова година…

Равносметъчно:

– финализирахме развода. Още си подреждам живота, ама върви в някаква смислена посока;
– върнах се в организацията на OpenFest и направихме 2025-та. От една страна е страхотно, от друга както винаги е много работа и много изриване на неща;
– случи се и FOSDEM 2025;
– за пръв път направихме ConfConf;
– ходих до Тайланд за FOSSASIA;
– успях за пръв път от 10на години да ида на CCC конгреса;
– върнах се и в управителния съвет на initLab;
снабдих се с контрабас, и ми е новия любим инструмент. Имам малко записи на колко съм зле, но много радва и е и добър вариант за фитнес уред…
– В записите по-горе има няколко опита с ardour за някакви парчета;
– За пръв път откакто живея в София изкачих Черни връх (с децата);
– имах две занимания по детоксикация на организации. Чудя се искам ли да го направя на нормална лекция, на такава с пиене, или просто да си го изтрия от главата;
– След Червото, Каладан и Галя Пухалева починаха тая година, както и вуйчо ми;
– От друга страна, доста хора им се родиха деца (даже ги споменах в откриването на OpenFest 2025);
– И има някаква огромна купчина работни неща, за които някой ден трябва да пиша.

Светлото бъдеще:

– Ще си отспя, поне утре;
– Има интересни планове за OpenFest 2026;
– FOSDEM-ския videobox го очаква още един хардуерен update (на аудиомиксера), софтуерен update (да му сложим fazantix), и ще може да се ползва лесно от други събития като нещо, което да stream-ва/записва цяла зала;
– Зачел съм се по темата за дистрибутирани системи, колкото повече чета, толкова по-лошо ми изглежда;
– И, както обикновено, ще се опитам да пиша малко повече, току-виж и го спазя.

2026-01-02 39c3

January 2nd, 2026 by Vasil Kolev

След 10 години успях пак да ида на CCC конгреса (39C3, “Power cycles”).

(малко снимки)

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

Бях забравил каква лудница е. 4 дни, 15к човека, всякакви странни събития и под-събития, изобщо голямо забавление. Също бях забравил колко уморително ми идва, и всичките дни на конгреса се прибирах и си припадах в стаята (на третия ден, с уиски workshop-а, и прилично пийнал). Комбинирано с това, че в предишния месец имаше купчина срещи да приключим годината, бях блокирал през половината време.

Имаше доста интересни лекции:

Infrastructure review, любимата ми лекция;

Who cares about the Baltic Jammer?, за нова система за навигация в Балтийско море;

To sign or not to sign: Practical vulnerabilities in GPG & friends – бъгове в GPG;

Asahi Linux – Porting Linux to Apple Silicon – разни забавни неща по port-ването на Linux за apple hardware;

Building hardware – easier than ever – harder than it should be – по темата за как хората могат да си правят SMD платки;

Breaking architecture barriers: Running x86 games and apps on ARM – забързан емулатор/транслатор от x86 към ARM;

… и много други на media.ccc.de.

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

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

2025-11-29 записи от OpenFest 2025

November 29th, 2025 by Vasil Kolev

Записите от OpenFest 2025 може да се намерят във видео архива и в youtube.

Забавянето беше заради един бъг на encode-ването, и после докато мине пак преглед/QA. Имаме вече скриптирани нещата и би трябвало догодина да можем да вадим записите в същия ден, ако решим :)

2025-10-31 OpenFest 2025 се случи

October 31st, 2025 by Vasil Kolev

Случи се OpenFest 2025.

(аз в момента режа видеата и трябва тия дни да почнем да ги качваме)

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

А не беше лесно. По ред причини трябваше да събирам екип почти наново, да местим инфраструктура, да направим феста две седмици по-рано (не трябваше да се съгласявам, правили сме го и пак беше супер тежко), нова система за подаване на лекции (pretalx), online магазин за запазването на тениски и какво ли не още.

Програмата например се случи много в последния момент – отворихме CFP-то в края на май (от тогава е и първата подадена лекция), но в обявения срок (1 септември) имаше нещо като 34 подадени лекции, workshop-и и щандове, от които повечето в последните три дни. В крайна сметка имахме 74 с две удължавания на срока и ръчкане, но по принцип срок до 1 септември в държава, в която никой не работи през август не беше смислена идея. Та имахме програма по-малко от месец преди събитието, което ми се искаше да не се случва :)

(и има още доста неща, от които мога да се оплача, ама те са за postmortem-а)

Но, усещането да идеш в 8 сутринта в събота и да видиш как се върти видеото на телевизорите пред залата, да знаеш, че ей-сега започва и това е резултатът от всичкото това занимаване, или след цялата лудница да влезеш на афтърпартито и да видиш екипът колко се радва на свършената работа (е, и някои от тях да се опитат да те убият с пиене на шотове, вие се знаете кои сте)… Усещах как се ухилвам без да се усетя даже :)
(всичко това прави много по-лесно да ходя при доброволците и да питам “Догодина пак?” :) )

От нещата, които много ме зарадваха, че сработиха е новия ни video setup, който ползвахме в голямата зала – изцяло open-source video mixer (има си repo), който успяхме да подкараме в сравнително кратки срокове, с усилията на няколко човека. Имаше малко додебъгване на неща в петък вечер, но двата дни работеше перфектно. Догодина ще гледам всичките ни setup-и да са без proprietary неща.
(бях поканил Марк от FOSDEM да удари едно рамо за видеото, и имаше толкова малко проблеми с цялото нещо, че в крайна сметка той успя да посвири прилично количество време на контрабаса, който бяхме замъкнали в залата)

Организирахме и един music tech jam – Алекс Миланов се сети в последния момент, че можем да направим нещо такова, и събота вечер разни хора се насъбрахме и пробвахме да свирим заедно и да си разменяме инструментите. От там ми е и любимата ми моя снимка от тоя фест.

Също така, имахме нов вариант за запазване/купуване на тениски, през online магазин, който сглобихме заедно с init Lab – избегнахме древните google форми, имахме доста по-добър поглед върху всичко, и успяхме да го навържем с POS терминал и дори да приемаме карти. Имаше някакви количество проблеми, но много по-малко, отколкото очакваме, което се дължи на всички, които участваха в това (и някои даже не спаха една нощ).

(и много много много други неща, дето дори ми е трудно да изброя, все подробности и все важни,

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

Едното беше, че сме дали сцена на политическа фигура. Мога много лесно да се оправдая с програмният комитет (в който нямах никакво участие), но това да не се съгласим Божидар Божанов да говори, само заради това е просто тъпо – той е бил лектор по събития и на OpenFest отпреди да я има партията, на която в момента е лидер, свършил е много и полезни неща в и извън политиката, и беше подал лекция, която е важна за OpenFest публиката. Което си личи и от това, че беше много посещавана, мисля и най-гледана на stream-а, и една от най-гласуваните в системата. Та, това е бил съвсем правилен избор.
(по същата тема, хората казват “ама не се политизирайте”. Не съм сигурен как да кажа най-добре “what a load of crap” на български, защото това, че държим на отворени технологии, това, че сме отворени за всякакви хора без значение пол, раса и квото-е-там са си политически позиции, които всъщност защитаваме. Няма да приемем лекция на някой, който иска да забрани open source или да избеси всички бежанци или там каквито е модерно да не се харесват, например.)

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

И да приключа с любимата ми снимка от събитието. Двамата Ивановци и някакви хора липсват, че имаше малко объркване с програмата, та чакаме някой да ги photoshop-не в снимката…

2025-10-03 OpenFest 2025 програма и тениски

October 3rd, 2025 by Vasil Kolev

OpenFest 2025 се движи с пълна сила.

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

За тази година имаме малко по-различна система за запазване на тениски – заедно с init Lab (така де, то е тяхна инициатива) правим online магазин за merchandise на всякакви добри хора, като хакерспейсове, отворени събития и т.н.. За момента сме пуснали само запазването, но финалната цел е да си работи като истински магазин, с плащания и т.н..

(също така, има още малко време ако някой желае да доброволства или да спонсорира, пишете ми :) )

2025-10-14 развод

September 14th, 2025 by Vasil Kolev

По принцип една от целите на блога беше едно нещо да не го казвам на много хора поотделно, но това първо го казах на почти всички, и сега го пиша.

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

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

Но разводът не прави децата да изчезнат, както и всичките задължения, свързани с тях, та прилична част там няма да се промени. Само имам възможност да се занимавам пак с OpenFest (което всъщност беше основната причина да мога да се върна в организацията, иначе нямаше да има как), и пак се занимавам с initLab (избраха ме пак в управителния съвет).

Децата са добре, не съм се пропил, и life goes on :)

2025-08-17 Adventures in Linux bonding

August 17th, 2025 by Vasil Kolev

All this comes from our work on getting a stable and redundant link for servers without resorting to things like routing protocols, and is the product of some years of “research” (hitting the next problem and solving it).

The Linux kernel has a (deceptively simple) mechanism for “bonding” two interfaces as one, to use for load-balancing and fail-over. It is really well documented in https://www.kernel.org/doc/Documentation/networking/bonding.txt and if some of my explanations are lacking, that’s the proper document to look into.

There are all kinds of modes, but there are two that make sense in Ethernet networks – active-backup and 802.1ad. 802.1ad requires support from the switch side, and for proper redundancy when you’re connecting to two switches to have them stacked or clustered. Stacked switches crash together, clustered also, but a bit less. So, for proper redundancy you’d like to have the two switches you connect to as independent as possible, which rules out 802.1ad.
(802.1ad is also known as LACP, link aggregation control protocol. When connecting to two different switches, it’s known as MLAG, multi-chassis link aggregation.)

For the sake of illustration, let’s say we have a network with two switches (SW1 and SW2) and two hosts, A and B. A is connected to SW1 and SW2, so is B.

By default the active-backup bond just monitors the state of the link (“miimon”). This should work in a better world, where switches are supposed to die completely when they can’t forward packets, but that’s not the case in the real world. Even without the “fun” failure modes where a switch stops forwarding without killing the links, there’s also the option that someone mis-configures a VLAN and blackholes the traffic you care about. As miimon can’t detect any such issues and fail-over to the other interfaces, it’s not very useful in Ethernet networks.

There is another option, something called “ARP monitor” – the bond sends ARP requests to a set of pre-configured targets and listens for the replies, if the replies stop, the interface is deemed dead and failed-over. This is a step in the right direction.

To have this properly configured, you need to have more than one target (so the death of that one target does not make the node think it has no connectivity), and to configure it for any node in the targets to be reachable to make the link active (the arp_all_targets option). All these are somewhat obvious and easy to set up, together with the preferred arp_interval to know how often to send packets.

And all this would’ve been fine if not for the weird default behavior of the Linux bonding to take any received ARP traffic as an indication that the link is OK. So if you get disconnected from the targets, but there are some other hosts in the partition created on that “side” of the network, you’ll never switch to the other interface, never mind that you can’t reach the targets via the current active interface.

The next option is called “arp_validate”. It tells the bond to actually look in the received ARP traffic if it’s from the targets (well, almost, but we’ll get to that). It can be told to look to “validate” no interface, the active one, or both. I have no idea why the validation is not “on” by default, and I haven’t dug in the history enough to check, but I’m guessing it’s something related to the weak host model and the issues I’ve had with ARP.

“arp_validate=active” takes care of checking what’s received on the currently active interface, so it should resolve most issues. However, it doesn’t help when the backup interface is not correctly connected and receives some ARP traffic, and it’s not possible to check /proc/net/bonding/bondX and know if it’s safe to switch the active interface for some reason (so you switch, and hopefully bounce back pretty quickly). To allow for monitoring the state of the backup interface, you should use “arp_validate=all”.

Which would be great if that worked. This part took me some reading of the sources to get right, see this part of bond_arp_rcv() in drivers/net/bonding/bond_main.c, especially the three calls to bond_validate_arp() on lines 3284, 3288 and 3290. Is there something weird there?

That’s correct, in the check on line 3288 the “tip” and “sip” arguments (source and destination) are swapped. A closer reading of the documentation and the source shows that if you validate the traffic to the backup interface, the ONLY traffic that will make this interface “up” is our own broadcast traffic send to the targets, not for example broadcasts received from the targets themselves (which I expected to be the case). I’m thinking about submitting a patch to the documentation in that regard.

So, in general this should work, but we had a lot of cases where the backup interface refused to hear the broadcasts sent via the active interface. After some time we were able to trace these cases to two specific NIC drivers – i40e and ice, both Intel NICs.

Small bit of theory before explaining what the issue was – the Linux bond sets the same MAC address on all Ethernet interfaces in the same bond.

And, there’s this small option called source pruning, which roughly translates to “drop all received packets that have my MAC address as source”. Which might make sense in some situations, but definitely not in a bond with “arp_validate=all”. So, for i40e this is just an ethtool option, but for ice NICs this looks to be hardcoded, and I’ve opened an issue for this to be configurable, so hopefully in some years it’ll get fixed.

postscript 1:

bpftrace is a wonderful tool that helped a lot to attach to the bond_arp_rcv() and other functions and see what’s going on. For any issue which strace can’t see (like “something returns EINVAL and you have no idea why), this looks to be the next step.

postscript 2:

I noted that two bonding mechanisms make sense in Ethernet network. There are some more modes, which are either “broadcast” (send all packets via all links) or “balance the traffic based on a function”. Both these types of modes will weird out the switches, because they’ll see traffic from the same MAC address coming from two different places and would constantly be updating their tables where these MACs are, with very fun consequences.

These modes made a lot more sense for serial links back in the days, adding two SLIP or PPP links to a bond with the default mode (balance with round-robin) was the cheapest way to get twice the bandwidth without any extra complexity.

The most resilient (but hardest to implement and more complex) solution for anything like this would be full-mesh BFD and BGP, which would make sure you only use paths that you can communicate on (doesn’t help with MTU blackholes, but pretty much nothing does). I’ve never seen it done, though :)

Update: OF COURSE it couldn’t be so easy. As soon as we deployed the disabling of source pruning at a place with LACP, we got:

spbond0: (slave lacp0): An illegal loopback occurred on slave
Check the configuration to verify that all adapters are connected to 802.3ad compliant switch ports

Turns out that if you have an i40e NIC, Virtual Functions (VFs) and a LACP bond, and disable source pruning, the card starts returning a copy of all broadcast, LLDP, LACP and fsck knows what other packets. This has at least one fun side effect of killing DHCP for VMs connected via the Linux bridge. The bridge has a switch inside with MAC learning, and as soon as the client sends a broadcast packet, the bridge learns (because of the copy sent back) that the VM’s MAC is on the external port, not the internal port, thus effectively blackholing all VM traffic. And this is very hard to see for already running VMs, as their traffic is almost entirely unicast, and any unicast packet “fixes” the problem.
So, for example it’s impossible for DHCP to work, or, even better, for the VM to initially get the ARP reply for the MAC address of the default gateway.

Update 2: Actually, the LACP bond has no implications whatsoever, you just need VFs and source pruning disabled for the bug with broadcasts-sent-back to trigger. So, this is not fixable until Intel decide to get this fixed…

Argh.

ConfConf 2025 (English)

August 2nd, 2025 by Vasil Kolev

The zero edition of ConfConf passed (a month ago).

For several years we have been talking to the people from FOSDEM that it would be nice to have some kind of gathering/conference for people who, like us, organize open-source and similar conferences. Some time ago, the same idea was for an event only for video-streaming/recording (with the working title “vocconf”), but we got nowhere.

So this year, after we had FOSDEM and went to the FOSSASIA summit in Bangkok, we decided to move things forward. We decided to call it ConfConf, we made a simple website, and started inviting people. Our idea was for it to be invite-only, a small un-conference somewhere relatively cheap and central, so that we could get by with a minimal budget. Sofia turned out to be a suitable place – we managed to reserve the conference rooms at the Hemus Hotel, half of the visitors stayed there, and so the 40 or so people who gathered were together almost the entire time.

People came from Sweden, Belgium, the Netherlands, France, Germany, Serbia, Bulgaria, Vietnam, South Korea and Taiwan (we should write somewhere on the website which events they attended).

There was some concern that people wouldn’t want to talk, would be shy, etc. It turned out to be completely unfounded – this is a topic that most organizers have no one to talk to, and very shy people don’t organize conferences (and don’t go to conferences to organize them). I don’t think we stopped talking for two and a half days, during the event, at breakfast, dinner, lunch or even on the way somewhere. My head can’t digest all the conversations yet, but we have notes from all the sessions and we will organize them somewhere.

We started a bit chaotically, our wiki-type software broke (hedgedoc is cool, but definitely not for 20 people writing on the same page at the same time), so we switched to flipcharts, but in the end, with people who are always organizing things, we didn’t encounter anything that could stop us. We did a number of group sessions, some with everyone present, and somewhere we have a recording of the opening and closing, which might be good for publication.

(Organizationally, the event was made to be simple, on purpose – so that even the organizers could participate, and not think about the details of the organization. We had rented the conference rooms of the Hemus Hotel, had lunch there, had reserved tables for dinner at the hotel (for Friday), at CoKitchen and at Kolovoz 41, and basically that was almost everything. There was no planning of streaming and recording, no preparation of a program, or anything else time-consuming)

I can safely say that these were about 40 of the coolest people I have ever met. No matter where they were from, they were interesting conversationalists, they did interesting things and had something to tell.

After some rest, we will plan the next one – there are talks about whether it could be somewhere in Asia, or some other more central place that more people can easily reach (if a local team is found in Istanbul, for example, it would be interesting). Who knows, maybe it’ll be in Vietnam…

The whole event also gave me an interesting perspective. In Bulgaria and in a decent part of Europe in general, many of these events were started at by infrastructure people (mainly system administrators), as the main ones in need of such software and with the desire to get involved in getting it up and running and adding to it. This doesn’t seem to have been the case in most of Asia – there, infrastructure people seem to be only at large telecoms, where problems were solved with a lot of money, buying software or some big development department. There was no idea of a neighborhood ISP, someone to roll out servers/forums and other such things.
(I’m still collecting and reading literature on the history of the Internet in Asia, something else may pop up)

Another interesting thing about my explanations about how a decent part of the event organization and all the things like videobox were done in our free time was “in India people don’t have free time”. I’ve noticed this in countries with various clients and what time they write to us – I work for a company of workaholics, and we still don’t write over such a wide range of hours as some people in India. For South Korea it was “people have jobs and hobbies, but they do both putting in their all”, so it might be better there :)

ConfConf 2025 (български)

August 2nd, 2025 by Vasil Kolev

Мина нулевото издание на ConfConf (преди месец).

От няколко години си говорим с хората от FOSDEM, че би било хубаво да има някаква сбирка/конференция за хората, които като нас организират open-source и подобни конференции. Преди време същата идея беше за събитие само за videostreaming/recording (с работното заглавие vocconf), но там не стигнахме до никъде.

За това в крайна сметка тази година, след като случихме FOSDEM и ходихме на FOSSASIA summit-а в Банкок, решихме да придвижим нещата. Решихме да се казва confconf, направихме един прост сайт, и започнахме да каним хора. Идеята ни беше да е invite-only, малка un-конференция някъде на сравнително евтино и централно място, за да можем да минем с минимален бюджет. София се оказа подходящо място – успяхме да запазим залите в хотел Хемус, половината посетители и отседнаха там, и така 40-тината човека, които се събрахме бяхме заедно през почти цялото време.

Дойдоха хора от Швеция, Белгия, Холандия, Франция, Германия, Сърбия, България, Виетнам, Южна Корея и Тайван (някъде на сайта би трябвало да напишем кои събития присъстваха).

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

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

(Организационно, събитието беше направено да е просто, съвсем целенасочено – така дори организаторите да могат основно да участват, а не да мислят подробности около организацията. Бяхме наели залите на хотел “Хемус”, обядвахме там, запазили бяхме маси за вечеря в хотела (за петък), в CoKitchen и в Коловоз 41, и в общи линии това беше почти всичко. Нямаше планиране на streaming и recording, нямаше събиране на програма, или каквото и да е друго много времеемко)

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

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

Цялото събитие също така ми даде интересна перспектива. В България и изобщо в прилична част на Европа много от тези събития бяха започнати едно време от инфраструктурни хора (основно системни администратори), като основни нуждаещи се от подобен софтуер и с желанието да се занимаваме да го подкараме и допишем. Това не изглежда да е бил случая в по-голяма част от Азия – там инфраструктурните хора изглежда да са само по големи телекоми, където проблемите са се решавали с много пари, купуване на софтуер или някакъв голям отдел за разработки. Нямало е идеята за квартален доставчик, някой да търкаля сървъри/форуми и други такива неща.
(още събирам и чета литература за история на интернета в Азия, може да изскочи още нещо)

Друго интересно около моите обяснения за как някаква прилична част от организацията на събития и всичките неща като videobox-а сме ги свършили в свободното си време беше “в Индия хората нямат свободно време”. Това съм го забелязал и от страни с разни наши клиенти и по кое време ни пишат – аз работя във фирма от работохолици, и ние пак не пишем по толкова голям диапазон от часове както някои хора в Индия. За Южна Корея беше “хората имат работа и хобита, но правят и двете влагайки всичко от себе си”, та там може и да е по-добре :)

2025-07-30 Kultur Shock

July 30th, 2025 by Vasil Kolev

Такъв post не съм писал от 10 години.

Снощи в клуб/кино “Кабана” (едно нещо на открито до НДК) Kultur Shock направиха “таен” концерт, т.е. такъв, който обявили от сцената в Пловдив преди два дни (и питали дали има кой да ги закара до София :) ).

Мястото е сравнително малко и се напълни добре, беше доста плътно пред сцената. А самите Kultur Shock свириха както правят по принцип – без паузи между песните, с много желание и весели както винаги. Обещаха и да дойдат за нещо по-голямо догодина, за 30-годишнината си (и горе-долу 20-годишнина от първия си концерт тук), по някое време през април.

Не съм сигурен доколко са ми липсвали концертите, но гледайки ефекта, спокойно мога да кажа, че са по-евтини от антидепресантите :)

p.s. имам още 2-3 полунаписани неща, които тряба да пусна в близките дни.

2025-06-14 OpenFest 2025 неща

June 14th, 2025 by Vasil Kolev

(опитвам се да пиша по-често, но нямам особено добри теми)

Нещата около OpenFest се движат – вече има пуснат call for presentations и call for volunteers.

Различното тази година е новият поток за лекции, да го кажем, “не за стари хора”. Лекции, насочени към хора, които сега започват, дето не са насъбрали 15-20 години опит, но искат да навлязат и да научат нови неща. Не изглежда да има нещо, насочено към такива хора (изключая събития, които обясняват как AI-то ще ги остави без работа, в което малоумие не искам да навлизам), а е важно да има такива.
Дори може да се каже, че на практика едно време OpenFest беше това – лекциите бяха много по-уводни, понеже бяха неща, които никой не е виждал.

(за CfP използваме Pretalx, което изглежда ползват всички, включително CCC и FOSDEM. В системата има всичко, дето ни трябва, можем да си я хостнем сами, и ни отне (с невероятната помощ от Сашо Шопов) две-три седмици да и направим превод на български).

2025-04-27 две политически истории

April 27th, 2025 by Vasil Kolev

Две истории от днес, донякъде свързани с националната конференция на “Да България”.
(за пръв път съм само като присъстващ, не като организиращ или инфраструктура. Странно усещане)

Системите за гласуване са криво нещо. Не стига, че има теорема на Arrow, ами и доста неща не са съвсем очевидни.

Да речем, че имате 4ма кандидати и трябва да изберете 2ма от тях. Някои опции са:
– По един глас от всеки гласуващ за 1 кандидат;
– По един глас от всеки гласуващ за възможна двойка кандидати;
– По един глас от всеки гласуващ за 2ма кандидати;
– Condorcet и взимане на първите двама.

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

Кандидатите са ни A, B, C, D;
Взимаме N човека, които предпочитат кандидатите в ред (A, B, C, D) и M човека, които предпочитат (C, D, B, A). На първия метод първия вид хора ни дават N на брой A и M на брой C, а вторият ни дава N на брой (A, B) и M на брой (C,D), та при всяко N > M имаме съвсем различен резултат.
(и това дори не е особено патологичен случай на разпределение на предпочитания)

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

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

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

В дискусиите после имаше няколко човека, които споменаха римския триумвират и колко много не е проработил (толкова се повтаряше, че когато Христо Иванов се изказа, изрично каза, че не е строил Римската империя), а в един момент някой даде пример с триумвирата след смъртта на Сталин, как понеже него не е можел един човек да го замести били трима. Добре, че се усети да каже “Не сравнявам Христо със Сталин”…

И целия разговор ме върна 10 години в миналото, когато променяхме неща по устава на Фондация “Отворени проекти” и исках да направя така, че трима човека да можем да представляваме фондацията. Тогава имаше съпротива от някои хора, че “трябва един да носи отговорност” и други подобни доводи, които чух и сега на събранието.
В крайна сметка го направихме, и сработи страхотно – в годините, в които аз, Яна и Мариян се занимавахме, и тримата можехме да представляваме фондацията и да движим нещата. При добре сработен екип това се получава доста добре, а даже по законите на Паркинсън трима човека е доста добро число за управляващ орган…
(съдът всъщност отказа частта с представителството на тримата и го направихме с пълномощни)

От друга страна, в нашата държава все още има идеята, че има там един отгоре, дето казва какво става, и ще дойде, и ще ни оправи. Надявам се да го надрастнем някой ден.

2025-03-24 HackTues 11

March 24th, 2025 by Vasil Kolev

Тази година StorPool бяхме спонсор на HackTues 11, и едно от нещата, които търсеха от нас, бяха ментори или членове на журито. Аз предпочетох да съм ментор, и се уговорих да си работя от там за двата дни на хакатона (четвъртък и петък).

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

По правилата тази година, отборите си избираха менторите. Мен ме избра екип W-BT. Според тях основно заради python-а, който бях написал, че знам, според neter, понеже проектът им бил свързан със стари хора и им трябвал някакъв такъв.
(чак пък стар, само три пъти по-възрастен съм от тях)

Бяха (учудващо, поне за мен) добре организирани – бяха измислили какво точно ще правят още преди да се видя с тях, имаха сравнително добро разпределение на задачите, и дори за да избегнат забраната за всички под 9ти клас да стоят по цяла нощ/спят в залата, бяха си взели едно airbnb наблизо, от което да работят през нощта (което ми се видя като много добър hack).

Аз изкарах с тях двата дни и гледах да не им се меся много, и определено да не им решавам аз нещата (мисля, че се гледа криво на това менторът да ти напише кода), но debug-вах някакви неща, помагах с git и setup на работни среди, оправяне на текст и с измислянето на въпроси, които могат да очакват от журито.

(in other news, чудя се дали има смисъл да направя лекция “debug чрез print”, за нея имам страхотна история, която включва Алан Тюринг и Клод Шанън)

Не знам обаче как работеха всичките в тоя шум. В “Джон Атанасов” бяха наредени маси за всички отбори, бяха им докарали ток, и всички си работеха, но имаше много разговори и около 50-55db фонов шум (според калпавия измерващ app на телефона ми). Аз имах и някаква друга работа и определено ми пречеше, та по средата на хакатона се прежалих и си поръчах свестни слушалки (които ще дойдат съвсем навреме, следващата седмица…). Мисля си, че това беше основната причина да съм толкова уморен събота следобед и да не остана за финалната част, прибрах се и си легнах.

Та след като си направиха последните commit-и в 6:50 сутринта (при 6:59 краен срок), моите хора се явиха пред журито в 10:39. Това не беше най-лошия вариант де, имаше хора пред журито в 08:00, т.е. съвсем да не могат да поспят. Мисля, че бяха едни от най-добре справилите се с тази част, въпреки шума (част от полуфиналите бяха отстрани в “джобовете”, където на OpenFest-а слагаме детския кът и щандове, и нямаше начин да се ограничи шумът), ранния час и средно подлите въпроси от журито.

(Тая цялата работа със съня и денонощната работа ми докарва смесени чувства. Аз и като малък обичах да си доспивам, и въпреки, че съм правил разни неща за цяла нощ, като е трябвало да подкараме нещо счупено, също така спокойно мога да кажа, че почти всичкият код, писан в такова състояние е бил за триене после. Та, не знам това колко отговаря на реалния свят.
От друга страна, аз съм тръгнал от състезателното програмиране, което май още повече не отговаря на реалния свят, та вероятно нямам право да се оплаквам.
И ако моите деца някой ден поискат да ходят на такъв хакатон без спане, сигурно няма да съм много щастлив с идеята, ама ми се вижда малко вероятно да ги откажа…)

От нещата, които ми направиха неприятно впечатление (както и на колегите) беше начинът на използване на AI нещата и цялостното очакване, че те “знаят” какво правят. Имаше не само “дай chatgpt-то да ни изгенерира еди-какво-си”, но и в самите проекти имаше “и това го подаваме на OpenAI и то ни отговаря” (любимият ми пример беше при един проект, който анализираше извлечения от банкови сметки, как един член на журито пита “Добре, аз ей-сега му дадох един PDF от някакъв курсов проект, и то от него си измисли някакво голямо количество транзакции, това очаквано ли е?”). Мисля, че трябваше да има награда за не-използващи AI, или поне ползващи го по смислен начин.
(фирмената награда я дадохме на отбор, който това го беше направил както трябва)
Изобщо, тоя стохастичен папагал не е достатъчно добре разбран, и се струва магия на всички, както blockchain-а (който беше “тук нещо се случва и ставаш богат”). Чудя се дали мога да намеря някой да го обясни правилно.

Обаче най-важното беше, че всички бая се забавляваха, въпреки че подобно събитие по дефиниция си е напрегнато (и всичкият му график беше твърде оптимистичен, например почти без почивки между представянията за полуфиналите). Настроението се беше пренесло и върху журито – тяхната работа на практика е да се заяждат с участниците, но се усещаше един такъв тон на забавление в цялото нещо.
На финалите в журито имаше един член (който заслужава отделна награда), който изнамираше паролите, които хората бяха commit-нали и влизаше по админските и контролни системи на повечето проекти (един отбор си беше забравил AWS (или GCP?) token-ите в някакви commit-нати файлове и можеше да им се спре всичко). При един от отборите беше питал “Ама тук сте оставили админската парола на keycloak-а (през който минава всичката автентикация на приложението им) в един файл, то така не може ли всеки да влезе да вижда тия неща” и от отбора сравнително бързо успяха да отговорят “Ами то ние сме я сложили там, за да може да я види журито и по-добре да разгледа проекта”.
(5 минути смях в залата и ръкопляскания)

Ако мога да участвам догодина, едно от нещата, които бих направил/помогнал биха били някакви допълнителни workshop-и преди събитието, особено за по-младшите участници, за неща “как да работим по-ефективно” (сега е имало някакви, провеждани от предишни участници, но не мисля, че нещата, дето ми се иска са били засегнати). Това ми беше с доста участници наблюдението, че можеха да си спестят прилично време, ако ползваха alt-tab, разни други клавишни комбинации и като цяло някаква по-ясна организация на работното пространство. Мога даже да цитирам един разговор от при мен,
“Ползвай стрелката нагоре, защо се мъчиш да го пишеш наново”
“Уф, и баща ми все това ми казва”