От край време ми се върти в главата идеята да направя курс по Test-Driven Development. Искам да систематизирам и споделя неща, над които съм разсъждавал и с които съм експериментирал последните няколко години. Съответно, скоро мисля да стане реалност. Още…
Dec 31 2012
Поглед назад IV: кратка ретроспекция на 2012
Тази година бе гадна. В личностно/емоционално отношение бе почти пълен провал. Всъщност, не съм сигурен какво я дели от пълен провял – вероятно това, че съм имал и по-лоши. Направих повече грешки, отколкото мога да преброя. Нараних хора. Прекарах повечко време в депресия и гледане на сериали. Burnout-нах и продължих да работя, вместо да си почина. Тепърва започвам да се осъзнавам.
Но вече свърши. Време е за ретроспекция.
Искам да се фокусирам над позитивното, понеже имаше и такова. Лесно е да забравиш хубавото, когато виждаш само лошото. А хубаво имаше – постигнах неща, от които съм горд. Искам да ги споделя.
Nov 08 2012
Data-Directed Programming
В началото на годината, аз и няколко приятели се организирахме в SICP Study Group. Макар повечето материал досега да е основен, научих любопитни неща. Искам да разпиша едно от тях – data-directed programming.
Това е интересна идея, която продължава тази тема. Понятието „data-directed programming“ идва от SICP. Наподобява multi-dispatch (или visitor design pattern). Примерите в книгата са на Scheme, но аз ще се опитам да ги преведа на Python. Това няма да бъде най-идиоматичният Python, но пък ще бъде добра илюстрация. Направил съм [gist, съдържащ целия код][gist], така че да може да го разгледате спокойно.
Ще покажа няколко синтетични примера, които едва ли ще направя в практиката (например класове Integer и Rational). Все пак, идеите имат приложение. Първото, което ми хрумва, е работа с абстрактни синтактични дървета. Далеч не е единственото.
Проблемът
Проблемът е следният: имаме няколко типа (Circle, Square) които могат да работят с генерични операции (area, perimeter). Въпросът е как бихме могли да организираме типовете и операциите и какви биха били последствията от всеки различен начин на представяне, който изберем. Друг възможен пример е система с четири вида числа – цели, рационални, реални и комплексни, които трябва да поддържат аритметичните операции – събиране, умножение и т.н.
Ще ползвам първия пример – типове Circle и Square с операции area и perimeter. Това е изключително опростен пример, но ще свърши работа. Имайте предвид, че принципите, които предстои да илюстрирам, важат и за операции с повече от един аргумент (например събиране на две числа).
Nov 03 2012
Слайдове (и линк) от OpenFest
Това са бележките от курса на MIT 6.170.
Не забравяйте за GitHub drinkup-а в неделя вечер.
Oct 23 2012
Поредния Code Retreat
Съвсем накратко: този път ще бъде в Телерик и ще се проведе идната събота (27ми октомври).
Този път се опитваме да има скромно интернационално участие. Едва ли ще има повече от един-двама човека, но все пак — надеждата умира последна. Ако искате да се регистрирате, можете да го направите на balkan-coderetreat.com.
Aug 07 2012
Варна и VarnaConf
Този август исках да прекарам малко време във Варна. От една страна съм уморен от столицата, от втора – море, от трета – мога да се проявя във VarnaLab и от съвсем четвърта – пътуването е фън. Оказа се, че няколко познати ще бъдат там по същото време и Радо предложи да направим малка конференция с трима-четирима лектора.
Разбира се, нещата ескалираха бързо – роди се VarnaConf. Засега е много скромни, но силно се надявам да се превърне в ежегодишна dev конференция. Но това е друга тема.
Мисля да пристигна във Варна четвъртък сутрин и да остана няколко дни след конференция. Освен презентацията на VarnaConf, мисля да направя още няколко неща.
Програмата ми, в хронологичен ред, е следната: Още…
Aug 05 2012
Нашите курсове във ФМИ 2012/2013 и evans
През 2007 с Ники Бачийски подхванахме един избираем курс по Python. Трудно ми е да опиша колко положителни емоции и опит ми донесе. От тогава не сме спирали да го водим и дори сме пробвали няколко други (един по Rails и един по Ruby). Всъщност, Ruby-то бе миналата година и (според мен) бе най-добрия ни курс.
Вече не сме само двама. За тези шест години сме събрали малък екип от хора, които помагат по всевъзможни начини. Също така, разрастваме начинанието – тази година ще направим цели три курса – (1) Ruby през зимния семестър и (2) Python и (3) Clojure през летния. Разбира се, ако учите във ФМИ, горещо ви ги препоръчвам.
Но не пиша за това. Още не съм сигурен каква ще е моята активност в тези курсове, тъй като отново планирам местене в чужбина. Но нещо, в което съм сигурен, е че това лято ще обърна повече внимание на сайта на курса. И мисля, че това може да ви е интересно. Нека да обясня.
Сайтът е изключително централен за курса. Там студентите предават домашни, там могат да задават въпроси, там даваме обратна връзка за решенията им и там се пазят всички точки, изкарали до момента (точките определят оценката). Има ред механики, за които той е централен. Например, за да поощрим участитето в час, подхвърляме по един Snickers на студентите задали добър въпрос или дали добър отговор. Освен че е забавно и изключително калорично, на Snickers-а има залепен код. Ако го въведат на сайта получават точка. Имаме идеи за още няколко подобни механики, които ще имплементираме тази година. И тук може да се включите. Още…
Jul 12 2012
Code Retreat №4
За четвърти път ще организирам Code Retreat в София. Датата е 21 юли 2012, часът е 09:00. Мястото отново ще бъде в офиса на Software Society.
Ще протече както е протичал и до сега. Всички са напълно добре дошли. Ако се колебаете или имате някакви въпроси, питайте ме тук и ще ви отговоря с най-голяма радост.
Ако ще идвате, задължително е да се регистрирате на сайта на Software Society.
May 15 2012
Видео от „Майсторство в занаята“
След много труд и пот от Митьо и Ася (thanks guys!), видеото е готово. Ето го:
Ето ги и слайдовете:
П.П.: Има и запис от Габрово
May 07 2012
Презентация: Майсторство в занаята
Вчера бяхме на OpenFest Габрово (снимки от Мариян). Беше супер. Тези малки конференции извън София са страхотни и искам да има повече. Но блогвам по друга причина.
Презентацията ми се казваше „Майсторство в занаята“ и комбинира идеи, над които напоследък често разсъждавам. Хареса ми как се получи, макар че има нужда да я поошлайфам малко. По тази причина, ще я повторя в четвъртък (10ти май). Мястото е ФМИ, залата е 200, а часът е 19:15. Ще бъде част от курса по Python, но за разнообразие, няма да говоря за Python. Входът, разбира се, е свободен.
Презентацията е от две части. В първата говоря за програмирането като кариера и няколко трудни истини свързани с него. Втората съдържа няколко урока, които ми се иска да бях научил преди 10 години. Идеите много ме ентусиазират – искам да ги споделя с повече хора.
Така че – заповядайте. Ако имате проблеми с това да намерите ФМИ или залата – пишете ми и ще ви помогна. След това вероятно ще отидем да изпием по една-две бири. Може да останете за тях.
П.П.: Ще кача слайдовете по-късно тази седмица. Ще се опитам да събера част от нещата в блог пост.