Archive for the ‘General’ Category

2012-07-18 лекция “Дребен пример от разпределеното програмиране”

Wednesday, July 18th, 2012

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

Отделно ето я и самата презентация.

Става въпрос за тип задача, която не намерих в design patterns, и за която има различни парчета софтуер, които правят нещо подобно (rabbitmq, gearman). Основната причина да се пише от нулата, вместо да се ползва нещо готово е, че се интегрира много по-добре в съществуващата система и така е доста по-просто, отколкото да се добавя още някакво парче код.
(и е интересна задача :) ).
Имам в практиката си три реализации, като това, което показвам прилича най-вече на една от тях, система за encode-ване в няколко формата на видео. Имаме много сървъри, които се занимават с encode-ването (cli.*) и които си взимат задачи от централен диспечер (srv.*), който има някакъв вариант да пази persistent state (в моя случай – база данни). Задачите са индемпотентни, т.е. могат да бъдат изпълнени повече от един път, ако се наложи.

Езикът, който съм ползвал в примерите е в общи линии псевдокод, който прилича на смесица от perl и php. Странните неща в него са, че има мнoжествено връщане (т.е. конструкция от типа $a, $b = f()) и че respond в srv.* връща отговор на клиента и излиза, т.е. прилича малко на return. man pages описват семантиката на fork и wait.

Начален вариант на решението би бил с този диспечер и този клиент.

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

Вторият проблем е какво става, ако заявим, че искаме задача, диспечера ни я задели, но не получим отговора? Ако нямаме обработка на този случай, в такива ситуации ще се натрупват задачи, които се водят, че се обработват и реално никой не ги е взел. Решението, до което аз стигнах е да добавя на всеки сървър transaction id и при заделяне на задача диспечерът да отбелязва сървъра и transaction id. Ако клиентската част подаде заявка за нова задача и не получи отговор, трябва специално да подаде обратно заявка за “cancel”, за да сме сигурни, че неполучената задача е върната в pool-а на свободните задачи.
Версия 2: диспечер и diff от предишната версия, клиент и diff от предишната версия.

Третият проблем е рестартирането на някой от сървърите, които обработват задачи – например поради спрял ток. Когато той се стартира отново, според диспечера ще има няколко задачи, които той обработва и за които той не знае. Решението е просто – добавя се тип заявка, която се подава при рестарт и почиства работещите задачи за даден сървър.
Версия 3: диспечер и diff от предишната версия, клиент и diff от предишната версия.

Четвъртият проблем (който би трябвало да е един от първите) е колко често и кога да се опитваме да повторим заявка към сървъра. Всяка заявка, която може да подадем може да стигне, но може и да не стигне до сървъра, или ако стигне, нямаме гаранция, че ще получим отговор. Съответно трябва да добавим към srv_request() в клиентската част логика колко пъти и как да опитва – само веднъж, много пъти или безкрайно. Заявяването на задача трябва да се изпълнява точно един път, останалите неща – докато се получи отговор.
(от “много пъти” смисъл в повечето случаи няма и би трябвало да го махна от кода)
Друг проблем, който се вижда доста бързо е, че ни трябва нещо от типа на exponential backoff, за да разредим честотата на опити от страна на сървърите към диспечера. Това се прави, за да се избегне ситуация от която след restart изведнъж се изсипват твърде много заявки в/у диспечера и има шанс да го претоварят. Същото нещо може да се види и в доста мрежови протоколи, например TCP.
Версия 4: клиент и diff от предишната версия.

Петият проблем е да ограничим колко товарим себе си (и донякъде сървъра), като ограничим броя задачи, които изпълняваме. Прави се сравнително просто, с брояч на вървящите в момента child процеси.
Версия 5: клиент и diff от предишната версия.

Шестата версия е основно дописване и доподреждане на кода, с оправяне на няколко проблема, които само ми хрумнаха и не съм виждал на живо. Едното нещо е валидация на state на определена задача, другото е един race condition м/у fetch и cancel (който по принцип не трябва да може да се случи).
Версия 6: диспечер и diff от предишната версия.

Има функционалност, която по различни причини не е дописана в този код:

– да връщаме на всеки сървър колко да изчака, преди пак да пита за задача, като метод за flow control.
– job timeout/job restart – да решаваме по някакъв начин кога да рестартираме определена задача (понеже е възможно сървърът и да е умрял и да не се е върнал повече). Това не пасва добре в текущия код, т.е. трябва да се напише отделен компонент, който се вика периодично или работи като демон при диспечера, който да изпълнява тази функционалност, а самата логика за това зависи твърде много от контекста.
– Log на всички събития – животоспасяващ при всякакво дебъгване.
– Monitoring и аларми при различни състояния, дефинирани като проблемни (твърде много чакащи задачи, твърде много обработвани и т.н.) – пак трябва да е в отделен от тези два компонента.

2012-07-13 комикси, които чета

Friday, July 13th, 2012

Пак стигнах до поредния момент, в който съм предрусал с четене и ми е трудно да хвана няколкото висящи книги, та ще взема да пиша. Понеже в общи линии съм си написал лекцията за вторник, ето опит за сглабяне на списък на всичките online комикси, които чета. Част от тях са ми в агрегатора, част са един голям bookmark folder, който отварям целия след 11 сутринта да видя какво ново е излязло.

Списъкът е tldr, може да го изнеса директно в отделен page вместо като post.

(По принцип списък с почти всички web комикси може да се намери в comixmix. Преди около година попаднах на една тяхна класация, след което се хванах да прегледам целия списък и да сихареса неща за четене. Наскоро свърших с преравянето на списъка и изчитането на написаното досега от тия, дето ми харесаха, чувствам се все едно съм прочел internet-а. Почти като след като прочетох целия bash.org за пръв път.)

xkcd би трябвало да е познат на всички, със stick фигурите си, математиката и другите весели неща.
Abstruse goose – другарчето на xkcd.
Romantically apocalyptic – странен, малко руски като усещане, с много добър art.
Всички обичат Дилбърт.
Megatokyo – много добре нарисуван, много хубава история, но си го наваксвам от време навреме, понеже се движи много бавно.
Candi comic – не знам защо още го чета, може би донякъде заради историята.
Sinfest – един от великите.
Questionable content – един от великите, авторът му прави и доста добра музика (групата се казва Deathmøle, писал съм по темата).
Gunnerkrigg court – много добра история и много добър вид, пак от категорията на великите.
Johnny Wander – проект на двама автори на комикси, основно one-shot неща, доста интересно и добре направено.
Poisoned Minds (или SSDD) – чета от много време, може би основно заради идеите и философията на автора.
Unshelved – библиотекарски комикс, от него си намирам понякога нещо за четене.
Between failures – комикс за работещите в един голям магазин, интересен за разлика от повечето такива.
Dead winter – зомби апокалипсис. Стилът на рисуване е доста различен от останалото и много добър.
Prequel adventure – леко странна, напомняща на стари quest-ове история, но с различна реализация (много хора пишат в един форум и са нещо като подсъзнанието на героите). Според мен – рядко добро.
Scary go round – попаднах на него от overcompensating, английски автор на комикси, пише интересни истории.
Menage a 3 – секс.
Sorcery 101 – fantasy комикс, доста добър.
Wolf wears wool – върколашка история, още в началото.
Sequential art – комикс с приятна история и много добър grayscale art.
Skull Kickers – fantasy, като качество надминава повечето неща, които могат да се намерят online.
Max Overacts – не мислех, че комикс за хлапе с актьорски наклонности ще ми е интересен, но сбърках.
PVP online – комикс за game списание, води се от класическите.
Pictures of you – весела и доста дълбока история.
Powernap – комикс за човек, който трябва да спи в свят, в който никой не спи.
A Redtail’s Dream – приказка.
String Theory – историята ми стана много интересна.
Bear nuts – комикс за мечетата в зоопарка. Пълен с груби, грозни и просташки моменти.
Spacetrawler – клони към твърда фантастика (не само защото е в космоса) и историята е интересна.
Lady Sabre and the Pirates of the Ineffable Aether – летящи морски кораби, още го чета за да видя колко интересен ще стане.
Flaky pastry – това го чета само за да видя какво ще стане.
Yellow peril – все още започва, но е обещаващ.
Left-over soup – историята съвсем малко ми напомня Questionable content, философията на автора е интересна.
Life and Death – комикс за Steve, който изпълнява длъжността “Смърт”. Весела история, съвсем леко изтъпява на моменти.
Next town over – steampunk история в дивия запад. Историята изглежда интересна.
Paranatural – пак добра история.
Legend of Bill – леко глупав fantasy.

Понеже са много и да не го казвам всеки път, one-shot весели комикси:
Saturday Morning Breakfast Cereal – велик, вероятно сте попадали на неща от него къде ли не.
Cyanide and happiness – груб, просташки, виждали сте го. Класически.

Systems – комикс, използваш стандартните знаци (например означението за мъжка тоалетна е главния герой), с добро чувство за хумор.
Scenes from a Multiverse – стандартни ситуации в странни светове.
Channelate
Poorly drawn lines – весел и груб.
Bug – доста забавен.
Wulff-Morgenthaler (или вече WuMo) – доста груб и NSFW. Радва.
Head trip – случки около авторката.
Three panel soul – случки около живота на автора (който преди това беше един от авторите на applegeeks).
Overcompensating – странно и ми е останало по навик да го чета.
AmazingSuperPowers

Pigs in Maputo – проект на една девойка, която рисува на лисчета.
Pigs in math – пак проект на същата девойка.
Pigs incorporated – пак проект на същата девойка.
Savage Chicken – комикси на post-it бележки. С кокошки.

2012-07-12 пак лекция

Thursday, July 12th, 2012

Ще водя още една лекция в initLab във вторник (17.06) от 19:30. Пак ще се stream-ва на http://tyler.ludost.net:8787/lab.ts и пак през irc ще могат да се задават въпроси.

Sysadminday – 2012

Thursday, July 12th, 2012

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

2012-07-07 книжната лекция в initLab

Saturday, July 7th, 2012

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

Първоначалният списък:
(link-овете са към goodreads, от там може да се ориентирате лесно)

За писането: Мемоари на занаята на Стивън Кинг, заедно с Правопис и пунктуация на българския език (издателство на БАН).

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

Shooting an Elephant на Джордж Оруел.

Събрани есета. Показват колко добре умее да пише Оруел, съдържат класическото му (и цитирано от всички) есе за как се пише, както и много неща за истинския журнализъм, езика и истината. Няколко цитата:
“Political language is designed to make lies sound truthful and murder respectable, and to give an appearance of solidity to pure wind. ”
“The greatest enemy of clear language is insincerity.”
“Journalism is printing what someone else does not want printed: everything else is public relations.”

Дзен и изкуството да се поддържа мотоциклет на Робърт М. Пърсиг.

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

The Invisible Gorilla and Other Ways Our Intuition Deceives Us на Christopher Chabris и Daniel Simons

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

The Psychopath Test на Jon Ronson

От нея се запалих да чета неща по тема психиатрия.

Liars and Outliers на Bruce Schneier

“Приложение на теория на игрите за обществото”

Промиване на мозъци – психологията на тоталитаризма на Робърт Лифтън

Вече съм писал за нея

Masters of Doom на David Kushner

Историята на хората, направили id Software. Който не знае кой е John Carmack определено трябва да я прочете.

Kingpin: How One Hacker Took Over the Billion-Dollar Cybercrime Undergroundна Kevin Poulsen

Историята на Iceman (една от големите фигури в credit card fraud средите).

Better: A Surgeon’s Notes on Performance на Atul Gawande

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

Две книги, които не бяха в списъка:

Sex at dawn: The Prehistoric Origins of Modern Sexuality на Christopher Ryan, Cacilda Jethá

Основно еволюционна биология. Да цитирам Voland, “не е задължително да сте съгласни, но трябва да я прочетете”.

Blindsight на Peter Watts

Заради тази книга прочетох “The invisible gorilla” и още няколко книги. Едно от най-най-добрите неща в твърдата фантастика в последните години, вече и съм писал за нея. Книгата е под creative commons лиценз и всеки лесно може да намери откъде да я свали за каквото устройство иска.

Самата лекция мина средно добре. Дрънках два часа, като можеше вероятно да се събера в един, но се получи доста интересна дискусия. Също така се получи хората да гледат отдалечено streaming-а и да задават въпроси през irc. Записът се encode-ва и ще пусна link като е готов.

Има още много книги, за които бих говорил (някои от тях споменах). Може и да се направи дискусия върху връзките между тях, например цялостна дискусия за social engineering-а и защитата от него в светлината на “The Invisible Gorilla”, “Ghost in the Wires” (автобиографията на Кевин Митник), “Liars and Outliers”, “Kingpin” и още каквото се сетим…

Какво мислите за лекция за книги по следната тематика:
“компютърно-историческа” (като “Kingpin” и “Masters of Doom”)
“твърда фантастика” (“Blindsight”)
“Neal Stephenson”
или просто пак такава мешаница от теми?

Update: на streaming-а е имало в пиковия момент 15 човека. Изглежда има достатъчно интерес да се прави пак :)

Update 2: Запис.

Update 3: Списък с всички книги, за които бих говорил по темата, по идея на Ники Бачийски.

2012-07-03 книжна лекция

Tuesday, July 3rd, 2012

От 14:30 в събота (7 юли) в initLab ще направя лекция по темата “10 не-техническо-компютърджийски книги, интересни за компютърджии” (още работя по заглавието).
(часът е избран така че всички да са станали, които го правят – обядвали и да е преди концертите)

Спрямо четенето има различни групи хора.

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

Лекцията ще се излъчва на http://tyler.ludost.net:8787/lab.ts , ще има запис на va.ludost.net. Вероятно ще блогна казаното на лекцията след това.
Ако някой иска да задава въпроси, но няма да присъства на място – в irc на marla.ludost.net ще има канал #initlab и се надявам да намеря кой да стои там и да ми предава въпросите.

2012-07-01 leap second

Sunday, July 1st, 2012

Jul 1 02:59:59 marla kernel: [3317066.443888] Clock: inserting leap second 23:59:60 UTC

Полезна команда: /etc/init.d/ntp stop; date; date `date +”%m%d%H%M%C%y.%S”`; date; /etc/init.d/ntp start

(при някой може да е ntpd, видях го в outages листата)

Поради високосната секунда, която се появи снощи доста java приложения, firefox/iceweasel и някои версии на mysql, всичкото това под някои linux kernel-и и при още няколко условия зависват/започват да ядат много CPU. Горната команда помага, по принцип и с рестарт на приложението.

Моите наблюдения:
Стандартен debian-ски mysql със стандартен debian-ски kernel (stable) няма проблем на две машини (marla и tyler);
mysql 5.5.25-1~dotdeb.0 в/у debian stable имаше проблема;
tomcat6 на debian stable има проблема (tyler);
jenkins на debian stable има проблема;
virtualbox на ubuntu 10.10 (2.6.32-41-generic) и debian testing (3.2.0-2-amd64) virtualboxsvc-то има проблема (на phyllis);
gentoo с mysql 5.1 при ядро 3.3.6 (компилирано от мен) няма проблема;
debian testing с iceweasel има проблема;

Събирам още информация.

(12:47) Данни от Весо: RHEL6, kernel-2.6.32-220.23.1.el6.x86_64, mysql 5.1.61-1.el6_2.1 няма проблема.
(13:01) Данни от Пейо: fedora 15, kernel 2.6.43.2-6, mysql-5.5.22-1.fc15.x86_64 няма проблема.

Update: Хубаво обяснение на проблема.
Update 2: Още по-добро обяснение.

2012-06-19 какъв ни е проблемът с нещастието?

Tuesday, June 19th, 2012

Четейки си поредната книга (“Coming of age on Zoloft”) и говорейки си с разни хора и четейки различни публикации, започвам да се чудя – кога стана лошо и болестно човек да е нещастен?

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

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

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

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

Не се притеснявайте да сте нещастни, не се притеснявайте да искате да не сте и да правите нещо по въпроса. Полезно е:)

2012-06-18 избрани неща от прочетените в последно време книги

Monday, June 18th, 2012

Понеже почти не успях да спя днес (заспах в 8 сутринта) и ми е трудно да чета, ще взема да попиша.

Отдавна не съм писал за книгите, които чета (освен малко ревюта в goodreads), та ето малко избрани:

Изчетох цялата поредица “Тъмната кула” на Стивън Кинг (без “The wind through the keyhole”, която излезе наскоро и хронологично трябва да е някъде по средата между останалите). Може би не трябваше да го правя, защото след това не знам дали имам желание да чета каквото и да е дръго от него, няма как да се сравни и да е по-добро, та вероятно ще чакам да я позабравя.

Прочетох и Liars and Outliers на Брус Шнайер, книгата си струва да се изчете като нещо, което дава базова идея за поведението на различните човешки общества.

Преиздали са “Секретното дело за лагерите” на Христо Христов.

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

Заслужават да се споменат: The Death of Feminism на Phyllis Chesler (доста хубаво описание на проблемите на феминисткото движение), Cathedral, Forge & Waterwheel: Technology & Invention in the Middle Ages (харесах си я от Патрик Ротфус), Redshirts на John Scalzi (освен всичко, страхотна гавра със Star Trek), The Old New Thing: Practical Development Throughout the Evolution of Windows на Raymond Chen (книгата ме направи адски щастлив, че никога не съм писал за windows), Out of Mao’s Shadow на Phillip Pan (доста добра книга за Китай) и Wild thing на Josh Bazell (втора книга за Peter Brown, даже като гледам са я издали и на български, много приятно четиво и то ме насочи да прочета “Out of Mao’s Shadow” и “Methland”).

Специално внимание заслужава Sex at Dawn: The Prehistoric Origins of Modern Sexuality на Cristopher Ryan и Cacilda Jethá, заедно с “Blindsight”, “Woman’s Inhumanity to Woman” и “The Organization Man” влиза в категорията “книги, които сериозно отварят очите”. Вероятно трябва да я дават на учениците да я четат, заедно с литературата по полово обучение.

Останалото може да се види в goodreads, ако не ме домързи, някой път ще напиша export, който да сипва post в блога от последните X прочетени книги.

2012-06-12 android vs ios

Tuesday, June 12th, 2012

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

Съществува фалшивата дилема дали човек трябва да си вземе Android или iOS базиран телефон. Моето мнение е като избора между две различни лайна и реално един от най-правилните избори е “нито един от двата”. Ето малко причини, които съм открил около занимаването с development, четенето на разни статии и гледането на лекции от CCC Kongress и подобни събития:

Практически погледнато, от хардуерна гледна точка и от гледната точка на ниското ниво всичките smartphone-и (донякъде с изключение на openmoko) са затворени и осакатени системи без нормална спецификация. Baseband процесора е неясен и не може да се пипа (съответно никой не може да вкара в тия телефони елементарната функционалност за проверка дали ви правят man-in-the-middle атака), свързан е директно към микрофона и говорителите (пробвайте се да намерите елементарното приложение “телефонен секретар”). Това има хиляди полезни приложения (и доколкото знам, под symbian е възможно, не че и тях ги хваля), най-малкото свестен запис на разговорите, което доста хора искат.
Реално обаче повечето хардуер по телефона е затворен и неясен, както и неща по операционната система (това, че google ползват linux ядро не помага особено), което води до това всякакви тривиални и елементарни неща да се водят нещо велико – защото да се постигне каквото и да е на тия телефони е магия. Дори за win3.11 нямаше нужда от толкова безсмислен приложен софтуер. Разбира се, apple не помагат с техните тотално побъркани правила кое може и кое не може да влезе в appstore (и третират всички jailbreak-нати телефони и потребителите им като престъпници)…
Андроидите специално заслужават допълнително споменаване, как има милиони производители и почти никаква консистентност и яснота кое как да работи и как да се казва. Човек би си помислил, че apple плащат LSD-то на HTC и компания да измислят нови и нови простотии. Хубав пример беше как се казваше камерата на няколко различни устройства.

Платформите за разработка и на двете платформи са трагични. От една страна имаме xcode и objective c на apple (не вярвах, че може вариант на C да стане по-грозен от C++, но objective C определено го настига), от друга java и всичкия ужас, свързан с нея. Честно казано, да бяха избрали erlang за платформа щеше да е по-добре и в двата случая. Или prolog. Или pascal/delphi.

Синдромът “not invented here” и в двата случая е довел до ужасяващи api-та, но тук наистина не знам откъде да почна. Елементарни неща се оказват почти невероятни за правене (“stream”-ване на данни от файл от телефона, т.е. четене на части и изпращане на части, например, трябваше да го направим с google protobuf-а и май така и не се получи и трябваше да сменим аpi-то).

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

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

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

(един ден openmoko ще изкарат нов телефон, това вероятно бих го ползвал)

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: Има и запис на лекцията. Би трябвало да има и още един, от един фотоапарат, ще кача и него като го обработя.

2012-05-27 поредната курсова идея

Sunday, May 27th, 2012

(вече в трезво състояние) Ето я поредната идея за курс – този път мисля да го правя с Кънев (който до тук изглежда навит за идеята).

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

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

Системата представлява следното – имаме задачата да следим за глобалното затопляне (или глобалната климатична промяна и т.н.), като за целта имаме 150 места, на които имаме по два сензора, всеки от които е на различен отбор. Сензорите представляват малки PC-та (реално малки виртуални машини), на които отборът трябва да си подкара някаква OS и някакъв софтуер, който да чете данните и да ги праща веднъж на минута. Имаме по една агрегираща машина на отбор, която трябва да събира тия данни (някаква база).
Между агрегиращата машина и сензорите има мрежа, която трябва да се настрои и подкара, за да докара максимална отказоустойчивост. Отделни части от мрежата са на различни отбори.
Също така трите отбора имат по един front-end, който трябва да използват за визуализация и обработка на данните, например да намират корелация между данните от различни източници. Front-end-овете трябва да могат да работят по някакъв начин с всички агрегатори, ако основният им е отпаднал.
Има и различни весели неща, като например да се следи за загуба на данни и агрегаторите да си синхронизират базите по някакъв начин, така че да се добие пълна картина.

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

Целта на целия курс е да се научат хората на няколко неща:
1) работа в екип
2) работа с други екипи
3) работа над чужд код
4) дизайн на система с всичките протоколи и компоненти
5) да видят накрая нещо наистина работещо (т.е. да подобрим заданието до толкова, че да е използваемо от други хора)

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

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

Остава въпросът дали ще се намерят желаещи да участват.

2012-05-24 Кънев/ИББ

Thursday, May 24th, 2012

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

Около разговорите Кънев се притесни, че не може да говори с нас разни неща, понеже разни хора ще ги блогнем. Колкото и да ми се иска да не е прав, в крайна сметка не мога да си замълча…

Стефане, знам, че е срамно, но вече е публична тайна, че пишеш на Ruby, не е срамно и ние всички те обичаме въпреки това. Спри да се криеш и приеми факта.

In other news, доста добре се напихме. Имаше шанс утре да помагам в сглабянето на мебели в initLab, но явно няма да стане, освен ако не го правя насън.

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

2012-05-13 post-mortem на не-курса, в initLab

Sunday, May 13th, 2012

Стана време да направя една лекция в initLab за не-курса по системна администрация и дискусия, за какво би трябвало да има в следващия такъв. Ще се проведе от 16:00 в неделя (20 май).

2012-05-06 Лошото влияние на Стивън Кинг

Sunday, May 6th, 2012

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

Днес изчетох последната книга от Тъмната кула на Стивън Кинг (без да борим прясно излязлата “The wind through the keyhole”, за която ще си помисля първо) след като започнах с първата преди около седмица-две, и усещам как неговият стил се просмуква в мен и в нормалните ми разговори. Говорех си с една девойка за това възможно ли е мъже да продължават да си говорят с дадени жени, без да имат нещо повече от “приятелските” чувства, та се започна следния разговор:

(22,35,32) krok: мда. стоят хората на опашка и чакат да зарежеш приятеля си
(22,35,39) krok: може да си представиш една такава опашка изпаднали типове
(22,35,45) krok: до вратата ти
(22,35,49) krok: с потекли лиги
(22,36,02) krok: (и да накараш лъчко да го нарисува, може да му хареса идеята :) )
(22,36,35) krok: всъщност, и са надървени и гладни хората по редицата
(22,36,48) krok: не знам как се рисува гладен човек, ама той ще измисли нещо
(22,37,27) krok: (това звучи точно като сцена от нещо на стивън книг… добре ми е влязъл в главата :) )

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

Тръгвайки по идеята какво би могъл да напише Кинг по въпроса, последва следното нещо:

(22,56,47) krok: жалко
(22,56,53) krok: а той би могъл да опише всяка част от тях
(22,57,13) krok: как еди-кой-си си е ядял вечерята, когато усетил новината
(22,57,29) krok: която се е разпространила, да речем, по феромонен път, с огромна скорост
(22,57,37) krok: и как виси трети в редицата
(22,57,41) krok: оцапан с квото е ял
(22,57,53) krok: и леко прегърбен, щото първо се надървил, после станал, и се ударил лошо
(22,58,24) krok: и например леко му е скъсан панталона, а в оная му работа се е забила треска от масата
(22,58,28) krok: и тече кръв от там
(22,58,35) krok: и се смесва със лигите, дето му текат от устата
(нека да го кръстим Гошо)

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

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

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

….

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

По стълбите обаче нещо я хваща за крака. Цялата кръв е помогнала да се отвори проход към Тъмните измерения, където К’тулу отдавна стои и се опитва да стигне до нея (можем да кажем, че е влюбен, но е малко сложно да се обясняват чувствата на огромно лигаво зелено създание, съставено основно от пипала и злоба). Тя се опитва да се задържи, но се подхлъзва на парче откъснат скалп и изчезва в другото измерение, а дупката се затваря с тих мляскащ звук.

——————

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

2012-05-05 почистване в initLab

Saturday, May 5th, 2012

Пак съм забравил да пиша.

Поне днешния ден става за описване – почиствахме и оправяхме новата част на initLab, един апартамент в същата сграда, който ще се ползва за тих co-working space. Мястото е малко по-широко от самия lab, с три стаи и изглежда съвсем прилично след чистенето.

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

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

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

Равносметка на първия не-курс

Wednesday, April 25th, 2012

Свърши не-курсът по системна администрация. Ето какво горе-долу се случи в него:
(за справки, повечето неща се намират в wiki-то или в архива на maillist-а)

Всичко започна с един входен тест. Не беше нещо особено – идеята му беше да се изберат 10 различни човека, които да участват. Няколко човека, които бяха успели да се запишат за digest на листата и не бяха успели да попълнят теста, но останалото мина сравнително добре.

Последва инсталацията на машините. Имаше няколко различни проблема, които хората пребориха и един security такъв заради моята идея със setup с xvfb, който доведе до това единия участник да може да влезе в машините на няколко от другите участници.

(списък на задачите)

Първите задачи бяха да се подкара DNS за техните зони, irc и ntp. Услугите бяха просто и идеите бяха хората да си свикнат с машините и да могат да работят заедно, понеже DNS-а и IRC-то изискваха някаква координация – за първото всеки трябваше да има поне един secondary server, за второто четните и нечетните трябваше да си направят отделна мрежа.

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

След разместването беше “седмицата за почивка” – няколко задачи, които би трябвало да отнемат малко време, в продължение на седмица и малко, за да може хората да си планират сами времето и да решат кое кога да направят. В това влизаха неща като backup, restore и monitoring, както и да свържат двете irc мрежи в една.
Понеже двата екипа бяха избрали различни сървъри и под-протоколи на irc, за да си направят мрежите, свързването им се оказа интересен проблем, доста повече социален – нямаше практически начин двете мрежи да си говорят, поради огромната разлика в протоколите (TS5 и TS6, както и локалните модификации в UnrealIRCD и ircd-ratbox). Цялото нещо стана в общи линии в последния момент, но поради събрания опит при инсталацията всичко стана много бързо.

Имаше и подкарване на поща, с alias-и, прехвърлящи между машините. При тестовете даже успя да crash-не една от машините.

Последва задачата за възстановяване от backup. Беше доста забавно (за мен)…
(счупването на дисковете беше симулирано със следния скрипт:

sz=`ls -l "$1"| awk '{print $5}'`
let m=$sz/1048576
n=0;

while [ $n -lt $m ]; do
	let n=$n+1
	dd if=/dev/urandom of="$1" bs=1M count=1 seek=$n >/dev/null 2>/dev/null
	let n=$n+1
done

пуснат в/у всеки от виртуалните дискове, без предупреждение)

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

Финалната задача беше да се направи услуга, при която може да се качва на всяка машина файл и да може да се вижда от останалите. Реализацията, която направиха беше много интересна – WebDAV в/у gluster – и сработи доста добре.

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

Ето няколко от интересните mail-ове в листата, вместо край:
проблемът с xvfb
мрежов проблем с две виртуални машини на един интерфейс
начало на дискусия за пакетни системи срещу локално компилиране
дискусии за двете irc мрежи
ssl проблем с ircd-ratbox
самоотрязване на достъпа
свързването на двете irc мрежи

(и не ми се рови повече)

2012-04-18 прибиране от Холандия

Tuesday, April 17th, 2012

Днешния ден си заслужава описване сам по себе си…

Всичко си беше добре, докато не ми се обадиха с един проблем. Спряла сравнително важна машина (и сложна за дублиране), която не е убила всичко, но е добре да се върне.
Стандартният начин с reset не свърши работа, та се засилих към ipmi-то да се опитам да видя конзолата. Да, ама там на софтуера изтекли някакви сертификати и се оказа много много сложна задача да бъде подкаран, а понеже машината е доволно отдавнашна, не е ясно каква е точно и реших да не flash-вам firmware на сляпо.
Намери се един tool от supermicro, който да може да си говори с ipmi-то и конзолата. Последва паралелно подкарване на няколко варианта – пускане на тоя софтуер на машина там и гледане през remote X, подкарване на друга машина, подкарване вкъщи (много тъпа идея, щото vpn-а ми от там отиваше до счупената машина), подкарване при мен на лаптопа и на нов vpn (аз все пак си бях още в Холандия). Всичко това се развива в последните часове преди полета ми, та съответно трябва да се бърза…
В крайна сметка се добрах до желязото (първо през една толкова претоварена машина, че можеше да се работи до 10 минути и после се успиваше) и се оказа, че след всичките upgrade-и прекрасното gentoo просто не си казва и не си update-ва конфигурационните файлове, та мрежата (която има доста сериозна конфигурация) просто не тръгнала, заедно с още 4-5 service-а, дето пак има промени по конфигурацията им.
С проби и грешки (които, колкото и да е странно ми се струват повече от пробите) успях да подкарам базови неща по машината и да се вижда отвън. Финалните неща ги дооправях по пътя към летището, през tethering през някакъв телефон (за което много много много благодаря). Опитах се да се свържа с някой да види дали не съм пропуснал нещо, ама не можах да открия никой.
(останали бяха две не-спешни неща, които оправих преди малко)

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

На летището в Амстердам ме забавиха, защото някаква част от usb оборудването ми (един usb вентилатор) им беше заприличал на патрон (мисля, че Тинчев или Чорбаджийски ми го подариха), беше си направо смешно…
(нещо такова, ама само горната част, то е разглобяем комплект)

Полетът ми до Виена закъсня и трябваше малко на бегом да стигна до изхода за следващия, но те малко го забавиха и всичко стана както трябва (като гледам, и багажа ми са го прекачвали на бегом, има една лепенка на Lufthanza “HOT”).

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

2012-04-17 Холандия – 2

Tuesday, April 17th, 2012

Събирането за подготовката на OHM2013 мина добре. Видяхме един голям и много хубав hackerspace, на Яна и пирографираха с лазер една бисквитка, пихме до никое време (бутилката Lagavulin свърши за нормално време, червото много помогна), избрахме някакъв начален дизайн (Bob T. Hacker беше особено интересен, не беше избран, но хората така и така са навити да направят една огромна надуваема кукла да се извисява над събитието). Показаха и избраното място (т.е. най-най-вероятното, все още може да се случи нещо странно) – намира се до езеро, по-голямо е от това за HAR2009, предполага се, че ще събере над 3000 човека (т.е. няма да има върнати) и е близо до цивилизация, има шанс да мога да спя нормално и в човешки условия.

Ходих в Амстердамския университет, да погледна как водят една магистратура по системна администрация (запознах се на един купон с човек, който учи там), и донякъде ми стана тъжно, донякъде умрях от завист. Не е само това, че си имат достатъчно хардуер, свързаност и т.н. да си правят всякакви експерименти, но и всички е организирано като да е удобно и подходящо за учене, а програмата им е настина добра (даже на едно от централните бюра стоеше “The Practice of System and Network Administration”) – например в момента бяха на Penetration testing. Не вярвам да видя подобна програма (и правилно преподадена) в който и да е български университет…

Успях и да посетя една книжарница и да се натоваря с книги (добре, че куфарът ми е само 10кг от позволените 20, та ще мога да ги пренеса), основно с неща, които не би ми хрумнало да си търся в online книжарниците – малко Hunter S. Thompson, сборници разкази, новата на Скалзи, както и едно хартиено копие на Watchmen. Поне ще имам какво да чета по обратния път, след като си издъвках двете книги на път за насам.

А, и ако не съм казал – в Холандия е студено.