<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><description>Yury Yurevich about everything.</description><title>Turn off</title><generator>Tumblr (3.0; @off)</generator><link>http://j2a.ru/</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/turn_off" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="turn_off" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://tumblr.superfeedr.com/" /><item><title>Переезд</title><description>&lt;p&gt; Я не особо скрывал, но в то же время и не говорил публично о переезде. Последний этап благополучно завершен и теперь можно спокойно обсуждать этот вопрос.&lt;/p&gt;

&lt;p&gt;Почти два года я проработал удаленно в &lt;a href="http://odesk.com" target="_self" title=""&gt;oDesk&lt;/a&gt;, последнее время в роли руководителя распределенной команды, и по результатам я получил приглашение работать в офисе, в Редвуд Сити. Не скажу, что я спал и видел как бы уехать из России, равно как и не считал что США - земля обетованная и рай земной. Я считаю, что это очень не плохой опыт, который сложно получить в Омске. В общем, поразмышляв и обдумав, я согласился.&lt;/p&gt;

&lt;p&gt;У меня рабочая виза H1-B и я перевез семью. Старшая (5 лет) будет ходить в публичную бесплатную школу, младший (2 года) в детсад ходить не будет, по крайней мере в ближайшее время. Мы живем в Фостер Сити. Здесь хорошо, общее впечатление от жилого комплекса близко к ощущению от дома отдыха: двухэтажные группы строений, дорожки, озеро, белки, утки, гуси и чайки.&lt;/p&gt;

&lt;p&gt; На текущий момент у меня нет конкретных планов по поводу дальнейшего возвращения или не возвращения. Этот вопрос неоднозначный и зависит от многих факторов, но в то же время основной фокус будет на &amp;#8220;остаться&amp;#8221;&lt;/p&gt;

&lt;p&gt;Немного расскажу о судьбе проекта, по которому у меня есть некоторые обязательства перед коммунити. В первую очередь я вынужден публично признаться, что мой эксперимент с &lt;a href="http://margincon.ru" target="_self" title=""&gt;MarginCon&lt;/a&gt; оказался не удачным. Все же более правильно и более успешно делать конференции по вещам, которые тебе близко по духу. Де-факто получилось не расширение тематики, а замещение. Так что после второй конференции я принял решение возвращаться к исходной тематике Python. На тот момент планы по переезду уже сформировались и я не видел смысла ангажировать народ на &lt;a href="http://rupy.ru" target="_self" title=""&gt;RuPyRu&lt;/a&gt;&amp;#8216;12. Упавшее знамя подняли &lt;a href="http://twitter.com/apatrushev" target="_self" title=""&gt;Антон Патрушев&lt;/a&gt; и &lt;a href="http://twitter.com/gerasimovich_yu" target="_self" title=""&gt;Юлия Герасимович&lt;/a&gt; с &lt;a href="http://ekbpy.ru" target="_self" title=""&gt;ekb.py&lt;/a&gt;, за что им респект и уважуха. Я был там, очень достойное мероприятие, крайне рекомендую участвовать. Сухой остаток: &lt;strong&gt;MarginCon не будет, вместо RuPyRu в Омске будет ekb.py в Екатеринбурге&lt;/strong&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/turn_off?a=McZZrWStF9g:jA390eRp6_U:bKYY9g0K8g8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/turn_off?i=McZZrWStF9g:jA390eRp6_U:bKYY9g0K8g8" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://j2a.ru/post/22883430712</link><guid>http://j2a.ru/post/22883430712</guid><pubDate>Sat, 12 May 2012 11:59:00 +0800</pubDate><category>usa</category></item><item><title>Майские ссылки</title><description>&lt;p&gt;Перед майскими праздниками нашел несколько интересных статей и библиотек, чтобы почитать и посмотреть:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href="http://blogs.construx.com/blogs/stevemcc/archive/2007/11/01/technical-debt-2.aspx"&gt;Technical debt&lt;/a&gt; — неплохая статья, объясняющая метафору “кредита” по отношению к разработчикам.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://fseoane.net/blog/2012/line-by-line-report-of-memory-usage/"&gt;Line-by-line memory usage of a Python program&lt;/a&gt; — рассказ о новом профайлере памяти&lt;/li&gt;
&lt;li&gt;&lt;a href="http://eli.thegreenplace.net/2012/04/05/implementing-a-generatoryield-in-a-python-c-extension/"&gt;Implementing a generator/yield in a Python C extension&lt;/a&gt; — заголовок говорит сам за себя. Этот туториал мне понравился: четко очерченная тема, фокус на Python 3, правильная подача: пошагово, все понятно, в конце есть рабочий пример :)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://antirez.com/post/redis-persistence-demystified.html"&gt;Redis persistence demystified&lt;/a&gt; — автор Redis пишет о том, что “под капотом” Redis (статья написана в конце марта, так что наверное самые активные люди уже давно ее прочитали, но у меня только сейчас получилось до нее дойти).&lt;/li&gt;
&lt;li&gt;&lt;a href="http://nvie.com/posts/introducing-rq/"&gt;Introducing RQ&lt;/a&gt; — анонс RQ, очереди отложенных задач, альтернативы &lt;a href="http://celeryproject.org/"&gt;Celery&lt;/a&gt;,  от автора известного &lt;a href="http://nvie.com/posts/a-successful-git-branching-model/"&gt;Successful Git branching model&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pycounters.readthedocs.org/en/latest/index.html"&gt;PyCounters&lt;/a&gt; — интересная задумка о сборе и агрегировании метрик. IMHO, было бы в тему хранение этих метрик не в локальной памяти процесса, а в Redis :)&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Бонус: как из простой задачки “написать резюме” инженер делает целый детектив: &lt;a href="http://blog.zayats.org.ua/post/21714522965/new-resume"&gt;http://blog.zayats.org.ua/post/21714522965/new-resume&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/turn_off?a=S-MO4c8THKo:s6Monm2DPVI:bKYY9g0K8g8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/turn_off?i=S-MO4c8THKo:s6Monm2DPVI:bKYY9g0K8g8" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://j2a.ru/post/22184446930</link><guid>http://j2a.ru/post/22184446930</guid><pubDate>Tue, 01 May 2012 17:05:00 +0800</pubDate><category>links</category></item><item><title>ekb.py</title><description>&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lzjrkd6Rwq1qz6s8z.jpg" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;10 февраля я побывал в Екатеринбурге на конференции &lt;a href="http://ekbpy.org"&gt;ekb.py&lt;/a&gt;. По духу она близка к &lt;a href="http://citypy.org"&gt;&amp;#8220;городским&amp;#8221;&lt;/a&gt; мини-конференциям, тон в которых задает Украина. По масштабу же событие намного превосходило формат: полный день, два потока докладчиков, три мастер-класса. Для меня ekb.py стало отдушиной, я встретил много людей с горящими глазами и ощутил тот фан, которого зачастую не хватает в обычном рабочем режиме, особенно если работаешь удаленно.&lt;/p&gt;

&lt;p&gt;Первым в большом зале выступал я. Мне сложно оценивать &lt;a href="http://video.yandex.ru/users/it-people-ekb/view/52/"&gt;своё выступление&lt;/a&gt; объективно, тем более я еще не пересматривал своё видео. По собственным ощущениям, были провалы в логике доклада и не хватало драйва. Жду фидбека от Юлии Герасимович :-)&lt;/p&gt;

&lt;p&gt;После был прикольное &lt;a href="http://video.yandex.ru/users/it-people-ekb/view/56/"&gt;выступление&lt;/a&gt; &lt;a href="https://twitter.com/scaryramm"&gt;Данилы Штань&lt;/a&gt; от 66.ру. Не скажу, что узнал много нового, но реальный опыт всегда интересен. Доклад слушался без особого напряга, но в то же время не скажу, что увлекал и держал в напряжении, чтобы хотелось слушать и внимать.&lt;/p&gt;

&lt;p&gt;Потом я &lt;a href="https://twitter.com/yurevich/status/167843755293024256"&gt;перешел в малый зал&lt;/a&gt;, на &lt;a href="http://video.yandex.ru/users/it-people-ekb/view/48/"&gt;доклад&lt;/a&gt; Олега Евсегнеева по взаимодействию Zope и RDBMS. Тема, на мой взгляд, хорошая, но интерес к докладу убивало три фактора: низкая популярность Zope, не очень демонстративные слайды и монотонный голос рассказчика. В то же время, докладчик изредка &lt;a href="https://twitter.com/yurevich/status/167847175655653376"&gt;отжигал&lt;/a&gt;, что несколько скрашивало обстановку. Под конец доклада народу собралось раза в два больше, чем в начале.&lt;/p&gt;

&lt;p&gt;Следом был кофе-брейк и я на нем несколько задержался, так что не получилось оцкеить насколько удался тролл-фейс в большом зале у Александра Кирпичникова по тому как он &lt;a href="http://video.yandex.ru/users/it-people-ekb/view/54/"&gt;с нелюбовью использует MongoDB&lt;/a&gt;. Попал только под конец доклада и застал &lt;a href="https://twitter.com/yurevich/status/167865223838040064"&gt;секцию вопросов&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Потом я опять вернулся в малый зал и не зря — не смотря на &lt;a href="https://twitter.com/yurevich/status/167869055007600641"&gt;отсутствие слайдов&lt;/a&gt;, всё было &lt;a href="https://twitter.com/yurevich/status/167870014999896064"&gt;очень живо&lt;/a&gt; и весело. &lt;a href="https://twitter.com/RomanImankulov"&gt;Роман Иманкулов&lt;/a&gt; показал как можно &lt;a href="http://video.yandex.ru/users/it-people-ekb/view/47/"&gt;зажечь аудиторию и раскрыть тему&lt;/a&gt; (он рассказывал Celery) исключительно пламенем в голосе и правильной подаче актуальной информации.&lt;/p&gt;

&lt;p&gt;После обеда были мастер классы и они были великолепны. Отличная подготовка организаторов определило успех. Я участвовал в мастер-классах по Celery и портированию на py3. Первым я посетил мастер-класс по Celery. Компетентность организаторов не вызывала сомнений, задания и  окружение (!) было подготовлено заранее и всё прошло настолько гладко и приятно, что можно смело ставить 6 из 5 баллов всем людям, вовлеченным в организацию этого мастер-класса. Портирование на py3 происходило в дружеской атмосфере хакатона. Портировали pytils :) Общий драйв и фан подхватили и меня, так что я исправил несколько ошибок.&lt;/p&gt;

&lt;p&gt;В целом, я считаю, что съездил не зря. Мне очень понравился уровень подготовки конференции, за что я отдельно хочу сказать спасибо замечтальным девушкам из &lt;a href="https://twitter.com/it_people_ru"&gt;IT People&lt;/a&gt; и &lt;a href="https://twitter.com/apatrushev"&gt;Антону Патрушеву&lt;/a&gt;, который был идейным двигателем всего процесса.&lt;/p&gt;

&lt;p&gt;IT People оперативно выложили &lt;a href="https://www.facebook.com/media/set/?set=a.359459287412209.90678.187464147945058&amp;amp;type=3"&gt;фото&lt;/a&gt; и &lt;a href="http://video.yandex.ru/users/it-people-ekb/tag/ekbpy/"&gt;видео&lt;/a&gt; :)&lt;/p&gt;

&lt;p&gt;P.S. Для чего нужен QR-код не в курсе :)&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/turn_off?a=UJOMvn1bLRg:kY36DF1cpKA:bKYY9g0K8g8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/turn_off?i=UJOMvn1bLRg:kY36DF1cpKA:bKYY9g0K8g8" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://j2a.ru/post/17773012767</link><guid>http://j2a.ru/post/17773012767</guid><pubDate>Sat, 18 Feb 2012 00:57:00 +0700</pubDate><category>ekbpy</category><category>events</category></item><item><title>Что нового в Android 3.2</title><description>&lt;p&gt;Недавно на Galaxy Tab 8.9 приехало обновление до Android 3.2. На &lt;a href="http://gizmodo.com/5820527/your-android-tablet-just-got-better-whats-new-in-android-32"&gt;Gizmodo&lt;/a&gt; не особо уточняют что нового, упоминают разве что о фиче zooming и поддержке 7’ аппаратов. Я обновился и вот что нового я увидел.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lxwf4m4kyc1qz6s8z.jpg" alt=""/&gt;&lt;/p&gt;

&lt;h3&gt;Zooming&lt;/h3&gt;

&lt;p&gt;Теперь, если вы запускаете приложение, не поддерживающее Honeycomb, то у вас в области уведомлений появляется новая иконка “zooming” и есть два варианта:&lt;/p&gt;

&lt;p&gt;очень мелко (stretch):&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lxwetiBPsL1qz6s8z.jpg" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;или очень страшно (zoom):&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lxweu915CA1qz6s8z.jpg" alt=""/&gt;&lt;/p&gt;

&lt;h3&gt;Market&lt;/h3&gt;

&lt;p&gt;Новый маркет. Старый был, на мой взгляд, симпатичней, но работал только в альбомной ориентации. Новый сделан в виде тайлов, но зато работает и в портретной и в альбомной ориентациях, что уже прогресс :)&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lxwexlvtlD1qz6s8z.jpg" alt=""/&gt;&lt;/p&gt;

&lt;h3&gt;Уведомления календаря&lt;/h3&gt;

&lt;p&gt;Скорее всего обновилось целиком приложение “Календарь”, но я пока заметил только нотификации. Теперь для операций с событием нужно обязательно его выбрать. С одной стороны, стало более гибко. Если у вас несколько событий, то можно выбрать только одно и напомнить повторно только о нем. С другой стороны, стало больше “тыков” при типовых операциях. Чаще всего напоминание только одно и приходится вначале выбрать единственное напоминание, а потом уже что-то делать с ним.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lxwf3eKKbb1qz6s8z.jpg" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;Из видимых изменений — это всё, что я успел заметить за пару дней.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/turn_off?a=jl2yHT2Pmas:UOa1GSX5YII:bKYY9g0K8g8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/turn_off?i=jl2yHT2Pmas:UOa1GSX5YII:bKYY9g0K8g8" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://j2a.ru/post/15949336662</link><guid>http://j2a.ru/post/15949336662</guid><pubDate>Mon, 16 Jan 2012 23:03:00 +0700</pubDate><category>android</category><category>tablet</category><category>galaxytab</category></item><item><title>Design Patterns in Python</title><description>&lt;a href="http://dpip.testingperspective.com/"&gt;Design Patterns in Python&lt;/a&gt;: &lt;p&gt;Примеры паттернов, реализованных на Питоне. Хотя &lt;a href="https://twitter.com/umputun/status/154024256219521024"&gt;@umputun ссылается&lt;/a&gt; на них как “неплохие”, то я бы сказал “неплохие иллюстрации паттернов, плохой Python код”. В большинстве случаев (кроме MVC и Observer) код служит только для иллюстрации паттерна и слабо пересекается с тем, как подобные задачи реализуются на практике. Чаще это всё делается намного проще. Keep it simple ;)&lt;/p&gt;

&lt;p&gt;P.S. Достаточно много примеров приводится на аналогии с модулем unittest (адаптация jUnit), который является общепризнаным примером неудачной Java-кальки.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/turn_off?a=srJPmXmMpw0:mCfWVdCigrE:bKYY9g0K8g8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/turn_off?i=srJPmXmMpw0:mCfWVdCigrE:bKYY9g0K8g8" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://j2a.ru/post/15234469909</link><guid>http://j2a.ru/post/15234469909</guid><pubDate>Tue, 03 Jan 2012 15:59:00 +0700</pubDate><category>python</category><category>patterns</category></item><item><title>2012: Be happy, stay cool!</title><description>&lt;p&gt;Today I&amp;#8217;ve read awesome article about &lt;a href="http://www.ariseindiaforum.org/nurse-reveals-the-top-5-regrets-people-make-on-their-deathbed/"&gt;top 5 regrets of life&lt;/a&gt; and I want to convert it to 5 rules I&amp;#8217;m going to follow in incoming 2012 year and I want to share that rules with you.&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;Live for yourself, not for others expectations.&lt;/li&gt;
&lt;li&gt;Work hard.&lt;/li&gt;
&lt;li&gt;Trust your feelings and express it.&lt;/li&gt;
&lt;li&gt;Be in touch with friends and relatives.&lt;/li&gt;
&lt;li&gt;Be happy.&lt;/li&gt;
&lt;/ol&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/turn_off?a=wrS7pETfCeo:9hJ6XrJ_aJ0:bKYY9g0K8g8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/turn_off?i=wrS7pETfCeo:9hJ6XrJ_aJ0:bKYY9g0K8g8" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://j2a.ru/post/14912730883</link><guid>http://j2a.ru/post/14912730883</guid><pubDate>Wed, 28 Dec 2011 17:26:10 +0700</pubDate></item><item><title>"It’s bad for the individual worker’s performance being online and available 24-7. You do..."</title><description>“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”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;a href="http://www.bbc.co.uk/news/technology-16314901"&gt;http://www.bbc.co.uk/news/technology-16314901&lt;/a&gt;&lt;/em&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/turn_off?a=Vylo7WLLl1w:CqPlOlIXz2I:bKYY9g0K8g8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/turn_off?i=Vylo7WLLl1w:CqPlOlIXz2I:bKYY9g0K8g8" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://j2a.ru/post/14708690961</link><guid>http://j2a.ru/post/14708690961</guid><pubDate>Sat, 24 Dec 2011 12:16:54 +0700</pubDate><category>work</category></item><item><title>Встреча питонистов в Екатеринбурге</title><description>&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lvoomfevYv1qz6s8z.jpg" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;В среду я был в Екатеринбурге на открытом &lt;a href="http://it-eburg.com/text/article/30_nojabrja_klub_neanonimnykh_pitonistov_ekbpy/"&gt;семинаре Клуба неанонимных Питонистов&lt;/a&gt;, организованном
&lt;a href="http://twitter.com/apatrushev"&gt;Антоном Патрушевым&lt;/a&gt; (&lt;a href="http://naumen.com/go/nauphone"&gt;Naumen&lt;/a&gt;), &lt;a href="http://twitter.com/ru_w31rd0"&gt;Ильей Шабалиным&lt;/a&gt; (&lt;a href="http://www.exadel.com"&gt;Exadel&lt;/a&gt;),
&lt;a href="http://twitter.com/gerasimovich_yu"&gt;Юлией Герасимович&lt;/a&gt; (&lt;a href="http://www.it-people.ru/"&gt;IT People&lt;/a&gt;) и мной. Как примерно прошел семинар можно узнать от &lt;a href="https://plus.google.com/116602654908460801579/posts/3GCVknW1CmL"&gt;Олега Лебедева&lt;/a&gt; (плюс &lt;a href="https://www.facebook.com/media/set/?set=a.310818288942976.81568.187464147945058&amp;amp;type=1"&gt;фото в Фейсбуке&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Получилось немного более спонтанно чем ожидалось и совсем не в том порядке :) Я играл роль Капитана Очевидности на разогреве и рассказал чем мне нравится Python — &lt;a href="http://www.scribd.com/doc/74680889/Mini-Zen-of-Python"&gt;Mini Zen of Python&lt;/a&gt; и чуть больше подробностей о том, где
я работаю — &lt;a href="http://www.scribd.com/doc/74680908/oDesk-PS-talk"&gt;oDesk Professional Services&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Антон немного рассказал, как и где используется Python в Naumen (де-факто активно
только в одном подразделении — Nauphone), а Илья немного потроллил читаемостью и
объемом кода Python vs Java vs PHP. Что порадовало, так это активность пришедших людей.
Руководитель &lt;a href="http://66.ru"&gt;66.ru&lt;/a&gt; поделился &lt;em&gt;прикольностью&lt;/em&gt; сервисов (land page на PHP,
краткие-и-быстрые проекты на Django, сервисы на Werkzeug+Jinja2+WTForms), дрим-тим
из Яндекса раскрыл новые стороны использования Python в Яндекс.Такси — Twisted Web.
И для меня были очень приятным сюрпризом самоорганизованные студенты, сделавшие
спецкурс на Python. Уверен, эти люди пойдут далеко :) Поддержкой спецкурса заинтересовался
IT People и Naumen. Думаю, это хороший знак.&lt;/p&gt;

&lt;p&gt;В целом, как и было заявлено, целью было увидеть и поговорить с активной частью
Екатеринбуржского Python-коммунити. Для меня стало понятно, что у нас есть всё,
чтобы сделать хорошее мероприятие:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;IT People берет на себя рутинную часть организации — помещение, места, WiFi,
чай, печеньки. Убедился на собственном опыте — делают всё хорошо.&lt;/li&gt;
&lt;li&gt;Тем для обсуждения более чем достаточно&lt;/li&gt;
&lt;li&gt;Люди хотят общаться&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Решили особо не затягивать и сделать полноценный meetup в конце января в Екатеринбурге.
Поэтому,&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;если вам кажется, что у вас есть интересная тема для обсуждения&lt;/li&gt;
&lt;li&gt;вы желаете рассказать о чем-то, но не знаете как это сделать лучше&lt;/li&gt;
&lt;li&gt;вы хотите поучаствовать в организации мероприятия (вне зависимости от места жительства)&lt;/li&gt;
&lt;li&gt;&lt;p&gt;вы знаете гуру, но он заперся в пещере и вы не можете уговорить его поехать в Екатеринбург&lt;/p&gt;

&lt;p&gt;— &lt;a href="http://j2a.ru/about"&gt;свяжитесь со мной&lt;/a&gt;, я помогу.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;P.S. Во время перерыва нас угощала чаем &lt;a href="http://www.bandadesertov.ru/"&gt;Банда Десертов&lt;/a&gt;, крайне рекомендую.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/turn_off?a=FQfDCeMJPWY:bIdIxlvjzWc:bKYY9g0K8g8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/turn_off?i=FQfDCeMJPWY:bIdIxlvjzWc:bKYY9g0K8g8" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://j2a.ru/post/13729726657</link><guid>http://j2a.ru/post/13729726657</guid><pubDate>Sun, 04 Dec 2011 22:44:58 +0700</pubDate><category>ekbpy</category><category>events</category></item><item><title>Samsung Galaxy Tab 8.9 vs Apple iPad2</title><description>&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_luyvra54yE1qz6s8z.jpg" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;Я давно собирался взять супруге и детям iPad2. Мы вместе смотрели &lt;a href="http://itunes.apple.com/us/app/grimms-rapunzel-3d-interactive/id406548272"&gt;интерактивные книги&lt;/a&gt;
на ноутбуке и было понятно, что без тач интерфейса они бессмысленны.
Раздел education/kids в Android Market особо не вдохновлял.
Так что на день рождения супруги с подарком долго выбирать не пришлось, я купил
Apple iPad2. Тонкость и небольшой вес устройства в пару с его возможностми впечатлял. Я немного поигрался с этим устройством, в прямом
и переносном смысле… Cut the Rope, Water, Modern Combat 3: Fallen Nations, Rainbow Six,
Infinity Blade, Ep0ch. Проработанность интерфейса, слаженность, точность,
быстродействие поражают. У меня мало азарта и игры для меня баловство, но книги…
Благодаря этому устройству я снова стал читать.
Читать с iPad приятно и именно это было последним аргументом, чтобы купить планшет.
Всё, для чего я планировал использовать планшет, уже есть в моём Android-смартфоне,
но читать на нем крайне не комфортно. С iPad же читать очень комфортно. В то же время я не был готов носить 10&amp;#8217;, мне хотелось большей мобильности,
устройство 7&amp;#8217;-8&amp;#8217; мне казалось оптимальным. Поскольку с Android я знаком и он меня устраивает,
то выбор был Samsung Galaxy Tab (7&amp;#8217;, Android 2.2) либо Samsung Galaxy Tab 8.9 
(8.9&amp;#8217;, Android 3.1). С учетом того, что первый Tab у нас в Омске никак не хотел
сбрасывать цену, то второе поколение Tab &lt;em&gt;по почти такой же цене&lt;/em&gt; выглядело интересней и я купил его.&lt;/p&gt;

&lt;h3&gt;Юзабилити&lt;/h3&gt;

&lt;ul&gt;&lt;li&gt;iPad2: 5&lt;/li&gt;
&lt;li&gt;Galaxy Tab: 3&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;В целом, ощущения такие: как &lt;strong&gt;платформа&lt;/strong&gt; Android предоставляет больше возможностей
пользователю, в то же время &lt;strong&gt;интерфейс&lt;/strong&gt; у Apple лучше. &amp;#8220;Лучше&amp;#8221; означает, что
приложения на iOS &lt;em&gt;всегда&lt;/em&gt; знают, что запускаются на iPad. AppStore в первую очередь
предлагает приложения для iPad. Ни разу не возникала ситуация, что размер шрифта не достаточный, либо &amp;#8220;цели&amp;#8221; куда нужно &amp;#8220;тыкать пальцем&amp;#8221;
слишком мелкие. Интерфейс на iOS буквально следует за твоим пальцем. Отклики очень
быстрые и плавные, ошибочных движений вообще нет. У Honeycomb в этом плане всё намного хуже.
Приложений, разработанных под планшеты раз-два и обчелся (особенно если исключить игры) и даже там сплошь и рядом встречаются непродуманные
решения. Интерфейс по сравнению с iOS тормозит, &amp;#8220;свободный пробег&amp;#8221; пальца без реакции
интерфейса — громадный (на мой взгляд именно этот параметр и влияет на позитивное ощущение
&amp;#8220;интерфейс привязан к твоему пальцу&amp;#8221;). Если у iPad новые приложения добавляются в конец списка и у тебя есть возможность пересортировать как тебе хочется, то у Galaxy Tab список всегда отсортирован по имени
и это сильно-сильно мешает моторной памяти. Сегодня Messaging было внизу на первом экране,
завтра ты добавил новые приложения и это приложение &amp;#8220;убежало&amp;#8221; на вторую страницу… Фиксация Android Market в ландшафт ориентации мне тоже показался не оправданным. Можно делать много оговорок, но в любом случае, в таких мелочах чувствуется недоработки юзабилити.&lt;/p&gt;

&lt;h3&gt;Social apps&lt;/h3&gt;

&lt;ul&gt;&lt;li&gt;iPad2: 4&lt;/li&gt;
&lt;li&gt;Galaxy Tab: 3+&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Я три дня искал &lt;a href="https://twitter.com/yurevich/status/137131926980001792"&gt;твиттер&lt;/a&gt; &lt;a href="https://twitter.com/yurevich/status/137785989795020800"&gt;клиент&lt;/a&gt;: даже &amp;#8220;специально&amp;#8221; разработанные
для планшетов Plume и TweetComb показывают всё супермелко. Официальные приложения 
Facebook и Twitter для Android на Galaxy Tab выглядят мягко говоря страшно. Встроенный
Social Hub это какая-то насмешка над смесью Twitter и Facebook. В итоге
всё плохо: Seesmic, TweetDeck, HootSuite — мимо кассы. 
&lt;a href="http://tweetcaster.com/"&gt;TweetCaster&lt;/a&gt; — лучшее, что я смог найти на текущий момент.
На позитивной ноте, что я вообще нашел что-то юзабельное, купил Pro-версию, которая убирает
рекламу.
Для Facebook есть Friend Me, но он фиксирует ориентацию в ландшафт-режиме — не вариант. &lt;a href="http://friendcasterapp.com/"&gt;FriendCaster&lt;/a&gt; от той
же компании-разработчика, что и TweetCaster, выглядит более вменяемо.&lt;/p&gt;

&lt;p&gt;У iPad в этом плане всё гладко: можно вполне пользоваться официальными приложениями
Twitter и Facebook, плюс все сторонние клиенты вполне адекватно отображаются.&lt;/p&gt;

&lt;p&gt;У Android есть киллер-фича — расшарить контет из того места, где ты нашел этот контент.
Это супер-удобно. Выделяешь url в адресной строке браузера, вуаля — и готов &lt;a href="https://twitter.com/yurevich/status/137763838664781824"&gt;твит&lt;/a&gt;. Я даже подумал накинуть 1 балл за это, но потом передумал: никакие
удобные фишки платформы не могу перевесить отсутствие нормального приложения.&lt;/p&gt;

&lt;h3&gt;Почта&lt;/h3&gt;

&lt;ul&gt;&lt;li&gt;iPad2: 4&lt;/li&gt;
&lt;li&gt;Galaxy Tab: 5&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Почтовые клиенты на обеих платформах хорошие, единственный значимый перевес у Android —
нативное приложение GMail (т.е. плюс цветные ярлыки, priority inbox, пометка спамом и удаление).&lt;/p&gt;

&lt;h3&gt;Книги&lt;/h3&gt;

&lt;ul&gt;&lt;li&gt;iPad2: 5&lt;/li&gt;
&lt;li&gt;Galaxy Tab: 3+&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Обязательно напишу пост о книгах, читалках и шрифтах с скриншотами. Так что, чтобы
не спойлерить, скажу лишь, что у iPad всё замечательно. У Android всё заметно
хуже. Начиная со шрифтов и форматирования, заканчивая программами. Причем если
приложение есть на обеих устройствах, то на Android оно значительно хуже, чем
на iOS. Чтобы найти нормальную читалку для Galaxy Tab пришлось постараться, это
оказалась &lt;a href="http://www.mantano.com/"&gt;Mantano Reader&lt;/a&gt;. В то же время, никто не
дотянул до визуализации и вниманию к мелочам уровня iBooks. Ну и Amazon Kindle
на всех платформах одинаково хорош, единственное, что кроме книг из Амазона ничего туда
не добавишь (к примеру десктоп версия это позволяет).&lt;/p&gt;

&lt;h3&gt;Мультимедиа&lt;/h3&gt;

&lt;ul&gt;&lt;li&gt;iPad: 2&lt;/li&gt;
&lt;li&gt;Galaxy Tab: 5&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;За месяц использования я так и не понял как добавить музыку в iPad без импортирования
в iTunes. Как добавить видео вообще не понял. У Galaxy Tab в этом смысле всё 
просто работает: через web скачал фильм, ткнул, он играет.&lt;/p&gt;

&lt;h3&gt;Итоги&lt;/h3&gt;

&lt;p&gt;Я знал, почему я не хочу iPad, но в то же время я не был готов к тому, что у 
Honeycomb возникнут &lt;em&gt;такие&lt;/em&gt; сложности с приложениями. В итоге почти все они разрешились,
но качество найденных решений хуже, чем в iPad.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/turn_off?a=83lQEiqMcoE:fTdOdTgMtuQ:bKYY9g0K8g8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/turn_off?i=83lQEiqMcoE:fTdOdTgMtuQ:bKYY9g0K8g8" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://j2a.ru/post/13064285272</link><guid>http://j2a.ru/post/13064285272</guid><pubDate>Sun, 20 Nov 2011 23:19:00 +0700</pubDate><category>ipad</category><category>android</category><category>honeycomb</category><category>tablet</category></item><item><title>Russian vs English</title><description>&lt;blockquote&gt;
  &lt;p&gt;I&amp;#8217;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 &lt;a href="http://blog.redturtle.it/redturtle-blog/plone-at-pycon"&gt;review of Pycon UA&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;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&amp;#8217;t
know Russian then you should use English.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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&amp;#8217;s quite difficult
to give a public speech even in Russian and it&amp;#8217;s going to be more stressful to
talk in English, but there is no way to go through it without doing it.&lt;/p&gt;

&lt;p&gt;The first step should be &lt;em&gt;translate slides to English even if you&amp;#8217;re going to talk in Russian&lt;/em&gt;.
Please, do it on your next talk.&lt;/p&gt;

&lt;p&gt;P.S. I believe flight is the best place to write posts like this: limited time, no
distractions, no internet connection ;-)&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/turn_off?a=O_ojThWQTCU:FilhbNt5Ch0:bKYY9g0K8g8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/turn_off?i=O_ojThWQTCU:FilhbNt5Ch0:bKYY9g0K8g8" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://j2a.ru/post/12159166004</link><guid>http://j2a.ru/post/12159166004</guid><pubDate>Mon, 31 Oct 2011 20:19:00 +0700</pubDate><category>uapycon</category><category>events</category></item><item><title>PyCon UA '11</title><description>&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_ltqfqqInXW1qz6s8z.jpg" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;Прошлую неделю я провел в Киеве и это было прекрасное время.&lt;/p&gt;

&lt;p&gt;Во-первых, на выходных был &lt;a href="http://ua.pycon.org"&gt;PyCon UA&lt;/a&gt; и это было &lt;strong&gt;замечательно&lt;/strong&gt;. Из-за плотного рабочего графика я не успел подготовить доклад о том как мы организуем тестирование (тем более оно у нас еще не до конца сделано ;)) В любом случае, у меня получилось пару раз кратенько выступить: один раз с &lt;a href="http://www.scribd.com/doc/69840516/Pycon-Ua-2011-Odesk-Sponsored"&gt;sponsored talk&lt;/a&gt;, второй раз с &lt;a href="http://j2a.ru/post/11787815971/test-infected"&gt;lightning talk&lt;/a&gt;. Активно думаю над тем, чтобы исправиться и выступить с полноценным докладом, поскольку последние два года ограничивался 5-минутками.&lt;/p&gt;

&lt;p&gt;Я специально не планировал посещение той или иной секции и слушал доклады &amp;#8220;как получится&amp;#8221;. При таком подходе мне понравился доклад &lt;a href="http://twitter.com/tarek_ziade"&gt;Тарека&lt;/a&gt; о пакетировании, несколько прояснил вопросы относительно &amp;#8220;куда всё движется&amp;#8221;. Я как-то не задумывался о том, &lt;em&gt;почему&lt;/em&gt; зависимости резолвятся только когда пакет скачан. И какая &lt;em&gt;принципиальная&lt;/em&gt; разница в зависимостях яиц и пакетов с исходниками. Я считаю, что доклад удачный. Сниппеты от &lt;a href="http://twitter.com/mitsuhiko"&gt;Армина&lt;/a&gt; не самый &amp;#8220;зрелищный&amp;#8221; доклад. Много кода, много деталей, это был скорее &amp;#8220;слайдокумент&amp;#8221;, чем слайды. С другой стороны, это действительно пересмотр опыта Pocoo и Армина в частности. Эти сниппеты я встречал в разное время в разных проектах от Pocoo и однозначно стоит вдумчиво пересмотреть &lt;a href="http://speakerdeck.com/u/mitsuhiko/p/basket-of-random-python-snippets"&gt;слайды&lt;/a&gt; на досуге. Из тех докладов, что я видел целиком хочется отметить доклад &lt;a href="http://twitter.com/andrewgodwin"&gt;Эндрю&lt;/a&gt; — отлично, интересная тема, подкрепленная значительным опытом и хорошие слайды. И конечно, британский акцент придает неповторимый шарм :-D&lt;/p&gt;

&lt;p&gt;Что в этом году я выполнил на 100%, так это общение. Почти со всем, с кем хотел увидеться — увиделся, с кем хотел поговорить — поговорил. Надеюсь, что и поговорил со всеми, кто хотел со мною поговорить :-) Один из самых итересных и познавательных разговоров случился с Тареком по поводу &lt;a href="http://redbarrel.readthedocs.org/"&gt;red barrel&lt;/a&gt;: для чего этот проект и куда он движется. Получил пару интересных ссылок: &lt;a href="http://googlecode.blogspot.com/2011/03/introducing-google-apis-explorer.html"&gt;релиз Google API Explorer&lt;/a&gt; (я его пропустил), &lt;a href="http://json-schema.org/"&gt;JSON Schema&lt;/a&gt; и &lt;a href="http://shane.caraveo.com/2011/06/30/using-json-schema-for-exploring-api-servers/"&gt;блог пост об API Discovery в Mozilla&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Теперь немного о том, что мне &lt;strong&gt;не понравилось&lt;/strong&gt;: во-первых, определенно, ведущему не хватало тактичности. Я убежден, что дело ведущего сглаживать неловкие моменты, а не создавать их. Во-вторых, не хватает англоязычных докладов от украинского коммунити. Я видел, что иностранным докладчикам было весьма неуютно при русскоязычных докладах. Я видел, как обрадовался Тарек, когда &lt;a href="http://twitter.com/asolovyov"&gt;Александр&lt;/a&gt; рассказал о SQLAlchemy на английском. Моя позиция такая, что лучше пусть будет корявый английский (я не об Александре ;-)), чем хороший русский. Я в этом вопросе тоже не безгрешен и lightning talk сделал на русском.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Итог&lt;/strong&gt;: неплохие докладчики, известные гости, отличные обеды, много общения. На мой взгляд, всё получилось хорошо, я ни капли не жалею, что приезжал.&lt;/p&gt;

&lt;p&gt;P.S. Обещаю: если я выиграю лицензию на PyCharm, то никому ее не отдам, наклею наклейку PyCharm на ноутбук и честно попытаюсь попользоваться еще раз вместо Emacs :-)&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/turn_off?a=qUOprzqZVeg:3C5No-xtJgU:bKYY9g0K8g8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/turn_off?i=qUOprzqZVeg:3C5No-xtJgU:bKYY9g0K8g8" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://j2a.ru/post/11995029889</link><guid>http://j2a.ru/post/11995029889</guid><pubDate>Fri, 28 Oct 2011 01:07:00 +0800</pubDate><category>events</category><category>uapycon</category></item><item><title>Тест инфицирован</title><description>&lt;p&gt;На &lt;a href="http://ua.pycon.org"&gt;PyCon UA&lt;/a&gt; я выступил со «спонтанным» lightning talk в стиле групповой терапии :-)&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Меня зовут Юра и у меня есть проблема.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lthjar3bcl1qz6s8z.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lthjb43wan1qz6s8z.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lthjbm3xZN1qz6s8z.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lthjbx9NJB1qz6s8z.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lthjccZN2Y1qz6s8z.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lthjcriqXt1qz6s8z.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lthjczWycD1qz6s8z.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;Уж не знаю, что для меня было более забавным, то ли рассказывать lightning talk, то ли готовить слайды пока остальные участники не «выговорили» свои мини-доклады.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/turn_off?a=gMLt_rdEvts:0cJWH022uEI:bKYY9g0K8g8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/turn_off?i=gMLt_rdEvts:0cJWH022uEI:bKYY9g0K8g8" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://j2a.ru/post/11787815971</link><guid>http://j2a.ru/post/11787815971</guid><pubDate>Sun, 23 Oct 2011 04:57:04 +0800</pubDate><category>uapycon</category><category>slides</category><category>fun</category><category>LT</category></item><item><title>WSGI-приложение в Django</title><description>&lt;p&gt;Django завоевал мир™ и достаточно сложно найти WSGI-приложение, аналога которого бы не было в Django. Тем не менее, такое встречается и последний пример, который мне попался: resweb, веб-интерфейс для &lt;a href="https://github.com/binarydud/pyres"&gt;pyres&lt;/a&gt; (я в прошлом году &lt;a href="http://pyobject.ru/blog/2010/10/28/enqueue-it/"&gt;рассказывал о нём&lt;/a&gt;). До недавнего времени я особо не пользовались веб-интерфейсом, но на днях мне захотелось &amp;#8220;подключить&amp;#8221; resweb в Django-проект. Подключить в моем случае означало реиспользование Django подсистемы аутентификации и &amp;#8220;монтирование&amp;#8221; resweb в качестве Django view.&lt;/p&gt;

&lt;p&gt;Resweb написан на &lt;a href="https://github.com/toastdriven/itty"&gt;itty&lt;/a&gt; — WSGI микрофреймворке, так что поначалу я думал, что будет всё гладко. Немного погуглив я нашел &lt;a href="https://github.com/2degrees/twod.wsgi"&gt;twod.wsgi&lt;/a&gt; для подключения WSGI-приложений в Django-проект. Разобравшись с twod.wsgi, я написал сильно упрощенную и намного более &amp;#8220;прямую&amp;#8221; версию: &lt;a href="https://gist.github.com/300f84d8e3fe6440a6aa"&gt;shay&lt;/a&gt;. Я в продакшн не проверял, но тестовые примеры работали :-) Всё оказалось несколько хуже, чем я изначально предполагал. Я изрядно подзабыл все &amp;#8220;радости&amp;#8221; низкоуровневых инструментов и уж совсем забыл о том, что &lt;strong&gt;два произвольных WSGI приложение невозможно между собой корректно связать&lt;/strong&gt;, если только эти приложения изначально не создавались с оглядкой на реиспользование. Так что результат вполне закономерен — resweb нельзя корректно включить в своё Django-приложение, потому что все URLы в resweb абсолютные.&lt;/p&gt;

&lt;p&gt;Задачка стояла не особо остро, так что я решил попробовать портировать resweb на Django :-)&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/turn_off?a=ygNi5VfnmhQ:e9j57dvyxbI:bKYY9g0K8g8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/turn_off?i=ygNi5VfnmhQ:e9j57dvyxbI:bKYY9g0K8g8" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://j2a.ru/post/10365022070</link><guid>http://j2a.ru/post/10365022070</guid><pubDate>Mon, 19 Sep 2011 01:29:00 +0800</pubDate><category>django</category><category>wsgi</category></item><item><title>"Посредственным усилием нельзя достичь выдающегося результата (выдающегося усилия тоже недостаточно,..."</title><description>“Посредственным усилием нельзя достичь выдающегося результата (выдающегося усилия тоже недостаточно, к сожалению, но fac et spera).”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;a href="http://storify.com/0ex0/new-story4"&gt;Работа в стартапе. Взгляд изнутри.&lt;/a&gt; by &lt;a href="http://twitter.com/0ex0"&gt;0ex0&lt;/a&gt;&lt;/em&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/turn_off?a=O8p4T4xIR_E:ZYf_mn4JEeY:bKYY9g0K8g8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/turn_off?i=O8p4T4xIR_E:ZYf_mn4JEeY:bKYY9g0K8g8" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://j2a.ru/post/10127684364</link><guid>http://j2a.ru/post/10127684364</guid><pubDate>Tue, 13 Sep 2011 00:11:20 +0800</pubDate></item><item><title>Chat for your distributed team</title><description>&lt;p&gt;If you work remotely, at least 30% of time is spent in chats or voice calls. We prefer to use chat, because it&amp;#8217;s more comfortable for non-native speakers, it has history, so you able to quote opponent&amp;#8217;s words and it works well on low-speed connections.&lt;/p&gt;

&lt;p&gt;We use &lt;a href="http://www.skype.com"&gt;Skype&lt;/a&gt; and it&amp;#8217;s a de-facto standard for communication in distributed teams. It supports both chats and voice calls. And voice calls are cheap. Though, it annoys by non-convenient interfaces (from my point of view, it&amp;#8217;s too blaze on Windows and generate too much windows on Linux) and absence of good APIs or libraries. If you want to automate some things, like post continuous integration system build info to chat, then it&amp;#8217;s too tricky and too hard to do it.&lt;/p&gt;

&lt;p&gt;Then I collect features we need and compare few alternatives to Skype. I like UI (quick links to Skype group calls is really nice) of &lt;a href="https://jaconda.im"&gt;Jaconda&lt;/a&gt; and overall way how it works. I found small issue: it lacks ability to search for overall history (I really want that feature, I&amp;#8217;m tired to search in each of 15 chats  some phrase I remember someone posted few months ago). But most important thing is pricing, it&amp;#8217;s not well-balanced. It limits both number of users and available rooms. I don&amp;#8217;t think 8 rooms is enough for 30 people. So if you use rooms extensively, then Jaconda will be expensive for you.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.hipchat.com"&gt;HipChat&lt;/a&gt; has more traditional user interface and mimicries for common IMs. It reuse Adobe Air power for desktop client, it has good mobile app (I tried it on Android). The only thing annoys me — single sign-on limitation. If you have webchat opened in your browser and then sign in using mobile application, then webchat will be kicked off. Things goes funny if you have XMPP integration turned on: it disconnects you every time you sign in using different client. That&amp;#8217;s lame, ICQ time come back! All other things work well. HipChat achieve good balance between price and features. I think it&amp;#8217;s really good alternative to Skype chats.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://xmpp.org/xmpp-software/clients/"&gt;XMPP&lt;/a&gt; is a good choice for open rooms and it&amp;#8217;s well-proven by community-driven teams. oDesk use XMPP for its built-in chat, so every oDesk user has XMPP account on odesk.com and, moreover, oDesk automatically syncs buddy list from team room members. But oDesk&amp;#8217; jabber server doesn&amp;#8217;t provide support for multi-user chat, so if you want to use XMPP as platform for all teams communication, it goes to be a bit tricky. Moreover, a lot of things require “additional” setup. Like, if you want to get web-accessible logs, then you should use plugin for &lt;a href="http://www.process-one.net/en/ejabberd"&gt;ejabberd&lt;/a&gt; (most popular Jabber server), but you also want to restrict access to logs to team members, and moreover, to participants of chat. You should write web application for that. The last but not a least is a variety of XMPP clients. Some clients support proprietary extensions of protocol to turn on audio/video calls (like &lt;a href="http://www.apple.com/macosx/apps/all.html#ichat"&gt;Apple iChat&lt;/a&gt;), another ones use &lt;a href="http://en.wikipedia.org/wiki/Jingle_(protocol)"&gt;Jingle extensions&lt;/a&gt; (like &lt;a href="http://psi-im.org/"&gt;Psi&lt;/a&gt;) and there is no way to setup audio/video call if you and your opponent have different XMPP clients. The same picture is for file transfer. My summary is: it looks very promising, but you should spend a lot of time to verify your needs and abilities before use it.&lt;/p&gt;

&lt;p&gt;I summarized info in the table below, inspired by &lt;a href="https://www.hipchat.com/compare"&gt;HipChat comparison&lt;/a&gt;.&lt;/p&gt;

&lt;style type="text/css"&gt;
sup {
    font-size: 13px;
    vertical-align: super;
}

table#compare img {
    display: inline;   
}

table#compare td {
    width: 80px;
}

table#compare td.title {
    width: auto;
    padding-right: 7px;
}

&lt;/style&gt;&lt;table id="compare"&gt;&lt;thead&gt;&lt;tr class="head"&gt;&lt;th&gt; &lt;/th&gt;
			&lt;th&gt;&lt;a href="http://www.skype.com"&gt;Skype&lt;/a&gt;&lt;/th&gt;
			&lt;th&gt;&lt;a href="http://xmpp.org/xmpp-software/clients/"&gt;XMPP&lt;/a&gt;&lt;a class="note" href="#note-1" title="There is no official client for XMPP/Jabber, so every platform (Desktop, Mobile, Web) has own implementation"&gt;&lt;sup id="ref-1"&gt;1&lt;/sup&gt;&lt;/a&gt;&lt;/th&gt;
			&lt;th&gt;&lt;a href="https://www.hipchat.com"&gt;HipChat&lt;/a&gt;&lt;/th&gt;
			&lt;th&gt;&lt;a href="https://jaconda.im"&gt;Jaconda&lt;/a&gt;&lt;/th&gt;
		&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="title"&gt;Desktop app&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/empty_star.gif" alt="No"/&gt;&lt;a class="note" href="#note-2" title="Jaconda doesn’t have standalone application, but supports integration with XMPP/GTalk"&gt;&lt;sup id="ref-2"&gt;2&lt;/sup&gt;&lt;/a&gt;&lt;/td&gt;
		&lt;/tr&gt;&lt;tr&gt;&lt;td class="title"&gt;Mobile app&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/empty_star.gif" alt="No"/&gt;&lt;a class="note" href="#note-2" title="Jaconda doesn’t have standalone application, but supports integration with XMPP/GTalk"&gt;&lt;sup id="ref-2a"&gt;2&lt;/sup&gt;&lt;/a&gt;&lt;/td&gt;
		&lt;/tr&gt;&lt;tr&gt;&lt;td class="title"&gt;Web app&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/empty_star.gif" alt="No"/&gt;&lt;a class="note" href="#note-3" title="Skype doesn't have official web client, but there is imo.im"&gt;&lt;sup id="ref-3"&gt;3&lt;/sup&gt;&lt;/a&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
		&lt;/tr&gt;&lt;tr&gt;&lt;td class="title"&gt;Private (1:1) chats&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/empty_star.gif" alt="No"/&gt;&lt;/td&gt;
		&lt;/tr&gt;&lt;tr&gt;&lt;td class="title"&gt;Multi-user chats&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
		&lt;/tr&gt;&lt;tr&gt;&lt;td class="title" title="Access control for multi-user chats"&gt;ACL for multi-user chats&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
		&lt;/tr&gt;&lt;tr&gt;&lt;td class="title" title="Single chat history and search within single chat"&gt;Chat history&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
		&lt;/tr&gt;&lt;tr&gt;&lt;td class="title" title="Search over all available chats history"&gt;Search for entire history&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/empty_star.gif" alt="No"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/empty_star.gif" alt="No"/&gt;&lt;/td&gt;
		&lt;/tr&gt;&lt;tr&gt;&lt;td class="title" title="Web-accessible chat history and search"&gt;Web chat history&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/empty_star.gif" alt="No"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/half_star.gif" alt="Partially"/&gt;&lt;a class="note" href="#note-4" title="There is a plugin for most popular Jaber server ejabberd to log all multi-user chats"&gt;&lt;sup id="ref-4"&gt;4&lt;/sup&gt;&lt;/a&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
		&lt;/tr&gt;&lt;tr&gt;&lt;td class="title" title="Inline file transfer"&gt;File sharing&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/half_star.gif" alt="Partially"/&gt;&lt;a class="note" href="#note-5" title="All XMPP clients support file transfer, but it works only in very rare cases"&gt;&lt;sup id="ref-5"&gt;5&lt;/sup&gt;&lt;/a&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
		&lt;/tr&gt;&lt;tr&gt;&lt;td class="title" title="Post email to multi-user chat"&gt;Post email to chat&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/empty_star.gif" alt="No"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/empty_star.gif" alt="No"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/empty_star.gif" alt="No"/&gt;&lt;a class="note" href="#note-6" title="HipChat itself doesn't support posting email to chat room, but there is third-party project"&gt;&lt;sup id="ref-6"&gt;6&lt;/sup&gt;&lt;/a&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
		&lt;/tr&gt;&lt;tr&gt;&lt;td class="title" title="Client-server channel encryption (SSL/TLS)"&gt;Channel encryption&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
		&lt;/tr&gt;&lt;tr&gt;&lt;td class="title" title="One-to-one audio or video calls"&gt;Private (1:1) calls&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/half_star.gif" alt="Partially"/&gt;&lt;a class="note" href="#note-7" title="Some clients support XMPP extensions and allow audio/video calls"&gt;&lt;sup id="ref-7"&gt;7&lt;/sup&gt;&lt;/a&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/empty_star.gif" alt="No"/&gt;&lt;a class="note" href="#note-8" title="Jaconda stores Skype username in profile and shows quicklink to direct call"&gt;&lt;sup id="ref-8"&gt;8&lt;/sup&gt;&lt;/a&gt;&lt;/td&gt;
		&lt;/tr&gt;&lt;tr&gt;&lt;td class="title" title="Multi-user audio or video calls"&gt;Multi-user calls&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/empty_star.gif" alt="No"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/empty_star.gif" alt="No"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/empty_star.gif" alt="No"/&gt;&lt;a class="note" href="#note-9" title="Jaconda stores Skype username in profiles and shows quicklink to call participants of chat"&gt;&lt;sup id="ref-9"&gt;9&lt;/sup&gt;&lt;/a&gt;&lt;/td&gt;
		&lt;/tr&gt;&lt;tr&gt;&lt;td class="title" title="Ability to sign-in on several devices at once"&gt;Multiple sign-on&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/empty_star.gif" alt="No"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
		&lt;/tr&gt;&lt;tr&gt;&lt;td class="title" title="REST API or standalone libraries"&gt;API&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/half_star.gif" alt="Partially"/&gt;&lt;a class="note" href="#note-10" title="Actually Skype has API to desktop client, so it's hard or near impossible to write bots for Skype"&gt;&lt;sup id="ref-10"&gt;10&lt;/sup&gt;&lt;/a&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
		&lt;/tr&gt;&lt;tr&gt;&lt;td class="title" title="Integration with Git, GitHub, Jenkins and Redmine"&gt;Integration&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/empty_star.gif" alt="No"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;img src="http://c234784.r84.cf1.rackcdn.com/star.gif" alt="Yes"/&gt;&lt;/td&gt;
		&lt;/tr&gt;&lt;tr&gt;&lt;td class="title" title="Cost per month for 30 users and 15 chats"&gt;Cost&lt;/td&gt;
			&lt;td&gt;-&lt;/td&gt;
			&lt;td&gt;-&lt;/td&gt;
			&lt;td&gt;$24&lt;/td&gt;
			&lt;td&gt;&lt;nobr&gt;$24-$49&lt;a class="note" href="#note-11" title="Jaconda's Medium plan ($24/month) supports 30 users, but it limits number of rooms to 8. Large plan ($49) supports up to 70 users and 15 rooms"&gt;&lt;sup id="ref-11"&gt;11&lt;/sup&gt;&lt;/a&gt;&lt;/nobr&gt;&lt;/td&gt;
		&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br/&gt;&lt;br/&gt;&lt;h3&gt;Notes&lt;/h3&gt;

&lt;ol&gt;&lt;li id="note-1"&gt;&lt;a href="#ref-1"&gt;⇡&lt;/a&gt; There is no official client for XMPP/Jabber, so every platform (Desktop, Mobile, Web) has own implementation. This row reflects my knowledge about supported features of &lt;i&gt;different&lt;/i&gt; clients, so I don&amp;#8217;t guarantee existence of client supporting all described features.&lt;/li&gt;
	&lt;li id="note-2"&gt;&lt;a href="#ref-2"&gt;⇡&lt;/a&gt; Jaconda doesn’t have standalone application, but supports integration with XMPP/GTalk.&lt;/li&gt;
	&lt;li id="note-3"&gt;&lt;a href="#ref-3"&gt;⇡&lt;/a&gt; Skype doesn&amp;#8217;t have official web client, but there is &lt;a href="https://imo.im"&gt;imo.im&lt;/a&gt;.&lt;/li&gt;
	&lt;li id="note-4"&gt;&lt;a href="#ref-4"&gt;⇡&lt;/a&gt; There is a plugin (mod_muc_log) for most popular Jaber server &lt;a href="http://www.process-one.net/en/ejabberd/"&gt;ejabberd&lt;/a&gt; to log all multi-user chats, but it doesn&amp;#8217;t allow to restrict access to logs to participants of chat.&lt;/li&gt;
	&lt;li id="note-5"&gt;&lt;a href="#ref-5"&gt;⇡&lt;/a&gt; All XMPP clients support file transfer, but it works only in very rare cases.&lt;/li&gt;
	&lt;li id="note-6"&gt;&lt;a href="#ref-6"&gt;⇡&lt;/a&gt; HipChat itself doesn&amp;#8217;t support posting email to chat room, but there is third-party project &lt;a href="https://github.com/hugorodgerbrown/HipMail"&gt;github.com/hugorodgerbrown/HipMail&lt;/a&gt;&lt;/li&gt;
	&lt;li id="note-7"&gt;&lt;a href="#ref-7"&gt;⇡&lt;/a&gt; Some clients support &lt;a href="http://en.wikipedia.org/wiki/Jingle_(protocol)"&gt;XMPP extensions&lt;/a&gt; and allow audio/video calls.&lt;/li&gt;	
	&lt;li id="note-8"&gt;&lt;a href="#ref-8"&gt;⇡&lt;/a&gt; Jaconda stores Skype username in profile and shows quicklink to direct call.&lt;/li&gt;
	&lt;li id="note-9"&gt;&lt;a href="#ref-9"&gt;⇡&lt;/a&gt; Jaconda stores Skype username in profiles and shows quicklink to call participants of chat.&lt;/li&gt;
	&lt;li id="note-10"&gt;&lt;a href="#ref-10"&gt;⇡&lt;/a&gt; Actually Skype has &lt;a href="https://developer.skype.com/"&gt;API&lt;/a&gt; to desktop client (see &lt;a href="http://sourceforge.net/projects/skype4py/"&gt;Skype4Py&lt;/a&gt; as example), so it&amp;#8217;s hard or near impossible to write bots for Skype.&lt;/li&gt;
	&lt;li id="note-11"&gt;&lt;a href="#ref-11"&gt;⇡&lt;/a&gt; Jaconda&amp;#8217;s Medium plan ($24/month) supports 30 users, but it limits number of rooms to 8. Large plan ($49) supports up to 70 users and 15 rooms.&lt;/li&gt;
&lt;/ol&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/turn_off?a=-8_kou3fLK8:NxjHj24kDOw:bKYY9g0K8g8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/turn_off?i=-8_kou3fLK8:NxjHj24kDOw:bKYY9g0K8g8" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://j2a.ru/post/9215712348</link><guid>http://j2a.ru/post/9215712348</guid><pubDate>Mon, 22 Aug 2011 02:37:00 +0800</pubDate><category>chat</category><category>skype</category><category>jaconda</category><category>hipchat</category><category>work</category></item><item><title>О графике работы</title><description>&lt;p&gt;Прочитал статью на DOU о &lt;a href="http://www.developers.org.ua/columns/o-motivacii-rabochem-grafike-i-pufike-v-komnate-otdyha/"&gt;рабочем графике&lt;/a&gt; и не смог сдержаться.&lt;/p&gt;

&lt;p&gt;Дело не в свободном графике, дело в раздолбайстве. Дайте возможность людям определить свой график работы самостоятельно и требуйте следование ему — вы получите всё что вам нужно.&lt;/p&gt;

&lt;p&gt;Года три назад назад я работал в компании, в которой был строгий рабочий график. Т.е. если меня не было в 9:03, то мне на телефон звонила начальница и спрашивала, где я и когда буду. Звонила она часто :-) Приезжал я обычо в районе 9:20. Почему? Чтобы приехать вовремя, мне нужно было вставать/выходить на 40-50 минут раньше. Мне было жалко в пустую тратить это время и я его тратил на книги/журналы в дополнение к завтраку.&lt;/p&gt;

&lt;p&gt;Потом, я работал в компании, где не было строгого рабочего времени, но я приезжал к 8:30, потому что мне было так удобно: к тому времени дочь пошла в детсад, и сразу после того, как я ее отводил в группу, я шел за машиной и спокойно доезжал до офиса, находил свободные парковочные места, не торопясь шел в полупустой кабинет и продуктивно работал до часов 11, пока не появлялась основная масса народу. Работал я до 17:00, чтобы успеть забрать ребенка не самым последним :-)&lt;/p&gt;

&lt;p&gt;По прошествии какого-то времени я стал работать удаленно и сам для себя сделал рабочий график: с 6:45 до 17:45. Я выбирал время так, чтобы у меня были свободные вечера и была возможность дочь возить на танцы.&lt;/p&gt;

&lt;p&gt;Посмотрите: я как был жаворонком, так и остался, но из-за того, что менялись внешние обстоятельства, менялся и удобный для меня график работы. Более того, чем больше свободы мне давала работа, тем раньше у меня начинался рабочий день. Это был мой осознанный выбор.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/turn_off?a=4dOKL8TKT6Y:NTJxKdJRzyM:bKYY9g0K8g8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/turn_off?i=4dOKL8TKT6Y:NTJxKdJRzyM:bKYY9g0K8g8" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://j2a.ru/post/8650579153</link><guid>http://j2a.ru/post/8650579153</guid><pubDate>Tue, 09 Aug 2011 01:41:11 +0800</pubDate><category>work</category><category>schedule</category><category>time</category></item><item><title>Зачем нужен комьют</title><description>&lt;p&gt;Из твиттера пришла ссылка на &lt;a href="http://ilyabirman.ru/meanwhile/2011/06/29/1/"&gt;пост Ильи Бирмана&lt;/a&gt; о потере времени на дорогу от дома до работы и назад.&lt;/p&gt;

&lt;p&gt;Очевидно, что у Ильи наболело терять по 2 часа в день на то, чтобы доехать до работы, а потом столько же чтобы вернуться. У меня ситуация другая и последний год дорога занимает в худшем случае 7 минут, потому что расстояние между работой и домом — 300 м. До этого я примерно 6 лет работал “в офисе” и дорога занимала от 20 до 40 мин в одну сторону.&lt;/p&gt;

&lt;p&gt;Все люди разные, лично я предпочитаю работать &lt;em&gt;не дома&lt;/em&gt;, во-первых, это эффективнее, поскольку отвлекающих факторов меньше; во-вторых, мне нужно время, чтобы забыть о работе либо морально “настроиться” на нее. И вот комьют — это как раз возможность при поездке на работу настроиться на рабочий режим, а при поездке домой спокойно “отпустить” рабочие вопросы. 7 минут мало. Ты либо приходишь на работу в расслабленном состоянии, либо приходишь домой в рабочих заботах. А вот 20-40 минут — самое оно. Конечно, никто не мешает пару раз обойти вокруг квартала и увеличить время, но мозг не соглашается на обман и в большинстве случаев выбирает короткий путь :-)&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/turn_off?a=WqJCBXrEagI:LlSBGac649U:bKYY9g0K8g8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/turn_off?i=WqJCBXrEagI:LlSBGac649U:bKYY9g0K8g8" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://j2a.ru/post/8169579373</link><guid>http://j2a.ru/post/8169579373</guid><pubDate>Thu, 28 Jul 2011 20:45:42 +0800</pubDate><category>work</category><category>time</category></item><item><title>self-upgrade bootstrapping</title><description>&lt;p&gt;Достаточно давно я &lt;a href="http://tarekziade.wordpress.com/2011/02/10/a-simple-self-upgrade-build-pattern/"&gt;прочитал у Tarek Ziade&lt;/a&gt; о самообновляющемся bootstrap-скрипте. Идея мне понравилась, но попробовать ее в деле всё не удавалось.&lt;/p&gt;

&lt;p&gt;Сегодня удалось. По-быстрому добавил самообновление для нашего bootstrap-скрипта: &lt;a href="https://github.com/jellycrystal/bootstrap"&gt;https://github.com/jellycrystal/bootstrap&lt;/a&gt; Proof of concept получился на славу — работает как часы на *nix. Почти уверен, что на Windows не будет :-)&lt;/p&gt;

&lt;p&gt;Что это и зачем оно нужно: если вы используете pip+requirements.txt и virtualenv и не используете &lt;a href="http://pyobject.ru/blog/2010/07/17/touching-buildout/"&gt;buildout&lt;/a&gt;, то при начале работы над проектом вы делаете:&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;Проверяете, стоит ли у вас git, hg, virtualenv, pip и другие инструменты, необходимые для развертывания окружения&lt;/li&gt;
&lt;li&gt;Создаете virtualenv (чистым virtualenv или через virtualenvwrapper — не важно)&lt;/li&gt;
&lt;li&gt;Активируете его (либо в дальнейшем используете опцию -E у pip)&lt;/li&gt;
&lt;li&gt;Запускаете &lt;code&gt;pip install -r requirements.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Делаете дальнейший “бутстраппинг” проекта — передаете управление Make или &lt;a href="http://python-doit.sourceforge.net/"&gt;чему-нибудь похожему&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Каждый раз делать эту последовательность мне надоело и я написал для этих действий bootstrap.py Он делает почти всё как описано в списке выше, за исключением того, что а) он создает virtualenv ve б) он передает управление doit, если в списке таск-генераторов есть bootstrap. Теперь он еще и сам себя обновляет. И перезапускать для этого его не надо :-)&lt;/p&gt;

&lt;p&gt;Документация к bootstrap на подходе, поддержка Windows не в столь отдаленном будущем.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/turn_off?a=gdfekUVLd_o:pj9TD5yPwdo:bKYY9g0K8g8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/turn_off?i=gdfekUVLd_o:pj9TD5yPwdo:bKYY9g0K8g8" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://j2a.ru/post/8140472431</link><guid>http://j2a.ru/post/8140472431</guid><pubDate>Thu, 28 Jul 2011 04:24:35 +0800</pubDate><category>work</category><category>fun</category><category>python</category><category>bootstrap</category></item><item><title>Apple и последовательность</title><description>&lt;p&gt;Сегодня вышел Mac OS X “Lion” и я хочу отметить, что Apple подводит под общий знаменатель такие фичи как Expose, Dashboard и Spaces. Эти фичи появились в &lt;em&gt;разное время&lt;/em&gt; и они предлагают &lt;em&gt;разные&lt;/em&gt; метафоры. Иными словами, эти фичи не являлись интегрированными в пользовательский интерфейс, а были “пришлепками” сверху. Теперь всё это объединено в Mission Control. Мне как пользователю местами не нравятся нововведения Lion, но как инженер я двумя руками за унификацию концепций. И в этом смысле Lion предлагает более последовательный и логичный интерфейс.&lt;/p&gt;

&lt;p&gt;Это вдвойне радует, если вспомнить, что в последнее время Apple &lt;a href="http://ignorethecode.net/blog/2011/07/14/the_iphones_home_button/"&gt;заслуженно&lt;/a&gt; &lt;a href="http://j2a.ru/post/2635154752/mac-app-store-fail"&gt;критикуют&lt;/a&gt; за неконсистентность интерфейсов. Хотя, по опыту, у других компаний/брендов не особо лучше.&lt;/p&gt;

&lt;p&gt;P.S. Краткий обзор фич от создателей можно посмотреть в записи &lt;a href="http://www.apple.com/apple-events/october-2010/"&gt;Back to the Mac&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/turn_off?a=y7bom2Lc5Gw:jBWngxcWqXk:bKYY9g0K8g8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/turn_off?i=y7bom2Lc5Gw:jBWngxcWqXk:bKYY9g0K8g8" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://j2a.ru/post/7882292402</link><guid>http://j2a.ru/post/7882292402</guid><pubDate>Thu, 21 Jul 2011 19:43:14 +0800</pubDate><category>mac</category></item><item><title>Играющие тренеры</title><description>&lt;p&gt;&lt;em&gt;Очень часто хочется сказать пару слов о ссылке и очень часто это делаешь в Твиттере, но Твиттер как песок — ссылки, слова очень быстро уплывают куда-то в небытие. Найти ссылку, которую ты видел месяц назад (даже если сам делал ретвит) малореально.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Меня всегда настораживали люди, которые проработав 5 лет в IT становятся тренерами и потом года 3 только «тренируют». Мои опасения подтверждает  предисловие к статье &lt;a href="http://www.randsinrepose.com/archives/2011/07/12/bored_people_quit.html"&gt;Bored People Quit&lt;/a&gt; (выделено мной):&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Much has been written about employee motivation and retention. It’s written by folks who actively use words like motivation and retention and generally don’t have a clue about the daily necessity of keeping your team professionally content because they’ve &lt;strong&gt;either never done the work or have forgotten how it’s done.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Именно поэтому у нас на каждом уровне управления — играющие тренеры.&lt;/p&gt;

&lt;p&gt;Если говорить о самой статье — всё по теме, почти со всем согласен. За исключением того, что для меня, как координатора команды, задачка еще интересней — у нас &lt;em&gt;исключительно&lt;/em&gt; распределенная команда, у нас нет возможности посмотреть в глаза, у нас не услышишь мимолетом разговор-междусобойчик.&lt;/p&gt;

&lt;p&gt;Как мы решаем проблему диагностики и предотвращение «скуки»:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Превентивно убираем лишний шум. У &lt;em&gt;разработчиков&lt;/em&gt; нет митингов с клиентами, разработчики не пишут отчёты, им не требуется весь рабочий день быть с включенным IM&lt;/li&gt;
&lt;li&gt;Даём свободу. Свобода выбора своего графика работы, свобода выбора технического решения/инструмента, свобода открывать код, свобода делать исследования.&lt;/li&gt;
&lt;li&gt;Следим за «температурой по палате». Непопадание в свой график работы, снижение производительности — повод задать вопрос «как дела? все ли в порядке?»&lt;/li&gt;
&lt;li&gt;Мы терпеливы и дружелюбны. Возникновение проблемы — повод искать решение, а не спускать пар и находить козлов отпущения.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;В таком ключе мы работаетаем примерно пол года (предыдущий год команда была достаточно малой, чтобы сохранялся «хакерский» дух и работали ad-hoc решения). Будущий год покажет результаты :-)&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/turn_off?a=HNZOwsHDIeU:-O5of_8DeYs:bKYY9g0K8g8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/turn_off?i=HNZOwsHDIeU:-O5of_8DeYs:bKYY9g0K8g8" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://j2a.ru/post/7571946971</link><guid>http://j2a.ru/post/7571946971</guid><pubDate>Wed, 13 Jul 2011 21:28:00 +0800</pubDate><category>work</category><category>coaching</category><category>motivation</category></item></channel></rss>

