Posts Tagged ‘събития’

2013-01-11 представяне на OHM в initLab

Friday, January 11th, 2013

Във вторник (15 януари), от 19:00 в initLab ще направим едно представяне на OHM2013 – аз, Яна и Явор, ще разкажем какво представлява, колко е весело и ще навиваме още хора да дойдат с нас.

2012-12-30 29c3 четвърти ден

Sunday, December 30th, 2012

Пропускам afterparty-то, понеже съм скапан, мисля да напиша тоя post и да спя, утре сутрин ще ставам в 8-9 да си хвана самолета…

Сутринта гледах Millions of lessons learned on electonic napkins, по темата за online преподаването/образованието и различните неща, които авторите са открили. Имаше интересни моменти, например това, че ако има на три минути въпрос към гледащия, това много помага да се разбере материята и също така да се получи хубав feedback дали обяснението е добро. Струва си да се гледа, мисля да я дам на Наков да види дали не може да вземе от там някакви идеи.

Лекцията за локалната gsm мрежа беше интересна, въпреки много приспивния лектор. Интересно беше, че са подкарали паралелно openbts и openbsc за малко (въпреки че са нямали handover м/у двете). Аз лично ползвах мрежата и останах доволен, работеше доста прилично.

NOC review винаги ми е интересно, разказаха доста весели неща:
Имали са 22gbps upstream (2×10 до някакви хора и 2×1 към два exchange-а), напълнили са най-много 8.2gbps, в изходящата посока;
Имало около 3000 wifi клиента едновременно в пиковия момент (което е три пъти повече от предишни събития);
В някакъв момент 40% от трафика е бил ipv6, което за мен беше най-голямата изненада;
Ползвали са прилично количество juniper железария с интересни свойства – представлява много 1U парчета, които се държат като един цял switch и по-лесно може да се инсталира капацитет във всяко нужно място;
Бая са се забавлявали с окабеляването (понеже конгресът за пръв път се прави в тая сграда).
(на dashboard-а има още статистики по темата).
Изобщо, това винаги е една от най-интересните лекции.

Ходих и на Page Fault Liberation Army or Gained in Translation, доста интересен research за използването на double fault-ове за някакви странни цели, който за съжаление почти проспах и трябва да гледам пак.

Closing event-а беше весел както винаги (и с мнооого ръкопляскания). Обясниха, че тази година е имало около 500 доброволци (от тях 100 от core организацията, останалите дошли отвън), които са дали 5000 часа смени, а 100 от тях са били и на build-up-а по коледа (измежду тях и Бобсън, който трябва да вземе да напише нещо по темата, как е било). 111 часа talk-ове (приети са били 1/3 от заявките), 71 lightning talk-а, имаше за пръв път assemblies, а се оказа и че е имало неща специално за деца (например са ги учили да запояват, страх…).
Най-интересното за мен беше, че са продали 6600 билета общо, т.е. някъде толкова хора е имало на целия конгрес, и средно още толкова на stream-овете (около 8000 в някакъв пиков момент), т.е. в общи линии два пъти повече от миналата година. Казаха, че имало 3000 стола, т.е. за половината хора, но на мен все ми се виждаше, че не стигат (това извън залите), и определено нямаше достатъчно контакти, та ако има откъде, ще им пратя feedback.

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

2012-12-30 29c3 трети ден

Sunday, December 30th, 2012

Третия ден пак мина малко отнесено.

Стоях известно време на lightning talk-овете (Ник Фар ги организира доста весело), ето няколко, за които говориха:
Weird Ass Digital Fabrication – лесно правене на физически неща с роботи, изработка и процеси и колко лесно е да е прави и подобрява това с нашите инструменти;
Motivated Misinformation: Fabricating Facts for Fun and Profit – различни неща по темата как рекламистите лъжат хората;
tos-dr.info – занимават се да анализират промените в Terms of service на различни места и да ги обясняват на хората.
OpenBTS at Burning Man – как са тествали gsm мрежа с openBTS на burning man (има доста подробна информация online и е доста интересно). Отбелязал съм си “да си намеря papa legba sticker-и”;
Fire and how it can be fun – човек, който рисуваше синусоиди с огън, беше направил и огнемет от пожарогасител, изобщо весел пироман;
Experiences with space projects – балони, сензори на тях и интересни неща, които могат да се правят;
Solving the internet innovation paradox – това беше доста глупаво, главата ми го е изтрила.

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

Travis Goodspeed разказа как е направил много евтино устройство, което има два usb порта – единия се държи като нормално usb устройство, от другата страна се закача машина и се командва какво се подава, като по тоя начин може да се правят всякакви fuzz-вания и симулация на различни устройства (чиито драйвер например е с известни security проблеми). Идеята беше, че с изследване на тия неща човек може да види как се държат различни драйвери/os-ове/софтуери и да бъдат лъгани (например стандартния проблем, при който някакъв софтуер първо чете файла от usb storage, валидира го, след което го чете пак и го инсталира – така първия път може да му се даде друг файл, който е валиден, втория път да му се даде нещо “весело”. Имаше и решение на проблема с кеширането на файла).

Последната лекция, която слушах беше Russia’s surveillance state, в която беше обяснено какво ползват руснаците да следят и филтрират net-а на хората (накратко, нищо не бих host-нал там). За съжаление човекът не беше техничар и не можеше да каже колко точно bandwidth се филтрира/анализира.

Последва whiskey workshop-а. Тествах мнооого различни неща, имаше всякакви весели разговори и успях да поговоря с Milos на темата балканския компютърен конгрес, вероятно ще си пишем догодина. Прибрах се на два крака, което не го очаквах.

(изпуснах лекцията за hash flooding DoS-овете, определено трябва да я изгледам)

Update: Снимка на (част от) празните бутилки от whiskey workshop-а…

2012-12-29 29c3 втори ден

Saturday, December 29th, 2012

Вчерашния ден леко ми се губи/замазва. Трябваше да изпия едно кафе, за да не заспя там, но ефектът беше временен и минимален. Требе да направят напитка с модафинил или амфетамини…

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

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

OMG!OER! лекцията беше наистина много интересна, обясняваше как поляците правят отворени учебници и как издателите се борят срещу идеята. Имаше дискусия за различни такива инициативи, а човекът каза, че нямат подробна история как са успели да убедят правителството си, че такова нещо трябва (което беше нещото, което аз най-трудно повярвах, познавайки нашите управници) и мисля, че може би някой и при нас може да опита нещо такова. Лекторът беше доста забавен, гледайте лекцията :)
(имаше например как издателите пращали юридически заплахи към университетите да не участват в правителствената програма)

На лекцията за екосистемата на TOR едвам влязохме, за съжаление беше в малка зала (и не стигна времето). Отбелязал съм си три интересни проекта – tlsdate, flashproxy и ooni (open observatory of network interference), които трябва да погледна, и вероятно трябва да прегледам цялата лекция наново, понеже през цялото време работех в/у някакви неща и слушах с половин ухо.

(лекцията на DJB с двете девойки за чупенето на 1024-битови rsa ключове я пропуснах, пак заради работа)

Hackers as a high risk population на Violet Blue беше доста полезна, за изследванията и как групичката болни компютърджии са рискова група като наркоманите и какво е изровила тя по въпроса. Определено пак трябва да я гледам, и мисля да я издиря някъде по конгреса да я питам разни неща (като си ги избистря в главата).
(в irc канала ми казаха да я питам за телефонния и номер – няма)

Накрая на вечерта минах през cryptoparty-то, поговорихме малко за разни весели неща (основно свързани с TOR), днес мисля да разпитам по-подробно.

И днес ме чака whiskey workshop-а. Надявам се да не умра.

2012-12-27 29c3 първи ден

Friday, December 28th, 2012

Конгресът започна силно, с keynote на Jacob Appelbaum “Not my department” – идеята защо разни такива неща, дето си мислим, че не ни засягат всъщност са ни много важни (например като момента, че NSA строят купища data centre-ове из щатите, за да пазят данни за по 100 години). Като цяло много важна, много интересна лекция, намерете си записи и гледайте.

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

Бях на “Setting mobile phones free”, което се оказа доста скучно и не особено интересно, в общи линии правене на виртуален мобилен оператор и почти реклама.

Денят след това мина основно в workshop-и – първо беше cryptoparty workshop-а, как се организира cryptoparty (т.е. как да покажем на хората, че им трябва криптиране и как да си настроят различните услуги да ползват). Имаше доста интересни неща и един пълен piratepad с идеи, например демонстрация защо трябва криптиране – като на всеки http request ако content-type е някаква картинка, router-а (който се прави на прозрачно proxy) да я върти на 180 градуса и така да я подава на потребителя.

(note to self – да намеря някой да ми обясни как се търкалят услуги в/у tor)

Много полезен беше hackerspaces exchange workshop-а, който Весна организира – имаше хора от: Македония, Румъния, Швейцария, Германия, Ирландия, Австрия, Бразилия, Дания, Англия, Австралия, Щатите, Шотландия, Холандия, Естония, Словения, Сърбия (и вероятно пропускам някого). Всеки каза с по две думи нещо за hackerspace-а си (аз се изложих, както обикновено). Интересни неща от разговорите:
Австралийците от artifactory са си направили ключалка, която да контролират по електронен път, и която е достатъчно здрава, че да издържи нормални мизерии, може да реши един проблем на лаба;
Няколко hackerspace-ове правят проекти с деца, да ги учат на разни работи, може да помислим и ние дали може да става нещо такова, около някакви държавни/образователни работи;
Имаше няколко жени (едната каза, че е една от няколкото, за съжаление);
Говорих си доста с един сърбин за hackerspace, който искат да отворят в Нови Сад и за идеята да се направи балкански компютърен конгрес (като вариант на CCC, ама по-близо). Ще му пиша допълнително какво идеи имаме да правим догодина, може да се получи забавна програма (особено като и македонците искат да правят нещо юни месец).

Последва RIPE Atlas – бях се регистрирал и взех една джаджа, която да закача в lab-а и да помага в меренето на performance на internet.

Бях на лекцията “Enemies of the state”, където трима whistleblower-и – Jesselyn Radack (разказала за нарушаването на правата на разпитвани чрез измъчване хора), Thomas Drake и William Binney (и двамата разказали за различните програми на NSA за масово подслушване/записване на американски граждани). Не беше лошо, но не беше чак толкова интересно, като изключим, че Binney спомена нещо за някакви документи/схеми/описания на методи за подслушване и анализ, които биха били доста интересни.

Искахме да идем на лекцията за SCADA и системите в ядрени електроцентрали, но залата беше препълнена и не можахме да влезем, та отидохме на “Time is NOT on your side”. На мен адски ми се спеше и май нищо не помня.

(а на мен като много хубав ми дадоха една тениска за OHM (на нея пише само “Hack” и има някакъв странен болт) и спамих по-интересните хора да идват да говорят там)

2012-12-26 пристигане на 29c3

Wednesday, December 26th, 2012

Седя си в CCH (който е огромен, конгресът тоя път може да не е адска гъчканица), купих си вече една от локалните sim карти да ползвам тестовата gsm мрежа и се радвам на живота.
(трябва да ям…)

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

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

Утре следват весели лекции. По някое време ще пиша :)

2012-12-14 Гледане на 29c3 в initLab

Friday, December 14th, 2012

Ще има прожекции на живите stream-ове от 29c3, в initLab. Ето текущата програма, имаме event в сайта на initLab, както и хора, които да отворят и да пускат лекциите (Яна, Радо Борисов). Ето началната идея за програмата за първия ден, 27.12:

Opening event
Not my department, Jacob Appelbaum
ISP’s black boc
HOWTO Hack the law
Setting mobile phones free
The Grand EU Data Protection Reform
Privacy and the Car of the Future
Defend your Freedoms Online: It’s Political, Stupid!
SCADA Strangelove, or: How I Learned to Start Worrying and Love Nuclear Plants

Мисля, че последната лекция (за hack-ването на ядрени електроцентрали) ще е мнооого интересна…

Моята програма ще е малко по-различна, понеже имам да ходя на два workshop-а (Hackerspaces exchange и RIPE Atlas пробите), както и хич не е ясно в каква друга история ще се забъркам.

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

2012-11-04 Openfest 2012 предварителен recap

Sunday, November 4th, 2012

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

Вероятно ще напиша нещо по-дълго тия дни, включително двете си лекции (Яна ще напише нейната част от лекцията за депресията).

И двете лекции се получиха доста добре, въпреки че втората не успяхме да я репетираме изобщо (и я дописвахме в неделя на обяд). Ето презентацията от първата (odp,pdf) и втората (odp, pdf). Мисля да помоля организаторите да ми дадат записа на втората да го пусна по-рано.

Специално за втората аз и Яна си бяхме дали адресите накрая, за хора, които имат нужда да си говорят с някой (vasil(at)ludost.net, yana(at)ludost.net), също така се включи и Нейчо Михов (neycho.mihov(at)gmail.com), ще добавя в тоя post (и като измисля някакъв сайт за целта – и там) адресите на всички останали желаещи да слушат другите.
Може би най-хубавото и неочаквано нещо беше колко много хора след това ми благодариха, казаха колко е била хубава лекцията и казаха, че сериозно са се замислили. Искам да благодаря на всички от “програмния комитет”, които бяха на моя страна за правенето на тая лекция, и най-вече на Стефан Кънев.

Също така мисля, че този openfest затвърди традицията аз и Стефан Кънев да се ебаваме един с друг. Той ми провежда “интервюта” и в предишните си презентации намираше къде да ме добави (в последната ме нямаше), а след историята със снимането обяви, че ако с мен се снимат 50 човека, ще направи продължение на intro клипчето от openfest.
(историята със снимането е как като бях отишъл на една лекция от курса по Python и си говорех с него в почивката дойдоха при нас няколко студента, той ги пита какво искат да питат и те му казаха – нищо не искаме да питаме, искаме да се снимаме с крокодила… Кънев много обича да я разказва тая история…)
След като с мен се снимаха много хора, аз в последния slide на лекцията за депресията сложих една снимка на Кънев, допипната от Лъчко, на която да изглежда депресиран и приканих хората да се снимат с него, за да го ощастливят. Погледнете, мисля, че Лъчко страхотно се е справил :)

В крайна сметка обаче той води – с мен се снимаха толкова хора, че в един момент ми беше трудно да гледам от всичките светкавици. Чудя се как да му организирам flash mob.

(а колко хубаво си допихме и куфяхме на afterparty-то, думи не могат да опишат, та оставям на някой друг да разкаже :) )

Update: iffi също се включи в списъка на слушащите.
Update 2: Стефан Кънев също се включи в списъка на слушащите.

2012-10-29 OpenFest 2012

Monday, October 29th, 2012

Идва OpenFest 2012, ще правя там две лекции.

Едната ще е за това колко по-лесно се поддържат 700 сървъра, отколкото 3 – според разни хора това би било интересно (за мен голяма част от нещата са твърде стандартни и ги пише по всичките книги). В последните 2-3 години насъбрах много забавен опит около това и се надявам да не се получи много скучно. Ще бъде от 17:00 в събота в зала София.

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

Иначе, има още няколко интересни неща. Едното е лекцията на Венета Донова за юридическите моменти около поддържането на сайт и предлагане на услуги през него, от 12:00 в събота в зала София (за която поемам част от вината, аз я навих да я прави), другото е лекцията на Владо Василев за hackerspaces на балканите, в България и какво се случва в последната една година, от 15:20 в събота в галерията(където имам някакво минимално участие и третата (с която нямам нищо общо) е лекцията на Стефан Кънев за парадигмите в програмирането, от 11:15 в събота в зала София (поставя си много висока цел с тая лекция, да видим как ще се справи :) ).

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

2012-10-23 openCoffee

Tuesday, October 23rd, 2012

Днес ме замъкнаха на странно събитие – openCoffee (в betahouse), на което се представяха две приложения, свързани с таксита. Едното беше в общи линии система за поръчване/намиране на таксита, другата – каталог на фирми, като и в двете имаше рейтинг, който да помага на хората да се ориентират. Като цяло първата идея беше по-интересна (taxiMe или нещо такова).

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

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

Това обаче, което ми направи голямо впечатление е как специално вторите хора си мислеха (а май и първите), че само тяхното приложение може да говори с техните сървъри и ако някой реши да прави такива неща, ще му трябват милион телефони и download-и, реални хора и т.н., вместо просто да се reverse-не протокола (не повече от ден работа, ако ползват https и проверяват сертификати, 5-10 минути в противен случай). Направо си спомням в BOFH един израз, “It truly breaks my heart to see trust like that go unpunished”.

Някой ден трябва да се направи workshop “Как да чупим на хората хубавите и недомислени service-и”.

2012-10-21 записи от Sofia Wordcamp 2012

Sunday, October 21st, 2012

С позволението на организаторите:
Записи с description;
Директория.

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

2012-10-21 wordcamp

Sunday, October 21st, 2012

Спимисеспимисеспимисе.

(преди всичко – браво на dzver-а, че въпреки всички идиотски пречки и т.н. се справи с wordcamp-а, без да се налага после да го прибираме в някоя лудница, браво и на Ники Бачийски).

Днес беше WordCamp Sofia 2012.

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

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

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

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

Afterparty-то беше интересно, в някакъв странен бар (май се казваше “Dada”), където се засякох с всякакви стари познати, пийнахме добре и даже по едно време Марио посвири на пианото. Аз успях да сбъркам пак Калин и Ниньо (и да помисля Калин за Радо), смятам сериозно да проуча как точно тия тримата са се събрали в лаба и защо са ми толкова подобни. Само се притеснявам, че ще взема да изкарам наяве някаква история от техните родове, дето никой не я знае…

Имаше и въпроси по темата дали с Кънев живеем заедно (не) и дали имаме някаква връзка (не, въпреки че му се иска). Вероятно трябва да се напише FAQ по въпроса.
(примерни въпрос/отговор:
Q: Защо Стефан прави палачинки сутринта през weekend-ите?
A: Защото знае, че е любимата храна на крокодила и го подмамва с подли намерения.
)

Откривам, че паметта ми никаква я няма и вероятно трябва да намаля малко четенето и прекъсванията. Очаквайте записи от wordcamp тия дни.

2012-08-20 Ratio

Monday, August 20th, 2012

Киро (voland) (който има общо с организацията на събитието) ме зариби да ида на Ratio, което ще се проведе на 29.09 в София (подробности за къде и т.н. има на сайта).

Изглежда интересно, лекторите нямат вид на идиоти и като цяло не ми се вижда bullshit конференция като TED. Има някакъв минимален вход (може да се види на link-а за регистрация) и online продажбата на билети работи (трудно, мъчително и с бъгове, но върши работа).

(disclaimer: не са ми плащали, това не е реклама, на мен наистина ми изглежда интересно)

Записи от VarnaConf 2012

Thursday, August 16th, 2012

Записите могат да бъдат намерени в wiki-то на va.ludost.net или директно в http://va.ludost.net/files/varnaconf/2012/ (директорията с файловете).

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

2012-08-13 Лекцията ми от VarnaConf (tldr)

Monday, August 13th, 2012

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

Може би най-важното е да знаят, че имам лопата и си я държа под ръка…

Иначе, малко по-сериозно, да почна от там защо изобщо реших да водя лекцията. Пряко свързана е с работата ми и реално представлява мрънкане/оплакване от някаква част от проблемите, с които съм се срещал и не съм очаквал, че ще се срещна.
Моята работа по принцип е да карам неща, писани от други хора да работят. Това включва много debug-ване (което ми е едно от любимите занимания), много четене на код и малко писане. Държа да си кажа, аз не мога да пиша кой-знае колко добре, липсва ми времето и желанието за толкова съсредоточаване (ttee ми отне няколко дни, а не би трябвало).
Четенето на код е основно да разбера защо нещо не работи (или понякога как изобщо работи), съответно с мисъл за бъдещето обяснявам на хората къде е проблема, как може да се оправи, как аз съм го оправил, така че в бъдеще да не видя същото нещо. За съжаление ако историята ни учи на нещо, то е, че хората не се учат от историята, та моите опити са доста неуспешни. Приемете това като едно просто изливане на мъката.

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

Ще започна с първия теоретичен проблем – copy-paste.
Copy-paste е метод за разпространение на грешката. Не мога да преброя колко пъти съм видял код, копиран няколко пъти и във всичките места със същата грешка. Човек би си помисли, че това е понеже няма как да се избегне (наистина има такива случаи), но най-често изглежда или като мързел от страна на програмиста, като липса на абстрактно мислене или като непознаване на езика и средствата на разработка. Голяма част от повторения код изглежда като писан от хора, които не са наясно че има неща като for цикли, функции, макроси и т.н..
Доколкото знам, започват да се появяват инструменти, които поне могат да откриват такива неща, но не съм забелязал сериозната им употреба. Тези неща много лесно се хващат с четене на кода (deja vu, “това някъде съм го виждал) и е едно от нещата, които code review може лесно да хване.

Умното писане ми е друг проблем. Много често се случва след-начинаещ програмист да открие нова възможност на езика, нов lib, нов метод на писане и да започне да го прилага навсякъде, където види, просто защото му се вижда много готин. Така се прилага безсмислено сложно средство за решаване на прости проблеми, което прави debug-ването много трудно, защото както е казал Браян Кърниган, “дебъгването е два пъти по-сложно от програмирането, така че ако програмирате с пълния си капацитет, не сте достатъчно умен да да го дебъгвате после”.
Някои езици много улесняват подобни неща, например Perl и C++. Мнението на Al Viro за C++ и защо не се ползва за kernel-а много добре показва проблема – накратко, езикът има твърде много възможности, всеки програмист свиква с някакво под-множество от тях, и когато в един проект се съберат да пишат няколко човека, се получава страшна смесица от стилове.
(на лекцията бях казал грешно, че идва от Линус, но мисля, че говорех за това, доста отдавна съм го чел)
По принцип често ме викат, когато трябва да се debug-не нещо такова супер сложно и омазано и най-честото нещо, което казвам е, че трябва да се пренапише.
(За пример за умен код давам примерните реализации на fizzbuzz, ако някой някога ми напише нещо като последната в production код, ще трябва да има преди нея поне толкова голям коментар, който обяснява защо е написано така и как точно работи)

Проблемът с валидацията може би ще иска отделна публикация, лекция, учебник, курс или религия по темата. Факт е, че след толкова години security и всякакви подобни проблеми никой не проверява получените данни.
(след малко дискусии с Кънев и още няколко човека искам да обясня, че например трансформирането на данните до вид, който е валиден също е вид валидация, т.е. правилното escape-ване например)
Докато водих лекции на едни ученици около летния лагер на БАН преди година-две във Варна, присъствах на тяхно предаване на проект, който представляваше симулация на банкомат – в общи линии му се подаваше сума и програмата по някакъв начин казваше в какви банкноти и по колко ще я върне. Имаше всякакви красиви реализации и т.н., но повечето изгърмяваха по неприятен начин (или зацикляха, или програмата умираше) на всичко, което не беше съвсем валидно – отрицателни числа, дроби, такива, за които нямаха типове банкноти – само защото нямаха няколко прости проверки в началото и вярваха, че входът ще е верен.
(това с вярването сигурно работи в религиите, но не и в програмирането)
Елементарното нещо – да се направи проверка още на входа на данните, се пропуска от всички. Много често ако има валидация, е от типа “shotgun” (т.е. все едно сте лепнали кода на стената и от далече сте стреляли по него с пушка със сачми, и където е паднала сачма там сте сложили проверка за нещо) и повече пречи, отколкото помага.
Друга такава елементарна грешка е идеята “аз пиша клиента и сървъра за нещо, значи данните ще са ми верни и няма защо да ги проверявам”, което е така до момента, в който някой друг се добере до този интерфейс и започне да праща там. Резултатите от това варират между викове “кой го е писал това” и вопли “как са ни хакнали и са ни потрили всичко?”…
Вариация на предното е “само аз пиша в базата, знам какво е и няма нужда да го проверявам” – имаше няколко случая на cross-site scripting през такива проблеми.
И нещо, за което малко хора се сещат изобщо, а на малкото останали хора, които държат на performance (като например game developer-ите) им е противопоказно е defensive programming-а – да се прави допълнителна проверка на още няколко места, понеже в крайна сметка всички допускаме грешки, нормално явление е да ги допускаме и е добре да ги хващаме. Пряко следствие от това е, че assert-ите не се пускат само в debug код, а и в production.

Като допълнение към валидацията, което не можах да разпъна добре на лекцията е, че няма замисляне колко сложни да се правят протоколите, така че да са лесни за валидация. Писах за лекциите от 28c3 и по-точно за Packet-in-packet атаката и за the science of insecurity, така че няма да повтарям (много), но е важно да правим всичко така, че да ни е нужен максимално прост апарат за обработката и валидацията му – колкото повече от нещата ни могат да се разберат и обработят с краен автомат например, толкова по-добре. В противен случай можем да се озовем в ситуацията на антивирусния софтуер, който спрямо математическата теория не може да бъде направен да работи напълно правилно.
(Проблемът там е като следствие от теоремата на Гьодел, която казва, че вътре в една система не можем да проверим дали всяко твърдение в нея е вярно или невярно, т.е. няма как със средствата на машина на Тюринг да валидираме друга машина на Тюринг)

И за пример за невъзможна за валидиране и използва сериозно система ще дам комбинацията от HTML5 и CSS3 (без JavaScript), която се оказва, че е Turing-complete.

След чистата теория нека да хванем няколко по-преки проблема.

“I don’t believe in miracles, I rely on them” изглежда да е стандартна програмистка философия. Трудно се схваща, че почти всичко може да върне грешка и съответно трябва да се направи нещо, ако това се случи. Като за начало, имам две парчета код за пример. Първото е “наивната версия”:

#define BUFSZ 8192
int fd0, fd1;
size_t len;
char buff[BUFSZ];

fd0 = open(file1, O_RDONLY);
fd1 = open(file2, O_RDWR);

while ( (len = read(fd0, buff, BUFSZ) !=0 ) ) {
	write(fd1, buff, len);
}

close(fd0);
close(fd1);

Второто е ремонтираната (DIE трябва да печата име на файл, име на функция, ред, подадения string и strerror(errno)):

#define BUFSZ 8192
#define DIE()...

int fd0, fd1;
size_t len;
char buff[BUFSZ];

if ( ( fd0 = open(file1, O_RDONLY) ) <0 ) DIE("open fd0");
if ( ( fd1 = open(file1, O_RDONLY) ) <0 ) DIE("open fd1");

while ( (len = read(fd0, buff, BUFSZ) > 0 ) ) {
	if ( write(fd1, buff, len) < len) DIE("writing");
}
if (len<0) DIE("reading");
close(fd0);
close(fd1);

(Оставил съм втората версия както ми е в презентацията, с грешките от един copy-paste. И аз съм идиот, това го видях на самата лекция, когато ми го посочиха)

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

Втората версия не прави някаква магия и да решава проблема – тя просто ни дава едно важно свойство, наречено “failfast”, т.е. програмата да прекрати изпълнението си колкото се може по-скоро след като стане ясно, че не може да го завърши правилно. С код с подобно поведение и няколко други прекрасни неща, като идемпотентност на изпълнението (много дразнеща дума, значи в общо линии че ако кодът се изпълни 1 или N пъти, резултатът в крайното състояние ще е все същия, т.е. можем да повтаряме колкото си искаме) и ACID свойства можем да правим истински работещи системи, а не такива, които се чупят, като някой ги погледне накриво.

Fallacies of distributed computing са друго нещо, което много ми се искаше да е известно на повечето програмисти. Много често хората пропускат колко гнусно нещо като поведение е мрежата. Ще се спра накратко на няколко от проблемите:

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

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

Мрежата не е reliable – нормално е за мрежата да губи пакети, да изчезва, да има jitter, а ако е internet е нормално това да е още по-зле. Съответно не може да се пише какъвто и да е софтуер, който я използва без да се имат в предвид тези failure modes и да се взимат мерки за тях.

Мрежата не е сигурна – може да се подслушва, някой да се представя за някой друг и т.н. и т.н. и т.н., неща, които ги чуваме даже по новините и все пак никой не се сеща да ползва криптография.

Накратко, мрежата ви мрази.

Накратко два доста конкретни проблема от ползването на version control-а – още не се преподава сериозно, хората започват да го учат в движение в първата си работа и това води до всякакви проблеми, например до ползване на CVS или до това ако двама човека работят заедно, да седят един до друг и да си разменят файлове по skype.

Първият проблем от неяснотата как се използват VCS (version control systems) е че когато кажеш на някой “branch-ни това, за да работим спокойно по trunk-а” изобщо не те разбират, а като обясниш “направи копие еди-къде-си”, хората просто взимат файловете и ги add-ват наново там, което води до загуба на history-то. След като им се посочи грешката, те продължават да не схващат защо това е такъв проблем, понеже за тях VCS-а е само backup и commit messages са някакъв бълвоч, който никой не гледа, а когато потрябва да се гледат, вече е късно.
(Много е забавно да се анализират всички commit messages на някоя фирма и да се види кои са най-често срещаните думи. Моята любима (беше на 10то място в една фирма) е “blahovina”)

Вторият проблем е как като се прави някакъв сайт, редовно се слага config файла в repository-то. Понеже този файл е различен за production-а, staging-а и за машините на developer-ите, редовно се случва някой да го commit-не от грешната машина и да го update-не в production-а, чупейки всичко. Двете решения, за които аз знам са или да се прави template на този файл и само той да стои в repo-то, а другото е да се detect-ва средата и да се load-ват подходящите настройки (както прави rails, доколкото схванах).

И един bonus за четящите тук – нещо, което не можах да спомена в лекцията, но обсъждахме доста подробно след това, външните dependencies на един проект, кой носи отговорност за тях и как се update-ват. Ще говоря основно за неща, които се deploy-ват по сървъри, но има доста паралели и с end-user-ския софтуер.

По принцип имаме два варианта. Единият е да използваме външните неща от дистрибуцията/операционната система, оставяйки на тях отговорността (и подбирайки ги правилно, например да ползваме debian stable или centos или rhel), другия е ние да си ги вкараме в проекта и да си носим отговорността за тях.

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

За това хората, които не разбират как се прави това, не трябва да го правят – ако човек не участва в оперативната работа (я като админ, я като част от devops екип), по-добре да остави на другите да му кажат версии и външни пакети, за да може да се работи стабилно и без downtime. Като малка реклама на debian stable (и донякъде ubuntu server lts), те правят дистрибуция много подходяща за сървъри, понеже въпреки, че са със стари пакети, те реално за живота на дистрибуцията винаги backport-ват важните patch-ове (основно за security проблеми), така че системата е едновременно и сигурна и не се променя поведението ѝ.

Специално за външните dependencies също мога да направя цяла отделна лекция, в която да си излея мъката.

За всички, преживели изчитането на това – снимка на обстановката, в която спах във Варна :)

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

2012-08-12 VarnaConf

Sunday, August 12th, 2012

Вчера беше VarnaConf.

Като увод, защо се случи цялото нещо – Радослав Станков (Радо) и още някой разбрали, че ще се засекат във Варна, мислили какви лекции да направят в локалния hackerspace, след което решили, че няма лошо да направят една конференция, Радо пуснал няколко mail-а до университетите някой дали има свободна зала и от Варненския свободен отговорили. В началото бяха 4 лектора, после в един момент 11, питаха ме и мен дали искам да правя записа и streaming-а, и така за две седмици се случи цялото нещо.
(Радо може да му хрумне да напише нещо по-подробно по въпроса, ако реши да върне блога си от мъртвите)

Аз пристигнах в четвъртък във Варна с Жоро Митев, като преди това бях пратил кашона с техниката по куриери. Видяхме локалния hackerspace (Varnalab), където вечерта Кънев изнесе 3 часа лекция за vim, видяхме се с локалните хора и изобщо си изкарахме весело.

В петък отидохме до Варненския Свободен Университет, за да разположим техниката и да видим залата (за която преди това Радо ми беше пратил малко снимки), което направихме за час-два (за какво можеше да стане по-добре – след малко). Последва мотаене, ядене, пиене и пак лекция във VarnaLab за увод в Ruby (пак от Кънев – после аз съм обичал да говоря много :) ).

Самата конференция беше много добра. Започнахме с 20тина минути закъснение (Радо закъсня, трудно ми е да му го простя, щото е спал повече от мен), но всичко си работеше и с много усилия успяхме горе-долу да спазим половината график. Имаше 80-100 човека (очакванията на всички бяха за 2-3 пъти по-малко), съответно има сериозен шанс това да стане редовно ежегодно събитие.

От лекциите си спомням следното:

Радо направи много хубава лекция за как добре да пишем и ремонтираме код;
Стефан (Кънев) изнесе стандартния си вид представление/лекция (имаме голям късмет, че не е религиозен лидер), която по броя slide-ове и информация в тях трябваше да е около час и половина, а той имаше по програма половин час;
Митьо (Димитър Димитров) говори за Ruby on Rails, като за разлика от Кънев имаше slide-ове и информация за 3 часа;
Андрей Радев показа “Как да превземем света с vim” и надмина показаното от Стефан в четвъртък. Накрая обясняваше как човек може да си направи с vim не само собствен lightsaber, но и lightsaber chainsaw, или дори lightsaber chainsaw nunchaku (с което съм напълно съгласен). Демонстрацията му в рамките на 10 минути на няколкото модула/скрипта, които той сам си е писал мисля, че напълно шашна публиката;
Калин Чернев говори за hackerspace-ове;
Аз мрънках от програмисти (презентацията ми в pdf или odp), вероятно ще разпиша цялата си лекция като blog post в идните дни;
И Христо Дешев разказа за полифазното спане, или как да спим по-малко, като спим да речем по половин час на всеки 4 или различни други варианти.
(имаше още две лекции, но бях доста отнесен/зает, за да ги слушам)

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

Последва after-party в някаква пицария – хапнахме, пийнахме, говорихме, говорихме, говорихме на хиляди теми, след което аз се прибрах да спя, и след няколко часа трябва да се метна на автобуса и да се прибера в София.

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

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

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

(а в моя pipeline вече са два post-а – как се прави streaming/запис/encoding/рязане, и онова мрънкане за програмистите, някой ден ще ги напиша)

2012-08-05 VarnaConf

Sunday, August 5th, 2012

На 11.08 (събота) във Варна, във Варненският Свободен Университет ще се проведе VarnaConf – еднодневна конференция за developer-и. Аз ще имам една кратка лекция там (основно мрънкане), но се очертава да има по-интересни неща, програмата и лекторите могат да се видят на сайта.

Ще се stream-ва (освен ако нещо тотално не се сбози) на http://stream.initlab.org:8787/vc.ts, където в момента върви на loop едно клипче с програмата и “Too Tight” на Falik за фон. Мисля, че с vlc най-добре ще може да се гледа, но до събота има много време всички да тестват и да кажат дали имат някакви проблеми (и да си ги решат). Ако има желаещи, в София в initLab може да се организира прожекция – има всичко нужно за целта, само някой трябва сутринта да отвори.
(може като Радо се събуди по някое време да предложи по-хубав клип и някаква друга creative commons музика)

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

Update: Оправих url-то на stream-а, бях пропуснал порта (8787).

Sysadminday – 2012

Thursday, July 12th, 2012

27 юли, от 19:00 в мазето на “Кривото” на ъгъла на “Дондуков” и “Будапеща” ще си празнуваме пак sysadminday. Всякакви админи и подобни са поканени :)

2012-06-09 Архив на va.ludost.net

Saturday, June 9th, 2012

Крайно време беше да седна да органзирам архивите на различни записи, които имаме от всякакви конференции. Днес пуснах va.ludost.net – wiki и файлове, достъпни по http, ftp и rsync (rsync://va.ludost.net/va).

(Кодовото име на проекта е “Гогортолоз”, което според един sms от Кънев значело “крокодил” на арменски. Дори да не е вярно, думата радва.)

Изрових всичките неща, които имах на ludost.net, разните видеа от vasil.ludost.net/netsec от мрежовата сигурност, linux курса в ТУ, както и всякакви архиви на openfest (вкл. някакви raw записи от 2005, понеже ги нямам нарязани и ще се наложи едно бая сложно упражнение да ги подредя и синхронизирам, а тия, дето нарязах едно време са леко неоткриваеми, както и тия от 2006та).

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

2012-06-06 Лекция за hackerspace-овете в initLab

Wednesday, June 6th, 2012

В петък, 8ми юни от 19:00 в initLab ще има лекция на Larry Maloney, представител на HackerDojo по темата за hackerspace-овете, тяхното развитие и те какво са научили, докато са правили HackerDojo.

Лекцията ще е на английски, има някакъв шанс да я запишем и качим.

Update: Може да се гледа на http://tyler.ludost.net:8787/lab.ts
Update 2: Има и запис на лекцията. Би трябвало да има и още един, от един фотоапарат, ще кача и него като го обработя.