Turn off

Yury Yurevich about everything.

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-кальки.

14912730883

2012: Be happy, stay cool!

Today I’ve read awesome article about top 5 regrets of life and I want to convert it to 5 rules I’m going to follow in incoming 2012 year and I want to share that rules with you.

  1. Live for yourself, not for others expectations.
  2. Work hard.
  3. Trust your feelings and express it.
  4. Be in touch with friends and relatives.
  5. Be happy.
14708690961
It’s bad for the individual worker’s performance being online and available 24-7. You do need downtime, you do need periods in which you can actually reflect on something without needing instantaneously to give a reaction
http://www.bbc.co.uk/news/technology-16314901
13729726657

Встреча питонистов в Екатеринбурге

В среду я был в Екатеринбурге на открытом семинаре Клуба неанонимных Питонистов, организованном Антоном Патрушевым (Naumen), Ильей Шабалиным (Exadel), Юлией Герасимович (IT People) и мной. Как примерно прошел семинар можно узнать от Олега Лебедева (плюс фото в Фейсбуке).

Получилось немного более спонтанно чем ожидалось и совсем не в том порядке :) Я играл роль Капитана Очевидности на разогреве и рассказал чем мне нравится Python — Mini Zen of Python и чуть больше подробностей о том, где я работаю — oDesk Professional Services.

Антон немного рассказал, как и где используется Python в Naumen (де-факто активно только в одном подразделении — Nauphone), а Илья немного потроллил читаемостью и объемом кода Python vs Java vs PHP. Что порадовало, так это активность пришедших людей. Руководитель 66.ru поделился прикольностью сервисов (land page на PHP, краткие-и-быстрые проекты на Django, сервисы на Werkzeug+Jinja2+WTForms), дрим-тим из Яндекса раскрыл новые стороны использования Python в Яндекс.Такси — Twisted Web. И для меня были очень приятным сюрпризом самоорганизованные студенты, сделавшие спецкурс на Python. Уверен, эти люди пойдут далеко :) Поддержкой спецкурса заинтересовался IT People и Naumen. Думаю, это хороший знак.

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

  • IT People берет на себя рутинную часть организации — помещение, места, WiFi, чай, печеньки. Убедился на собственном опыте — делают всё хорошо.
  • Тем для обсуждения более чем достаточно
  • Люди хотят общаться

Решили особо не затягивать и сделать полноценный meetup в конце января в Екатеринбурге. Поэтому,

  • если вам кажется, что у вас есть интересная тема для обсуждения
  • вы желаете рассказать о чем-то, но не знаете как это сделать лучше
  • вы хотите поучаствовать в организации мероприятия (вне зависимости от места жительства)
  • вы знаете гуру, но он заперся в пещере и вы не можете уговорить его поехать в Екатеринбург

    свяжитесь со мной, я помогу.

P.S. Во время перерыва нас угощала чаем Банда Десертов, крайне рекомендую.

13064285272

Samsung Galaxy Tab 8.9 vs Apple iPad2

Я давно собирался взять супруге и детям iPad2. Мы вместе смотрели интерактивные книги на ноутбуке и было понятно, что без тач интерфейса они бессмысленны. Раздел education/kids в Android Market особо не вдохновлял. Так что на день рождения супруги с подарком долго выбирать не пришлось, я купил Apple iPad2. Тонкость и небольшой вес устройства в пару с его возможностми впечатлял. Я немного поигрался с этим устройством, в прямом и переносном смысле… Cut the Rope, Water, Modern Combat 3: Fallen Nations, Rainbow Six, Infinity Blade, Ep0ch. Проработанность интерфейса, слаженность, точность, быстродействие поражают. У меня мало азарта и игры для меня баловство, но книги… Благодаря этому устройству я снова стал читать. Читать с iPad приятно и именно это было последним аргументом, чтобы купить планшет. Всё, для чего я планировал использовать планшет, уже есть в моём Android-смартфоне, но читать на нем крайне не комфортно. С iPad же читать очень комфортно. В то же время я не был готов носить 10’, мне хотелось большей мобильности, устройство 7’-8’ мне казалось оптимальным. Поскольку с Android я знаком и он меня устраивает, то выбор был Samsung Galaxy Tab (7’, Android 2.2) либо Samsung Galaxy Tab 8.9 (8.9’, Android 3.1). С учетом того, что первый Tab у нас в Омске никак не хотел сбрасывать цену, то второе поколение Tab по почти такой же цене выглядело интересней и я купил его.

Юзабилити

  • iPad2: 5
  • Galaxy Tab: 3

В целом, ощущения такие: как платформа Android предоставляет больше возможностей пользователю, в то же время интерфейс у Apple лучше. “Лучше” означает, что приложения на iOS всегда знают, что запускаются на iPad. AppStore в первую очередь предлагает приложения для iPad. Ни разу не возникала ситуация, что размер шрифта не достаточный, либо “цели” куда нужно “тыкать пальцем” слишком мелкие. Интерфейс на iOS буквально следует за твоим пальцем. Отклики очень быстрые и плавные, ошибочных движений вообще нет. У Honeycomb в этом плане всё намного хуже. Приложений, разработанных под планшеты раз-два и обчелся (особенно если исключить игры) и даже там сплошь и рядом встречаются непродуманные решения. Интерфейс по сравнению с iOS тормозит, “свободный пробег” пальца без реакции интерфейса — громадный (на мой взгляд именно этот параметр и влияет на позитивное ощущение “интерфейс привязан к твоему пальцу”). Если у iPad новые приложения добавляются в конец списка и у тебя есть возможность пересортировать как тебе хочется, то у Galaxy Tab список всегда отсортирован по имени и это сильно-сильно мешает моторной памяти. Сегодня Messaging было внизу на первом экране, завтра ты добавил новые приложения и это приложение “убежало” на вторую страницу… Фиксация Android Market в ландшафт ориентации мне тоже показался не оправданным. Можно делать много оговорок, но в любом случае, в таких мелочах чувствуется недоработки юзабилити.

Social apps

  • iPad2: 4
  • Galaxy Tab: 3+

Я три дня искал твиттер клиент: даже “специально” разработанные для планшетов Plume и TweetComb показывают всё супермелко. Официальные приложения Facebook и Twitter для Android на Galaxy Tab выглядят мягко говоря страшно. Встроенный Social Hub это какая-то насмешка над смесью Twitter и Facebook. В итоге всё плохо: Seesmic, TweetDeck, HootSuite — мимо кассы. TweetCaster — лучшее, что я смог найти на текущий момент. На позитивной ноте, что я вообще нашел что-то юзабельное, купил Pro-версию, которая убирает рекламу. Для Facebook есть Friend Me, но он фиксирует ориентацию в ландшафт-режиме — не вариант. FriendCaster от той же компании-разработчика, что и TweetCaster, выглядит более вменяемо.

У iPad в этом плане всё гладко: можно вполне пользоваться официальными приложениями Twitter и Facebook, плюс все сторонние клиенты вполне адекватно отображаются.

У Android есть киллер-фича — расшарить контет из того места, где ты нашел этот контент. Это супер-удобно. Выделяешь url в адресной строке браузера, вуаля — и готов твит. Я даже подумал накинуть 1 балл за это, но потом передумал: никакие удобные фишки платформы не могу перевесить отсутствие нормального приложения.

Почта

  • iPad2: 4
  • Galaxy Tab: 5

Почтовые клиенты на обеих платформах хорошие, единственный значимый перевес у Android — нативное приложение GMail (т.е. плюс цветные ярлыки, priority inbox, пометка спамом и удаление).

Книги

  • iPad2: 5
  • Galaxy Tab: 3+

Обязательно напишу пост о книгах, читалках и шрифтах с скриншотами. Так что, чтобы не спойлерить, скажу лишь, что у iPad всё замечательно. У Android всё заметно хуже. Начиная со шрифтов и форматирования, заканчивая программами. Причем если приложение есть на обеих устройствах, то на Android оно значительно хуже, чем на iOS. Чтобы найти нормальную читалку для Galaxy Tab пришлось постараться, это оказалась Mantano Reader. В то же время, никто не дотянул до визуализации и вниманию к мелочам уровня iBooks. Ну и Amazon Kindle на всех платформах одинаково хорош, единственное, что кроме книг из Амазона ничего туда не добавишь (к примеру десктоп версия это позволяет).

Мультимедиа

  • iPad: 2
  • Galaxy Tab: 5

За месяц использования я так и не понял как добавить музыку в iPad без импортирования в iTunes. Как добавить видео вообще не понял. У Galaxy Tab в этом смысле всё просто работает: через web скачал фильм, ткнул, он играет.

Итоги

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

12159166004

Russian vs English

I’ve written this post in Russian while flight back from Kyiv and kept it in drafts. Andrew Mleczko ecouraged me to publish it in English in his review of Pycon UA.

From time to time I get a question: what language should I use to give a speech at conference. My answer is simple enough: if there are any people who don’t know Russian then you should use English.

Last time at PyCon UA some friends asked me: why did you give oDesk sponsored talk in English comparing to all other sponsors who did it in Russian.

The turning point for me was PyCon UA one year before: I prepared to give a pecha-kucha talk in Russian and we had a break before pecha-kucha session. I talked with few guys from Poland and they asked me about my talk. I said I was going to talk in Russian. They were quite disappointed and they encouraged me to translate my pecha-kucha to English. That was my first public talk in English.

Then I understood: if you translate your talk to English and one more person got your message then you did it right. And public talk is a very good training and an exam for your English speaking skills. I know, sometimes it’s quite difficult to give a public speech even in Russian and it’s going to be more stressful to talk in English, but there is no way to go through it without doing it.

The first step should be translate slides to English even if you’re going to talk in Russian. Please, do it on your next talk.

P.S. I believe flight is the best place to write posts like this: limited time, no distractions, no internet connection ;-)

11995029889

PyCon UA ‘11

Прошлую неделю я провел в Киеве и это было прекрасное время.

Во-первых, на выходных был PyCon UA и это было замечательно. Из-за плотного рабочего графика я не успел подготовить доклад о том как мы организуем тестирование (тем более оно у нас еще не до конца сделано ;)) В любом случае, у меня получилось пару раз кратенько выступить: один раз с sponsored talk, второй раз с lightning talk. Активно думаю над тем, чтобы исправиться и выступить с полноценным докладом, поскольку последние два года ограничивался 5-минутками.

Я специально не планировал посещение той или иной секции и слушал доклады “как получится”. При таком подходе мне понравился доклад Тарека о пакетировании, несколько прояснил вопросы относительно “куда всё движется”. Я как-то не задумывался о том, почему зависимости резолвятся только когда пакет скачан. И какая принципиальная разница в зависимостях яиц и пакетов с исходниками. Я считаю, что доклад удачный. Сниппеты от Армина не самый “зрелищный” доклад. Много кода, много деталей, это был скорее “слайдокумент”, чем слайды. С другой стороны, это действительно пересмотр опыта Pocoo и Армина в частности. Эти сниппеты я встречал в разное время в разных проектах от Pocoo и однозначно стоит вдумчиво пересмотреть слайды на досуге. Из тех докладов, что я видел целиком хочется отметить доклад Эндрю — отлично, интересная тема, подкрепленная значительным опытом и хорошие слайды. И конечно, британский акцент придает неповторимый шарм :-D

Что в этом году я выполнил на 100%, так это общение. Почти со всем, с кем хотел увидеться — увиделся, с кем хотел поговорить — поговорил. Надеюсь, что и поговорил со всеми, кто хотел со мною поговорить :-) Один из самых итересных и познавательных разговоров случился с Тареком по поводу red barrel: для чего этот проект и куда он движется. Получил пару интересных ссылок: релиз Google API Explorer (я его пропустил), JSON Schema и блог пост об API Discovery в Mozilla.

Теперь немного о том, что мне не понравилось: во-первых, определенно, ведущему не хватало тактичности. Я убежден, что дело ведущего сглаживать неловкие моменты, а не создавать их. Во-вторых, не хватает англоязычных докладов от украинского коммунити. Я видел, что иностранным докладчикам было весьма неуютно при русскоязычных докладах. Я видел, как обрадовался Тарек, когда Александр рассказал о SQLAlchemy на английском. Моя позиция такая, что лучше пусть будет корявый английский (я не об Александре ;-)), чем хороший русский. Я в этом вопросе тоже не безгрешен и lightning talk сделал на русском.

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

P.S. Обещаю: если я выиграю лицензию на PyCharm, то никому ее не отдам, наклею наклейку PyCharm на ноутбук и честно попытаюсь попользоваться еще раз вместо Emacs :-)

11787815971

Тест инфицирован

На PyCon UA я выступил со «спонтанным» lightning talk в стиле групповой терапии :-)

Меня зовут Юра и у меня есть проблема.

Уж не знаю, что для меня было более забавным, то ли рассказывать lightning talk, то ли готовить слайды пока остальные участники не «выговорили» свои мини-доклады.

10365022070

WSGI-приложение в Django

Django завоевал мир™ и достаточно сложно найти WSGI-приложение, аналога которого бы не было в Django. Тем не менее, такое встречается и последний пример, который мне попался: resweb, веб-интерфейс для pyres (я в прошлом году рассказывал о нём). До недавнего времени я особо не пользовались веб-интерфейсом, но на днях мне захотелось “подключить” resweb в Django-проект. Подключить в моем случае означало реиспользование Django подсистемы аутентификации и “монтирование” resweb в качестве Django view.

Resweb написан на itty — WSGI микрофреймворке, так что поначалу я думал, что будет всё гладко. Немного погуглив я нашел twod.wsgi для подключения WSGI-приложений в Django-проект. Разобравшись с twod.wsgi, я написал сильно упрощенную и намного более “прямую” версию: shay. Я в продакшн не проверял, но тестовые примеры работали :-) Всё оказалось несколько хуже, чем я изначально предполагал. Я изрядно подзабыл все “радости” низкоуровневых инструментов и уж совсем забыл о том, что два произвольных WSGI приложение невозможно между собой корректно связать, если только эти приложения изначально не создавались с оглядкой на реиспользование. Так что результат вполне закономерен — resweb нельзя корректно включить в своё Django-приложение, потому что все URLы в resweb абсолютные.

Задачка стояла не особо остро, так что я решил попробовать портировать resweb на Django :-)