Machine Learning курс във ФМИ

Together with Mr. Eng. Dr. Lacho we decided to teach a course on Machine Learning at FMI this semester. I would like to tell you briefly.

In recent years machine learning has become very popular. Getting into it is difficult for a number of reasons – there are conceptual moments to understand, it requires an amount of mathematics and from the outside it looks like black magic. We will make a valiant attempt to present the material in the most understandable way so that everyone has a chance to get up to speed. Specific:

Continue reading

Не подценявайте XSS атаките

Cross-site scripting атаките са лесни за подценяване. Отгоре изглеждат като „някой хакер може да изпълнява alert в браузъра на потребителите“, но е по-дълбоко. Ще ви разкажа за определен тип уязвимост, която често виждам да се подценява, а е много лесна са сериозна експлоатация.

Именно „има XSS през URL параметър, но той не се записва в базата“.

Continue reading

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

Освен на 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