Любимият ми пример за четимост

Освен на Python, в курса ни във ФМИ се опитваме да учим студентите на „добър код“ (каквото и да значи това). Всеки семестър правим поне една лекция на тема „добри практики“ (спорно с каква успеваемост, понеже такива неща се учат с реални проекти, а не лекции). Искам да споделя любимия си пример.

Continue reading

IDE-то е наклонена плоскост

Това са малко размисли на тема IDE-та (като Eclipse, IntelliJ и RubyMine) и редактори (като Vim, Emacs и SublimeText). Ще разкажа за един проблем с IDE-тата. Disclaimer: не смятам едните за строго по-добри от други – избора, както обикновено, зависи от контекста.

Continue reading

Загубени в превода: Design Patterns

Този пост е съставен от две неща – кратък rant за някои особености на българския език и странен паралел с designs patterns (които упорито няма да наричам „шаблони за дизайн“). Първо ще се опитам да ви убедя в загубената кауза да използваме „чуждици“ като „патърн“ (или „патерн“) и след това (за пореден път) ще се опитам да илюстирирам, че „дизайн патърните“ въобще не са нещо лошо, дори в език като Ruby.

Continue reading

Отварящата скоба и новият ред

Върл привърженик съм на идеята, че няма значение каква е конвенцията, стига да се спазва от всички в екипа с религиозен фанатизъм. Дори веднъж, когато приготвях pull request за един проект, се усъмних, че не съм съвсем в тон със стилистиката му. Прегледах кода още веднъж, и установих, че автора никъде не е ползвал unless – вместо това навсъкъде прави if !. Никак не бях съгласен с тази идея, но това не бе моя проект и послушно заместих моя unless с неговия if ! преди да отворя PR-а. Но има една конвенция, която не ми се е налагало да следвам, и ми е трудно да си представя как бих я понесъл.

Говоря за отваряща „къдрава“ скоба на нов ред. Така и не схванах защо някой би предпочел да го прави. Но след като препрочетох K&R, мисля че разбрах откъде идва.

Continue reading

Езици за програмиране и нотация

Неведнъж са ми се чудели защо се занимавам със всякакви екзотични езици за програмиране. Има ред причини, и учудващо, всички са практически. „Учудващо“, защото приложението не е очевидно – докато няма скоро да пиша production на Io, научаването му направи Ruby кода ми по-добър. Дори преди години имаше подобна серия от блог постове – Как език X ме направи по-добър програмист в Y. Друг е въпросът дали няма по-ефективен начин от постоянното учене на езици. Това настрана, искам да разкажа за един интересен аспект на „програмистската полиглотност“, за който ще направя паралел с математиката.

Continue reading

Поглед назад V: още по-кратка ретроспекция на 2013

По всички критерии, тази година бе една от странните. Гледайки назад, ми се струва, че съм постигнал срамно по-малко, отколкото ми се искаше. От друга страна, не е толкова малко, колкото си мисля. Нещата включват:

Continue reading

Защо не правим refactoring?

От време на време ми се случва да чувам неубедителни причини защо във фирмата на познат да не се рефакторира. Неща като „клиентът не иска“ или „няма време“. Повечето се свеждат до няколко грешни схващания за refactoring-а, най-честата от които: трябва да се отдели специално време за него. Писах за нещо подобно преди време – рефакториране тип „чистене на гараж“ и тип „чистене на кухня“. С този пост ще се опитам да разкажа няколко неща, които биха помогнали за „убеждаването“ на колеги, мениджъри или клиенти, както и за имплементирането ѝ.

Continue reading

Understanding Computation

Дискретната математика бе един от най-забавните за мен предмети в университета. Не ми се отдаваше и не бе безкрайно полезна в работата ми, но пък разказваше за мистични неща като „крайни автомати“, „стекови автомати“ и „машини на Тюринг“. Шантави работи, последните от които имали мощността на който и да е език за програмиране. Не запомних много, но у мен остана усещане, че това е много интересна материя. От тогава все ми се искаше да се върна към нея. Тази книга ми даде възможност.

Continue reading

Разни блог промени и Chef

Реших да си преместя блога на нов сървър и да направя няколко бая закъснели upgrade-а. Като страничен ефект смених темата и оправих форматирането на по-старите постове. Ударих няколко камъка докато преместя и upgrade-на WordPress. Новата машина пък е конфигурирана с Chef. По тази причина може лесно да се пусне виртуална машина със същата конфигурация.

Искам да разкажа накратко за тези неща.

Continue reading