Turn off

Yury Yurevich about everything.

52207410461

Аннотация документов

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

  • рисовать прототипы интерфейсов
  • делать заметки во время совещаний
  • делать аннотации к документам

В прошлый раз я рассказывал о том как заменил бумагу и карандаш iPadом.

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

Сегодня же я расскажу о третьем пункте – аннотация документов. Я могу вспомнить два самых распространенных случая когда мне нужно сделать аннотации: изучение новой спецификации и выбор кандидатов при наборе.

Я не знаю наверняка по каким причинам, но такого рода деятельность возможна для меня исключительно в режиме полного погружения. Это означает, что мне нужно уединиться в комнате, без компьютера и внимательно “прочувствовать” информацию. Соответственно до недавнего времени это был только один вариант – распечатать документ и сделать пометки ручкой/маркером.

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

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

Я перебрал несколько вариантов, самым удобным показался PDF + аннотация. Я открыл для себя Adobe Acrobat for iPad — и это было оно! Бесплатное приложение. Можно рисовать, делать текстовые пометки, выделять цветом а-ля маркер. Интерфейс не идеальный, но ОК.

Мне удалось “оптимизировать” бумажную часть, но в целом процесс получается сложным: спецификации и списки кандидатов обычно готовятся в Google Docs. Я потом их экспортирую в PDF и пересылаю на iPad. Там делаю аннотации и пересылаю назад. В таком варианте получается две копии документа: оригинал и аннотированный PDF. Как их вместе “смерджить” я еще не придумал :)

43293233590

Приложения для iPad для рисования

Очень долгое время я использовал бумагу и карандаш с ручкой для рисования прототипов интерфейсов. Я не UX специалист и необходимость появляется не особо часто, но зато часто хочется что-нибудь проиллюстрировать.

В итоге, подумал-подумал и решил взять стилус для айпада. Взял Wacom Bamboo — единственный стилус, упомянутый в http://www.theverge.com/2012/4/10/2925937/best-stylus-ipad-review и бывший в ближайшем BestBuy

Penultimate

Начал я с бесплатного Penultimate

В наборе у него всего один инструмент – ручка

Попробовал, нарисовал какой-то скетч:

Не особо вдохновило, прямо скажу.

Bamboo Paper

В упаковке со стилусом шел флаер Bamboo Paper.

У этой рисовалки два инструмента: ручка (с тремя степенями толщины) и маркер (тоже с тремя степенями толщины):

Попробовал нарисовать примерно то же самое, что и в Penultimate — и процесс, и результат мне понравились больше:

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

Paper by 53

Для полноты картины я попробовал еще известную Paper by 53

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

Я попробовал нарисовать тот же самый скетч.

Остались двоякие впечатления. С одной стороны, программа очень продуманная и возможностей масса, с другой стороны, мне художественная составляющая не особо важна. Мне важно чтобы инструмент не мешал :) Наверное для моих нужд Paper by 53 слишком гибкая…

Итог

Оставляю Paper by 53 для баловства и Bamboo Paper для рисования моков/скетчей. Penultimate удаляю без сожаления.

27822320333

Mazdas

Так получилось, что у нас в семье две Мазды: CX-9 и MX-5. Самая большая и самая маленькая Мазды.

CX-9

Хороший семейный корабль. Идеально подходит для выезда на природу всей семьей и шоппинга. Немного великоват для супруги, особенно когда дело касается парковки. С другой стороны, легко вмещает 4 взрослых + 2 детей с комфортом, плюс необходимый багаж. Либо «стандартная» компоновка 2 взрослых + 2 детей + покупки на 2 недели :D

Не смотря на свою SUV природу, рулится хорошо, но из-за размера, веса и шин на узких серпантинах не очень комфортно, зато шоссе – его стихия. Только передний привод, но этого более чем хватает для условий «немного проехать по неасфальтированному участку». V6 3.7л, 273 л.с. — более чем достаточно для штатных условий город+шоссе, запас мощности и тяги почти всегда есть, вот запаса по тормозам не особо.

Эту машину я взял в лизинг. Т.е. юридически это долгосрочная: автомобилем владеет банк, а ты платишь ему аренду. Когда заканчивается срок лизинга, то есть вариант отдать машину, либо второй вариант – выкупить по остаточной стоимости.

MX-5

Эту машину я взял для себя. Ее стихия – повороты. Эта машина не особо любит шоссе. Шумно, очень шумно. Едешь в Миате и кажется ты взлетаешь, смотришь на спидометр – 70 миль/ч, на этой скорости у CX-9 только ветер шумит в передних стойках. Из-за шума ветра, шума шин, шума двигателя автомобиль воспринимается как очень быстрый. Мгновенная реакция на газ, очень «прямое» управление – ощущения как будто между руками/ногами и асфальтом нет ни одного резинового элемента. Сидишь супернизко, просто падаешь. И два варианта акробатического этюда: первый – это садишься в кресло, потом закидываешь ноги; второй – вначале правая нога, потом падаешь на кресло и поттягиваешь левую. Такой контраст с первой машиной: кресла и подвеска после Миаты на CX-9 кажется «диванной», а газ ватным, а посадка получается так вообще незатейливой. Просто садишься, не падая, не делая ногами непонятные движения :) Потом, после выходных, понедельничный первый «прогон» на MX-5 дарит ощущения… ощущения. Машина не заводится без выжатого сцепления и вздрагивает от запуска двигателя. У нее голос хриплый и рычаг КПП вибрирует что есть сил. У нее посадка, что я вижу элементы подвески впередистоящих SUV. Что забавно, так то, что на CX-9 я не люблю дороги с множеством стоп-знаков. Это нужно останавливаться, потом опять разгоняться. И вроде как CX-9 делает это без напрягов, но только на MX-5 мне нравится этот процесс и такие дороги мне нравятся намного больше чем шоссе. На CX-9 наоборот.

А еще Миату любят дети. Так что по выходныи я иногда катаю их по городу с открытой крышой, по очереди. :)

27214896296

Автоматический рестарт

При разработке весьма удобно, когда сервер (httpd в случае веб-разработки) автоматически перезапускается. Django делает это по умолчанию из коробки. Tornado и Flask делают это, если запускать их в debug режиме. Twisted не умеет :)

По ходу Twisted Meetup мы делали небольшое задание и отсутствие автоматического перезапуска кода напрягало. Мне посоветовали использовать kicker. Единственно, что требуется для kicker, это чтобы команда выполнялась быстро. Т.е. если мы говорим о долгоживущих процессах, то нужно из демонизировать. Для этого можно воспользоваться daemon или daemonize (оба есть в homebrew), либо supervisord. Для такого маленького задания, которое мы делали, supervisord был бы слишком большим и я сделал при помощи daemonize. В итоге написал маленький скрипт-обертку для kickstart и daemonize:

./rund.sh /usr/bin/python web.py
24458408396

Приватный блог

В связи с переездом встал вопрос о связи с родными. В качестве решения выбран приватный блог. Требования простые:

  1. Приватный. Не индексируется поисковыми движками. Контент не доступен без аутентификации. Списком пользователей управляю я.
  2. Два автора.
  3. HTML-нотификация с полным контентом о новых постах.
  4. Было бы здорово, но совсем не обязательно: возможность нотификации почтой о новых комментариях и ответ на комментарий почтой.

До недавнего времени я использовал Posterous. Проблема всплыла в неожиданном месте — оказывается Posterous (как и LiveJournal) заблокированы в Казахстане, где живут мои родители. До недавних пор они мирились хотя бы с этим фактом и обходились тем, что читали HTML-письма с фото. Недавно казахстанские ISP проапгрейдили фильтры и фото перестали показываться в почте. Работающие вариатны с Facebook и Apple Messages мне не особо нравятся или правильнее сказать, я готов их рассматривать как временные решения, но не согласен на долгосрочное использование. Posterous еще не внушает доверия в свете недавней продажи — после продажи не появилось какой-либо дополнительной информации о средствах миграции, поэтому пока не зашло это все слишком далеко — лучше мигрировать руками заранее.

Livejournal, как я уже говорил выше, отпадает. Tumblr+MailChimp решили бы на отлично задачку, если бы Tumlbr не отключал RSS для приватных блогов.

Поэтому пока что для меня решение из наименьших зол — WordPress, я купил на пробу аккаунт на MediaTemple, это дороже чем если бы я хостил на Rackspace Cloud, где у меня есть аккаунт, и сам бы управлял, но мне очень сильно хотелось избежать ручного манипулирования чем либо :)

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

  1. Если есть блог-платформа предлагающая мне решение целиком, пусть даже за деньги (до $20/месяц, лучше меньше), то я готов попробовать.
  2. Режим приватного блога для WordPress и RSS. Если я правильно понял, то приватный доступ может делаться при помощи плагина. Тут дело усложняется тем, что MailChimp не умеет ходить на закрытые basic auth адреса за RSS и поэтому те плагины, которые я нашел не подходят. Поэтому нужен плагин, который закрывает доступ к тексту, но дает доступ к картинкам и фидам по уникальным для пользователя ключам доступа.

Жду с нетерпением ваших советов.

22883430712

Переезд

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

Почти два года я проработал удаленно в oDesk, последнее время в роли руководителя распределенной команды, и по результатам я получил приглашение работать в офисе, в Редвуд Сити. Не скажу, что я спал и видел как бы уехать из России, равно как и не считал что США - земля обетованная и рай земной. Я считаю, что это очень не плохой опыт, который сложно получить в Омске. В общем, поразмышляв и обдумав, я согласился.

У меня рабочая виза H1-B и я перевез семью. Старшая (5 лет) будет ходить в публичную бесплатную школу, младший (2 года) в детсад ходить не будет, по крайней мере в ближайшее время. Мы живем в Фостер Сити. Здесь хорошо, общее впечатление от жилого комплекса близко к ощущению от дома отдыха: двухэтажные группы строений, дорожки, озеро, белки, утки, гуси и чайки.

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

Немного расскажу о судьбе проекта, по которому у меня есть некоторые обязательства перед коммунити. В первую очередь я вынужден публично признаться, что мой эксперимент с MarginCon оказался не удачным. Все же более правильно и более успешно делать конференции по вещам, которые тебе близко по духу. Де-факто получилось не расширение тематики, а замещение. Так что после второй конференции я принял решение возвращаться к исходной тематике Python. На тот момент планы по переезду уже сформировались и я не видел смысла ангажировать народ на RuPyRu‘12. Упавшее знамя подняли Антон Патрушев и Юлия Герасимович с ekb.py, за что им респект и уважуха. Я был там, очень достойное мероприятие, крайне рекомендую участвовать. Сухой остаток: MarginCon не будет, вместо RuPyRu в Омске будет ekb.py в Екатеринбурге.

22184446930

Майские ссылки

Перед майскими праздниками нашел несколько интересных статей и библиотек, чтобы почитать и посмотреть:

  • Technical debt — неплохая статья, объясняющая метафору “кредита” по отношению к разработчикам.
  • Line-by-line memory usage of a Python program — рассказ о новом профайлере памяти
  • Implementing a generator/yield in a Python C extension — заголовок говорит сам за себя. Этот туториал мне понравился: четко очерченная тема, фокус на Python 3, правильная подача: пошагово, все понятно, в конце есть рабочий пример :)
  • Redis persistence demystified — автор Redis пишет о том, что “под капотом” Redis (статья написана в конце марта, так что наверное самые активные люди уже давно ее прочитали, но у меня только сейчас получилось до нее дойти).
  • Introducing RQ — анонс RQ, очереди отложенных задач, альтернативы Celery, от автора известного Successful Git branching model.
  • PyCounters — интересная задумка о сборе и агрегировании метрик. IMHO, было бы в тему хранение этих метрик не в локальной памяти процесса, а в Redis :)

Бонус: как из простой задачки “написать резюме” инженер делает целый детектив: http://blog.zayats.org.ua/post/21714522965/new-resume

17773012767

ekb.py

10 февраля я побывал в Екатеринбурге на конференции ekb.py. По духу она близка к “городским” мини-конференциям, тон в которых задает Украина. По масштабу же событие намного превосходило формат: полный день, два потока докладчиков, три мастер-класса. Для меня ekb.py стало отдушиной, я встретил много людей с горящими глазами и ощутил тот фан, которого зачастую не хватает в обычном рабочем режиме, особенно если работаешь удаленно.

Первым в большом зале выступал я. Мне сложно оценивать своё выступление объективно, тем более я еще не пересматривал своё видео. По собственным ощущениям, были провалы в логике доклада и не хватало драйва. Жду фидбека от Юлии Герасимович :-)

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

Потом я перешел в малый зал, на доклад Олега Евсегнеева по взаимодействию Zope и RDBMS. Тема, на мой взгляд, хорошая, но интерес к докладу убивало три фактора: низкая популярность Zope, не очень демонстративные слайды и монотонный голос рассказчика. В то же время, докладчик изредка отжигал, что несколько скрашивало обстановку. Под конец доклада народу собралось раза в два больше, чем в начале.

Следом был кофе-брейк и я на нем несколько задержался, так что не получилось оцкеить насколько удался тролл-фейс в большом зале у Александра Кирпичникова по тому как он с нелюбовью использует MongoDB. Попал только под конец доклада и застал секцию вопросов.

Потом я опять вернулся в малый зал и не зря — не смотря на отсутствие слайдов, всё было очень живо и весело. Роман Иманкулов показал как можно зажечь аудиторию и раскрыть тему (он рассказывал Celery) исключительно пламенем в голосе и правильной подаче актуальной информации.

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

В целом, я считаю, что съездил не зря. Мне очень понравился уровень подготовки конференции, за что я отдельно хочу сказать спасибо замечтальным девушкам из IT People и Антону Патрушеву, который был идейным двигателем всего процесса.

IT People оперативно выложили фото и видео :)

P.S. Для чего нужен QR-код не в курсе :)

15949336662

Что нового в Android 3.2

Недавно на Galaxy Tab 8.9 приехало обновление до Android 3.2. На Gizmodo не особо уточняют что нового, упоминают разве что о фиче zooming и поддержке 7’ аппаратов. Я обновился и вот что нового я увидел.

Zooming

Теперь, если вы запускаете приложение, не поддерживающее Honeycomb, то у вас в области уведомлений появляется новая иконка “zooming” и есть два варианта:

очень мелко (stretch):

или очень страшно (zoom):

Market

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

Уведомления календаря

Скорее всего обновилось целиком приложение “Календарь”, но я пока заметил только нотификации. Теперь для операций с событием нужно обязательно его выбрать. С одной стороны, стало более гибко. Если у вас несколько событий, то можно выбрать только одно и напомнить повторно только о нем. С другой стороны, стало больше “тыков” при типовых операциях. Чаще всего напоминание только одно и приходится вначале выбрать единственное напоминание, а потом уже что-то делать с ним.

Из видимых изменений — это всё, что я успел заметить за пару дней.

15234469909

Design Patterns in Python

Примеры паттернов, реализованных на Питоне. Хотя @umputun ссылается на них как “неплохие”, то я бы сказал “неплохие иллюстрации паттернов, плохой Python код”. В большинстве случаев (кроме MVC и Observer) код служит только для иллюстрации паттерна и слабо пересекается с тем, как подобные задачи реализуются на практике. Чаще это всё делается намного проще. Keep it simple ;)

P.S. Достаточно много примеров приводится на аналогии с модулем unittest (адаптация jUnit), который является общепризнаным примером неудачной Java-кальки.