Smalltalk и други екзотични езици в initLab

20 януари 2012 09:52

Занимавайки се с разнообразни езици за програмиране съм научил много. Всеки ме изненадва с нещо. Понякога намирам идеи, които „mainstream“ езиците са усвоили десетки години по-късно. Понякога виждам идеи, които те тепърва усвояват. Не са ужасно практични, но занимавката с тях ме прави по-добър програмист.

Искам да направя серия от малки презентации в initLab за такива езици. Очаквайте Io, Scheme, Haskell, J, Prolog и прочее. Първият ще е Smalltalk. Датата ще бъде 26ти януари. Часът ще бъде 19:00.

Smalltalk е първият обектно-ориентиран език за програмиране. Всъщност, вторият, но само технически погледнато. Всичко, което възприемаме като ООП идва по един или друг начин от него. Разбира се, повечето идеи са видоизменени до непознаваемост (в C++, например). Няколко известни имена от Addison-Wesley са (бивши) Smalltalk програмисти – Kent Beck, Ward Cunningham, Martin Folwer. В днешно време не е много популярен, но определено има какво да ни научи.

Ето няколко любопитни неща, които ще грабнат интереса ви:

  • Кодът не се пази в текстови файлове.
  • Виртуалната машина и работната среда са силно интегрирани. Можете да редактирате кода на работната среда от самата работна среда. Докато работите в нея.
  • Няма синтаксис за if – имплементиран е в стандартната библиотека.
  • Design Pattern-ите в GoF изглеждат малко странни в C++ и Java. В Smalltalk изглеждат учудващо на място.
  • Динамично типизиран, но въпреки това има IDE и debugger, сравними с тези за Java.
  • Някои странни имена в Ruby (collect, inject, initialize) идват от Smalltalk.
  • Изключително прост синтаксис, сравним с този на LISP.

Ако това ви е грабнало вниманието, може да дойдете и да гледате на 26 януари, от 19:00 в initLab. Входът, разбира се, е безплатен.

Тефтер 17

18 декември 2011 10:56

three resolutions for all of my future new years:
less dogbites, less spilt wine, no tears.
and in recent critical reviews of my childhood fears,
i say „yes“ to the dark, „hell no“ to the alone part.

Code Retreat №3

25 ноември 2011 12:12

Ще организираме трети Code Retreat в София.

Този път събитието ще се проведе в офиса на Software Society. Може да намерите повече информация на сайта им.

printf “goodbye, world”

13 октомври 2011 07:12

Денис Ричи е починал преди няколко дни. Човек, без който много от нещата днес нямаше да са същите. Благодарен съм, че е успял да запази страстта си и не е бил разубеден от “знаещите какво е възможно” по неговото време. Един брилянтен ум, самото осъзнаване, за което може да те подтисне или пък подтикне към това да направиш нещо значимо (дори в малък мащаб). Дълбоко се надявам да е живял един пълноценен живот.
Почивай в мир!

5

06 октомври 2011 16:07

Има два вида хора на този свят, приятел: такива със заредени пистолети и такива, които копаят. Ти копаеш.

„Добрият, лошият и грозният“. Едно от нещата, които можеш да правиш в три и нещо през нощта, след като си станал да се изпикаеш и не можеш да заспиш, както и след като си си направил сандвич и се чудиш какво да зяпаш, докато го ядеш. Също така фигурира в списъка с глупави неща за правене под номер 28 и е зачеркнат около стотина пъти.

Има два видя хора на този свят, приятел: добри и лоши.

Малко след като излязох от затвора открих, че някъде там съм се снабдил с детектор за различаването на хората по тези два критерия. Работи относително просто. Казваш на някого, че си бил в затвора, и ако е лош, това няма да му направи впечатление. Може дори да остане с теб за известно време. Ако е добър, ще се разкара веднага. Дори да не го направи, ще усетиш, че вече не иска да ти дава парите си назаем или да те оставя сам в присъствието на годеницата си.

Разбрах за съществуването на този свой детектор при първата ми среща с бъдещата си съпруга. Случи се случайно, ако вярвате в тази дума, като съвсем всичко в живота ми досега. Беше пред мен на опашката в супермаркета и първите неща, които забелязах в нея, бяха красивата тъмно кестенява коса, която се стелеше над раменете й; добре оформеното дупе, изпълващо дънките й; плодовия аромат на шампоана й, осезаем във въздуха на няколко десетки сантиметра от нея. Също така беше видимо по-висока от мен. Докато чакахме да се представим пред мудната и не особено щастлива от живота касиерка си представях как на излизане от магазина тя ще направи някое типично женско в непохватността си движение и ще разсипе торбата с покупките си. Ще клекне и ще започне да събира продуктите от земята. Съвсем случайно – отново – ще изляза от магазина в същия момент, и ще се притека на помощ. Тя ще каже „Не, благодаря ви, няма нужда – наистина!“, засрамена от това, че ме въвлича в бъркотията, която е създала около себе си. Аз с типичния си инат изобщо няма да я послушам и ще й подам всички разпилени парчета от пъзела, без едно – едно, което ще запазя, за да се върна обратно на местопрестъплението няколко секунди, след като сме се разделили завинаги с припряни, непохватни усмивки, и дам второ и по-малко напрегнато начало на същата среща. Точно преди втората ни раздяла ще я поканя на късно кафе в тихия италиански ресторант, който е зад ъгъла и където цигуларят знае името ми. Ще прекараме поне два часа, в които ще бъда най-забавния, най-интересения, най-интелигентния, но и най-непретенциозния и най-небрежно чаровния събеседник, който тя е имала някога. След това – е, след това и потоп.

Не знам дали някога сте си правили планове.

Тя не разпиля покупките си на излизане от магазина. Но аз го направих. Докато събирах боклуците си от цимента и усилено размишлявах над иронията, в която живеех, тя се върна, защото беше забравила кредитната си карта. За първи път видях лицето й, когато тя се наведе до мен и предложи да ми помогне. Засрамен от това, че тя помага на мен, а не обратното, но още повече от красивите й усмихнати очи, смотолевих, че нямам нужда от помощта й. Естествено, тя ме послуша и влезе в магазина. Вече бях събрал всичко и псувах света и се изправях и си изтупвах ръцете, когато тя излезе отново, забързана. Усмихна ми се и смутено отвърнах. Тогава забелязах, че не е толкова по-висока от мен – просто аз имах лоша стойка и рядко ходех изправен. Десетина метра след като ме беше подминала, много тихо казах „Ей“ – толкова тихо, че не бях сигурен дали е било на глас. Но тя ме чу.

Беше зима и на много места все още имаше сняг.

След италианския ресторант, който тя предложи, се преместихме на фотьойл и канапе у тях. Тя беше свита на канапето, завита с одеало, а аз бях легнал на фотьойла с краката и главата си във въздуха. Кучето й вече ме обичаше и сигурно не можеше да си представи живота извън скута ми. Така прекарахме дванадесет часа разменяйки думи, ядейки лазаня, пиейки вино. Тогава й казах, че съм бил в затвора. Тя премигна не повече от два пъти по случая. Веднага разбрах, че е лоша, и че е точно за мен, и че един ден ще искам да прекарам живота си с нея. Тогава ми каза, че учи две неща едновременно – архитектура и психология. Приех го почти хладнокръвно. Това беше нейният детектор, и тя също разбра някои неща за мен.

На сутринта тя отиде на лекции, а аз – на работа. Видяхме се още два пъти същата седмица, след което не се виждахме за около пет години, след което тя стана моя жена.

Не искам да ви развалям гледането, но тези двамата ще си разделят парите по равно. Само че единият все още ще е с пистолет, а другият все още няма да бъде. Нека това да бъде важен урок: постарайте се да се сдобиете с оръжие преди да забогатеете.

Щом сте стигнали до тук, сигурно ви е интересно как се озовах в затвора. Щом още не сте се махнали, значи сте достатъчно лоши, че да ви разкажа. Нищо, че историята е тъпа. Дори смея да твърдя, че – както гласи едноименната шега, която понякога се подхвърляше с половин уста в двора на затвора – съм невинен.

Stay hungry, stay foolish

06 октомври 2011 00:28

Може би най-подходящия думи за този момент са казани от самият него:

Remembering that I’ll be dead soon is the most important tool I’ve ever encountered to help me make the big choices in life. Because almost everything — all external expectations, all pride, all fear of embarrassment or failure – these things just fall away in the face of death, leaving only what is truly important. Remembering that you are going to die is the best way I know to avoid the trap of thinking you have something to lose. You are already naked. There is no reason not to follow your heart.[..]

No one wants to die. Even people who want to go to heaven don’t want to die to get there. And yet death is the destination we all share. No one has ever escaped it. And that is as it should be, because Death is very likely the single best invention of Life. It is Life’s change agent. It clears out the old to make way for the new. Right now the new is you, but someday not too long from now, you will gradually become the old and be cleared away. Sorry to be so dramatic, but it is quite true.

Your time is limited, so don’t waste it living someone else’s life. Don’t be trapped by dogma — which is living with the results of other people’s thinking. Don’t let the noise of others’ opinions drown out your own inner voice. And most important, have the courage to follow your heart and intuition. They somehow already know what you truly want to become. Everything else is secondary.

Няма вече “one more thing”.
Почивай в мир.

Политическо падение

30 юли 2011 07:36

Хрумна ми да направя нещо, което Ники направи преди време и да видя накъде вървят политическите ми убеждения.
Прогреса е с драматична посока надолу. Дори и аз съм учуден.

Възможности

20 юли 2011 01:13

Имаш възможност да се възползваш от всяка възможност. Или пък да не го направиш. Alea iacta est. Единственото важно е да си направиш някакви изводи от последствията и да не съжаляваш, независимо от крайният резултат.

4

04 юли 2011 18:48

Да построя къща.

Да изгледам единайсетте сезона на Приятели.

Да стана доктор на науките.

Това са случайни редове от списъка с глупави неща, които трябва да направя, преди да умра.

Да не пикая върху главите на хората, когато видимо им е зле.

Да не наблюдавам с бинокъл двайсет и осми апартамент на отсрещния блок докато наемателите му правят секс.

Да не шофирам надрусан.

Това са случайни редове от списъка с глупави нещта, които не трябва да правя, преди да умра. За съжаление, някои от тях са вече зачеркнати. Не че съм преизпълнил другия, просто смъртта ми изглежда не бърза.

Да построя къща.

Да изгледам единайсетте сезона на Приятели.

Да си направя списък с глупави неща, които трябва да направя, преди да умра. Последно, но не по важност – независимо дали съм го написал там – да затворя очи, да умра.

А дали е така?

01 юли 2011 03:03

Нещата винаги са по-прости отколкото изглеждат. Невъзможността да ги обясниш обаче може да ги усложни.
Ако не можеш да обясниш нещо толкова добре, че отсреща да те разберат, значи ти самият не го разбираш достатъчно. Или пък обясняваш като на идиот.
Ако ядеш курабийки с късметчета, пази се от “Днес ти предстоят изненади”.

Code Retreat на 9ти юли

28 юни 2011 12:42

Code retreat е интересен начин да усъвършенствате програмистските си умения. Събирате се група хора (четен брой) и решавате един конкретен проблем (Conway’s Game of Life). Работите по двойки (pair programming) с test-driven development. Пишете на сесии от 45 минути, след които правите кратка ретроспекция, изтривате кода и сменяте партньора. И така цял ден, с различни хора.

Идеята не е да решите проблема. Идеята е да обмените умения и да затвърдите фундаментални познания. Това е адски добър начин да научите test-driven development или някой друг трик с текстовия редактор/шела.

Чух за идеята миналата година на NordicRuby, но чак през април се престраших да я пробвам. Организирах малко събитие в initLab, в което поканих само познати. Събрахме се 6 човека и направихме 5 сесии. Писахме на C#, JavaScript, Ruby, Python и дори Scala. Бяхме много доволни. Всеки си тръгна научил нещо.

Искам да организирам друг и този път смятам да поканя всички, които искат да дойдат. Събитието ще се проведе от 9:00 на 9 юли, събота в initLab. Ако искате да участвате сте добре дошли. Не е нужно да сте опитни в TDD — просто носете компютър и добро настроение.

Ето как ще протече:

Ще направим нещата „по книга“ – времето ще е 45 минути, проблема ще е Game of Life, ще трием кода на края на сесиите и ще ползваме test-driven development.

Всяка двойка ще се уговаря помежду си на какъв език да пише. Със сигурност ще си намерите партньори за C#, Java, JavaScript, PHP, Python и Ruby. Вероятно ще има всякакви екзотики.

След всяка сесия ще събираме всички и ще обсъждаме как е минало. Ретроспекциите отнемат към 15 минути, след което ще продължаваме с друга двойка.

За да компенсирам ранното ставане, ще има закуска и кафе в initLab. Ако имате по-специални изисквания (не ядете месо или сте веган), кажете и ще се погрижа. След третата сесия ще отидем в близко заведение да обядваме. След това се връщаме и продължаваме. Реалистично погледнато, ще направим 6 сесии и ще приключим към 17:00.

Първите 20 минути ще се запознаем и закусим, след което ще разкажа подробно как ще протече събитието. След това започваме първата сесия.

Събитието ще е напълно безплатно (включително закуската).

Не нужно да сте опитни в TDD. Въпреки това, имаме следните изисквания към всеки участник:

  • Носете компютър
  • Научете правилата на Game of Life. Ако имате възможност, пробвайте да няколко шаблона.
  • Изберете си езици, на които ще пишете и научете поне един тестов framework във всеки. Важно е да познавате инструментите и да можете бързо да пускате тестове.
  • Задължително подкарайте празен проект за всяка двойка (език, testing framework), с които смятате да работите на вашия компютър. Не искате да прекарате голяма част от сесията в подкарване на проект.

Ако идвате, моля елате в 9:00 и останете за целия ден. Ако ще идвате, пишете ми на stefan точка kanev маймунка гмейл точка ком. Имам нужда да знам колко човека ще присъстват. Моля пишете само ако сте сигурни. Ако ви изникне нещо в последния момент, ще се радвам да ме предупредите.

Ако имате някакви въпроси, ползвайте формата за коментари, пишете в пощенския списък Software Craftsmanship Bulgaria или ми пратете писмо. Може да погледнете кратките отзиви от предишния code retreat или да намерите повече информация на coderetreat.com.

Ще се радвам да ви видя на 9ти!

Не просто още един полицай

25 юни 2011 15:03

Най-често лейтенант. В негова памет. И с неговите думи – “[Death] is just the gateway”.

Съжалявам

03 юни 2011 15:58

Публичните извинения. Странни са и не знам дали държат по-голяма ценност в себе си или напротив.
Не смятам, че по-голямата видимост на нещо го прави по-искрено или по-значимо. Нуждата да бъде обявено е по-скоро егоцентричен нагон. Доказателство за това какви добри хора сме.
А ние сме добри, нали?
Все ще се намери кой да го потвърди.
Това е търсен ефект. Дори когато наистина съжаляваш.

3

06 май 2011 12:24

Със сигурност има своите пороци. Какво от това? И кой няма?

Както казал Франк Запа когато му съобщили, че има дълга коса, след което го питали дали тя не го прави жена: „Ти имаш дървен крак. Това прави ли те маса?“

Сякаш ако беше жена, щеше да му е лошо.

Някои от най-големите промени в историята са извършвани от хора, минаващи през живота в големи кораби, чийто трюмове са пълни до капаците най-вече с пороци – и за съжаление въпреки голямото си старание, те не могат да направят почти нищо по този случай, освен да ги прегърнат и да ги направят някак си полезни.

Преди много години на земята се родил и живял човек, който не искал да спира играта си на карти, за да се храни. Толкова много обичал той картите! Тогава измислил нова форма на храна, която можела спокойно да бъде ядена с помощта само на една ръка, оставяща другата свободна да играе. Хазартът и мързелът в трюма на неговия кораб едва ли са считани за добродетели някъде, но какъв резултат, при това за цялото човечество! И всичко това от чиста любов, нищо, че била към карти.

Дали собственикът на МакДоналдс оставя едната си ръка свободна за сандвичи, докато брои парите, които толкова много обича? Едва ли.

Сега ще ида да си направя сандвич, както правят много други стари хора в три и нещо през през нощта. Достатъчно за жена ми.

2

11 април 2011 16:32

В началото споменах жена си. Нека разкажа за нея.

Да си представим за момент, че всички хора са автомобили. Сигурно за някои тази идея няма да е нищо ново. Ние, автомобилите, винаги сме в движение, винаги с радиото пуснато. Това не хаби акумулатора, напротив – само това може да го зареди.

Колата ми е добра и колата ми е бърза. Гласът от радиото рисува картини на далечни и непознати места, където искам и мога да отида. Гласът от радиото ме кара да настъпвам педала.

Гласът от радиото е блаженство, мир и покой. Гласът от радиото е гласът отвътре и посока навън.

Карайки насам-натам, понякога губим сигнала. В тези неприятни паузи има само шум, от който бягаме на по-високите места, на които антената може би ще хваща по-добре. Този шум е голямата движеща сила в нашия живот. Той ни кара да караме.

За жена ми обаче няма нищо освен шум. Колкото и бензин да изгори, на което и плато да отиде, тя няма да чуе друго, освен снежинки. Не мисля, че за целия си живот е успяла да хване повече от две-три минути от нашето предаване. Пропътувала е земята в търсене на гласа, който те кара да настъпваш педала, но колкото и да върти копчетата, черната кутийка си остава безжизнена. Ядосана, настъпва педала.

Другите коли я смятат за странна и избягват да карат в една колона с нея. Разбирам ги.

Въпреки това, когато навън вали тежък дъжд и нощта има хиляда очи и прахът от пустинята се просмуква през всяка кухина на купето и електричеството във въздуха се вижда и гласът от радиото започне да пращи и пука, за кратко чувам шума й и си мисля, че може би – само може би – тя открива в този шум повече смисъл, отколкото всички ние в нашето радио. Ядосан, настъпвам педала и обръщам, за да мога пак да карам след нея.

Хората може и да не са автомобили, но това е жена ми.

Python @ FMI, v 5.0

27 февруари 2011 14:09

Тази година с Николай ще правим за пети път курс по Python във ФМИ. Избираем е за студенти от втори курс нагоре. Ако попадате в тази демография, горещо ви го препоръчвам. Ако пък не, може въпреки това да дойдете и да видите за какво иде реч.

Първото събиране ще е във вторник, 1ви март, от 19:00 в зала 200. Ще се радвам да ви видя там.