Always sleepy

Notes by Alexey Poimtsev.

RethinkDB и Ruby on Rails

Развивая тему работы с RethinkDB хочу поговорить про использование этой БД в Ruby on Rails проектах.

RethinkDB - первое знакомство

Не так давно, с подачи моего друга и коллеги Димы Королёва, я узнал об интересном проекте – базе данных RethinkDB. Я потратил некоторое время на исследование этой базы данных, а также привлек одного из своих коллег, Сашу Павлютя и с результатами этих исследований хочу познакомить всех интересующихся.

Bower-rails и Rails-assets

На сегодняшний момент существует много различных способов поддерживать актуальные версии различных javascript-библиотек в rails-проектах, сегодня я рассмотрю два интересных варианта – использование bower в рельсовых приложениях и сервис rails-assets.org

PostgreSQL Backup с использованием Wal-e

В большинстве своих проектов мы в Progress Engine используем PostgreSQL. Для того, чтобы обеспечить бэкап данных мы используем утилиту wal-e от heroku для бэкапа данных на Amazon S3. Ниже – краткое руководство по использованию.

Split Mp3 + Cue на OSX

Несколько раз ко мне попадали интересные mp3-альбомы в формате mp3/wav + cue и если на Windows есть огромное количество утилит, чтобы разделить один большой трек на несколько небольших, то для OSX их не очень много. К счастью – они есть :)

1
$ brew install mp3split

Теперь мы можем спокойно разделить трек:

1
$ mp3splt -c filename.cue filename.mp3

Вуаля :) Как результат получаем – набор mp3-треков с прописанными id3-тэгами.

Coding Schools

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

А также – большие архивы курсов, не только по программированию:

Inbox Zero

Некоторое время назад столкнулся с интересной для меня концепцией – Inbox Zero, придуманной Merlin Mann, автором статей в Macworld, Make и Popular Science. В этом выступлении на Google Tech Talk в 2007 году он рассказывает о своей концепции.

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

Для начала давайте создадим структуру своего почтового архива (хотя наверняка она уже вами создана). Для своего рабочего ящика я создал что-то вроде такого:

  • Business Trips (все что касается командировок)
  • Clients – Clients1 (все письма от клиента Client 1)
  • Clients – ClientsN (все письма от клиента Client N)
  • Company – Finance (финансовые вопросы по работе)
  • Internal Projects – Prj1 (внутренний проект 1)
  • Internal Projects – PrjN (внутренний проект N)
  • Payments (всякие чеки)
  • Other stuff (прочее)

Теперь давайте разгребем авгиевы конюшни, которые у нас во входящих.

  1. Удаляем ненужные письма. К ним относятся – сообщения и дайджесты с разных форумов, сайтов, купонаторов и другим, к которым мы никогда не вернемся. Для этого определяем от кого они приходят, задаем поиск и удаляем. Например – нотификации от групп Google приходят от название_группы@googlegroups.com, фильтруем по полю from и вычищаем :)

  2. Используем фильтр по отправителю. Например письма от клиентов в большинстве случаев можно отфильтровать по домену отправителя или личному email.

  3. Большинство писем имеют в названии ключевое слово (например – название проекта), по которому их можно сортировать – задаем поиск и раскладываем

  4. После нескольких проходов фильтрации/удаления писем у нас остается во входящих небольшое количество писем, их можно разложить/удалить вручную (или попытаться сделать под них свои правила). В большинстве случаев – это переписка из пары писем со случайными знакомыми.

Теперь, когда мы стали обладателями пустого (ну или почти пустого :) почтового ящика мы можем удовлетворенно вздохнуть и поздравить себя :) Перед нами самая сложная задача – поддерживать его в таком состоянии. Merlin Mann предполагает, что к каждому входящему могут быть применены следующие действия:

  • Delete (удаление) – удаляем, если письмо вам в дальнейшем не понадобится.
  • Delegate (делегирование) – назначение ответственного. Пересылаем письмо коллеге и при необходимости в таск-трекере помечаем, что надо проследить, чтобы человек отработал задачу. Соответственно – автору письмо отправляем сообщение, что у задачи есть конкретный исполнитель
  • Respond (ответ) – по большей части это запрос дополнительной информации, которая вам необходима для выполнения задачи. При необходимости в таск трекере помечается, что надо напомнить о своем вопросе. Как только ответ пришел – в таск трекере закрываем задачу о напоминании и ставим задачу о необходимости исполнения запроса
  • Defer (отложить) – ставим в таск трекере задачу на конкретный срок или без срока и отправляем письмо в архив. В большинстве случаев – это задачи, не требующие немедленного исполнения
  • Do (выполнить) – ставим задачу в таск трекере и если можем – тут же приступаем к ее выполнению.

Все действия кроме Delete подразумевают, что письмо отправится в архив, который мы создали чуть раньше.

В принципе – ничего сложного нет. Лично я пользуюсь несколько месяцев и доволен. Буду ждать ваших отзывов :)

Выступление в Питере 18 сентября 2013

18 сентября 2013 года мне довелось читать доклад в Европейском университете в Санкт-Петербурге на кафедре STS. Меня пригласила поучаствовать в мероприятии моя хорошая знакомая Ксения Ермошина, которая пишет диссертацию в одном из французских университетов, также в мероприятии участвовал Леша Сидоренко из “Теплицы социальных технологий”. Это оказалось достаточно интересное мероприятие – мне пришлось рассказывать социологам о практической стороне создания социальных проектов. Рассказал им зачем участвовать в таких проектах и о том как сделать интересный и полезный сервис. Упомянул про несколько проектов, которые стоят в roadmap’е нашей компании – Social marketplace (я про него писал чуть ранее в блоге) и Goodwill card, про который не успел рассказать. На следующий день, 19 сентября мне довелось поучаствовать в круглом столе. Ученые-социологи решили исследовать в социальных сетях сообщество русских разработчиков. На самом деле, достаточно сложно однозначно сформулировать что такое Russian Computer Scientists, которых они решили исследовать. Я составил для них список из 11 пунктов, которые могли бы более точно сформулировать выборку. Приведу некоторые из пунктов:

  • Является ли владение русским языком критерием? А если это не основной, а выученный язык?
  • Является ли критерием проживание в России? А если человек является экспатом? А если он уехал из России, но считает себя русским?
  • Возможно стоит использовать как критерий самоидентификацию человека как русского программиста
  • Должен ли человек обладать специализированным образованием? А если это хороший программист, который приобрел знания не в учебном заведении?
  • А если человек асоциален? Лично я знаю нескольких неплохих разработчиков, которые принципиально не регистрируются в соцсетях
  • Включать ли в выборку Dark Side – хакеров, пиратов и так далее, которые обладая хорошими знаниями предпочитают не распространяться о том, чем занимаются
  • Насколько интересны для исследования теоретики, которые не приносят никакой практической пользы, но обладают сильными академическими знаниями
  • Попадают ли в выборку разработчики, которые не участвуют в разработке проектов с открытым исходным кодом. Они могут создавать замечательные проприетарные продукты, но уровень их экспертизы оценить не получится.
  • Подпадает ли телеком под выдвигаемые рамки?
  • И так далее – список можно продолжать очень долго.

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

Let’s GO

Последнее время погружаюсь в язык go. Казалось бы – при всем удобстве ruby что еще можно требовать от жизни, но go меня очень сильно подкупил своей скоростью работы.

Работа с иностранными контрагентами и валютный контроль

Развивая собственный бизнес рано или поздно начинаешь задумываться о том, чтобы выйти за пределы страны и найти зарубежных клиентов. Когда у нас в Progress Engine появился первый иностранный контрагент – мне пришлось потратить некоторое время для того, чтобы разобраться со всеми необходимыми процедурами и сейчас я хочу рассказать всем доступным языком о своем опыте.