<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Codito ergo sum &#187; Програмиране</title>
	<atom:link href="http://skanev.com/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://skanev.com</link>
	<description>Блогът на Стефан Кънев</description>
	<lastBuildDate>Mon, 25 Jan 2010 18:33:20 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Защо харесвам Java?</title>
		<link>http://skanev.com/2009/12/11/why-do-i-like-java/</link>
		<comments>http://skanev.com/2009/12/11/why-do-i-like-java/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 20:55:03 +0000</pubDate>
		<dc:creator>Стефан Кънев</dc:creator>
				<category><![CDATA[Програмиране]]></category>

		<guid isPermaLink="false">http://skanev.com/?p=319</guid>
		<description><![CDATA[Разглеждах книги в книжарницата. Видях няколко за Java и ми се прииска да ги купя. Това ме изненада &#8212; от почти две години не пиша на Java. Запитах се защо и открих, че храня много прияти спомени от това време. Не мисля, че бих започнал нов проект или бих се хванал на работа с Java. [...]]]></description>
			<content:encoded><![CDATA[<p>Разглеждах книги в книжарницата. Видях няколко за Java и ми се прииска да ги купя. Това ме изненада &#8212; от почти две години не пиша на Java. Запитах се защо и открих, че храня много прияти спомени от това време. Не мисля, че бих започнал нов проект или бих се хванал на работа с Java. Но съм научил много неща покрай него. И продължавам да научавам. Нека обясня.</p>

<p><span id="more-319"></span>
<strong>Езикът</strong> опитва да бъде прост и лесен. Конструкциите са сведени до минимум. Оставени са само най-лесните за научаване. Всичко, което е дори &#8222;малко опасно&#8220; или &#8222;малко сложно&#8220; (управление на паметта, предефиниране на оператори) или води към &#8222;съмнителни практики&#8220; (код в глобалното наименовано пространство, функции без клас) е изхвърлено. Резултатът е прост език, който се научава за една вечер. Кодът е много лесен за разбиране. Подходящ за посредствени или &#8222;не-толкова-добри&#8220; програмисти.</p>

<p>Ако за момент зарежа <acronym title="хаха, да бе. почти си повярвах">политическата коректност</acronym>: език, на който да могат да работят идиоти. Вероятно знаете, но аз вярвам, че идиотите <a href="http://skanev.com/2008/03/05/when-to-look-for-a-new-profession/">трябва да си сменят професията</a>, а не да ползват компилатор. Радикалното ми мнение настрана, не мога да харесвам език, който ми вързва ръцете.</p>

<p>Не харесвам Java задари езика.</p>

<p><strong>Платформата</strong> е невероятно добра. Или поне така казват. Чувал съм хора да твърдят, че е писана от <acronym title="забавен начин да кажеш, че авторите &#1117; не са хора; ако акронимите можеха да се влагат, тук щеше да пише 'невероятни програмисти'">извънземни</acronym>. Това досега не ме е интересувало. Почти всичкия софтуер, който съм правил се оправя страхотно с релационна база данни като PostgreSQL и интерпретативен език като Ruby. Всъщност, би се оправил дори и върху PHP и MySQL. Рядко съм изпитвал нуждата от повече. Единственото, което усещам, е че се стартира бавно и яде много памет.</p>

<p>Така че не, не харесвам Java заради платформата.</p>

<p>Обаче:</p>

<p><acronym title="количествено и качествено">Много</acronym> умни хора го правят. Бившите Smalltalk-аджии, agile общността и гурутата на обектно-ориентираното програмиране &#8212; всички те се ориентираха към Java. Предполагам защото платформата е страхотна, а езика &#8212; поносим. Това създава интересна ситуация &#8212; умни (да не кажа &#8212; брилянтни) хора ползват Java за да си свършат работата. Това довежда до редица креативни решения &#8212; книги с добри практики, нови подходи като AspectJ, framework-ци като Spring и Hibernate и прочее. Дори и Maven, всъщност. Понеже Java е прост и ограничен език, тези неща се лесни за разбиране. Могат да се демонстрират в много чиста форма.</p>

<p>Покрай Java съм научил много. Хватки за писане на автоматизирани тестове, добри практики, методологии, редица pattern-и и предимствата на IDE-та. Когато група умни хора са изправени с твърди ограничения, те достигат до нещо добро. Намират прости и елегантни начини да се справят с тях. Нужна е малко наблюдателност да ги забележиш, малко опит да ги осмислиш и малко въображение да го приложиш на друго място (например Ruby). Всичко, което съм научил като Java програмист ми е било полезно (по един или друг начин) в Ruby. Или в Python, Perl и PHP, ако става въпрос.</p>

<hr />

<p>Двете книги, от които това започна са:</p>

<ul>
<li><a href="http://pragprog.com/titles/dhnako/domain-driven-design-using-naked-objects">Domain-Driven Design using Naked Objects</a></li>
<li><a href="http://pragprog.com/titles/cwosg/modular-java">Modular Java</a></li>
</ul>

<p>Не знам дали са добри, но технологиите плюс репутацията на издателя предизвикват интерес. Някой да има наблюдения?</p>
]]></content:encoded>
			<wfw:commentRss>http://skanev.com/2009/12/11/why-do-i-like-java/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Малка Rails конференция</title>
		<link>http://skanev.com/2009/06/24/a-small-rails-conference/</link>
		<comments>http://skanev.com/2009/06/24/a-small-rails-conference/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 09:46:53 +0000</pubDate>
		<dc:creator>Стефан Кънев</dc:creator>
				<category><![CDATA[Програмиране]]></category>

		<guid isPermaLink="false">http://skanev.com/?p=271</guid>
		<description><![CDATA[С помощта на хората от linux.bg конференциите ще направим скромна конференция на тема Ruby on Rails в София. Официалната новина за събитието е тук. Ето и моя съкратен преразказ:

Някъде прочетох, че ключът към провала е да опитваш да удовлетвориш всички. Но Bill Cosby е предпоследният, от който ще приема бромид (след Homer Simpsons) &#8212; и [...]]]></description>
			<content:encoded><![CDATA[<p>С помощта на хората от <a href="http://conf.linux-bg.org/">linux.bg конференциите</a> ще направим скромна конференция на тема Ruby on Rails в София. Официалната новина за събитието е <a href="http://techcamp.eu/2009/06/21/rails-конференция-27-06-2009/">тук</a>. Ето и моя съкратен преразказ:</p>

<p><a href="http://twitter.com/ildalina/status/2221064610">Някъде</a> прочетох, че ключът към провала е да опитваш да удовлетвориш всички. Но Bill Cosby е предпоследният, от който ще приема бромид (след Homer Simpsons) &#8212; и точно това ще се опитаме да направим. Под всички имам предвид диапазона между опитните &#8222;Релсисти&#8220; и хората без никаква идея от Ruby on Rails.</p>

<p>Ако сте във втората група, би трябвало цялото събитие да ви е интересно. Но <strong>първата част</strong> ще е специално за вас. Ще започнем със стабилно въведение в технологиите и ще завършим с &#8222;живо кодене&#8220; на просто приложение. Така първо ще чуете как стават нещата, а после ще може и да видите. И разбира се, да ни питате за всичко, което не разбирате.</p>

<p><strong>Втората част</strong> част таргетира хората работещи с Rails. Въпреки това, темите са много и интересни и дори да сте разбрали за Rails в същия ден, ще бъдат добра инвестиция на време. Има силен акцент върху автоматизирано тестване &#8212; и двете теми ще ви бъдат от полза, независимо дали сте опитен <acronym title="Test-Driven Developer">TDDer</acronym> или искате да научите за това тепърва.</p>

<p><strong>Започваме в 10:00 часа сутрина (а не в 13:00 следобяд).</strong> Можете да видите цялата програма <a href="http://techcamp.eu/2009/06/21/rails-конференция-27-06-2009/">тук</a>.</p>

<p>Дотук се простират уменията ми да пиша промотиращи текстове. Отвъд това, ще се радвам да се видим там.</p>
]]></content:encoded>
			<wfw:commentRss>http://skanev.com/2009/06/24/a-small-rails-conference/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>sofia.rb</title>
		<link>http://skanev.com/2009/05/13/sofiarb/</link>
		<comments>http://skanev.com/2009/05/13/sofiarb/#comments</comments>
		<pubDate>Wed, 13 May 2009 10:39:17 +0000</pubDate>
		<dc:creator>Стефан Кънев</dc:creator>
				<category><![CDATA[Програмиране]]></category>

		<guid isPermaLink="false">http://skanev.com/?p=227</guid>
		<description><![CDATA[Преди време бях в Сиатъл. Там присъствах на seattle.rb hack night и това беше едно от най-яките преживявания годината. Това породи идеята за sofia.rb. Накратко:


Събираме се всеки вторник от 20:00 в Арт Клуба. За да присъствате, трябва да отговаряте на две условия — (1) да носите компютър и (2) да програмирате на Ruby (там, на [...]]]></description>
			<content:encoded><![CDATA[<p>Преди време бях в Сиатъл. Там присъствах на seattle.rb hack night и това беше едно от най-яките преживявания годината. Това породи идеята за sofia.rb. Накратко:
<span id="more-227"></span></p>

<p>Събираме се всеки вторник от 20:00 в Арт Клуба. За да присъствате, трябва да отговаряте на две условия — (1) да носите компютър и (2) да програмирате на Ruby (там, на място). Събитието изглежда като пет-шест кодещи човека с лаптопи, които от време на време обменят по някоя приказка.</p>

<p>А над какво работите, докато сте там? На каквото си поискате. Нямаме единен проект или цел. Може да вършите нещо за работата, да разработвате страничен проект, да разучавате библиотека или дори да учите Ruby. Например, проследния път <a href="http://sovanesyan.com/">Серж</a> си правеше един проект за клиенти, <a href="http://initlab.startup-bg.org/">Владимир</a> учеше Ruby, аз правих desktop клиент за edno23, <a href="http://svejo.net/reception/about/#us">Явор</a> разработваше един от тайните си проекти. Предния път <a href="http://nikolay.bg/">Николай</a> пък работеше над <a href="http://fmi.py-bg.net/">сайта на курса</a>. Въобще, всичко е ОК, стига да е Ruby.</p>

<p>Идеята е хора, които не работим заедно, да програмираме на едно място — без значение дали коденето е колективно или индивидуално. Има два големи WIN-а в тая работа — (1) хубав начин да научите нещо ново и (2) да се запознаете с други добри програмисти. Постоянно летят въпроси от рода на:</p>

<ul>
    <li>Как да направя това?</li>
    <li>Този код ОК ли е?</li>
    <li>Тук има някакъв странен проблем. Ще погледнеш ли?</li>
    <li>Какво мислиш за тази библиотека?</li>
</ul>

<p>Отвъд другото, е приятен начин да прекараш вечерта — сред интелигентни хора, от които можеш да научиш за занаята.</p>

<p>Претенциите са скромни — не целим да правим потребителска група, български open source на Ruby, голям проект или каквото и да е в този дух. Предлагаме единствено компания за програмиране на Ruby. Доброто настроение си идва само.</p>

<p>Ако искате да дойдете, ще се радваме да ви видим. Хубаво е да се обадите предварително, ако ще идвате. Но ще се радваме и да ни изненадате. Всеки вторник, 20:00 в Арт Клуба.</p>

<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps/ms?ie=UTF8&amp;t=h&amp;msa=0&amp;msid=102353012999522920226.000469c8c0c338291515f&amp;ll=42.690495,23.338308&amp;spn=0.00552,0.00912&amp;z=16&amp;output=embed"></iframe>
]]></content:encoded>
			<wfw:commentRss>http://skanev.com/2009/05/13/sofiarb/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Legacy</title>
		<link>http://skanev.com/2009/04/27/legacy/</link>
		<comments>http://skanev.com/2009/04/27/legacy/#comments</comments>
		<pubDate>Mon, 27 Apr 2009 21:59:30 +0000</pubDate>
		<dc:creator>Стефан Кънев</dc:creator>
				<category><![CDATA[Програмиране]]></category>

		<guid isPermaLink="false">http://skanev.com/?p=216</guid>
		<description><![CDATA[Най-много прекарано време: поддържка на гаден код. Зъл, противен, гнусен и ужасен код, в който има hardcode-нати IP адреси, директории на конкретни машини, потребителски имена и всякакви други гадости. Код, който е написан по толкова тъп начин, че дори умишлено не мога да съчиня такава глупост. Код, който може да накара всеки кадърен програмист да [...]]]></description>
			<content:encoded><![CDATA[<p>Най-много прекарано време: поддържка на гаден код. Зъл, противен, гнусен и ужасен код, в който има hardcode-нати IP адреси, директории на конкретни машини, потребителски имена и всякакви други гадости. Код, който е написан по толкова тъп начин, че дори умишлено не мога да съчиня такава глупост. Код, който може да накара всеки кадърен програмист да се застреля.</p>

<p>А най-интересното е, че обожавам да ми дават такъв код. Едно от нещата, които обичам най-много, е да взимам такива бози и да ги подобрявам драстично. Стига да ми дадат&#8230;<span id="more-216"></span></p>

<p>Защо? Защото е невероятно голямо предизвикателство. Трябва да подходиш много внимателно и стратегически. Рядко можеш да си позволиш чист rewrite. Трябва да refactor-ваш малко по малко. Преди това трябва да се подсигуриш с unit test-ове. Трябва постоянно да се стремиш да правиш кода по-добър, но същевременно не бива да забравяш, че имаш конкретни цели. Трябва да подобриш системата малко по малко, компонент по компонент, избирайки най-подходящия ред, в който да го направиш. Трябва да се заровиш дълбоко в кода на някой болен мозък и да разбереш какво всъщност е имал предвид.</p>

<p>Обожавам да започна с тъпо написана система и да завърша със сносен софтуер. Чувството от успеха е несравнимо.</p>

<p>Единственото, което може да развали една толкова предизвикателна задача е лош мениджър&#8230; Когато двете се комбиринат, животът е ад.</p>
]]></content:encoded>
			<wfw:commentRss>http://skanev.com/2009/04/27/legacy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Една отнесена метафора</title>
		<link>http://skanev.com/2009/04/17/far-fetched-metaphor/</link>
		<comments>http://skanev.com/2009/04/17/far-fetched-metaphor/#comments</comments>
		<pubDate>Fri, 17 Apr 2009 21:57:15 +0000</pubDate>
		<dc:creator>Стефан Кънев</dc:creator>
				<category><![CDATA[Програмиране]]></category>

		<guid isPermaLink="false">http://skanev.com/?p=203</guid>
		<description><![CDATA[Героят на този трагичен разказ ще бъде един най-обикновен човек. Да го наречем Георги.

Един ден на Жоро му се наложило да изкопае дупка в земята. Жоро не знаел нищо за копаенето &#8212; той просто се навел над мястото и започнал да мести пръст с ръце. Не минало време, и нашият герой установил, че така не [...]]]></description>
			<content:encoded><![CDATA[<p>Героят на този трагичен разказ ще бъде един най-обикновен човек. Да го наречем Георги.</p>

<p>Един ден на Жоро му се наложило да изкопае дупка в земята. Жоро не знаел нищо за копаенето &#8212; той просто се навел над мястото и започнал да мести пръст с ръце. Не минало време, и нашият герой установил, че така не си е работа &#8212; нито напредвал, нито му било много приятно. Почнал да изследва други подходи &#8212; да копае с лъжица, да ръчка земята с пръчка, да &#1117; крещи и да я заплашва. Нищо не помагало&#8230;
<span id="more-203"></span></p>

<p>Но Георги намерил от някъде една тънка квадратна дъска. Пробвал да копае с нея и се оказало доста по-удобно. С времето направил няколко подобрениея. Заострил я от едната страна, за да се забива по-лесно. Вързал една дълга пръчка за да може по-лесно да загребва. Вярно, дъската често се чупила &#8212; в някой камък или просто се износвала &#8212; но той си намирал нова и започвал с нея.</p>

<p>Видял Жоро, че така се копае добре. Казал си &#8222;Това работи за мен&#8220;. И си направил бизнес. За копаене на дупки. Имал много клиенти и всички ги обслужвал със своята технология. Тя вече не просто му била достатъчна &#8212; той се прехранвал с нея. И бизнесът му растял&#8230;</p>

<p>И кое било най-тъжното? Че някой му плащал? Не. Че загубил толкова време да си разработи &#8222;технологията&#8220;? Не. Че продавали по-добри лопати в магазина? Дори това не. Драмата била, че хората правели научни изследвания как се копаят дупки, писали книги в които да споделят опита си, дори изработили специални машини за копаене на дупки, но нашият Георги не знаел нищо за това. И не го интересувало &#8212; все пак, защо да го интересува? Та дъска завързана за пръчка вместо лопата не просто работила за него &#8212; тя му носела пари!</p>

<p>Често се чудя дали програмирането и копаенето на дупки имат нещо общо. Често се чудя и защо толкова много хора на този свят се казват &#8222;Георги&#8220;&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://skanev.com/2009/04/17/far-fetched-metaphor/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Какво си мислят?</title>
		<link>http://skanev.com/2009/01/24/what-are-they-thinking/</link>
		<comments>http://skanev.com/2009/01/24/what-are-they-thinking/#comments</comments>
		<pubDate>Fri, 23 Jan 2009 22:21:29 +0000</pubDate>
		<dc:creator>Стефан Кънев</dc:creator>
				<category><![CDATA[Програмиране]]></category>

		<guid isPermaLink="false">http://skanev.com/?p=188</guid>
		<description><![CDATA[Направих първият си уеб сайт докато бях на 14. Тогава вече знаех (малко) HTML и JavaScript от курсове в училище &#8222;Европа&#8220; за &#8222;уеб програмиране&#8220;, които посещавах докато бях на 11-12. През това време си играех със всякакви глупости &#8211; &#8222;камък, ножица, хартия&#8220; в JavaScript, &#8222;анимиран&#8220; текст, сменящи се плавно цветове и прочее. Въпросният първи сайт [...]]]></description>
			<content:encoded><![CDATA[<p>Направих първият си уеб сайт докато бях на 14. Тогава вече знаех (малко) HTML и JavaScript от курсове в училище &#8222;Европа&#8220; за &#8222;уеб програмиране&#8220;, които посещавах докато бях на 11-12. През това време си играех със всякакви глупости &#8211; &#8222;камък, ножица, хартия&#8220; в JavaScript, &#8222;анимиран&#8220; текст, сменящи се плавно цветове и прочее. Въпросният първи сайт нямаше един ред <acronym title="Cascading Style Sheets">CSS</acronym>. Ползваше тлъсти слоеве <code>&lt;font&gt;</code>, <code>&lt;center&gt;</code> и <code>&lt;table&gt;</code> етикети. Всеки един съм го влагал поне четири пъти в негов събрат.</p>

<p>И тежеше много килобайти.</p>

<p><span id="more-188"></span>
Показах го на един приятел и той ми се изсмя. Не разбирах защо ми се смее (не беше програмист, а &#8222;продуцент&#8220;) тогава. Прати ми някакви линкове за разделяне на представяне от съдържание и семантичен код. Още не бях чул за акронима <acronym title="Search Engine Optimization">SEO</acronym>. Повечето други хора също не го бяха чували, вярвам. Разбрах и за <a href="http://www.csszengarden.com/">CSS Zen Garden</a>. Така научих за добрите практики в уеба.</p>

<p>По късно, в първатата си работа имах да правя уеб приложения. Щеше да е първият HTML, за който ми заплащат. Не бях сигурен как да подходя. Нямах и ментор, който да питам. Какво направих? Търсих в google, прочетох няколко статии и разбрах как стават нещата. Определено от тогава съм научил доста, но дори и след толкова кратък research успях да направя HTML с високо качество. Отне ми една вечер четене.</p>

<p>Без да разпитвам хора какво да чета или да искам помощ.</p>

<p>От тогава насам, всеки път когато се запозная с някой, който си вади хляба от уеб програмиране и не може пише читав HTML, една мисъл изниква в главата ми:</p>

<p>Какво по дяволите си мислят тези хора?</p>

<p>Наистина. 2009та сме вече. Наоколо е пълно с хора които знаят много повече от нас. И най-вече, достъпни са ни чрез блогове, книги, статии, документация и дори <a href="http://github.com/">споделен код</a>. Толкова ли е трудно да седнеш и да научиш инструментите, с които си вадиш хляба? Да се научиш да си ефективен с тях, да правиш нещата правилно и да си правиш работата все по-лесна? Защо на толкова малко хора дори им хрумва да разучават големия софтуерен свят около тях? Та той е толкова интересен и предизвикателен&#8230;</p>

<p>По някога никак не разбирам другите хора&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://skanev.com/2009/01/24/what-are-they-thinking/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Ruby + Rails @ ФМИ</title>
		<link>http://skanev.com/2008/10/03/ruby-and-rails-at-fmi/</link>
		<comments>http://skanev.com/2008/10/03/ruby-and-rails-at-fmi/#comments</comments>
		<pubDate>Fri, 03 Oct 2008 15:36:54 +0000</pubDate>
		<dc:creator>Стефан Кънев</dc:creator>
				<category><![CDATA[Програмиране]]></category>

		<guid isPermaLink="false">http://skanev.com/?p=158</guid>
		<description><![CDATA[С Николай ще правим курс по Ruby и Rails във ФМИ. Говорим за това от пролетта. Малкото, което има за казване може да прочетете на сайта. Събитията се провеждат понеделник и сряда, 19:00 в зала 200. Първата сбирка ще е на 6ти октомври.

Нещото, което няма да прочетете там, е че таргета на курса ще е [...]]]></description>
			<content:encoded><![CDATA[<p>С <a href="http://nikolay.bg/">Николай</a> ще правим <a href="http://rails-bg.net/">курс</a> по Ruby и Rails във ФМИ. Говорим за това от пролетта. Малкото, което има за казване може да прочетете на сайта. Събитията се провеждат понеделник и сряда, 19:00 в зала 200. Първата сбирка ще е на 6ти октомври.</p>

<p><span id="more-158"></span>Нещото, което няма да прочетете там, е че таргета на курса ще е по-отракания програмист. Няма да занимаваме хората с основни неща и няма да им дъвчем всеки залък, както направихме с <a href="http://fmi.py-bg.net/">Питона</a>. Нещата ще са напълно практически, смислени и ще имат ясно приложение в реалния свят. Ще влезем и доста надълбоко в езика и в платформата. Ако сте редовни, ви обещаваме че ще научите много. И че ще е забавно.</p>

<p>С други думи, ако нямате много работа през първата и третата вечер в седмицата, наминавайте. Входът е напълно свободен. Не съм убеден дали първото събиране ще е най-подходящо, ако не учите във ФМИ, но поне ще добиете ясна представа за нас. И какво и как ще говорим. Ако пък не, заповядайте в сряда &#8211; тогава се мятаме през глава и без протектори в Ruby.</p>

<p>Ако сте били на Python, имайте предвид че този курс ще е много по-различен. И като материал и като изпълнение. Но да не казваме голяма дума все още.</p>

<p>И да &#8211; отново има забавни флайъри.</p>

<p><img class="aligncenter size-full wp-image-160" title="Chuck Norris programs in Ruby" src="http://skanev.com/wp-content/uploads/2008/10/chucknorris_ruby.jpg" alt="Chuck Norris programs in Ruby" /></p>
]]></content:encoded>
			<wfw:commentRss>http://skanev.com/2008/10/03/ruby-and-rails-at-fmi/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Лексикон за програмисти</title>
		<link>http://skanev.com/2008/09/24/programming-meme/</link>
		<comments>http://skanev.com/2008/09/24/programming-meme/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 17:38:08 +0000</pubDate>
		<dc:creator>Стефан Кънев</dc:creator>
				<category><![CDATA[Програмиране]]></category>

		<guid isPermaLink="false">http://skanev.com/?p=139</guid>
		<description><![CDATA[Напомниха, че бях посочен с пръст.

През повечето време не обичам блог игрите тип &#8222;предай да следващите петима&#8222;. Но от друга страна съм толкова трогнат, че някой се е сетил за мен, че ще позволя да си забравя принципите си за няколко минути и да се отпусна под светлината на прожекторите и славата. Искам да благодаря [...]]]></description>
			<content:encoded><![CDATA[<p>Напомниха, че бях посочен с пръст.</p>

<p>През повечето време не обичам блог игрите тип &#8222;<a title="Лексикон за програмисти" href="http://silvermountain.wordpress.com/2008/08/04/developers-meme/" target="_blank">предай да следващите петима</a>&#8222;. Но от друга страна съм толкова трогнат, че <a href="http://dzver.com/blog/?p=1450">някой се е сетил за мен</a>, че ще позволя да си забравя принципите си за няколко минути и да се отпусна под светлината на прожекторите и славата. Искам да благодаря на родителите си&#8230;</p>

<p>Линкнах когото трябваше. Сега&#8230;</p>

<p><span id="more-139"></span></p>

<h3>На каква възраст бяхте, когато започнахте да се занимавате с програмиране?</h3>

<p>7 годишен.</p>

<h3>Как се случи? Кой ви запали по програмирането?</h3>

<p>Родителите ми ме записаха на някакъв курс в училище &#8222;Европа&#8220; по Pascal. Сигурно е било интересно, но не обръщах никакво внимание какво се случва. Хората говореха за променливи и цикли. Аз просто циклех. Играеше ми се <a href="http://en.wikipedia.org/wiki/Lotus_(computer_games)">Lotus</a>.</p>

<p>Паралелно се учех да боравя с DOS. Забравил съм версията. 4 или 5. Нямах хард диск, само 5¼&#8220; флопи и много дискети с по 360KB. Бях доста умел. В това да си пускам игри и да форматирам дискети, нали. Но в един момент две неща ми привлякоха внимането &#8211; <code>.bat</code> файловете и <acronym title="Norton Batch Enhancer">ne.exe</acronym>. Първото сигурно си го спомняте. Второто позволяваше да рендирате ANSI прозорчета с различни цветове и да местите курсора по екрана.</p>

<p>Не беше оптимално. Не знаех как да извършвам аритметика в batch файл. Нямаше пособ за четене от клавиатура.</p>

<p>Но ако знаете колко далеч стигнах със SET и CHOICE&#8230;</p>

<p>В нито един момент не се <em>запалих</em>. Родителите ми ме подтикнаха към това да се занимавам с компютри. Нямаха добра идея каква е разликата между програмист и Excel потребител. Май още не знаят какво е Excel. Така че не са ме бутали в тази ниша. Просто в един момент, някъде към 11 клас, усетих че безумно много ми харесва да се занимавам с програмиране и искам да го правя цял живот.</p>

<p>Стана някак естествено.</p>

<h3>Какъв беше първият език, на който започнахте да пишете?</h3>

<p>DOS-овски bat файлове. Сериозно.</p>

<p>По-късно открих някакъв странен редактор в директорията на DOS. Казваше са qbasic. Бях омаян от това колко странно ми оцветяваше текстовите документи. В един момент започнах да му ровя в документацията. Видях, че има команди. Научих и осмислих всички, освен PEEK и POKE. След това започнах да го карам да прави някакви неща.</p>

<p>Така че Basic или DOS. Ако броите шела на второто за език.</p>

<h3>Каква беше първата истинска програма, която сте написали?</h3>

<p>Змията. Играта. На QBasic. Преди това може би съм писал някакъв телефонен указател. С bat файлове. Беше брутално бъгава, ползваше goto като откачена и нарушаваше всяка една добра практика, която мога да изброя днес.</p>

<p>Горд съм от това.</p>

<h3>Какви програмни езици сте ползвали до момента?</h3>

<p>Basic, C, C++, Java, AspectJ, PHP, Perl, Python, Ruby, JavaScript, Tcl. На тези неща или съм писал много или съм разработвал софтуер, който някой друг е ползвал. Познавам още толкова, но не съм писал нищо смислено с тях &#8211; само задачи за университета или кратички програми.</p>

<p>HTML, CSS и SQL не са програмни езици.</p>

<h3>Какво беше първото ви професионално назначение и какво научихте оттам?</h3>

<p>Junior Java Developer. После еволюира. Научих много.</p>

<p>Разбрах доста за писането на истински код. Разбрах доста за работата в екип. Много за ръководенето на екип. Много за ръководенето на проект. Как да си говоря с мениджъра ми. Как да си говоря с колегите ми. Какво да очаквам и какво не от хората.</p>

<p>Излишно е да казвам, направих всички възможни грешки. За някои дори <a href="http://skanev.com/2008/01/18/rebirth-part-1/">блогнах</a>.</p>

<h3>Ако имахте днешните си опит и знания, бихте ли се захванали с програмиране отново?</h3>

<p>Без капка съмнение. Щях и да ходя на състезания и олимпиади.</p>

<h3>Кое е най-важното за програмирането, на което бихте искали да научите начинаещите разработчици?</h3>

<p><em>Обичайте</em> си занаята. <em>Страстно</em>. Не спирайте да учите нови неща и се целете да бъдете абсолютни експерти.</p>

<p>Или станете водопроводчици. Струва ми се, че често подтиквам хора да стават водопроводчици в този блог.</p>

<h3>Кой е бил най-забавният ви спомен като програмист?</h3>

<p>Брр. Не се сещам за нищо конкретно. Конкурират се всички пъти, в които съм работил 12 часа подред и съм бил много продуктивен, със всички пъти, в които съм намерил причината за някакъв много странен, забутан и неразбираем бъг. Може би трябва да мине още време.</p>

<hr />

<p>И толкова. <a href="http://blog.marudina.net/">Ирина</a> беше посочена отпреди, но аз ще &#1117; напомня. <a href="http://nikolay.bg/">Ники</a> също се кани да напише нещо по въпроса. <a href="http://svilen-online.blogspot.com">Свилен</a> ми е особено интересен. Впрочем и <a href="http://blog.sen-works.net/">г-н Ласков</a>. Пети не мога да измисля, но ако четете това и се чувствате програмист, моля не изпускайте мема.</p>
]]></content:encoded>
			<wfw:commentRss>http://skanev.com/2008/09/24/programming-meme/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Коментари</title>
		<link>http://skanev.com/2008/09/14/comments/</link>
		<comments>http://skanev.com/2008/09/14/comments/#comments</comments>
		<pubDate>Sun, 14 Sep 2008 12:06:55 +0000</pubDate>
		<dc:creator>Стефан Кънев</dc:creator>
				<category><![CDATA[Програмиране]]></category>

		<guid isPermaLink="false">http://skanev.com/2008/09/14/comments/</guid>
		<description><![CDATA[Мненията за коментарите (тези в кода) са разнородни. Едни ще ви кажат, че е добре да имате ред коментар описващ всеки пет-десет. Други проповядват добра документация на всеки клас и метод. Някои дори говорят за literate programming. Въобще, хората си умират да бухат текст в кода. Вероятно знаете, че аз съм аскет в това отношение. [...]]]></description>
			<content:encoded><![CDATA[<p>Мненията за коментарите (тези в кода) са разнородни. <a href="http://cc2e.com/">Едни</a> ще ви кажат, че е добре да имате ред коментар описващ всеки пет-десет. <a href="http://java.sun.com">Други</a> проповядват добра документация на всеки клас и метод. <a href="http://www-cs-staff.stanford.edu/~uno/">Някои</a> дори говорят за <a href="http://www.literateprogramming.com">literate programming</a>. Въобще, хората си умират да <em>бухат</em> текст в кода. Вероятно знаете, че аз съм аскет в това отношение. Предпочитам да прокарвам идеите си с Ruby, а не с английски. Ако някое парче е твърде сложно, най-много да го разбия на различни методи с добри имена. Четящият няма да е идиот. Ще го схване. Пък и упражнението ще му е полезно.</p>

<p>Но като всеки мъдър човек, периодично поставям убежденията си под съмнение. Човек греши. Особено ако е научил нещо на 14. Все пак, garbage collector-ите работят добре в истинския свят и променливите са използваеми и без деклариране. Може и да греша за коментарите. Може би има какво да се иска от моя минималистичен подход.</p>

<p><span id="more-137"></span></p>

<p>Първо, ще <span style="text-decoration: underline">подчертая</span>, че стратегията ви към коментарите трябва да е консистентна с екипа ви и възгледите на отделните му членове. Трябва да коментирате както е най-подходящо за ситуацията. Готово. Покрих си гърба. Сега ще ви разкажа за Оскар.</p>

<p>Оскар е любопитна личност. Финландец, живеещ с жената и децата си в Швеция. Ако знаете поне мъничко за тези народи, вече надушвате колко колоритна личност е. А и говореше руски. Работил е като системен администратор и журналист. Интервюирал е Линус Торвалдс в дома му. Първия път, като бе в България, полицаите го спрели на улицата, за да му проверят документите. Понеже ги гледал твърде дълго в очите, като ги подминавал.</p>

<p>Като сложна органична система, базирана на въглерод, Оскар е много висок, много слаб, с много дълга и много руса коса. И много сини очи.</p>

<p>Като програмист е&#8230; особен. Ползва emacs от времената, в които мъкнех по двайсетина 3½&#8220; дискети на три паса през Ботевград за да си запиша Heroes II. Играел си е с e-lisp когато аз пишех mIRC скриптове. И въпреки това, не бе отракан джавар. На кода му липсваше джавешки минимализъм. Пишеше си повечето неща сам. Не ползваше Eclipse. Често му се подигравах за йерархиите от класове, които бяха тромави и неуверени. Но в коментарите си бе артист.</p>

<p>Трудно ми е да измъкна и един пример, без да прозвучи глупаво извън контекст. Ant скриптът му започваше с &#8222;Нека <acronym title="измислено име за CEO-то на фирмана">Йоке Арнбори</acronym> да благослови този билд&#8220;. Навсякъде имаше кратички коментари, пропити със странното му чувство за хумор. &#8222;Things are starting to look precarious. Beware!&#8220;. Рядко бяха полезни, но беше огромен кеф да ги чета. Усещаше се, че кодът е писан от човек, а не генериран от машина. Можехте да добиете представа за него. Когато погледът ви минава през редовете Java, имате чувството че си беседвате с една странна, но любопитна личност. Беше изкуство. Отвскяде.</p>

<p>Сетих се за това, като четох <a href="http://poingnantguide.com/">това изключително въведение в Ruby</a>. Казваше &#8222;може да ползвате коментарите, за да си припомните настроението, в което сте били&#8220;. Бисер. И то в текст за машина, улавяща звезди през дупка в тавана, и лепяща ги на главите на оковани маймуни. Дъвчещи тебешир.</p>

<p>Сериозно. Не бях поглеждал на коментарите така. Като начин артистът да остави своя почерк в произведението, без иначе да наруши студената му, механична функционалонст. И въпреки, че възгледите ми за изкуство са малко по-различни, мога да оценя това в цялата му красота. Можете да го видите и в <a href="http://www.cpan.org/src/perl-5.8.8.tar.gz">кода на Perl</a>. Отворете който и да е <code>.c</code> файл и прочетете първите няколко реда. Наистина, щракнете на връзката, отворете архива и вижте коментарите. Кажете си дали ги одобрявате или не. И после се замислете хубаво в кой лагер се намирате. Този на скучните машинописци или в този на страстните програмисти.</p>

<p>Изпитвам голямо удовлетворение от работата с такъв код. Мотивира ме. Научавам много. Виждам че има хора, които не са сухи и огорчени занаятчии, гледащи работата и хобито си като досадно задължение, разпокъсващо пиенето, безразличието или противното им отношение към света. Виждам, че има хора, които си обичат занаята и го вършат със страст, със замах и най-вече, с <acronym title="fun">удоволствие</acronym>. И да, успяват да произведат нещо.</p>

<p>Но май се разсеях. Схващате. Коментарите могат да се ползват артистично. Забавно и приятно. Така че да радват програмиста отсреща. Да му правят деня по-добър. И да го тикат да бъде по-продуктивен.</p>

<p>Вече виждам как половин дузина скучни <acronym title="необходимо условие; не всички такива са скучни, но ако сте скучен, определено сте такъв">Java/PHP/C#</acronym> програмисти се отправят към формата за коментиране с нещо доволно предвидимо. Спестете си го, моля. Не твърдя, че това ще работи в голям екип или във вашата организация. Запознат съм и с опасността на коментари от рода на <code># R.I.P.L.V.B.</code>. Вероятно отвъд отворения код, ще работи само в малък екип от добри приятели, където всеки вярва на и уважава другия. Да, това го има в реалния свят, макар и да е рядкост.</p>

<p>И да, кодът може да бъде изкуство. Дори благодарение на коментарите.</p>
]]></content:encoded>
			<wfw:commentRss>http://skanev.com/2008/09/14/comments/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Надолу, в амброзните пещери&#8230;</title>
		<link>http://skanev.com/2008/09/13/down-in-amrose-caverns/</link>
		<comments>http://skanev.com/2008/09/13/down-in-amrose-caverns/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 19:44:16 +0000</pubDate>
		<dc:creator>Стефан Кънев</dc:creator>
				<category><![CDATA[Програмиране]]></category>

		<guid isPermaLink="false">http://skanev.com/2008/09/13/down-in-amrose-caverns/</guid>
		<description><![CDATA[Познавате ме. Знаете, че съм способен на крайни психопатщини. Дори съм публикувал някои. Фен съм и на Making Fiends. Въобще, способен съм да стигна далеч. Нещата бързо стават сюреалистични.

Например, наскоро Ники имаше рожден ден. След много психонавтика, стигнахме до извода, че фригидни моркови се опълчват на шампоанената хегемония. Май в някакъв разговор за разликата между [...]]]></description>
			<content:encoded><![CDATA[<p>Познавате ме. Знаете, че съм способен на крайни психопатщини. Дори съм публикувал <a href="http://skanev.com/2007/09/06/today-3/">някои</a>. Фен съм и на <a href="http://makingfiends.com/">Making Fiends</a>. Въобще, способен съм да стигна <acronym title="отвъд Люлин">далеч</acronym>. Нещата бързо стават с<span style="color: orange; text-decoration: underline">юреа</span>листични.</p>

<p>Например, наскоро <a href="http://nikolay.bg/">Ники</a> имаше рожден ден. След много психонавтика, стигнахме до извода, че <i>фригидни моркови се опълчват на шампоанената хегемония</i>. Май в някакъв разговор за <acronym title="ягоди">разликата</acronym> между граматики от нулев и втори тип. В последствие бе стигнато и до хубава рационализация зад това изречение, т.е. измислена бе художествена случка, в която то (изречението) бе смислено. Бих го нарекъл <i>Бачиев универсум</i>. Не съм убеден дали този начин за построяване на прилагателно от фамилия би бил одобрен. А и сигурно този <acronym title="честен дом">скромен текст</acronym> започва да ви &#8222;идва нагоре&#8220;, дори и да не сте от <acronym title="Факултет по Математика и Информатика">ФМИ</acronym></p>

<p>Прочетете горните два абзаца пак. Много внимателно, обмисляйки всяка дума и линк. След това хвърлете един поглед на <a href="http://poignantguide.net/"> _why&#8217;s (poignant) guide to ruby</a>. Надминава всичко, което съм виждал до момента. Автора му трябва да е гениален. Или да е изял кофа халюциногенни гъби.</p>
]]></content:encoded>
			<wfw:commentRss>http://skanev.com/2008/09/13/down-in-amrose-caverns/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
