Archive for the ‘General’ Category

2012-01-03 лекции от 28c3

Tuesday, January 3rd, 2012

Какво (още) гледах от 28c3:
(mirror-нал съм всичките английски записи на 28c3.ludost.net)

Keynote беше донякъде интересен, но имаше доста дупки в живото предаване. Ставаше въпрос за SpyFiles на wikileaks и изобщо индустрията, която се занимава с подслушване, мисля, че нямаше нещо много ново там.

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

SCADA and PLC Vulnerabilities in Correctional Facilities беше интересно, въпреки че в основата си е просто хакване на хардуер, който никога не е мислен да е сигурен (и който за съжаление се използва твърде много). В общи линии полезна лекция за всеки, който реши да бяга от затвора.

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

802.11 packets-in-packets беше една от най-забавните лекции на конгреса и като цяло интересна атака – да се вкара пакет на layer1 от layer7 (т.е. накратко можете да бълвате специфични пакети през tcp, udp или каквото ви падне, да ги предаде някое AP и клиентите да го прочетат по различен начин). Определено си струва гледането.

Не можах да гледам The coming war on general computation на Cory Doctorow, но някакви добри хора са написали transcript, мисля, че е важно да се прочете/гледа.

Kartsten Nohl и Luca Melette говориха за как да си предпазим мобилния телефон, последните им разработки по темата за GSM и компания. Например са направили firmware за телефон, който report-ва т.нар. “flash sms” и може да усеща дали някой прави man-in-the-middle атака.

Black OPs of 2011 на Дан Камински беше същата лекция като от CCC Camp-а, т.е. нищо ново.

Вторият ден започна с Food hacking лекция, която мога да използвам да плаша всичките “еколози” и противници на ГМО. Имаше всякакви забавни неща, от грейпфрути, отглеждани чрез облъчване с радиация до суши от светещи риби. Във въпросите след лекцията една девойка пита как точно да готви скакалци…

Data mining the Israeli census беше приятна лекция, но нищо особено – какви анализи са правили на изтеклата (5 пъти за 10 години) база данни с населението на Израел.

За лекцията за DoS-ването на web неща вече писах подробно.

The science of insecurity според мен беше най-важната лекция на конгреса. Meredith Patterson обясни много добре как сами си копаем гроба, като правим протоколи, за които няма дори теоритичен начин да проверим дали някакви данни са валиден вход, понеже представляват Turing-complete езици, а там проблемът с валидацията се свежда в общи линии до halting проблема. Аз не знаех, че някой вече е доказал, че HTML5 и CSS3 (без javascript) са turing-complete комбинация (и се зачудих колко е вероятно от web-а да се роди skynet).
Друг интересен момент беше колко по-сложно е да се напише прост parser за контекстно-зависими граматики (например, всичките протоколи, които имат length поле), и как би трябвало да се стремим към прости неща, които един елементарен краен автомат може да parse-не (т.е. които могат да се parse-нат еднозначно с регулярни изрази, например). Като пример за проблеми с length полето беше дадена атаката за 802.11 packet-in-packet.
И една от важните идеи, които със сигурност ще приложа (преди нямах толкова добро оправдание) ще е всичките parser-и и подобни неща да се генерират автоматично от ясна формална граматика, така че винаги да се работи с ясни данни и ясна валидност. Това така и така щеше да ми трябва, понеже ще гоним междуплатформеност…
(на който не му е ясно какво говоря, да почете малко за йерархия на граматиките на Чомски, машина на Тюринг и какво значи Turing-complete).

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

Лекцията за атаките в/у принтери също беше от много веселите, а проблемите в сигурността, които се оказа, че има там бяха пак от смешния тип (например възможност да смениш firmware на устройството с печатане на файл). Ако имате HP принтер, вижте лекцията и дали трябва да се update-нете.

От четвъртия ден май си струва да спомена само лекцията на NOC-а за мрежите на CCC Camp-а и на текущия конгрес. Особено забавна беше реализацията на “таван/чадър” за wifi AP-тата от кофи и тръби.

Имаше и няколко доста неприятни лекции, или много объркващи (например една за квантовата криптография), или тотално неразбираеми (имаше един французин, който говореше за криптография и на 20тото казване на “Titanic” (с ударение на последната сричка) се отказахме да го траем), или bullshit (един, който говореше за влиянието на leak-овете в/у конспирации в контекста на целта на wikileaks и който накрая го питах не смята ли, че математическия модел, който ползва е почти толкова смислен, колкото сферичен кон във вакуум).

Има още няколко неща, които искам да гледам и едно, за което искам да напиша отделен post – depression panel-а, който се е случил почти против желанието на организаторите, понеже са счели темата за неподходяща. Надявам се да намеря време в следващите дни:)

2012-01-01

Sunday, January 1st, 2012

Отпразнувахме нова година в ju.

Първата ми мисъл на другия ден беше “Ох.”.

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

Прибрах се (с цялата техника), легнах си и сънувах комбинация от работа, 28c3 и doom2. Имаше моменти, в които бях на работа, говорех си с някой по някакъв технически въпрос и паузирах, защото в халюцинациите си застрелвах някакъв гад от doom. После помагах на някакво хлапе, което беше успяло да запали 5-6 машини с едно включване на мултицет…

Anyway, да видим какво ще ни донесе 2012. Моите късмети от баницата бяха “произволно число” и един, който не помня и който никой друг не може да си спомни… За сметка на това помня как на Жоро Русийчев му се паднаха “нова кола” и “нова работа” и предположихме, че ще става тираджия.

Update: Има някакви лилаво-червени точки по баса, май вино. Има и нещо разлято по стойката му…
Update 2: Протрил съм си пръстите и на двете ръце от дрънчене.

2011-12-29 28c3 – атака в/у hash таблици при web платформи

Thursday, December 29th, 2011

Малко за гледаните лекции от 28c3 – ще бъдат в няколко post-а по ред причини.

Ще започна с една лекция, която описа в общи линии нов проблем в повечето web-facing езици/framework-ове в хеш реализациите, за който даже написах малко код.

Къде е проблемът – повечето такива езици (в случая – perl, php, python, java, ruby, asp.net) използват hash-ове (познати още като асоциативни масиви), за да подадат към програмиста параметрите, които са дошли от HTTP request-а (най-вече от POST-а). Почти всички го реализират, използвайки стандартни hash таблици с 32 или 64битов hash (не-криптографски, т.е. даже и CRC32 би свършил работа, повечето ползват нещо, писано от DJB, например DJBX33A).
По принцип insert-а на нов елемент в такава таблица е с ниска/константна сложност, но ако вмъкваме само елементи, които дават същия hash, сложността става максималната възможна, т.е. O(n) и съответно вмъкването на n елемента ще е от порядъка на O(n^2).
Накратко, ако подадем (например) през POST параметри, които се хешират към същата стойност, времето, което ще отнеме на езика/framwork-а да обработи заявката (преди да стигне до вашето приложение) ще е бая, като тестовете при мен показаха нещо от порядъка на 1 минута за заявка с 62000 параметъра и голяма около 400kb. В лекцията (има и запис, mirror-нат при мен) има повече подробности и тестове.

Реших да видя доколко мен ме лови тоя проблем. Като за начало трябваше да си напиша генератор на тия стрингове (ВНИМАНИЕ: грозен гаден код на C), което се оказа сравнително лесно – измъкнах от source на php от Zend/zend_hash.h тяхната функция, поразгледах кода и се оказа, че от hash функцията се взимат първите X бита, като X е в общи линии log2(N) (където N е броя елементи в стуктурата). Съответно ако ми трябват по-малко от 65536 collide-ващи стринга ми е достатъчно да търся колизии само в първите 16 бита. Моята некадърна програмка на машина със 192GB памет (трябваха и около 120GB) се справи за около 5 минути.
(пускам кода като пример, който може да го разбере би могъл да си го напише и сам сравнително лесно).

Имам да се поровя още малко, но в някои случаи debian-ската default-на конфигурация реже тия атаки (понеже не позволява повече от 1000 променливи в какъвто и да е request, което па от своя страна чупи малко (малоумен) софтуер), в някои не и повечето php-та, които човек може да намери по net-а ги лови тоя проблем. Реализирането на DoS-а за да направи реален проблем изисква прилично количество паралелни връзки и определено не е толкова опасно, колкото беше проблемът с Range request-ите от август, но пак не е приятно. Също така може да се атакува и през други места, например ако трябва да се сглоби json request или какъвто и да е hash, чиито ключове зависят от данни, подадени от потребителя.

Решението е да се random-изира hash-а на всяка заявка, за което си написах една тестова програмка, която да пробва в/у такива подбрани string-ове hash, който освен всичко XOR-ва всеки 8-байтов блок от входа с един random seed. Мисля ако скоро не изкарат някакво хубаво решение да си patch-на директно php-то, но още не съм имал време да намеря подходящия entry point, в който да вкарам инициализацията на seed-а, така че хем да е различен за всеки request, хем да не счупи нещо по много лош начин (ако някой е бърникал по кода на php и знае къде, много моля да пише).

Та, добри хора, прочетете оригиналното advisory и се patch-вайте, ако правите нещо свързано с web най-вероятно проблемът ви засяга.

2011-12-28 книжна равносметка

Wednesday, December 28th, 2011

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

Една интересна тази година беше психиатрията. От нещата, които наистина ми харесаха ще спомена “The Psychopath Test” на Jon Ronson (наистина забавно четиво и много добре написана), “The Mask of Sanity” на Robert M. Cleckley (също хубаво четиво, но доста разпънато и може да доведе до странни сънища, например как си говорите с психопати), “Destroying the World to Save it: Aum Shinrikyo, Apocalyptic Violence, and the New Global Terrorism” на Robert Jay Lifton (който все още ми е от любимите автори, въпреки че “The Protean Self” беше много разочароваща), и “Inside the Criminal Mind” на Stanton E. Samenow (пак от книгите, дето влияят на съня).

По икономическата тема имаше няколко други интересни книги – “Liar’s Poker”, “The Big Short: Inside the Doomsday Machine” и “Boomerang: Travels in the New Third World” на Michael Lewis, който се оказа един наистина четим автор, който да опише кризата, последствията и причините (“Liar’s Poker” е писана преди 6-7 години с идеята да разкаже какво всъщност се случва на Wall Street и помага доста за разбиране на ситуацията). Внимание заслужава и “Currency Wars” на James Rickard.

От любимите ми автори имаше по една нова книга – “Reamde” на Нийл Стивънсън (трилър, много добър, но не може да настигне Cryptonomicon-а и Бароковия цикъл и всички са нещастни), “Snuff” на Тери Пратчет (много добра, но всички се надяваме да пише още книги), “12/22/63” на Стивън Кинг (пак много хубаво, въпреки елемента на пътуване във времето), “Diary” на Чък Паланюк (очаквах нещо повече), “Лудост” на Калин Терзийски (“Хората стават психиатри, за да си изписват сами халоперидол”), “Rule 34” на Чарли Строс (една от книгите, която четох с голямо удоволствие), “The Wise Man’s Fear” на Патрик Ротфус (ако и трета книга е толкова добра, спокойно може да го пишем за най-велик фентъзи автор) и “The Crippled God” на Стивън Ериксън (последната от “Малазанска книга на мъртвите”, не мисля, че има нужда да казвам повече).
Надявам се поне част от тях да се завърнат догодина с още нещо интересно (с изключение на Стивънсън, на който е ясно, че ще му трябват още 2-3 години за нова книга).

Имаше и разни неща, на които попаднах по разни други причини (препоръки, забелязани някъде и т.н.). Струва се да се отбележат:
“The Geeks Shall Inherit the Earth: Popularity, Quirk Theory and Why Outsiders Thrive After High School” на Alexandra Robbins – много интересни изследвания в/у училищата и груповата психология.
“1491: New Revelations of the Americas Before Columbus” на Charles C. Mann – много подробно разказани последните теории и открития за двете Америки преди пристигането на Колумб, чух я от едно интервю с Нийл Стивънсън (както и следващата, “1493…”) и определено си струва да се прочете.
“Rats Saw God” на Rob Thomas – рядко добра young adult книга, мен ме зариби заглавието.
Две книги на Atul Gawande – “Complications” и “Better” – хирург, пише много интересни неща за медицината и за как може да се подобри като цяло с мерки, приложими и в други области.
“Kingpin: How One Hacker Took Over the Billion-Dollar Cybercrime Underground” на Kevin Poulsen – много добре research-ната книга за хора, занимаващи се с credit card fraud и свързаните неща, попадна ми след като изчетох “Ghost in the Wiers” на Kevin Mitnick.
“The Organization Man” на William H. Whyte – може би една от най-добрите книги по темата за психологията на хората в корпорациите и проблемите там (мисля да я дам да я прочетат всичките ми познати, дето работят в големи фирми).
Отделно трябва да спомена Амели Нотомб, която пише кратки и все пак много добри книги. Успях да издъвча каквото намерих на български, скоро може да почна да търся и преводи на английски.

Препрочетох също така “То” (на Стивън Кинг), целия “Хари Потър” (Джоан Роулинг) и целите Хроники на Амбър (Роджър Зелазни). Има книги, които определено си струва да се четат пак и пак, да видим кои ще са в тоя списък догодина (може би пак Бароковия цикъл).

Най-препоръчаната от мен книга обаче за тая година е “Shooting an Elephant” на Джордж Оруел – събрани негови есета по различни теми, включително това за писането (което всички хора цитират), като цяло “стуктуро-определяща” книга. От там идва цитатът “During times of universal deceit, telling the truth becomes a revolutionary act”.
Втората също така силно препоръчвана книга е “Дзен и изкуството да поддържаш мотоциклет” на Робърт Пърсиг. Трудно ми е я да опиша, само ще отбележа, че ми помогна много да изясня някои мои идеи за преподаването.

И като препоръка за нещо по-скорошно и интересно – “Barefoot into Cyberspace: Adventures in search of techno-Utopia” на Becky Hogge, книгата може да се намери online и е доста добро описание на събитията в последните няколко години, свързани с wikileaks, copyright-а, internet и други такива забавни неща.

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

2011-12-26 равносметка

Monday, December 26th, 2011

И малко равносметка, преди да седнем да гледаме 28c3.

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

Като за начало, станах на 30 и ми се размина стандартното проклятие да се оженя, да имам деца и т.н.. Е, не се е разминало съвсем, има още два-три месеца, но съм близо.

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

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

Прочел съм горе-долу същия обем книги като миналата година (според статистиката в goodreads миналата година са 138 книги и 44388 страници, тая са 124 книги и 44122 страници), въпреки една голяма дупка в последните няколко месеца. Май рядко пиша в блога за това, което чета, трябва да се стегна и да пусна малко такива постове.

Започнах да ходя в initLab и да се забавлявам с всякакви странни неща там (тагнати са ми в блога).

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

Прекарах месец-два в изпитване на програмисти за един проект и открих как около 90% от тези, които идват от обяви за работа за нищо не стават. Усещането беше сравнимо с това да изпитвам студенти (малко като вица за приликата между студента и кучето).

Като цяло – не умрях, не се ожених, не се пропих. Мога да броя 2011 за прилична година :)

2011-12-23 прожектиране на 28c3

Friday, December 23rd, 2011

Организираме прожектиране на лекциите от 28c3 в initLab, от 27ми до 30ти декември. Имаме предварителен списък какво мислим да гледаме и поне две стаи, в които да прожектираме (може да ползваме и третата).

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

2011-12-11 панаир на книгата

Sunday, December 11th, 2011

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

Взех си 5 книги:
“Минало несвършващо”, съставител Евгения Иванова (исторически публикации);
“Лицето на водата”, Робърт Силвърбърг (фантастика);
“Министерство на болката”, Дубравка Угрешич (втора нейна книга, първата, която си взех нещо не ми хареса, да видим);
“Пространства на другостта”, издадена от БАН по темата за етносите и религиите в България;
“Окупаторът съюзник”, Бисер Петров (за колаборационизма в Албания, Сърбия и Гърция по време на втората световна).

В общи линии е добро място за откриване на странни книги, които трудно се намират по нормалните книжарници (като тези от БАН или от военното издателство).

Работи до неделя до 22:00, ако някой още не е успял да иде.

2011-12-09 fizzbuzz

Friday, December 9th, 2011

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

Всички вероятно са чували какво е fizzbuzz, но пак да го кажа, накратко – задачка да се отпечатат числата от 1 до 100, като ако числото се дели на 3, вместо него се печата “Fizz”, ако се дели на 5 вместо него се печата “Buzz”, а ако се дели на 15 вместо него се печата “FizzBuzz”.
(това се дава на интервюта да се види дали човека изобщо може да програмира)

Оригиналното решение, което всеки може да напише на листче (говорим само за C) изглежда така:

for (i=1;i< =100;i++) {
	if (i%3==0) printf("Fizz");
	if (i%5==0) printf("Buzz");
	if (i%3!=0 && i%5!=0) printf("%d",i);
	printf("\n");
}

(което е почти същото на повечето езици за програмиране)

Оптимизираният вариант, който ми хрумна изглеждаше по следния начин:

int i,p;
char *s[4]= {"%d\n", "Fizz\n", "Buzz\n", "FizzBuzz\n"};
int s3[3]={1,0,0},s5[5]={2,0,0,0,0};

for (i=1;i<=100;i++) {
	p= s3[i%3] | s5[i%5]; 
	printf(s[p],i);
}

(накратко си избира максимално бързо format string-а, като се прави индекса му от два бита – единия за дали се дели на 3, другия на 5, след което се вика printf() с него и аргумента, а ако във format string-а няма “%”, то вторият аргумент изобщо не се гледа)

Методът с lookup таблиците е известен от зората на програмирането и е един от най-хубавите примери за time-memory trade-off.

Това решение няма branch-ове (т.е. if() и компания) в основния си код, но пък разчита на printf(), който не е особено бърз. На пиенето на Титов му хрумна, че може да се направи масив от функции, които да правят различните неща, но па на мен идеята за call и ret не ми хареса особено, за това се замислих и открих, че в C всъщност има масив от label-и. Съответно, ето извратено и максимално бързо решение:


int i,p;
static void *pos[4]= {&&digit, &&fizz, &&buzz, &&fizzbuzz};
int s3[3]={1,0,0},s5[5]={2,0,0,0,0};
char buff[2048];
char dgts[16]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
int buffpos=0;

for (i=1;i<=100;i++) {
	p= s3[i%3] | s5[i%5]; 
	goto *pos[p];

fizz:
	memcpy(&buff[buffpos],"Fizz", 4);
	buffpos+=4;
	goto end;
buzz:
	memcpy(&buff[buffpos],"Buzz", 4);
	buffpos+=4;
	goto end;
fizzbuzz:
	memcpy(&buff[buffpos],"FizzBuzz", 8);
	buffpos+=8;
	goto end;
digit:
	buff[buffpos++]=dgts[i/16];
	buff[buffpos++]=dgts[i%16];
end:
	buff[buffpos++]='\n';
}
write(1,buff, buffpos);

(т.е. както в предния пример имаме масив от format string-ове, тук имаме масив от позиции, на които директно можем да скочим. Също така не викаме никакви външни функции (memcpy се inline-ва и е от едни по-бързи инструкции) и единствения branch, който имаме е за for() (който също може да се избегне с една lookup таблица и едни goto-та, ама това вече ще е гадно)

Човек, способен да напише подобен код на интервю вероятно трябва да го пратят в Карлуково.

Ако на някой му хрумне нещо по-забавно, да пише :)

Update: Оптимизация – да се изместят p3, p5 и dgts като глобални променливи, понеже ако са във функцията, компилатора ги прави на много mov-ове.

2011-12-08 бас 2

Thursday, December 8th, 2011

Днес на ИББ изскочи една интересна тема, за която май пак е време да пиша.
(темата беше провокирана от това клипче и най-вече от музикалните инструменти в него)

Преди около 3 години си взех бас. В началото бях адски зле, после много зле, сега може би стигнах до нивото на адски много зле (има кило записи някъде, мислех си да направя един текущ на нещата, които горе-долу докарвам, но звуковата ми карта за записи е в initLab в момента, а аз съм достатъчно пиян да пропускам струни и прагчета). Двете оправдания защо го направих са “криза на средната възраст” (не минава, щото май не съм стигнал дотам) или че съм си взел голям инструмент да компенсирам за други неща (това успява да мине пред незапознатите :) ).

Всъщност, основната причина да си го взема беше звукът. Китарата (въпреки, че имам и такава) си остава за мен някакъв лек, детски инструмент – близки, тънки струни, никакво задържане на тона (колкото и да е добра) и липса на усещането, което баса докарва – като го държиш, вибрацията на струните се усеща в тялото, като цяло обратната връзка е пряка и доста силна.
За това имам и колебания дали някой искам да си взема контрабас или upright bass, да видя какво е.

Също така музиката, писана да звучи добре на бас просто звучи по-добре и усещането от това най-накрая да успееш да я изсвириш е невероятно. Два страхотни примера са “Orion” и “Anesthesia” на Metallica (второто съм го слушал и като малък, но май чак сега успявам донякъде да разбера колко е красиво). Други примери могат да се намерят в Tool (“Schism”, който още не мога да свиря, “46&2”, от което докарвам части), или в много простите неща на Offspring, например “Gotta get away” или “Change the world”. А ако на някой му се прииска нещо по-злобно, може да пробва “Killing in the name of” на Rage against the machine.

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

2011-12-04 SpyFiles

Sunday, December 4th, 2011

Чета “Spy Files”, последния release от WikiLeaks и се чудя как да се чувствам.

В началото си мислех да напиша нещо по темата за това каква отговорност трябва да се носи при правенето на тези неща, продаването им (особено като се погледне офертата на Amesys за Либия) и прилагането им. Никак не вървеше, та се зачетох в документите по-подробно и попаднах на набор каталози на Elaman (които mirror-нах при мен, че са 124MB).

Четенето им е почти като да четеш ужаси. От една страна те хваща параноята, че тия неща може да ти ги приложат на теб, от друга страна обаче има такива невероятни играчки, че чак ти потичат лигите. Комплекти за отваряне на ключалки и сейфове, детектори за радиоизлъчване, лазер и инфрачервени лъчи, заглушители за същите, дребни ръчки осцилоскопи и спектрални анализатори, системи за гледане през стени (да се проследят кабели и т.н.), подслушващи системи за сателити, разпознаване на глас, кой говори, на какъв език говори и т.н., и т.н.. Ако вярвах в Дядо Коледа, щях да му пратя тоя каталог…
Не съм фен на разните генерални подслушващи неща, анализирането на трафика и връзките между хората и ги намирам за гадни, но останалото всъщност е … готино.

Пиша това, за да отбележа, че всъщност съм ужасен човек и такива като мен ще унищожим света. Забавлявайки се.

2011-12-04 SSL

Sunday, December 4th, 2011

Обичам CaCert.

Хората си дават сертификати просто ако domain-а си е твой, работят съвсем правилно, има ги в достатъчно дистрибуции (може би ги няма в IE, ама това си остава проблем на хората, които го ползват). Тия дни подкарах сертификати на cassie, най-вече за базата данни, която правихме вчера на hackaton-а, днес слагам на marla за няколко vhost-а и може някой хубав ден да мина всичко само на https.

Всичко трябва да се криптира. Защо – вижте “Spy Files” в wikileaks.

Update: Понеже съм забравил да го напиша – тези сертификати са само за УДОБСТВО, да не свети на повечето хора на browser-ите, че има проблем (или поне на тези, които признават cacert). Напълно осъзнявам, че целия модел на сертификатите в момента не струва и не може да се разчита на него и ползвам cacert защото 1) са удобни за ползване (вместо сам да си правя CA) и 2) защото поне на ubuntu-вските browser-и това си работи (т.е. има го root-а им в ca-certificates пакета).

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

2011-11-20 разни + курс

Sunday, November 20th, 2011

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

От последните неща, които съм чел май най-добре ми дойде “11/22/66” на Стивън Кинг. Дядката определено си е припомнил как да пише. Имаше и други приятни неща, който иска може да ги погледне в goodreads.
(специално трябва да обърна внимание на “Hackers – heroes of the computer revolution”, че не струва и че мижавите опити на журналиста да разбере хората са чак жалки)
(също така “Snuff” на Пратчет беше супер и надеждата е това да не е последната му книга)

Около initlab има разни дребни забавления, например централизиран начин всеки да може да пуска музика от cassie (с малко patch-нат MOC), както и възможност вече да се stream-ват/записват лекциите – днес подредихме микрофона и звуковата карта, може да се ползват директно за конференция (правихме си тест с VarnaLab), или да се stream-ва (преди малко инсталирах icecast на sandbox.initlab.org, url-то ще е http://sandbox.initlab.org:8000/lab.ogg ). Тестовете ги правихме и с Бацов и Цветомила, докато водеха днес началната лекция на курса по Java.
(окабеляването беше забавно)
(пак около lab-а, Мартин след един тежък запой най-накрая реши да блогва)

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

2011-11-11 Amorphis

Friday, November 11th, 2011

Накратко за концерта на Amorphis.

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

Започнаха едни испанци, “Naheman”, които основно показаха, че звукът в залата става, но те самите – не.

После бяха “Leprous”. Много странна група, със странни ритми и идеи, стигнах до извода, че пак трябва да ги слушам (и ще взема да им изровя какво са издали). Те бяха подгрявали и на Therion, май и тогава ми направиха впечатление.

Самите Amorphis направиха направо кратък концерт – час и половина (или поне на повечето хора им се видя кратък), който беше наистина добър, само може би звукът трябваше да е малко по-силен. Свириха си с кеф, изсвириха повечето си наистина хубави неща (за съжаление, нищо от “Far from the sun”), но не беше достатъчно съвсем да прегракна и всичко да ме боли :)

2011-11-08 интервюта

Tuesday, November 8th, 2011

Уважаеми програмисти.

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

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

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

if (a!=NULL && b) {
	do_something();
	do_another_thing();
	if (b) {
		do_crap();
	}
}

и да не можете да ми обясните защо трябва пак да се проверява b.
(напълно е възможно да има причина. Проблемът е с неспособността да се отговори на такъв прост въпрос)

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

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

Намерете малко увереност в себе си. Казвайте си какво знаете и какво не знаете. “Момент да помисля” също е приемлив отговор на разни въпроси.

Ако смятате, че сте програмист, понеже сте направили нещо тривиално и то сработва – грешите. Пример – ако сте направили мобилно приложение, което показва конституцията на Армения, това не ви прави програмист на мобилни устройства. Придобийте поне бегла представа какво значи “тривиално”.

Не бъдете коне с капаци. “Аз искам да пиша за MobileOS версия 9.жм.жд.жбр и друго не искам” е тъпо изказване, почти като “аз пиша на php4 и не искам да се занимавам с php5”. Ако нямате желание да се учите и развивате, моля послушайте изказванията на текущия ни идиот^Wпремиер и ходете да гледате овце, доколкото разбрах, има недостиг на работна ръка.

OpenFest 2011

Sunday, November 6th, 2011

Мина OpenFest 2011. Половин ден setup, два дни ставане в 8 (с много мъка, не го бях правил в последните поне 6 месеца). Това го пиша в силно скапано състояние и може би ще го довършвам на сутринта.

Мисля, че поставихме рекорд в сглабянето на целия setup (около 4 часа) и в разглабянето (около 30 минути). Този път на по-малката зала (реално галерията на Интерпред) си правехме сами почти цялото озвучаване. Благодарение на Олег имахме и хубави камери, така че трябва да имаме нещо-като-HD видео записи, като се сетим да ги encode-нем, нарежем и качим.
(тая година записите са безотговорност на Стефан Леков, ругайте него)
Оказа се, че един-два клипа на Вика Ермолева са добрия начин да се тества звука в голямата зала.

Ползвахме забавен хардуер. Щеряна в багажника си носеше един switch, който ползвахме за отвън, който освен дизайн като за армейски приложения и прилично количество портове имаше прекрасното свойство, че като го изключехме и ставаше приятно тихо. Мишо па беше направил един router с малко patch-ване на една кутия, в която освен дъно с atom процесор беше набил един малък switch заедно с кутията.
(има някъде снимка как ядем втория ден в/у тая кутия от баницата, която па Владо от ФМИ беше направил през нощта. Много хубава баница, спаси ни от гладна смърт)

Докато правехме мрежата, успях да строша едни клещи. Може да се види снимка на самите клещи и на останалото парче от ножа им, забито в кабела. Държа да отбележа, че аз ги стиснах съвсем нормално, те просто казаха “прас”.
(те не можеха и един жак да кримпнат както трябва, та поради липса на други клещи Владо от ФМИ трябваше да прави единия жак използвайки малка отвертка и тия клещи като чук)
Друг весел гаф беше как в неделя на баптистите, които имаха някаква служба точно под нас единия им микрофон се оказа точно на честотата на един от нашите и слушахме малко неща на английски за Господ, докато намерим какво точно да изключим от наша страна. Хората в залата бая се смяха, а аз се радвам, че се падна в почивката основно.

Владо също така получи титлата “Рицаря на поялника”, защото освен, че в петък прави единия кабел за озвучаването на място, в събота оправяше на Нейчо connector-а на захранването на лаптопа – бяха се скрили в единия джоб (малката стая до залата) и пояха в/у един стар хард диск.

Лекторите бяха… трудни за описване.

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

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

В lightning talk-овете имаше весели моменти.
Сашо Шопов говори за преводите на gnome и започна по следния начин:
– Кой в залата мрази Gnome3?
(гора от ръце)
– Имаме останали малко балони от партито, ще ви дам после да духате.

Боян Кроснов разказа за тяхната проста хеш функция, базирана на AES инструкциите в новите процесори (подходящо кръстена aesaes). Полезна е за всички, които трябва бързо да пълнят хеш таблици.

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

Очакваше се империята да отвърне на удара, което и се случи в лекцията на Кънев. Първо се започна с един заговор (в който и аз участвах), той реши да си води лекцията в костюма, в който си беше на сватбата на iffi, с папионката и т.н.. Съответно подредихме нещата така, че да се пусне theme от James Bond, и той да влезе някъде по средата. Крайният ефект беше, че той беше единственият лектор, на който ръкопляскаха преди да си започне лекцията :)
Съответно той започна лекцията си с обяснение, че преди е слагал картинки с нарисувани мустаци на Мариян, ама тая година вместо това просто е решил да се облече по-добре. Също така показа една снимка от сватбата, включваща мен, него и приятелката му, обяснявайки със стрелки/балони как човек като види тази снимка си мисли за него “какъв добре облечен човек”, а за мен “кой е тоя просяк и какво прави там”…
(определено ще си струва да се види и този запис)

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

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

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

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

В антрето през двата дни reprap хората печатаха разни странни неща от пластмаса и разказваха на всички заинтересувани какво точно представлява цялото нещо. В неделя Радо седна и от логото на openfest направи един модел, който към края на вечерта вече бяха успели да отпечатат, беше се получил доста добре :)
(заради reprap хората също така оправях wireless мрежата на един windows-ки лаптоп, гадна работа)

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

Щандът с книги беше доста приятен, тая година си напазарувах две книги – Network Warrior, която е доста добра за начинаещи да си допълнят знанията по мрежи (въпреки че е доста cisco ориентирана) и една “hackers – heroes of the computer revolution”, леко историческа.

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

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

2011-11-01

Tuesday, November 1st, 2011

Убедиха ме да ида на един концерт в “The Box”, на Center и Talbot.
(някой няма ли да направи свестен сайт за групите да си правят страници, myspace е ужасяваща боза)

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

Talbot бяха в общи линии скучни като музика, но забавни да се погледат. Групата представлява двама естонци, единия на барабани и вокал, другия на бас, купчина ефекти и вокал. Любопитно беше какво може да се постигне с баса и шумът от него, както и как човека свиреше с едната ръка на баса, а с другата си играеше с ефектите.
(само дето са doom metal, който си е скучен по принцип…)

2011-10-31 сватба

Monday, October 31st, 2011

Омъжихме iffi за Канев. Кратки бележки, щото не ми се пише разказ (ще оставя на нея това забавление)…

Церемонията се проведе в траурния (или май беше обреден) дом в Хиподрума. Церемонията беше сравнително кратка (въпреки че в един момент се зачудих няма ли един scroll-bar да прескочим част от нещата). Имаше процедура по настъпване м/у булката и младоженеца, в която тя имаше сериозно предимство, понеже от роклята не и се виждаха обувките.

Стефан Кънев се беше облякъл в костюм с папионка, което доведе до новия му прякор (“Джеймс”, щото мязаше на Джеймс Бонд), и до това в един момент (без да искам) да го сбъркам със сервитьора и да му поръчам още уиски.

По стандартна българска традиция се изпи много. Аз може да съм го докарал до около половин литър уиски.
Имаше прилично количество танцуване и куфеене. Още ме болят врата и гърба.
Главата пък изобщо не ме боля.

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

Най-добре облечен па беше Илфа, с един килт. Щеше да е голяма картинка, ако се беше включил в хорото.
(всъщност, според мен по сватби се танцуват хора основно за да се показват женски крака. Късите поли/рокли определено помагат)

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

Аз издържах до около 12 (пиенето беше почнало в около 6:30), май по това време и младоженците се канеха да ходят да си легнат.

2011-10-22 избори

Friday, October 21st, 2011

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

Смисълът на наказателният вот за текущите избори е прост – внушаване на страх в настоящата власт. Тези избори (особено президентските) винаги са били използвани, за да се оцени колко добре са се справили хората на власт в последните две години и доколко народът е щастлив с тях. Съответно в едни граници резултатът би трябвало да се тълкува, че не се справят достатъчно добре и трябва да се стараят повече.
В този тип разсъждение има няколко бъга и corner-case-ове:
– ако подкрепата им е твърде ниска, може да се откажат да заработват каквото и да е и да приложат scorched earth стратегията, т.е. да измъкнат колкото им е възможно и да избягат;
– ако се смятат за достатъчно велики и че могат до следващите парламентарни избори да убедят/излъжат хората или да hack-нат закона по темата;
(под-случай на това е обявяването на диктатура)
– ако използват тези избори и резултатът им за договорка с други партии и пак да си осигурят подкрепа.
(и вероятно още няколко, които пропускам)

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

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

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

2011-10-11 скъпи програмисти

Tuesday, October 11th, 2011

Скъпи програмисти,

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

В общи линии са две неща.

Едното е болестното ползване на framework-ове и други подобни нива на абстракция без реален смисъл. Примерни такива бози има на много места, на мен едно от най-омразните ми е cakephp (вероятно понеже с него съм се борил най-много). В повечето случаи нещо, което спестява 10% от вашето писане за сметка на едно огромно мазно средно-рядко лайно, което 1) стои във version control-а, 2) прави проследяването на действието на кода един порядък по-трудно и 3) е нещо, което не може да се update-не лесно (което ще обясня след малко) не си струва. Нито за вас (щото ще ви е по-трудно да намерите проблемите, които сами сте си създали), нито за мен, докато се опитвам да го подкарам или мигрирам, нито за който плаща. Just say no, и пишете кода колкото се може по-близо до естествената му среда – системни библиотеки, стандартни драйвери и т.н..
(друг пример е начинът, по който request-tracker ползва база данни и заявките от типа на “SELECT main.* FROM table1 main, table2 b …” и невероятната плетеница от callbacks, които са направили).

Второто нещо е, че външните библиотеки не са ваш проблем, ваша работа, ваша отговорност и по НИКАКЪВ начин не са от нещата, които трябва да се набият във version контрола, освен ако не поемете пълна отговорност да ги поддържате. В противен случай оставете работата на хората, които разбират от upgrade-и, миграции, системата на която работи софтуера ви и т.н. и не им създавайте допълнителни главоболия. Не ви е възможно да следите всички security update-и, всичките несъвместимости на стария lib с новите среди, а авторите на тия неща се справят доста добре с правенето на нещо, което да е backwards compatible (т.е. да работи с ужасът, който сте накодили) и същевременно със средата, в която оперирате.

Благодаря за вниманието.

(за тези, които ще ми обясняват колко са прекрасни тия framework-ове – аз мигрирах един магазин от cake на чисто php (дето не ставам за програмист) и излезе доста по-кратко и по-изчистено)

OpenFest 2011 – предварителна програма

Thursday, October 6th, 2011

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

Все още приемаме желаещи да говорят :) Намират се още няколко свободни слота в програмата, има и достатъчно за lightning talks, а и винаги можем да измислим начин да ви вместим някъде.

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