Category: лытдыбр

Category was added automatically. Read all entries about "лытдыбр".

glider

файловые менеджеры

Сегодня по пути в универ прочитал статью Мигеля де Икасы Learning Unix. Как раз то, что я хотел найти в посте ищу книжку про юникс/линукс. В сжатом виде аффтар описывает свое видение unix way. Субъективно, opinionated - то, что надо, жаль мало. Пусть даже с непонятно откуда взявшейся рекламой платного курса по слепой печати. Впрочем, сегодняшний пост не об этом.

Когда я читал фрагмент статьи, в котором идет речь про mc (кстати, Мигель де Икаса, оказывается, является автором mc, омг!), у меня что-то щелкнуло в голове, и я, наконец, нашел для себя смысл в посте ребе vp про Total Commander. Напомню краткое содержание: "А вот у нас на работе эта программа запрещена. Если кто-то из работников будет замечен за ее использованием - сразу увольнение. Основная идея файлового менеджера - ускорение работы с файлами, с перенаправлением вывода, с выводом на консоль, с подстановкой параметров в командную строку и т.п. Ни одной задачи эта софтина не решает, а мозг людям, кто ею пользуется."

Сразу признаюсь - основной программой у меня на компе долгое время был тотал.

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

Народ, который юзает фар, всегда вызывал у меня искреннее недоумение - вроде бы то же самое, только с уродливым шрифтом и без закладок. Зачем мучиться? А разгадка крайне проста! (сорри, что сейчас буду играть в кэпа, но, если бы кто-нибудь пару лет назад провел сеанс кэпства для меня, я был бы искренне благодарен)

***

Консоль - мощный и удобный способ организации рабочего окружения. Для себя я это понял примерно через день знакомства с линуксом, но это тема для отдельной лекции К.О., на пока что примем сабж за аксиому. Раз консоль так крута, возникает желание юзать ее все время. Но у меня это желание разбилось о неразрешимую проблему - как же держать в голове список файлов, с которым я в данный момент работаю. На эту тему я слышал много разных ответов, в том числе и стандартный ответ линуксоида: "а нафига это нужно, зато вона что мы умеем".

Вначале я думал, что дело в том, что я не понимаю дзен линуксизма и что надо тренировать моск удовлетворяться аутпутом команды ls или, на худой конец, ls -l. Ессно, моску весьма часто этого не хватает, да и держать все в памяти он не может - ну, по крайней мере, мой. Ну, или, думал я, может, вообще не нужно ручками выбирать файлы-параметры для команд (например, если я хочу скопировать часть файлов из одной папки в другую), у нас же есть вайлдкарды и греп. Ессно, и это не панацея - если бы автоматика могла полностью заменить ручной труд, мы бы уже жили в раю.

Погрустил я на эту тему и забил. Нашел для линукса какой-то тоталоподобный файловый менеджер и стал юзать его вместе с консолью. Если сказать честно, нихрена это не удобно. Смотришь на список файлов в этом самом файловом менеджере и действительно быстро понимаешь: "оба-на, зафигачу-ка я команду delitec для вот этих двух scala-файликов из двадцати лежащих в папке". Набираешь в строке ввода менеджера "delitec file1 file2", нажимаешь ENTER - окошко появилось на секунду и пропало. Что происходит - неизвестно. Брр. Бесишься про себя, в строке ввода набираешь "$TERM", который стартует в текущей директории, а там уже вбиваешь, что надо. Лишние телодвижения, но что поделать. Как вариант, можно скачать плагинчик, который по отдельной просьбе будет открывать $TERM за тебя, но и с этим есть косяки. Что, если внезапно хочется посмотреть список файлов в консоли? Еще один плагинчик искать?

Как же решить все эти проблемы? Просто забить - поставленных проблем не существует, ибо есть программы, которые сочетают в себе и консоль, и файловый менеджер. Да, в общем-то и файловый менеджер как отдельная концепция нифига не нужен. Тотал настолько извратил мое мировосприятие, что я просто не представлял, как такое может быть.



Что видит на картинке ученик класса по информатике? Меню, две панели с файлами, какую-то строчку ввода и кнопки. Ессно, основной фокус внимания на файлы - сознание автоматически воспринимает их как главное, что есть на экране. Ну причем здесь строчка ввода, да и нафига она вообще? А еще тема, можно нажать Ctrl+O и появится какая-то черная хрень на весь экран. Во смеху-то будет, если сделать так челу за соседним компом.

Что на самом деле находится на картинке? Шелл, командная строка которого находится внизу, а основное полотно (предыдущие команды и их вывод) спрятано. Кроме того, на экране также находятся два дополнительных виджета: список файлов текущей папки шелла и список файлов какой-то другой папки.

В такой ментальной модели вся сложность взаимодействия консоли и файлового менеджера, описанная выше, пропадает. Это, на самом деле, одна и та же программа, просто к собственно консоли добавились еще несколько вспомогательных визуальных элементов. Несколько примеров.

1) Основной киллер-фичей тотала для меня было наличие закладок. По сравнению с эксплорером тотал значительно выигрывает в скорости навигации по файловой системе, но без дополнительных средств он не сильно-то и круче в плане одновременной работы с несколькими папками, а то и хуже вообще - обычно, тотал открывают только один, а эксплореров пачку. Блин, фигово. Надо придумывать дополнительную концепцию - закладки (табы ли, букмарки ли, это детали реализации). Вот она, сложность родимая.

А на деле ведь переход в папку описывается простой командой cd. Нравится какая-то папка - не вопрос. Сделай алиас для соответствующего cd и юзай на здоровье. Часто бываешь в папке Downloads - нафигачь алиас dl для "cd /foo/bar/very/long/path/Downloads" и набирай dl, чтобы быстро попасть, куда надо. Набираешь dl в шелле, а, в честь перехода в новую папку, соответствующий виджет автоматически обновляет список файлов. Всяко быстрее, чем тыркать мышкой, и не хуже, чем нажимать C-d <номер закладки>. Но что главное - логичнее.

2) Скажем, файловую систему мы набраузили и теперь надо искать файлы по имени. В модели номер 1 нужно реализовать логику поиска, сваять уи, реализовать концепцию виртуального списка файлов, который не соответствует никакой реально папке в файловой системе. Я специально упоминаю детали реализации в посте про юзабилити потому, что эти детали влияют не только на эффорты программиста, но и на мысленную картину, которую для себя строит пользователь.

В модели номер 2 нужно всего лишь ввести концепцию виртуального виджета, ибо find у нас уже есть (в виде консольной программы), а уи нам не нужен - вместо использования поля ввода юзер просто вобьет имя или вайлдкард в составе команды консоли. Кроме того, такой подход неплохо скейлится на будущие требования, если нам понадобится искать по другим критериям. Скажем, если нужно искать вхождение подстрок в содержимом файлов, нужно лишь заменить вызов find вызовом find + xargs + grep. Я идеализирую, конечно, для некоторых тасков специализированный уи будет удобнее, но идея понятна.

3) Часто бывает необходимо не только посмотреть аутпут какой-то команды, но также и свериться с результатом выполнения некоторой программы в прошлом. В рамках модели номер 2 для этого достаточно нажать тот самый хоткей Ctrl+O и вся история консоли перед глазами.

В модели номер 1 пользователь должен сам заботиться о сохранении аутпута важных программ. Особенно доставляют такому пользователю "нехорошие" программы, которые выполняются в консольном режиме и автоматически закрываются по окончанию работы. Для них надо ручками открывать окошки консолей, добавлять pause в бат-файлы или readline в программы. Чего только не придумаешь для борьбы с ветряными мельницами.

***

tl;dr. В сухом остатке остается вывод о том, что продуктивнее думать о файловом менеджере не как об отдельной программе, а как о надстройке над шеллом. Но, как только появляется такое видение, сразу становится заметно, что тотал и его клоны не очень-то и хорошо поддерживают эту парадигму использования. После этого выбор в пользу консольных файловых менеджеров становится самоочевиден.
glider

wetware v0.90

В этом посте речь пойдет о моей текущей версии wetware - ментального фреймворка организации сознательной деятельности. Предыдущие креативы на эту тему можно почитать по соответствующему тегу: http://xeno-by.livejournal.com/tag/wetware.

Тактика

Любые идеи, любая поступающая информация обрабатывается на месте: если срочно - действовать, если нет - записать на бумажку, в RTM или Evernote (несколько секунд) и продолжить заниматься текущим делом. Таким образом, убирается стресс от многозадачности.

Планирование отделяется от действования. В обычном режиме список дел не подвергается сомнению и считается абсолютно верным путем саморазвития. В режиме планирования (который обычно включается на вечерних прогулках) из списка дел чистится энтропия, удаляются протухшие таски, осуществляется стратегическое планирование. Таким образом, устраняется стресс от спонтанных ощущений типа "блин, занимаюсь какой-то фигней, а надо бы делать что-то великое". Роботы не парятся, и этот факт надо использовать.

По окончанию текущей активности просматривается список дел в RTM (это происходит мануально, а не автоматически, ибо напоминалки бесполезны и даже вредны). В нем обычно много всего, поэтому часто можно выбрать что-то себе по нраву. Таким образом, убирается стресс от того, что не хочется делать что-то одно, поэтому сидишь и вообще ничего не делаешь.

Предыдущий пункт невозможно реализовать на 100%. Дело в том, что в список попадают лягушки. Они же - дела, которые делать очень влом. Например, позвонить неприятному человеку или выстоять очередь в поликлинике. Они обычно вытесняются другими делами и могут висеть в списке веками, но при этом регулярно всплывают в моске и генерируют стресс. Способ борьбы прост, но требует дисциплины. Лягушек надо регулярно поедать живьем.

По опыту, эта схема практична только тогда, когда входящая информация поступает через минимальное количество источников, удобно откладывается в сторонку и при этом не теряется. Текущая реализация схемы основывается на использовании клауд-сервисов и андроид-смартфона. Таким образом, устраняется стресс от страха забыть что-то важное или потерять важную информацию.

Стратегия

Что делать с глобальным планом саморазвития пока что непонятно. Главная проблема у меня в том, что есть неслабая пропасть между реальным (опытом, скиллами, контекстом и загруженностью) и идеальным (вау, зависимые типы это круто - надо их осилить). Причем эта пропасть не преодолевается просто чтением литературы (на которую еще нужно иметь свежий моск). Нужно еще быть в контексте. Причем для того, чтобы туда попасть, может быть необходимо осилить какие-то другие топики, даже о существовании которых не имеешь ни малейшего представления.

Пару раз в день (в зависимости от загрузки, конечно) просматриваются отложенные странички/документы, френдлента и RSS. Интересные вещи - если есть настроение, читаются, иначе откладываются (клик на кнопочку "save to instapaper" в браузере). Неинтересные - выкидываются. Таким образом, повышается вероятность узнать о топиках, которые потом помогут понять совершенно неожиданные вещи. Кроме того, устраняется стресс выпадания из коллективного разума.

Глобальный план регулярно пересматривается. Из него выкидываются протухшие топики и из опыта формируются новые/уточненные векторы движения. Раньше я стеснялся того, что вещи, казавшиеся мне интересными неделю-две назад, фтыкать в текущий момент жутко влом. Думал, что это потому, что я такой рассеянный и нецелеустремленный. Теперь смирился с тем, что просто надо делать то, что сейчас интересно и не заморачиваться. Хз насколько это рационально, но, несомненно, это делает меня более счастливым.

Самый трудный камень преткновения - избавиться от чувства "за день/неделю/месяц ничего толкового не сделано, поэтому я лузер". Это также нерешенный вопрос - сейчас при появлении таких мыслей я просто вбиваю себе в голову гвоздь и стараюсь отвлечься.

Философия

За последние пару лет мой главный прогресс в организации сознательной деятельности был связан с устранением стрессов. Больше делать я стал исключительно благодаря тому, что меньше парюсь.

Самым важным усовершенствованием было отделение планирование от действования. Программирование самого себя удивительным образом сокращает количество трэшевых мыслей => освобождает моск для полезных дел. Повторюсь, роботы не парятся. Это надо использовать. Реализация этого императива нетривиальна, ибо требует ревизии всего wetware и поддержки со стороны техники, но результаты поражают воображение.

С течением времени все сложные вещи в моем wetware умерли: wysiwyg-форматирование в onenote, развесистые списки дел в rtm, онтологии в базе знаний, да и сама база знаний вместе с ними. В процессе эволюции они отвалились и были заменены ленивыми, короткими, плейн-текстовыми, плоскими альтернативами. K.I.S.S.
glider

убунта, часть 3: софт

часть 1: первый взгляд
часть 2: установка
часть 3: софт
часть 4: интероп с виндой
часть 5: обратно на винду

После трех недель опытной эксплуатации убунты могу сказать, что софт нашелся под все задачи, которые я привык выполнять на винде. Ну, или почти под все - за двумя исключениями. Во-первых, студия и прочее окружение для разработки под .NET. Во-вторых, офис. OpenOffice/LibreOffice это хорошо, но на сложных вордовских документах он складывается. Кроме того, даже на некоторых простых формочках он сбивает лаяут страниц. Интересно, как решать эту проблему. Свои документы можно научиться ваять в латеке, но что делать с внешним миром? Может быть, у вас есть идеи на эту тему?

Особенно приятно то, что удалось почти полностью автоматизировать установку операционки, используемых программ и применения своих настроек к сабжам. Скрипт состоит из двух частей. Первая - бутстраппер, который накатывает базовые настройки на голую систему и устанавливает дропбокс (здесь нужно ручное вмешательство, ибо, мне кажется, что забивать в скрипт пароль от аккаунта дропбокса - это некошерно). Вторая - все остальное из дропбокса (работает полностью автоматически). В итоге, на развертывание рабочего окружения с нуля уходит около получаса. Это, несомненно, прорыв по сравнению с многочасовой установкой и настройкой виндового окружения. Конечно, виндовые MSI-установщики можно заставить работать в тихом режиме и устанавливаться из батча, но кастомные EXE-инсталлеры придется прокликивать руками.

Насчет скриптования. Это было мое второе знакомство с линуксом, и, соответственно, в баше и прочем я был ни бум-бум. Впрочем, это и к лучшему - в итоге, за веселым и полезным времяпрепровождением удалось немного прошариться в баше. В этом мне очень помогли три ресурса. Во-первых, конечно, гугл. Во-вторых, пост уважаемого gds под названием safe bash coding guidelines (set -o errexit - это мое самое клёвое открытие в баше, хотя с set -o nounset я так и не подружился). В-третьих, прекрасный и замечательный вики Greg's Wiki, в котором кроме последовательного гайда объяснены многие полезняшки баша с вариантами обхода проблемных мест. Дошло даже до маразма вроде сборки XML из командной строки (для того, чтобы автоматически поставить плагин "Gmail Compose" для Оперы). В любом случае, это тоже было полезно - теперь большие и сложные скрипты на баше у меня писать нет желания =)

Соответственно, возникает вопрос: на чем кошерно писать скрипты под линукс? У меня в голове вертятся две опции: питон и перл. Плюс, я еще когда-то слышал про тикль. Пока что я склоняюсь к изучению второго питона (ибо под третий пока что мало что есть) и даже нашел вроде бы хороший гайд. Впрочем, я буду очень рад услышать альтернативные версии ответа на вопрос. По большому счету, с чем начинать разбираться мне все равно - в плане скриптовых языков у меня в голове абсолютная табула раза, поэтому за хороший совет буду благодарен. upd. После некоторых размышлений начал с перла. Очень понравилось!

Наконец, последний вопрос на сегодня. С Убунтой я немного разобрался, и поэтому стало интересно - чем разные дистрибутивы линукса отличаются друг от друга? Вот, например, в кружке ребе <lj user=" /> активно продвигают генту и пинают дебиан. Почему так? Особенное недоумение у меня вызывает последний факт. Вроде бы убунта это как бы тоже дебиан, а к убунте уважаемые ребе относятся даже слегка положительно.
glider

Телефонное собеседование с гуглом

Примерно в феврале я написал аппликейшн в гугл, после чего через пару недель со мной связалась девочка-рекрутерша по имени Дженни. Сказала, что меня также рекомендует мой бывший одноклассник, который сейчас работает в гугле, поэтому все круто, и предложила поболтать с ней по организационным вопросам. Договорились на через пару дней, но она заболела, а потом просто забыла про запланированный чат =))

В итоге поболтали в начале марта. она немножко повпаривала про то, что такое гугл и про то, что подготовить к собеседованию (по большей части это был рестейт известного блогпоста: http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html), после чего по добазарились о телефонном интервью.

Так сложилось, что у меня вначале был тоефл, потом отходняк, потом я готовил аппликейшен на GSoC, в итоге телефонное интервью состоялось только в прошлый понедельник, т.е. примерно через 2.5 месяца после подачи аппликейшена. Впрочем, большая часть задержек была по моей просьбе, поэтому гугл в тормознутости я упрекнуть не могу.

***

Чел позвонил минута в минуту, в 12:00. Минут 10-15 мы болтали о моем прошлом экспириенсе (это, кстати, большая проблема - связно и кратко рассказать о том, чем ты занимался. если бы я заранее не готовился и не получил неприятный опыт на одном из недавних интервью, то точно бы залажал), потом началось самое интересное - задачки на алгоритмы.

Первая задачка была про биты. Алгоритм был несложный, поэтому я сразу дал ответ циклом по всем битам, но, ясное дело, он не подошел. Вообще, как я читал в интернете, на собеседованиях в гугле очень любят задачки с двойным или тройным дном. Так и оказалось на практике. Через минуту-две я додумался до правильной идеи, а потом оставалось делом техники довести ее до ума. Впрочем, оказалось и тройное дно - у этой правильной идеи есть один нюанс, связанный с трейд-оффом относительно перфоманса.

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

Третья задача была про деревья. Необходимо было придумать модификацию обычного бинарного дерева, которая бы могла выполнять некоторые операции очень быстро. В нашем университетском курсе про такое не рассказывали, но тут помогла одна статейка с хабра. Хорошо, что я подготовился к собеседованию - сам бы я фиг додумался, если бы не знал, от чего отталкиваться.

Четвертая задача заключалась в кодировании одной из операций из третьей задачи. Делать это надо было в режиме реального времени в google docs. Началось все хорошо - я набросал структуру данных, проверил в алгоритме краевые условия, упомянул про defensive программирование, различные стратегии работы с ошибками и все дела. И потом неправильно написал алгоритм. Нет, главную идею я выразил правильно, но ошибся в мелочи, причем смог найти ошибку только с третьего раза. Хорошо, что все-таки пофиксил баг, зато потом додумался, как упростить алгоритм, уменьшив количество строчек раза в 1.5-2. Надеюсь, хоть это произвело положительное впечатление.

На этом оказалось, что мы разговариваем уже больше 55 минут, поэтому чел стал закругляться (по регламенту полагается около 45 минут на собеседование). Последовало классическое DYHAQFM, на что я классически ответил, что вопросов нет, но зато собеседование было очень интересным. На этом и разошлись.

***

Выводы:

1) Все было совсем просто, только надо было подготовиться. Так как во время двух недель подготовки я неслабо времени посвятил сортировкам и деревьям, мне было относительно просто. Впрочем, по факту я подготовил и кучу ненужных вещей, например, изучал новинки C# (додумался же сказать Дженни, что я эксперт сишарпа =)), неслабо проштудировал графы и строки (было риальне интересно!), разбирался с map/reduce, вдавался в детали работы континюэйшнов, читал про техники сборки мусора и JIT-компиляции. Наверное, для телефонного интервью это был оверкилл, но зато я поимел кучу фана. Надеюсь, меня пригласят на on-site интервью, где я смогу про все это поговорить. upd. Пригласили, не поговорили (детали ниже).

2) Всю неделю я писал маленькие алгоритмики в LINQPad, т.е. без IDE, без решарпера, без подсветки и без интеллисенса. Это сильно помогло кодировать в гуглодоксах, но, как видите, не спасло от затупов (ну что делать, иногда на меня как нападет затуп, так хоть иди вешайся на 10-15 минут, пока он пройдет - блин, я даже не могу оправдаться, что волновался, ибо нихрена я не волновался). В любом случае, кодирование в блокноте оказалось крайне полезным.

3) В процессе подготовки я уделил кучу времени алгоритмам и структурам данных (сортировки, деревья, графы, строки). В универе я их слушал весьма небрежно, а на практике почти не юзал, поэтому было трудно, но весело. Хорошо помогли Кормен и Скиена - им большое спасибо. В итоге, графы и строки оказались оверкиллом, но о своей подготовке я не жалею, единственное что - в следующий раз я бы уделил гораздо больше внимания задачкам с предыдущих собеседований. Возможно, это бы предотвратило такой стремный затуп.

upd. Так получилось, что, несмотря на фейл с кодированием задачки, я прошел телефонное интервью, и Дженни прислала приглашение поучаствовать в onsite интервью. На эту тему есть пост в трех частях: первая, вторая и третья.
glider

Интересное за полгода

Всем привет! Последний раз мы виделись за обсуждением прогресса по Конфлаксу, а это весьма давно. Пришло время рассказать о самых интересных штуках, произошедших со мной за последнее время. Кое-какие вещи я писал в стол и сейчас их запостил в режиме "Date out of order" (кому интересно - пролистайте бложек вниз), а об остальном коротко расскажу прямо здесь.

Все эти месяцы прошли в режиме усиленного поиска смысла жизни. Так получилось, что Конфлакс слишком долго был в роли не более, чем перспективной идеи, и это неслабо подкосило мотивацию. В итоге, за прошедшее время я больше читал, наблюдал и думал, чем писал потсы и код. Хорошей поддержкой мне стал блог Олега (zamotivator) - я на себе прочувствовал эффективность выхода из творческого кризиса посредством умеренной социализации, поэтому было очень интересно читать о похожем опыте. На обострившееся желание чувствовать происходящее вокруг очень здорово легли восточно-азиатские сериалы. Вещи вроде Orange Days поражают человечностью, социальностью и глубиной раскрытия основополагающих тем вроде семьи, работы, дружбы и любви. Ессно, у японских и корейских сериалов есть свои слабые места, но, в целом, эти креативы стали для меня откровением после голливудских сериалов вроде Хауса.

Очень понравилось читать художественную литературу. Как я недавно упоминал в каментах, киндл не оправдал возложенного на него доверия (не помещается в руку, фиг достанешь в транспорте, нет подсветки, нет дропбокса), и вместо него я для чтения юзаю телефон (на удивление, 3.7" lcd экран не напрягает глаза даже при длительном чтении). Впрочем, я отвлекся как в том анекдоте про "какой у тебя компьютер". Наибольшее впечатление на меня произвела "Анна Каренина", а также последующее прочтение рецензии Натальи Воронцовой-Юрьевой (внимание! там очень много букав). Могу сказать, что чтение и обдумывание сабжевой книжки позволили мне свести воедино многие разрозненные куски знаний и опыта касательно отношений и семьи. С небольшим отрывом второе место занял "Шантарам". Не знаю, насколько эта книга биографична, но описанный взгляд на жизнь - это что-то новенькое. Особенно запомнилась сцена первой посадки главного героя в переполненный поезд в Бомбее вместе с последующей поездкой в этом поезде. Также хотел бы еще упомянуть Довлатова - когда было хреново, для меня было лучшим лекарством сидеть и читать его часами.

Конечно, отрезок времени такой продолжительности не обошелся без хардварных апгрейдов. Очень полезной оказалась покупка смартфона. Я буквально час назад вытащил из эверноута и запостил заметку, написанную в декабре. Несмотря на то, что с того времени прошло несколько месяцев, мои впечатления не поменялись - крайне удобно держать большинство оперативных данных (таски, заметки) в облаке и прогонять почти все потоки информации (почта, напоминалки, новости, френд-лента) через телефон. Ну и отдельное спасибо ремембер-зе-милку: благодаря нему получается гораздо больше успевать в плане бытовых дел.

Также, я проникся идеей курсов - регулярного и детерминированного выделения небольших кусочков времени под какое-то полезное дело (например, по 2 часа пн/ср/пт). Родилась эта идея в результате посещения месячного курса подготовки к TOEFL (если кому интересно, я отпостился о впечатлениях сдачи тоефла и могу в каментах рассказать о том, как готовился - в целом, все просто и без шизы, но нужна системная подготовка). Смысл очень простой - даже если все неделя-две скатываются в полный трэш вследствие депрессняка, все равно в сухом остатке будет что-то полезное, ибо за 2 часа не успеваешь устать + маленькие кусочки новой инфы хорошо загружают подсознание. Сейчас разбираюсь с лямбда-исчислением по лекциям Дениса Москвина (deni_ok) - прогнал всего лишь четыре лекции, но узнал много концептуально нового + теперь неслабо тянет программировать на Хаскелле =)

Наконец, параллельно всему этому я искал точку приложения творческих порывов. Спасибо всем тем, кто дочитал досюда - продолжение будет в следующем посте.