Дискретната математика бе един от най-забавните за мен предмети в университета. Не ми се отдаваше и не бе безкрайно полезна в работата ми, но пък разказваше за мистични неща като „крайни автомати“, „стекови автомати“ и „машини на Тюринг“. Шантави работи, последните от които имали мощността на който и да е език за програмиране. Не запомних много, но у мен остана усещане, че това е много интересна материя. От тогава все ми се искаше да се върна към нея. Тази книга ми даде възможност.
Разни блог промени и Chef
Реших да си преместя блога на нов сървър и да направя няколко бая закъснели upgrade-а. Като страничен ефект смених темата и оправих форматирането на по-старите постове. Ударих няколко камъка докато преместя и upgrade-на WordPress. Новата машина пък е конфигурирана с Chef. По тази причина може лесно да се пусне виртуална машина със същата конфигурация.
Искам да разкажа накратко за тези неща.
OpenFest 2013 Call for Papers
Тази година пак ще има OpenFest, пак ще бъде супер яко и пак ще е в Интерпред.
Имаме три зали, така че ако искате да говорите – попълнете тази форма. Всякаки предложения са добре дошли, така че не изпускайте 🙂
Двата вида refactoring
Някъде из Facebook някой пусна следната картинка с коментар „Какво е code refactoring“:

Хумористичната стойност настрана, това ми припомни една мисъл за рефакторирането, на която попаднах преди време:
VarnaConf 2013
Миналата година VarnaConf беше страхотен. Тази година – пак. Датата е съвсем скоро – идната събота. Преди това, ще направя два кратки workshop-а във VarnaLab, вдъхновен от един мъдър човек, направил нещо подобно миналата година.
Т.е., графика е:
- 18 юли, 19:30 – Clojure workshop. Какво е Clojure, как изглежда, какви са му яките неща.
- 19 юли, 19:30 – Test-Driven Development – Какво са unit и integration тестове? Какво са test sensitivities? Как изглежда TDD workflow-а? Какво е spike?
- 20 юли, 09:30 – VarnaConf. Ще говоря за разни проблеми в нашата индустрия.
PlovdivConf и Турнето
Миналата година направихме изключително яка конференция „в последния момент“ – VarnaConf. Оказа се, че няколко от нас са по едно и също време във Варна и решихме да направим малко събитие. Нямаше конкретна тематика, макар че се въртеше около програмиране. Получи се страхотно.
Тази година има по-амбициозен план – да направим няколко такива. Кодовото име на проекта е „Турнето“ (dub-нато от Васил) и понеже до сега не успяхме да измислим по-добре, ще трябва да живеем с него. Освен Варна, говорим си още за Бургас, Благоевград, Велико Търново и дори Русе.
Първото събитие е в Пловдив, след по-малко от две седмици – PlovdivConf. Хората от Hackafe Plovdiv помогнаха изключително много, за което сме благодарни. Засега са известни всички лектори (без един) и съвсем скоро ще пуснем темите им. Ще има after-party, както и вероятно някакво малко събиране на предишния ден.
Дотогава – не забравяйте да отбележите в събитието във Facebook, че ще дойдете. Ако пък искате тениска – запишете се.
Курс по Test-Driven Development
От край време ми се върти в главата идеята да направя курс по Test-Driven Development. Искам да систематизирам и споделя неща, над които съм разсъждавал и с които съм експериментирал последните няколко години. Съответно, скоро мисля да стане реалност. Continue reading
Поглед назад IV: кратка ретроспекция на 2012
Тази година бе гадна. В личностно/емоционално отношение бе почти пълен провал. Всъщност, не съм сигурен какво я дели от пълен провял – вероятно това, че съм имал и по-лоши. Направих повече грешки, отколкото мога да преброя. Нараних хора. Прекарах повечко време в депресия и гледане на сериали. Burnout-нах и продължих да работя, вместо да си почина. Тепърва започвам да се осъзнавам.
Но вече свърши. Време е за ретроспекция.
Искам да се фокусирам над позитивното, понеже имаше и такова. Лесно е да забравиш хубавото, когато виждаш само лошото. А хубаво имаше – постигнах неща, от които съм горд. Искам да ги споделя.
Data-Directed Programming
В началото на годината, аз и няколко приятели се организирахме в SICP Study Group. Макар повечето материал досега да е основен, научих любопитни неща. Искам да разпиша едно от тях – data-directed programming.
Това е интересна идея, която продължава тази тема. Понятието „data-directed programming“ идва от SICP. Наподобява multi-dispatch (или visitor design pattern). Примерите в книгата са на Scheme, но аз ще се опитам да ги преведа на Python. Това няма да бъде най-идиоматичният Python, но пък ще бъде добра илюстрация. Направил съм , така че да може да го разгледате спокойно.
Ще покажа няколко синтетични примера, които едва ли ще направя в практиката (например класове Integer и Rational). Все пак, идеите имат приложение. Първото, което ми хрумва, е работа с абстрактни синтактични дървета. Далеч не е единственото.
Проблемът
Проблемът е следният: имаме няколко типа (Circle, Square) които могат да работят с генерични операции (area, perimeter). Въпросът е как бихме могли да организираме типовете и операциите и какви биха били последствията от всеки различен начин на представяне, който изберем. Друг възможен пример е система с четири вида числа – цели, рационални, реални и комплексни, които трябва да поддържат аритметичните операции – събиране, умножение и т.н.
Ще ползвам първия пример – типове Circle и Square с операции area и perimeter. Това е изключително опростен пример, но ще свърши работа. Имайте предвид, че принципите, които предстои да илюстрирам, важат и за операции с повече от един аргумент (например събиране на две числа).
Слайдове (и линк) от OpenFest
Това са бележките от курса на MIT 6.170.
Не забравяйте за GitHub drinkup-а в неделя вечер.