LE Blog

Инженер с поэтической душой

24.10.2010 firtree_right Снова

Внезапно прервал виртуальную жизнь на три месяца. :) Даже не знаю, с чем это связано. Не помню, писал ли я уже об этом, но когда я в 2007-ом ушёл с работы, то для меня был довольно актуален вопрос: «чем же я хочу заниматься по жизни?» Нутро на вопросы не отвечало, поэтому я просто сел и выписал на бумагу то, чем я занимался в разные периоды своей жизни, начиная с 3 класса школы. И оказалось, что единственным, что присутствовало во все эти периоды, и сохранило мой интерес, было программирование. Это был забавный опыт, когда беспристрастный анализ на бумаге выявляет совсем не то, что ты привык про себя думать. Какое-то время ушло на то, чтобы сжиться с мыслью о себе-ещё-и-программисте (так, или иначе, около года), и тогда эта ипостась попёрла из меня со страшной силой. Сейчас всё стало заметно спокойнее. По крайней мере, я могу посвящать программированию один блог, а не два :)

Возможно, перерыв связан с тем, что когда интенсивно идут съёмки, то основная работа не в создании и придумывании нового, а в поддержке старого. Это кажется монотонным и недостойным внимания читателей. Или наоборот, придумывание нового было на такой зародышной стадии, что состояло в основном из тупки, а поддержка старого было единственной не-тупкой. Но в любом случае поддержка скучна [или не так весела].

Так или иначе, я написал про то, как определить, запущен ли демон.

♯♯♯

Ира подарила мне на день рождения книжку Гладуэлла, которая состоит из его статей в газету. Удивительно, до какой степени можно интересоваться людьми. Он как бы всё время воспроизводит тот опыт из детства, когда ты впервые узнаёшь, что внутри у другого человека всё устроено по-другому, и что многим не нравится то, что нравится тебе (и наоборот). Возможность посмотреть на мир глазами другого человека появляется уже в том возрасте, из которого есть чёткие воспоминания, да.

Но не суть. В общем, один из героев его статей был Цезарь Миллан  — в нашем переводе его шоу называется «переводчик с собачьего». В общем, мне стало очень любопытно, что он такое делает с собаками. А потом я поехал к родителям и увидел, что по Энимал Плэнет идёт как раз это шоу (я смотрю телевизор только у родителей). Потом приехал домой, и скачал ещё. Я не любитель собак или животных вообще. Но по какой-то причине я смотрел и смотрел это шоу, серия за серией.

Так вот, я вспомнил, что раньше читал (это было буквально одно предложение у Лазарева), что «человек — это животное плюс что-то ещё». И чем больше я смотрел, тем больше мне казалось, что мне понятно, где примерно проходит эта граница. Это, отчасти, игрушка для разума, но человека можно представить (для некоторых целей), как хозяин + собака.

Практические выводы такие:

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

  2. Простые вещи работают круче интеллекта. Важно, в каком состоянии просыпаюсь, о чём первом думаю, в каком состоянии ложусь спать. Что делаю перед [или за] едой. Что делаю регулярно. Если проснуться и сходить прогуляться в магазин за завтраком до того, как его есть, то это меняет весь день. Нежелательные состояния легче переключать пока они не набрали интенсивность. Если регулярно возвращать себя в определённое состояние, это имеет ошеломляющий эффект. Вообще, заиметь или бросить привычку — это очень масштабное изменение жизни.

Такие дела. А что у вас?

02.08.2010 firtree_right Rien de rien

Если вы, как и я, смотрели «La vie en rose», и вам, как и мне, понравилось, то от просмотра Inception вы получите дополнительные грани удовольствия.

Хотя Афиша-киноблог говорит, что это вышло случайно.

27.07.2010 firtree_right Водичка

Как-то я постепенно перестроился и привык к этой погоде. Главное, что я обнаружил, важно пить побольше воды. Раньше я мог вообще выпить в день три чашки чая (по одной на завтрак, обед и ужин) и больше не пить жидкости вообще. В жару особенно быстро голова наполняется всякими липкими мыслями. У меня есть даже теория, почему. А водичка довольно хорошо её [голову] освобождает.

На освободившееся место приходят мысли более пространные и обобщающие.

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

Или, что надо уже в своей Dwarf Fortress огородить площадку снаружи и поставить там статую, чтобы дворфы могли тусить на солнышке и не блевали бы, когда выходят из тёмных подземелий на свет. Хотя, конечно, это совсем не тот масштаб, что заставить их построить калькулятор.

А ещё, что реализовавшееся желание начать писать третье поколение съёмочной программы вылилось в то, что я думаю[туплю] большую часть дня, а непосредственно пишу — меньшую. Думать, всё таки, тяжелее, чем программировать. Спасают мелкие дела.

Или, например, непонятно, почему иное залетевшее в дом насекомое, даже очень маленькое, я скорее выпущу с миром, а тополиную моль — скорее убью.

А какие у вас мысли, когда вы попьёте водички?

08.07.2010 firtree_right Ассорти

В такую жару клёво делать что-нибудь новое и интересное. Пробовать что-нибудь в первый раз и проектировать с нуля. А писать документацию или дорабатывать наследие прошлого в такую жару лениво. Я нашёл программиста на си и очень им доволен. Он аккуратен, оперативен и такой же аут, как и я. Это будет уже третье поколение съёмочной программы. То есть я писал эту штуку два раза с чистого листа и мне всё мало.

Посмотрели сегодня «Девушка с татуировкой дракона». Я люблю скандинавское кино. У него всегда прекрасный, ни на что не похожий ритм. Вроде бы ничего не происходит, но невозможно глаз оторвать. Однако, я бы не смог посмотреть два скандинавских фильма с перерывом меньше чем в неделю. Вот такая любовь.

Нет более приятного собеседника за обедом, чем Маша.

А ещё я могу зайти на свой веб-сервер с телефона, отредактировать так конфиги, перезагрузить апач и обновить ПО. Не то чтобы я этим пользовался часто, но сама возможность завораживает и внушает чувство всемогущества.

А как у вас дела?

23.06.2010 firtree_right Пеар

Вот и вышел в свет ещё один портфолио-блог как у меня с Ирой. :) Сделал я его для наших с Ирой друзей, а именно Маши Красновой-Шабаевой. После того, как Маша и Тимур нарисовали дизайн, я долго тянул кота за хвост, чтобы не верстать, а потом впервые в своей практике применил метод: «Купи вёрстку у Мистера Вудмана и спи спокойно».

Заодно проверим на вшивость отечественных поставщиков хостинга, о которых недавно упоминал.

19.06.2010 firtree_right Деплой

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

В связи с чем попробовал отечественный продукт: хостинг locum.ru. Не знаю, правда, как он под нагрузкой, но первые впечатления от настройки приятные. С тех пор, как я пользуюсь capistrano, залить что-то на хостинг — легко и быстро. Самое трудное, обычно — это первый деплой. Тут как раз всё прошло быстро и не меняя привычек. Недостаток инструкций, конечно, имеется, но не страшный.

Я бы даже написал им инструкцию, как залить свой проект на Ruby on Rails на их хостинг, но я всё время стесняюсь, что не умею пользоваться ssh-agent. Может кто-то научит меня пользоваться ssh-agent, чтобы мне не добавлять дополнительный deploy-ключ в список пользователей репозитория?

18.06.2010 firtree_right Машинка!

Вот, чем я занимаюсь после работы:

12.06.2010 firtree_right Оказалось, не казалось

Пока вы спали (и я тоже спал) мне явился правильный ответ: это float в формате little endian (младшим байтом вперёд). Вот код для андроида.

int tmp = Float.floatToRawIntBits(new Float(number));
byte[] msg = {(byte)tmp, (byte)(tmp >> 8), (byte)(tmp >> 16), (byte)(tmp >> 24)};

Непонятно, зачем они так сделали, ведь работает NXT с целыми числами. Даже если и с точкой, то точность оборудования не та.

11.06.2010 firtree_right Профессиональное

Я тут вечерами не могу лечь спать, потому что управляю своим Lego Mindstorms роботом с телефона на Android (моего любимого ненаглядного HTC Desire то бишь) по bluetooth. Я уже написал базовое взаимодействие, и бодро передаю сообщения. Возник лишь один нюанс с передачей целых чисел. Вместо того чтобы совать их в трубу младшим байтом вперёд, как об этом говорят все интернеты, у меня они выглядят не так.

Это был целый детектив. Я слал ему little endian, но он отказывался. Сначала совсем. Потом везде видел нули Тогда я начал его пытать, и заставлял его посылать сообщения из целых чисел.

Если записать это в двоичной форме, то примерно понятно, что он имеет в виду. Но возможно есть матчасть, которую можно почитать, чтобы лучше это понять. Что это за представление, как его просто изобразить, скажем, на Java? Итак, имеем четыре байта:

... симметрично
-4 => 0x00 0x00 0x80 0xC0
-3 => 0x00 0x00 0x40 0xC0
-2 => 0x00 0x00 0x00 0xC0
-1 => 0x00 0x00 0x80 0xBF
0 => 0x00 0x00 0x00 0x00
1 => 0x00 0x00 0x80 0x3F
2 => 0x00 0x00 0x00 0x40
3 => 0x00 0x00 0x40 0x40
4 => 0x00 0x00 0x80 0x40
5 => 0x00 0x00 0xA0 0x40
6 => 0x00 0x00 0xC0 0x40
7 => 0x00 0x00 0xE0 0x40
8 => 0x00 0x00 0x00 0x41
9 => 0x00 0x00 0x10 0x41
10 => 0x00 0x00 0x20 0x41
...
15 => 0x00 0x00 0x70 0x41
16 => 0x00 0x00 0x80 0x41
17 => 0x00 0x00 0x88 0x41
...
555 => 0x00 0xC0 0x0A 0x44
...
2147483648 => 0x00 0x00 0x00 0x4F

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

09.06.2010 firtree_right Солянка

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

Решил со следующего раза возобновить ссылки отсюда в программерский блог по мере появления там статей. К тому же теперь там есть картинки. Для неискушенного читателя.

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

Андроид, кстати, и в использовании, и в разработке оказался вполне приятным.

Такие дела.