2016-05-24 панаир на книгата

May 24th, 2016 by Vasil Kolev

Има панаир на книгата в НДК (до 29ти). Аз си харесах/взех следните неща:

“Избрани техники за производство на ракия”, на Симеон Дочев (което вече прочетох, много приятно);
“Жените в ‘Ислямска държава'”, на Татяна Дрозина и Явор Райчев (чета в момента, изглежда доста интересно);
“Стогодишният старец, който скочи през прозореца и изчезна”, на Юнас Юнасон (стои ми в списъка за четене отдавна);
“Тежък маршрут” на Евгения Гинзбург;
“Системата за европейска сигурност и Балканите в годините на студената война” на Йордан Баев;
“Как се променят нещата – от инциденти до голямото събитие” на Ивайло Знеполски (два тома).

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

2016-05-15

May 14th, 2016 by Vasil Kolev

Една от лъжите, които казвам е “от утре почвам да пиша редовно”.

В последните две седмици се случиха куп неща, които в общи линии май трябва да си припомням по логове:
– Довършихме редакцията на видеата от OpenFest 2015, всички са качени в архива и youtube. Най-накрая може да се каже, че имаме събран екип да се занимава с редакцията (което не успя да стане около самия фест);
– Видеата от ТърновоConf 2016 са в pipeline, просто около празниците и наваксването с работа след тях никой няма време;
– В лаба вече има първата co-locate-ната машина (кръстена по някакви извратени причини “pinkiepie”);
– Към автоматизациите в лаба беше добавена поредната тривиална такава, ако някой остави външната врата отворена над 5 минути, Стивън Хокинг звъни на всички телефони да каже да бъде затворена (наложи се поради някои лоши навици на пушачите);
– Пак около това, има приличен шанс да опънем хубава оптика до лаба в следващия месец и да намерим приложение на част от оптичната техника;
– Мина лекцията/workshop за ICS security в лаба, очаквайте записи;
– Силно си изоставам с четенето на книги;
– Взех си rack за вкъщи, за да успея да набутам в него малко техника и да си освободя бюрата. Обмислям да взема и за лаба още един-два с подобна цел (понеже имаме много техника, натрупана на купища);
– Успях да си сменя (почти) навсякъде сертификатите с такива от letsencrypt. Имаше доста гафове, и си мисля, че можех просто да издавам по един сертификат на сървър с всичките имена в него, вместо за всеки vhost неговите си, ще видим дали ще променя метода за в бъдеще. За заинтересуваните – ползвам acme-tiny;
– Човек и добре да живее, debug-ва erlang. Продължавам да не го понасям тоя език.

В плановете за петилетката има да напиша нещо за всичките дребни интересни хакове и неща около лаба и като цяло проектите, с които си играем (какво може да се прави със SDR, странностите с релета и телефонни централи, routing и тунели), да намеря време да си почина, да ида на концерта на Tuber (21.05, в mixtape), да подаря още някакво количество книги (дарих малко на една библиотека, та сега сравнително малко книги стоят по бюрото и масите наоколо). Мисля, че ми трябва и план да не си правя много планове, ама там ще видим:)

2016-04-26 смърт

April 26th, 2016 by Vasil Kolev

(това го пиша, щото темата ми е интересна, нямам планове да умирам скоро)

Около един post на Meredith Patterson (който също си заслужава да се прочете) попаднах на “A Protocol for Dying на Pieter Hintjens (за чието име съм сигурен, че не мога да произнеса правилно). Това ми припомни малко моите преживявания около невралгията и болницата и най-вече завещанието, и учудването на разни хора, че изобщо съм обмислял ситуацията и всичките варианти.

Смъртта е донякъде интересна тема, най-вече понеже е едно от нещата, за които се говори най-трудно – по най-различни причини хората сме направени така, че темата да ни блокира по най-различни начини, от простото споменаване, през държанието около болни и умиращи, до трудностите при убиването на хора. Това от своя страна води до това да ни свари тотално неподготвени. Протоколът, описан от Hintjens и идеите на Meredith са в общи линии една стъпка в правилната посока, още един факт от живота, с който трябва да свикнем. Интересно ми е дали следващата голяма кампания из медиите ще бъде на подобна тема (както сега се забелязва с най-накрая сериозното включване на хомосексуалността в повечето сериали/филми/книги, което не може да се забележи в тези от преди 30-40 години).

Може би ни трябва годишен Think/talk about death day?:)

2016-04-22

April 22nd, 2016 by Vasil Kolev

Трябва да пиша по-редовно, да не се получава миш-маш като тоя по-долу.

Както обикновено, ми върви на дебъгване. В последната седмица от по-странните неща се сещам за:
– build на android image (за нещо, правено и писано от (некадърни) китайци);
– Java/groovy;
– Python;
– И нормалното количество VoIP бози.
За да завърша картинката, обмислям да седна да подкарам VAX-а, който виси в initLab.

Тая вечер ходих на концерт на “band H.”, хора, които свирят Tool. Прилично се справиха, въпреки че им куцаше ритъма на моменти (което не е учудващо, Tool са учудващо гадни за свирене).
(по някаква причина в същия ден имаше 3 концерта – band H., Smallman и Irfan, не беше лесен избора)
(random човек ме разпозна на концерта и каза колко се радва на разните проекти като initLab, дето правим)

Седнах да подкарвам най-накрая сертификати от letsencrypt за нещата по marla, и успях да наслагам на половината, преди да ме удари resource limit-а при тях. Следващата седмица ще ги довърша. Разписах нещата с acme-tiny, базирано на нещо, което Петко беше драснал за лаба, оказва се сравнително просто (ако config-а е подреден както трябва) да се parse-ва apache config-а и да се смята какви точно сертификати да се генерират за кого.
(открих кофа неща, които вече не се host-ват при мен и ги почистих)

Събрал съм резултатите от теста на FOSDEM-ската техника (сравнение на запис на stream-а и encode-нат резултат, от нашия и от FOSDEM-ския setup), и като цяло с още малко пипване това може да се окаже достатъчно лесно за по-малки конференции (на които не си влачим 6-7-8 човека от екипа).

На opendata.government.bg тия дни пак качиха нещо интересно (тоя път – целия търговски регистър от 2008ма досега) и пак претовариха нещастната виртуалка (която е един debian в/у microsoft hyper-v). Обмислям някаква магия да може да преживява такива неща по-лесно, щото не се очаква да намалеят интересните данни.

За който се интересува, върви световното първенство по snooker, прилично забавно е. Тия дни пътувахме в метрото и tether-нати през телефона ми и с един таблет си гледахме вървящия мач…
(да живее технологията)

И не си спомням нещо друго да ми се е случвало.

2016-04-17 ТърновоConf 2016

April 16th, 2016 by Vasil Kolev

И случихме ТърновоConf 2016.

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

Интересните работи (по техническата част) бяха следните:

Оказа се, че в хотела има някакъв “internet” през кабелната телевизия, с 20mbps download и 1mbps upload. Последваха малко телефонни обаждания, намерихме си резервен вариант през 3g и 4g, а един ден преди събитието се открихме с един приятел и evo.bg ни докараха 1gbps връзка на място, с която тотално ни решиха проблемите. Малко изненадаха хотела с бързото пристигане и окабеляване, но нещата минаха съвсем лесно.

За това събитие паралелно бяхме вързали fosdem-ските videobox-ове, с които вървеше отделен stream, представляващ picture-in-picture (ще кача примерни записи от него и малко encode-нати видеа отделно, за сравнение). Работеха доста добре, бяха полезни за switch-ове и не създадоха никакви допълнителни проблеми, така че вероятно някоя конференция можем да я направим само с такива, ако решим. За изходящия stream от тях трябваше да заделим един лаптоп с i7, но той се справи съвсем добре и май без никакви особени проблеми (трябва да видя streamdump-овете как са).

Успя да ни умре за малко единия контролен лаптоп (един thinkpad t410), понеже при default-ната работа на вентилатора му и виртуалката с контролния софтуер беше успял да прегрее ужасяващо. Решението беше да се накове ръчно вентилатора на максималната възможна скорост.

Имахме сериозен проблем със смущения в микрофоните, при които опрях до там да извадя малкия SDR dongle и да слушам ефира, да видя какво точно се случва. В общи линии имаше зашумяване в целия ефир около нашите честоти (520, 530 и 750MHz), като единствено headset-а ни на 2.4ghz работеше добре, и с останалите май доста изтормозихме публиката. Текущата хипотеза е, че най-вероятно смущенията са идвали от доста мощния поточен бойлер, който беше наблизо, та издирвам някой с такъв, за да идем близо до него и да тестваме дали има тоя ефект. След това вероятно ще си мислим и екраниране…

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

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

2016-04-08 промени по закона за личните документи

April 8th, 2016 by Vasil Kolev

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

От фондация “Отворени проекти” пуснахме становище по въпроса, което initLab подкрепи, и се надяваме още хора да се зачетат и коментират.

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

Та, ако смятате, че има нещо полезно, което да кажете – на сайта на предложението може да пуснете коментар. Самият сайт е доста куц – праща ви паролата по mail-а в plaintext, и има всякакви малоумни неща, като да не може да се слага каквато и да е латиница в title на коментара, и какво ли още не – но е официалният начин да се пращат коментари към институцията, която е изготвила законопроекта и поне донякъде са задължени да им обърнат внимание.

Втория BGP workshop

April 4th, 2016 by Vasil Kolev

Направихме и втория BGP workshop, на който още хора откриха колко лесно се подкарва IPv6 :) При достатъчно желаещи ще направим и трети след около месец. Също така може да помислим по въпроса хората да имат отделно устройство за подкарване и да са си сами потребители, понеже една от най-гадните задачки се оказва да убедиш всичките ти приложения на операционната система да се bind-ват на определен ip адрес, когато излизат навън.
(а аз тотално се изложих, понеже мислех да се включа вместо един от участниците, който не дойде, ползвайки pine64, което ми пристигна наскоро, и някъде на средата открих, че kernel-а му няма 802.1q и че трябва да компилирам отнякъде нов… което ще свърша, като си подкарам някаква среда скоро).

От интересните неща, които (пре)открихме беше, че ICMP echo reply от 8.8.8.8 винаги е орязан до 64 байта payload, колкото и голям пакет да се прати. Това води до въпроса “абе, защо нещо някъде ми реже пакетите?”…

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

(а вечерта бяхме на Jimmy Carr, от който лицето още ме боли от смях)

2016-03-31 въпроси за админско интервю

March 30th, 2016 by Vasil Kolev

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

Как бихте реализирали система за backup, на която сървъра не може да прочете данните на клиента (т.е. са криптирани подходящо) и compromise на клиента не води до възможност за декриптиране на backup-ите му?

Ако имате 12 диска, кое е по-reliable – 2 raid масива в raid5 от 6 диска или 1 масив от 12те диска в raid6? Кое е по-производително?
(изобщо, какво е raid6?)

Имате дърво с директории и (много) файлове в тях, как ще намерите кои файлове се повтарят?
(задължително трябва да се знае какво е -print0)

Какви са трите типа ssh тунели? Какво е socat?
(ssh трябва да го знаят всички, socat-а почти на всички някога е трябвал)

Пак към ssh-а, защо не трябва да се логваме на чужда машина с agent forwarding и как точно се exploit-ва?
(това е забавна задача за практическо упражнение)

Защо не трябва да се сверява часовникът на машина с ntpdate, който се пуска от cron-а веднъж на ден/час?

При смяна на DNS запис с TTL от 3600 секунди, колко време отнема да се научи от 90% от internet? 95% ? 99% ? 100% ?
(същия въпрос за 60-секунден TTL. Bonus points, ако споменат на БТК/vivacom малоумните resolver-и)

Защо на натоварен linux сървър не трябва да има swap?
(не мисля, че е само за linux, но трябват малко тестове още за останалите)

Какво е rollback plan и кога трябва да имаме такъв?
(bonus points за “винаги”)

Защо не трябва да се смесват различни модели/производители на дискове в един и същи raid масив?

Каква е разликата м/у strace и ltrace?

Какъв е основният протокол за контрол/комуникация с мрежови устройства?

Защо не трябва да се филтрира цялото ICMP?

Как можем да сменим root паролата на linux-ка машина, като имаме достъп до конзолата?
Как можем да направим това трудно/невъзможно?

Защо не се ходи с къси гащи в datacenter?

Предимства и недостатъци на hardware и software raid?

Инструменти за анализ на натоварването на машина, кои в кои случаи се ползват?

Втори BGP workshop

March 17th, 2016 by Vasil Kolev

Ще правим втори BGP workshop, пишете ми да ви запиша (вече има 11 човека в списъка).

(трябва да ви има тук, за да ви броим за записани)

Update: Workshop-ът се премести на 3.04, понеже преди това има ArduinoDay.

2016-03-13 мина първия bgp workshop

March 13th, 2016 by Vasil Kolev

И направихме първия BGP workshop. Бяхме бая на гъсто, но като цяло се събрахме.

Бяха се записали 18 човека, 2-3 не дойдоха (Мариян замести единия), всички успяха да пуснат повечето си сесии, като една част от хората подкараха и IPv6. Беше малко разбъркано от организационна гледна точка (хората идваха по различни време, някои си тръгнаха по-рано и им изпаднаха сесиите), но мисля, че всички се забавляваха :)

Целта на занятието беше хората да подкарат BGP в трите стандартни сценария – transit (т.е. връзка към internet доставчик, който дава пълна routing таблица), втори transit, два peer-а (т.е. хора, с които си търкаляте трафик само за вашите мрежи), и internet exchange (един vlan, два route server-а и свободна обмяна на prefix-и). Имаше свързаност през AS200533 (initlab) и с една врътка отделно през AS57344 (telehouse), ето и схема на setup-а.

Имаше всякакви забавни проблеми, например основния, че хората по подразбиране не се сещат да сложат филтри и няколко пъти беше пускана пълна таблица през exchange-а. Друг интересен момент беше, че понеже exchange си announce-ваше и собствената мрежа, OpenBGPD по някаква причина слагаше път към нея през самия route server и се губеше възможността да се говори с другия. Имаше и забавни сблъсъци м/у опитите за настройка на мрежата и network manager, който решаваше да изтрие разни неща.

Имахме различни интересни устройства, като повечето бяха linux-и с quagga или bird (доста от тях на flash-ка с ubuntu от Мариян), няколко бяха на raspberry pi или подобни мижави устройства, имаше един малък juniper-ски router и един JunOS във виртуалка.

Имаше сериозен интерес (18 записани човека, и 6-7 още, на които отказах, защото нямаше място), та вероятно ще повторим упражнението пак след няколко седмици, ще се обяви тук и на разните места за целта (и ще пиша на всички, на които отказах за тоя път).

2016-03-04 Първи BGP workshop

March 4th, 2016 by Vasil Kolev

Ще направим първия BGP workshop на 13.03 в лаба, от 13:00 в лекционната. Желаещите да се запишат да ми пишат (или на Мариян) и да кажат с какво устройство ще са или дали ние ще им осигурим някакво (за да участвате, трябва да ви има записани в wiki-то за тая дата.

Ще се провежда пак по нататък, понеже има прилично количество желаещи, другите дати ще ги обявим нататъка.

Update: Местата за това провеждане се запълниха, ще пиша кога ще правим следващия.

2016-02-28 BGP workshop

February 28th, 2016 by Vasil Kolev

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

In other news, с Мариян мислим да правим BGP workshop. Ще се случи в initlab, като датата не е ясна, има един doodle по въпроса, а някакво описание може да се намери в лабовото wiki.

Накратко идеята е хората да дойдат, да си пуснат някакво устройство (което или те си носят, или ние им даваме в някакъв вид, или си boot-ват една flash-ка на лаптопа) и да си подкат bgp и routing в три стандартни сценария – upstream-и, peer-и и internet exchange. Ще раздаваме съвсем инстински адреси за анонсиране, та някаква част от упражнението ще е видима от internet :)

По-големия video setup на OpenFest 2015

February 20th, 2016 by Vasil Kolev

(това съм го написал преди няколко месеца и тотално съм забравил да го кача)

Тази година направихме доста по-сериозен setup за видео-записа. За малко начална информация, може да видите схемите за зала “България”, камерна зала и студио “Музика”.
(или доста по-артистично нарисуваните от Guru схеми за зала “България” и камерната зала)

Изискванията ни тази година бяха доста по-високи от предишните:
– Възможност за гледане на камерата или директно на сигнала от лектора, за всички зали;
– За двете по-големи зали, възможност да се снима задаващия въпроса от публиката;
– Пак за двете по-големи зали, контрол от видео-миксера какво излиза на изхода на проектора;
– Поне 720p разделителна способност на записа;
– Full HD (1080p) stream от зала “България”;
– Стерео-запис и стерео-звук от зала “България” (които не се използваха, защото лекцията, на която се очакваше да трябват отпадна в последния момент);
– Запис на случващото се на сцената (свирещите музиканти) в зала “България”;
– WebM stream (което отпадна, поради липса на време и мощност за encode-ване).

Всичките ни setup-и имат следните общи идеи:
– Всичкият звук се събира в един аудио пулт, от него се изважда звук до озвучаването на залата и до една от камерите (която маркираме като primary камера). Това се прави, за да сме сигурни в синхронизацията на звука и видеото (иначе има шанс да се получи един-два кадъра разсинхронизация на звука и видеото, което е доста дразнещо);
– На primary камерата се държеше memory карта, на която се правеше backup запис;
– В зала “България” през миксера минаваше и intercom-а, чрез който се комуникираше с операторите;
– По принцип в залите разполагахме камера за близък план (да снима лектора), общ план и към публиката (т.е. към задаващите въпроси);
– Всичките видео източници – видео камери, лаптоп на лектора и т.н. – се настройват да изваждат същата разделителна способност на същия refresh rate, и се вкарват в един видео миксер (някакъв ATEM), по SDI или HDMI (за по-близките). За целта камерите се настройват на същото нещо, а за лектора на лаптопа се слага scaler, който да може да приеме различните входове и да сгъне сигнала.
– От видео-миксера се изважда сигнал за запис (основно на atomos ninja или нещо подобно), сигнал за restreaming, в две от залите – сигнал до проектора.
– Streaming-а се изпращаше до един сървър, към който се закачаха reencoder-и, за да изкарват stream-овете с различните качества.

Зала “България” беше на 1080i60 (t.e. 1920×1080, 60Hz), другите две зали на 720p60 (1280×720, 60Hz). Честотата се подбира така, че да не се получава мигане, ако камерата вижда екрана (което миналата година беше сериозен проблем в записите). Разделителната способност беше такава, понеже в двете по-малки зали scaler-а можеше да изважда 1080p или 720p, а видео-миксерите не поддържа 1080p като вход.

Тази година за setup-а имаше доста улеснения, които си направихме по време на подготовката:
– Макари с навити кабели, които лесно да могат да се разпънат (и после съберат);
– Готово dolly за камера, така че сравнително лесно да може да се мести;
– Изтестван и лесен интерком до камерите;

За съжаление имахме доста проблеми при setup-а и се наложи да откараме до около 1:30 на място, за да ги изчистим. Доста от техниката ни пристигна след 9, имаше концерт в камерната зала, имахме на няколко пъти проблеми с тока от различни фази на съседни контакти, и имаше няколко сложни неща, които се наложи да правим (включващи катерене по стълби и инсталация на техника по тавана в едната зала).

2016-02-18 още записи от OpenFest 2015

February 18th, 2016 by Vasil Kolev

Има нов set видеа от openfest 2015, които могат да се намерят в youtube или в нашия архив. Нещата са от първия ден на феста от зала България, като имаме отделно музиката, която се свири в главната зала (youtube или нашия архив).

Остават още 11 лекции, и има проблеми с още 2, за които ще видим дали можем да направим нещо. Извинявам се за забавянето (което си е съвсем по моя вина).

2016-02-01 FOSDEM 2016

February 1st, 2016 by Vasil Kolev

Около CCC се видях с хората от FOSDEM, споменаха ми, че имат нужда от хора за видео екипа, та преди няколко дни се замъкнах там, с Марио, Маги, Любо1 и Любо3 …

FOSDEM е интересно събитие. Името идва от Free and Open-Source Developers’ European Meeting, и си е точно това – събират се огромно количество разработчици на различни проекти и си разказват разни неща. По случая има 25 зали, като повечето от тях са DevRoom-ове, т.е. ориентирани към един проект. Това, комбинирано с мястото – кампусът на ULB, т.е. няколко разпръснати сгради в различна възраст и вид (от такива, каквито може да очакваме в провинциален изпаднал български “университет” до хубави и лъскави такива) създаваше доста проблеми…
(сумарно по една сметка е имало около 618 лекции)

Като цяло, моето преживяване там се състоеше от три дни ранно ставане (6:30 си е гадно даже по CET), носене и дебъгване на техника напред назад (в събота имаше за добавка много дъжд и по едно време якето ми беше повече вода, отколкото яке) и малко писане/дебъгване на други работи. Понеже самите devroom-ове осигуряват някакви хора да се грижат за самото протичане на лекциите и т.н., има идеята те да се занимават с оперативната част на аудио и видео нещата, но нещо не се получаваше.

FOSDEM-ският setup за видео/аудио е доста интересен. Това е схемата на setup-а на една зала, идеята е следната – дават се две кутии (доста приятно изглеждащи, от дърво, рязани на лазер, изглеждат така), като в едната се включва лектора, в другата – камерата. Микрофоните и т.н. озвучаване от залата се включват в камерата, и самата камера на единия си канал вади този сигнал, на другия – звукът от нейния собствен микрофон. Двете кутии по отделно пускаха по 2mbps h.264 stream до централно място и го записваха при себе си, а на края на деня записите от тях се преточваха до централно място. Гледането на stream-а беше гледане на двата паралелно, а записите ще са двата stream-а, смесени по определен начин (вече има някакви качени на сайта).

Проблемите бяха доста:
– софтуерът, който трябваше да контролира кутиите (в тях имаше едно bananapi с linux) се оказа счупен, в петък ремонтираха някакви неща, но записите от събота сутрин поне за момента ги няма, а streaming-а припали в неделя по някое време.
– При 24 зали и 25 камери (една резервна) нямаше как всички да са еднакви, и три от тях бяха доста неприятни. Като цяло имахме 3-4 различни модела, с някакви странности (част от тях си забравяха настройките при падане на тока). Всички бяха вързани на HDMI, което донякъде улесняваше процеса.
– Пак при тия 24 зали нямаше достатъчно информация за хората в тях как да оперират камерите, което и вероятно ще си проличи на записите.
– Звукът се осигуряваше от екипа на университета, и там имаше доста трагични моменти, например всички безжични микрофони в една сграда да са на същата честота. Също така не бяхме успели да изтестваме всички камери директно по залите в петък, и се оказа, че на някои места звукът идва на line, на други – на mic ниво.
– Като цяло видео екипът беше малък – имаше голяма нужда от още хора, ние петимата бяхме половината екип и не ни остана много време да седнем. Не помогна това, че всичко ни беше в една сграда (която е в единия край на кампуса) и трябваше да ходим до останалите всеки път, като се налагаше да се види нещо.

Имаше и разни хубави неща (които може да се опитаме да направим и при нас):
– Имаха много добри walkie-talkie-та, които бяха по tetra – цифрови, без шум, и в общи линии се чуваха спокойно по целия кампус. Имаше малко хардуерни проблеми с някои от тях, но като цяло бяха супер и ми се ще да ги ползваме за следващия openfest (но ме е е страх да проверявам цени).
– Това с опростяването на video setup-а е стъпка в правилната посока, трябва да измислим и ние нещо такова (но малко по-гъвкаво).
– Имат доста хубав setup за encode-ване, а ако бяха подкарали системата за рязане, при която самите стаи си отбелязваха края и началото на лекция, щеше да е страхотно.
– Доста от координацията я правехме с един piratepad, в който се отбелязваше текущия статус, какво кога следва и разни графици. Вършеше добра работа.

(както винаги на събития, на които съм в организацията – не съм гледал нито една лекция)

Update: Снимка от прибирането, банда полузаспали хора.

2016-01-28 грозния hack, който контролира лампите на фасата

January 28th, 2016 by Vasil Kolev

Кодът, който пиша е грозна работа и пълен с hack-ове. Явно така ми харесва :)

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

Редове 11-18 се занимават с това да сменят статуса на лампите. Това, което правят е просто да сменят статуса на релетата на netcontrol-а, id-тата са от 13 до 15 включително (което отговаря на релета от 5 до 7, втория set в устройството).

Редове 20-39 се занимават с взимането на текущия state на системата:
– ред 23 взима дали е ден или нощ, от една малко patch-ната версия на sunwait. Сметката е сравнително проста, има я описана на доста места и се оказа един от най-лесните начини. (очаквах да има директно инструмент в debian, дето да ми го каже, но не открих такъв)
– ред 24 взима дали лампите са светнати, като взима статуса на едно от релетата. Това е малко некадърно, понеже поглежда дали е светната само една от лампите, но ме мързи да измисля по-приличен начин, който да лови неконсистентно светнати лампи. Също така това може да се направи доста по-човешко, без cut и awk.
– редове 26-29 питат контрола на входната врата дали е заключена или не (системата е описана във wiki-то на лаба).
– и редове 31-37 проверяват дали trigger-ът за форсиране на светването на лампите е вдигнат (който е един файл в /tmp)

Редове 41-44 са функция за печат на текущия статус, в общи линии за debug-ване.

Редове 47-53 инициализират един пакетен unix domain socket, който е в общи линии нещо като UDP socket – лесен начин за получаване на отделни съобщения. Инициализираме го за получаване, връзваме го във файловата система и го правим nonblocking.

На ред 56 ни започва главния цикъл.

В началото на цикъла се възползваме от socket-а (редове 57-61), като изчакваме или да се появи нещо на socket-а, или 60 секунди, което се случи по-рано. В първоначалната версия socket-ът го нямаше и имаше просто sleep(60), но така се налагаше да се изчака всеки път sleep-а, преди да се промени нещо. Така е възможно когато fauna-та получи информация, че вратата е отключена, да форсира демона да препровери състоянията и да светне лампите.
Тук може четенето от socket-а да се прави, докато не остане нищо в него, за да можем да се предпазим от DoS-ване, заедно с някакъв минимален timeout.

Нататък (редове 63-66) взимаме текущото състояние и dump-ваме малко информация.

На редове 68-70 правим проверка дали спрямо предишното състояние се е променил статусът на ключалката, и ако се е случило, отбелязваме кога. Това ни помага малко по-нататък.

Редове 73-84 хващат моментите, в които лампите са включени:
– Ако е ден и не сме форсирани от trigger-а, гасим лампите;
– Ако е нощ, вратата е заключена, не е вдигнат trigger-а и са минали 15 минути от заключването, гасим лампите. Така човек може да си тръгне спокойно от лаба и да не се пребие в тъмницата, като му угаснат лампите веднага като заключи.

Редове 86-97 обработват ситуацията, когато лампите са изключени:
– Ако trigger-ът е вдигнат, палим лампите;
– Ако е нощ и вратата е отключена (т.е. има хора в лаба), палим лампите.

Системата е кратка, цялата е един hack и работи прекрасно. Интегрира се лесно със съществуващите друг системи в лаба и ни дава още една доста полезна функционалност, и ни спестява да се сещаме да включваме лампите, когато навън е тъмно и railsgirls имат да идват към лаба :)

2016-01-25 интервюта

January 25th, 2016 by Vasil Kolev

Човек и добре да живее, трябва да прави интервюта.
(и после почва да живее зле)

Писал съм преди за интервютата, дето правих, но не очаквах нещата да станат по-зле… От известно време в securax си търсим php и js програмисти и QA, в чиито интервюта участвам, и идват всякакви интересни хора.

Процентът хора, кандидатстващи за програмисти и неспособни да напишат fizzbuzz се е увеличил. Освен стандартните грешки в самия код, имаше един-двама човека, които казаха, че “това без internet не могат да го напишат” и един случай, в който седнаха да пишат очаквания output вместо програмата, която да го прави.
(рекордът беше днес, когато след като дадох на един човек задачата, той просто си тръгна с някакво оправдание)

За QA и понякога за програмистите имаме един тривиален тест с няколко математически/логически задачи, да ги видим как/дали мислят и дали разбират английски (което си е доста важно при нас, понеже някаква част от фирмата не говори български). Откриват се всякакви странности, например:
– едната задача е да се сметне ако нещо с ДДС е 600 лв, колко е без (ДДС-то е 20%). Редовният отговор е 480, и имаше два куриоза – 400 и 576.
– друга задача гласи “One brick is one kilogram and half a brick heavy. How much does a brick weight?”. Повечето хора казват или един килограм, или килограм и половина, а много директно не могат да си преведат цялото изречение и си мислят, че им се казва “една тухла тежи един килограм”…
– има няколко глупави въпроса като от обща култура, които нямат голям смисъл, но водят до забавления. Единият е “Who was the first person in space”, на което двата ми любими отговора досега са “Louis Armstrong” и “Adam”.
(и сигурно ще сменя тия задачи, че вече са ми скучни)

В повечето случаи изобщо не се стига до по-сложни въпроси (алгоритми, сложности, някакви практически проблеми, fizzbuzz без if-ове), просто защото не са по силите на човека. Идея си нямам дали само при нас е така, или просто аз помня само ужасяващите случаи, някой има ли наблюдения по въпроса?

2016-01-23 лампи по фасадата на initLab

January 23rd, 2016 by Vasil Kolev

Днес свършихме още едно добро дело за initLab – доподкарахме системата за лампите по фасадата.

Цялата работа тръгна от това, че на ул. Рила (на която е лаба) в голяма част няма осветление, което притесняваше хората, които трябваше да идват/да си тръгват по нощите. Преди година-две писахме на общината, отговориха ни, че някой хубав ден ще сложат, прехвърлиха топката към някаква фирма за общински поръчки и нещата така си останаха. В един момент Пешо каза, че те 10-20-30W LED лампите не харчат много ток и светят достатъчно силно, не пречи да сложим ние малко лампи и да осветяваме улицата.

През лятото си взехме стълба, лампи и в рамките на седмица-две монтирахме лампите, заедно с ключове, с които да се светват. Понеже сме мързеливо племе (и в автоматизацията е истината), сложихме на всяка лампа по едно реле, и с един neomontana netcontrol си навързахме управление да си палим автоматично лампите. Днес подкарахме целия проект, който си има страничка във wiki-то, и някой ден може да се навия да кача source на контролиращото нещо (от което за сега има само screenshot, понеже е някаква адска гняс от shell script и php).

(от забавните неща, patch-нах си малко sunwait да ми казва дали е ден или нощ)

Временно местене на ИББ

January 13th, 2016 by Vasil Kolev

ИББ на 20.01.2016 ще бъде в Кривото на НДК (защото ще се прави ремонт в това на “Дондуков” и “Будапеща”), запазени са места от 19:00. Седмицата след това пак сме си в старото.

2016-01-12 търсене на проби от големия китайски firewall

January 12th, 2016 by Vasil Kolev

Добрите хора, дето анализират активните проби на големия китайски firewall са пуснали инструменти за преглеждане на логове – bz2 или директно git clone https://www.bamsoftware.com/git/active-probing.git . Няма лошо да свалите и да тествате дали се намира нещо по вашите логове, ако е много, може да питате researcher-ите дали ще им е полезно :)

За някои типове логове се налага малко пипване, например в grep-garbage-http.py да се пипне regex-а да е

combined_log_re = re.compile(r'^([\w:._-]+) ([\w._-]+) ([\w._-]+|"[\w._-]*") \[(.*) ([+-])(\d\d)(\d\d)\] "(.*)" (\d+) (\d+|-) "(.*)" "(.*)"')

(маха се $ накрая, понеже в моите логове накрая се сипва vhost-а)
За един друг тип логове направих

sed 's/^[a-z0-9:.]* //' 

за да почистя от началото vhost:port (понеже се оказа, че имам и такива)