Выпуск 7. Сентябрь 2013

Впечатления о YAPC::Europe 2013 в Киеве | Содержание | YAPC::Europe 2013 — уникальная возможность

Ещё один отчёт о конференции YAPC Europe 2013 в Киеве

С 12 по 14 августа в Киеве прошла конференция YAPC::Europe 2013. Это ещё одна Perl-конференция, которая ежегодно проводится в различных городах Европы, и на этот раз переместилась в самую восточную точку — Киев (до этого самым восточным городом проведения конференции была Рига в 2011). Темой конференции стало «Будущее Perl» или «Perl будущего», ключевые доклады были посвящены вопросу о том, в каком направлении будет развиваться Perl, что сообщество ожидает увидеть в будущем Perl и, чёрт возьми, какая это будет версия: 5, 6 или вообще 7?

Перед конференцией

Первое мероприятие, которое было запланировано — хакатон про Perl 6, который прошёл за день до начала конференции в воскресенье. Хакатон должен был продлиться в течении 8 часов. На него я не попал, поскольку приехал позже, но люди, которые присутствовали, рассказывали, что провели отлично время, сидя бок о бок с Ларри Уоллом и решали различные задачи: фиксили несложные баги в баг-трекере Perl 6, писали для них тесты, дополняли документацию.

В тот же день в 19 часов была запланирована встреча всех участников конференции в одном из Киевских кафе — «Вареничная Катюша». Собственно именно социальные мероприятия стали одной из сильных сторон данной конференции, поскольку позволяли участникам познакомиться, пообщаться и просто отлично провести время в дружной компании. Было непонятно, как более 100 человек уместятся в небольшом кафе, но они как-то умудрились это проделать. Основной потребляемый продукт — пиво, оказалось достаточно непросто получить — за ним выстраивалась очередь. Это, кстати, отлично дополняло общую атмосферу СССР 70-х, в которой была выполнена внутренняя обстановка кафе. В целом же вряд ли кто-нибудь испытывал неудобства, поскольку всё с лихвой компенсировалось тесным общением с Perl-хакерами со всего мира.

Первый день конференции

Конференция проходила в огромном здании международного конгресс-центра «Украинский дом» на Крещатике. В этом году в качестве билета на конференцию выступал распечатанный бэйджик, на котором помимо имени участника находился хитрый штрих-код, но на самом деле никому и в голову не пришло его проверять, поскольку посторонних людей сюда прийти просто не могло. Также каждый участник мог выбрать свой дизайн футболки: начиная от провокационного «use perl or die;», заканчивая нейтральным «25 years of Perl». Доклады проходили в трёх залах: большой основной зал и ещё два небольших зала для параллельных докладов. Кроме того, в холле перед главным залом, располагались удобные пуфики-мешки, в которых можно было плюхнуться и отдохнуть в перерывах между докладами. В холле также располагались стенды спонсоров конференции: Booking.com, Reg.ru, Afnic, Provectus IT, на которых активно работали хедхантеры, рассказывая о своих компаниях, раздавая различную атрибутику своих компаний собравшимся. Вообще, фраза хедхантеров «we are hiring» к концу конференции стала звучать так заезжено, что породила антимем «we are NOT hiring» в блиц-докладах, чтобы подчеркнуть, что речь пойдёт не о рекламе работодателя.

В целом обстановка была очень комфортной: работали кондиционеры, в холле всегда была вода. Во всех залах были доступны розетки, был доступен Wi-Fi (а со второго дня он стал даже более или менее сносно работать). Организаторы позаботились о питании участников: всех очень вкусно и быстро кормили обедами и готовили настоящий кофе во время кофе-брейков.

Первый день докладов на конференции начинался с вступительного слова одного из главных организаторов конференции Андрея Шитова. По традиции, сразу было объявлено о месте проведения следующей YAPC::Europe в 2014 году. Один из участников комитета, Антон Березин, объявил о том, что среди трёх городов-кандидатов: Клуж-Напо́ка (Румыния), Грана́да (Испания) и София (Болгария) была выбрана София. Таким образом, счастливые обладатели шенгенской визы смогут в следующем году посетить YAPC::Europe 2014 в Софии.

Следующим выступлением был доклад Ларри Уолла «Вещи, о которых я узнал», который приехал в Киев значительно раньше других участников и успел пройтись с экскурсией по городу. Поэтому первая часть доклада «Вещи, о которых я узнал за эту неделю» была посвящена Киеву и сопровождалась колоритными снимками: выбоин на дорогах, перегороженных строительным мусором пешеходных дорожек и прочих нелицеприятных картинок опасного Киева. Это было забавно. Вторая часть доклада была посвящена будущему Perl. Запомнилась цитата, если мне не изменяет память: «Все языки программирования отстойные. Поэтому язык лучше, просто если он менее отстойный чем другой. В таком случае Perl реально крут, если сравнивать с Коболом. Даже PHP крут, потому что он круче чем, э…, чем HTML».

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

Другие доклады первого дня

Дэйв Кросс (davorg) посвятил свой доклад 25-летней истории Perl, рассказав о тех вехах, которые были достигнуты за каждый из этих лет. Вероятно, 20 минут оказалось очень мало, поэтому многие страницы слайдов в конце были быстро пролистаны.

Аарон Крэйн (arc) рассказывал о NoSQL-базе данных Redis. Доклад был больше о самом Redis, т.е. без глубокой привязки к Perl. Было рассказано о том, как применяют Redis и в каких случаях он может быть удобен.

Очень интересен был доклад Питера Рабитсона (ribasushi) о том, что бенчмарки — это реально сложное занятие. В ходе доклада он часто ссылался на статью «Adventures in Benchmarking» Дэвида Голдена, в которой был проведён эксперимент, когда проводился бенчмарк одной и той же функции, под разным именем (от A до L). Оказалось, что функция с именем L оказалась на 30% медленнее функции с именем D, таким образом, делался вывод: функции с именем L — это просто отстой и не стоит никогда их так называть. Шутки шутками, но это отлично показывает, что подходить к бенчмаркам нужно значительно серьёзнее. Существует масса обстоятельств влияющих на тест: это и поведение процессора, и фоновая работа операционной системы и других процессов в системе.

Кристиан Карг (odrm) рассказал, что Perl 6 мёртв, да здравствует Perl 5. Основной посыл доклада, о том, что именно Perl 5 — это рабочая лошадка, которая используется всеми в работе и именно он поэтому требует внимания и вложений со стороны сообщества и бизнеса.

Джон Йенсен (jon_jensen) сделал доклад «Adventures in Perl packaging», в котором рассказал об сборке Perl-модулей в виде rpm-пакетов для CentOS/Fedora. Он очень точно определил преимущества такого подхода к установке модулей перед самосбором на локальной машине с помощью cpanm: зафиксированные зависимости, включая зависимости на C/C++-библиотеки, что упрощает установку модулей; возможность создания репозиториев. Очень спорный момент доклада — это упаковка разных версий Perl в /usr/local с последующей необходимостью хаков шебанга в исполняемых скриптах для переключения версии. По моему мнению это абсолютный нонсенс, но вероятно это решает проблему в каких-то нетипичных конфигурациях.

Сальвадор Фандино (salva) рассказал о создании удобных в сопровождении событийных программ с помощью модуля Class::StateMachine. Модуль основывается на понятии конечного автомата, когда система описывается в виде конечного набора состояний, переходы между которыми и программируются.

В своём докладе Пётр Коц рассказал о программе snaked, которая применялась в Яндексе в качестве альтернативы crond для тысячи сервисов.

Блиц-доклады первого дня

Апогеем первого дня стали блиц-доклады, когда десяток докладчиков в течении 5 минут презентуют свой модуль, проект или просто рассказывают интересные жизненные истории. Как мне показалась — это самая интересная часть конференции, поскольку тут не дают уснуть, периодически стуча по гонгу, да и сами докладчики очень живо и с юмором рассказывают доклады и, что важно, активно общаются с залом (ну и люди в зале тоже не отстают). Мне запомнились следующие доклады:

  • Модуль Rex (система развёртывания).
  • Модули Lingua::Num2Word Lingua::Word2Num для перевода чисел в слова и обратно для болеее 20 языков.
  • Питер Раббитсон рассказал о том, что нового в DBIx::Class 0.08250
  • Saywer X в своей непревзойдённой манере, ругаясь как пятилетний ребёнок показывал слайды с котиками в докладе «Unstupidifying mp3 tagging»
  • Алексей Капранов сделал очень спорный доклад о том, что молодой хипстер-питонщик круче, чем олдскульный Perl-зубр. На самом деле он говорил про то, что надо постоянно развиваться, уделять внимание тому, как твои программы интегрируются в рабочей системе и что оправдание но это же работает на моей машине не катит (ок, тогда мы ставим твой рабочий ноутбук в продакшен). Но кто ж это заметил?
  • Дейв Кросс поведал нам о царстве слепых «The Kingdom of the Blind» — армии программистов, которые пишут на Perl, но не считают себя Perl-программистами, не читают новостей о Perl, не посещают Perl-конференции, не общаются на форумах Perl Mongers. Присутствующие на данной конференции люди — это те лучи света в тёмном царстве, которые должны просвещать, рассказывать о современных практиках, обучать людей. Из доклада мне запомнился один приведённый пример, когда человек считал, что eq — это оператор присвоения строкового значения.
  • Доклад Ларса Дийкова «Doors of Durin» я, честно говоря, не понял, что-то про Средеземье, эльфов и гномов. Но зато в конце было хорошо показано, что в Perl отличная поддержка UTF-8 и можно использовать даже языки средиземья ;-)

Первый день конференции завершил небольшой фуршет, спонсируемый Booking.com. И хотя планировалось, что он продлится полтора часа, люди не расходились три часа.

Важно отметить просто героическую работу организаторов и волонтёров конференции. Вячеслав Тихановский (vti) и Breno (garu_rj) весь день провели в холле, регистрируя участников, распечатывая бэйджики и раздавая футболки нужного цвета, размера и рисунка. Андрея Шитова можно было увидеть за тем, что он носил еду для ребят, так как у них не было времени, даже чтобы сходить поесть. Волонтёры обеспечивали работу всей техники конференции, начиная от микрофона, до Wi-Fi-точки, вели запись на видео всех докладов. Все были просто молодцы, за что им огромное спасибо.

Второй день конференции

Второй день конференции открыл Вячеслав Тихановский, рассказав о том, что сегодня в 19 часов нас ожидает экскурсия на самом большом теплоходе в Украине «Роза Виктория». Вместо 10 минут он говорил, кажется, всего минуты две, поэтому у следующего докладчика, оказалось гораздо больше времени на доклад.

Доклад Эндрю Мейна (zefram) «API design by counterexample» должен был рассказывать о том, как надо проектировать API объектного модуля, но превратился в жёсткую критику дизайна и документации модуля DateTime.

Следующие два доклада в зале №1 были посвящены Dancer, и я посчитал, что их очень важно посетить. Но, к сожалению, доклады оказались просто неинтересными. Скучающий Sawyer X успел прямо во время их проведения сделать пару пул-реквестов на Dancer и, разумеется, сообщил об этом в твиттере.

В том же зале далее был доклад Герберта Брюнинга (lichtkind) «Is your software development process complete?». Герберт изучает русский язык и по его мнению на русском языке доклад должен называться «Полное программирование». Речь шла о процессе работы над проектом. Предполагается, что цикл работы проходит через документирование, прототипирование, программирование, и в конце идут тесты. На вопрос из зала, почему тесты идут в конце, было отвечено, что тесты без кода будут бессмысленны, тесты проверяют какие-то граничные условия, и их трудно создавать, пока кода ещё нет.

Очень интересным был доклад Лиона Тиммермана (leont) «Replacing Module::Build». Речь пошла об истории развития систем сборки в Perl. Рассматривались ExtUtils::MakeMaker, Module::Install, Module::Build и DistZilla. Лион рассказал об их преимуществах, но больше о недостатках. Как известно в релизе Perl 5.20 уже не будет Module::Build — модуль, который в своё время пропагандировался как замена EUMM, сам оказался устаревшим. Как альтернатива предлагается переход на Module::Build::Tiny.

Сильное впечатление произвёл доклад Ричарда Джелинека (the whip) «HowTo: Perl as the most popular scripting language», основной девиз которого — Use Perl! DAMMIT!. Ричард представляет организацию Propaganda.pm, цель которой, как ясно из названия, — пропаганда использования Perl. Грустно наблюдать, что Perl-сообщество, начиная с блогов хакеров, заканчивая целыми организациями, такими как Perl Foundation, используют в своих проектах wordpress (написанный на PHP), mailman (написанный на Python). При том, что существуют вполне жизнеспособные альтернативы, написанные на Perl. Вашу мать (вопрошает докладчик), вы собираетесь использовать Perl или нет?! Интересно, что даже организация Enlightenedperl использует Drupal на своём сайте, при этом каждый год зарубается финансирование проекта CMS на Perl, так как их и так много, зачем ещё. В общем, всё очень грустно, и если мы не начнём использовать Perl во всех проектах, где он отлично для этого подходит, мы никогда не сможем привлечь на свою сторону новых сторонников.

Мэт С Траут (mst) провёл зажигательный доклад «State of the Velociraptor». Мэт, как настоящий шотландец, в национальном килте, с хриплым громогласным голосом, напоминает Мэла Гибсона в «Храбром Сердце». Perl5 процветает, мы тащим туда самые клёвые фичи из Perl 6, Ruby и других языков программирования. Будущее прекрасно.

Блиц-доклады второго дня

Как обычно, день завершили блистательные блиц-доклады.

  • На эту конференцию по программе «Пришли новичка» (когда новичку оплачивают проезд на конференцию) попало двое человек: Михай Поп (Румыния) и Тео ван Хосл (Нидерланды). По условиям программы они должны были сделать блиц-доклады, в которых и рассказали о своём пути в Perl и о том, как они попали на конференцию.
  • Люкас Маи сделал доклад о своём модуле Function::Parameters. Модуль представляет собой реализацию сигнатуры функции для Perl, позволяя описывать параметры функций, их значения по умолчанию.
  • Станислав Пусеп презентовал модуль LWP::Protocol::Net::Curl, который позволяет прозрачно использовать вместо LWP бэкенд Net::Curl, который поддерживает огромное число протоколов, работает с прокси и кэширует днс-запросы. В целом, насколько я понял докладчика, можно ускорить работу старых краулеров на LWP в два раза, не меняя ни строчки кода.
  • Наим Шафиев сделал доклад по терминалу PAC — графическому терминалу, для управления устройствами по ssh. К сожалению доклад был очень короткий и толком я не понял, какие у него возможности.
  • Андрей Шитов рассказал о своём проекте YAPC.travel — веб-сайте, который позволит Perl-разработчикам, участвующим в различных конференциях, удобно бронировать отели или хостелы по самой низкой возможной цене.
  • Микола Маржан проанонсировал несколько Open Source конференций, которые пройдут в Киеве и Украине в этом году.
  • Морис Ленц рассказал о своём проекте irclog.perlgeek.de, который позволяет вести архивы irc-конференций.
  • Tadeusz Sośnierz (tadzik) один из трёх участников локальной группы Варшава.pm рассказал, о том, как организовывал Polish Perl Workshop. Каждый шаг был достаточно прост, и нет ничего сложного в организации мероприятия — главное захотеть встретиться.
  • Доклад Мэтью Уилсона (diakopter) назывался «Garbage Collection and Allocation in MoarVM», но в своём выступлении он делал очень странные заявление, вроде того, что через 2 года Perl 6 (Rakudo или MoarVM) будут эффективнее Perl 5. Шок! (хотя, возможно я что-то не так понял).

Круиз на теплоходе

Завершил второй день конференции Андрей Шитов с информацией о круизе по Днепру. Сначала он сказал, что потребуется быстро двигаться пешком 3 км до стоянки теплохода за полчаса. Но, к счастью это оказалось шуткой и всех организовано транспортировали на автобусах к пристани. Больше часа пришлось ждать отправления корабля из-за того, что некоторые участники застряли в пробке (да, оказалось в Киеве они тоже есть).

Круиз был просто фантастический. Все три палубы корабля были в распоряжении участников конференции и их партнёров. Бесплатные напитки, закуски и великолепный вид вечернего Киева с реки Днепр. Шутили, что если с кораблём что-нибудь случится, то это окажется непоправимым ударом по Perl: на корабле Ларри Уолл и ещё почти 300 Perl-хакеров.

Третий день конференции

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

Самым интересным докладом третьего дня стало обсуждение будущих версий Perl. Андрей Шитов сразу дал понять, что упоминание Perl 7 — это своего рода привлекающий внимание маячок, который может провоцировать плодотворное обсуждение о будущем Perl, а не предложение кардинально изменить номер версии Perl. Андрей рассказал историю появления последней дискуссии по Perl 7 с блог-поста Ovid’а, который спровоцировал флейм о том, надо или не надо переименовывать Perl 5. С одной стороны, Perl 5 появился почти 20 лет назад, более 10 лет назад появился Perl 6, который задумывался как развитие Perl 5. Но реальность оказалась такова, что Perl 6 так и не стал готовым для реального использования, а Perl 5 оказался в версионном тупике — он продолжает развиваться, но только в рамках версии 5. Для любого постороннего наблюдателя 5 всегда меньше 6 и видя состояние Perl 6, создаётся впечатление, что Perl в целом просто стагнирует. Нужен прорыв, отсюда и разговор, что надо дать новое название Perl 5, чтобы дать ему возможность развития, так, чтобы это было заметно для окружающего мира. Но с другой стороны, Perl 7 или другое имя подразумевает какое-то сильное отличие, серьёзное изменение API, чего не будет, если просто переименовать Perl 5. Все скажут, — тут ничего нового, это всё тот же «древний» Perl 5. Кроме того, такое переименование поставит крест на разработке Perl 6 по той же причине: 6 это меньше, чем 7. Таким образом, такое переименование пойдёт во вред обоим проектам.

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

В итоге, в вопросе будущего Perl сохраняется Status Quo: потихоньку ковырять Perl 5, временами играться в Perl 6 и наблюдать, как Perl потихоньку разделяет судьбу Кобола. Ок.

Следующий доклад был у Питера Раббитсона «SQL metaprogramming — non-ORM uses of DBIx::Class», в котором рассказывалось об интересных возможностях DBIx::Class для генерации сложных SQL-запросов.

Также я посетил интересный доклад Zefram’а о том, почему временные зоны это сложно. Очень обстоятельно было рассказано об истории появления временных зон. О том как создание быстрых средств передвижения (поезда) создало серьёзную путаницу с локальным временем и времени на железнодорожных станциях. О том, как это преодолевалось. Как создавалось всемирное координированное время, и как тяжело страны принимали его. Интересно, что временных зон значительно больше чем 24 (кажется 35), и отличие от гринвичского времени может быть не кратно 1 часу (например +5:30 для Индии).

После ланча был замечательный доклад Sawyer X «Asynchronously Fantastic». Сойер рассказал о принципах асинхронного программирования, об AnyEvent. В качестве примера он рассказал о программе, которая делает запрос на сайт IMDB об актёрах, которые играют в различных популярных сериалах. Таким образом он хотел получить список актёров, которые играли сразу в нескольких сериалах. Посчитав, что если каждый запрос будет выполняться в среднем 2 секунды, то последовательный запрос всех страниц по всем сериям всех сезонов всех сериалов займёт несколько дней. В то время как его программа на AnyEvent справилась с задачей за несколько минут.

Следующий доклад, который я посетил, был у Рейни Урбана «Recent compiler optimizations», в котором он делился своими успехами в оптимизирующем компиляторе B::CC для компиляции Perl кода в C, а затем в исполняемый код. Рассмотрены различные виды оптимизации — это и разворачивание циклов, у которых известно количество итераций. Отключения проверки на существование элемента ключа с автоматическим его созданием при обращении к вложенному ключу (no-autovivify). Отключение проверки на наличие магии (no-magic). На тестовом примере, где решение на чистом Perl’е выполнялось за 23 минуты, все эти оптимизации давали повышение скорости выполнения до 2,5 минут (почти на порядок).

Был ещё один доклад на тему замены crond и тоже в Яндексе — «Reliable cron jobs in distributed environment» Олега Комарова. Речь в докладе идёт об утилите switchman, которая позволяет запускать различные задачи на кластере из нод Apache Zookeeper, контролируя выполнение на определённых нодах через распределённую систему блокировок (запуск только на одном сервере или запуск на сервере, на котором доступен процессор или нужный объём памяти для задачи).

Блиц-доклады третьего дня

После кофе-брейка настало время блиц-докладов, и на этот раз выступало рекордное число участников — 13. Вот самые интересные:

  • Доклад о PkgSrc — системе сборки для 11 платформ (и прежде всего NetBSD) Дженса Резака. Собственно, опять полезный совет — пакуйте ваши Perl-модули в той системе сборки, которая работает на вашей операционной системе.
  • Sawyer X вышел буквально на минуту, чтобы продемонстрировать новый дизайн для сайта dbix-class.org. Новый дизайн безусловно просто фантастический, вероятно в скором времени мы увидим его вживую (старый сайт пока на месте).
  • Breno Oliveira рассказал о том, что теперь можно слать отчёты о тестировании модулей CPAN, даже пользуясь современным инсталлятором cpanm.
  • Дмитрий Иванов продемонстрировал в работе свою CMS — Simpleness, написанную конечно же на Perl.
  • Брайн МакКолли похвастался, что выиграл турнир по Perl Golf, который устраивал Reg.ru. Его решение для задачи игры в Go содержало всего 205 символов.
  • Очень приятно было слушать доклад Руслана Закирова о создании новой фичи для Perl 5: копирование пар ключей/значений из одного хэша в другой с использованием краткой записи my %r = %h{qw(a b c)}. Это потребовало изменения в синтаксисе Perl и изменений в самых недрах Perl 5. Но, как оказалось, разобраться с этим может быть вполне по силам любому Perl-хакеру, надо только не бояться этого. Новый синтаксис станет доступен, начиная с Perl 5.20.
  • Илья Чесноков честно рассказал о своём пути к программированию на Perl. Если ты живёшь не в Москве, а в Рязани, то работы для Perl-программиста найти практически нереально. Илья поблагодарил Reg.ru и вообще все компании, которые дают шанс таким ребятам как он работать с Perl удалённо.
  • Иван Фомичев провел Perl Quiz — викторину на знание Perl. Безусловно, каждый вопрос был с подвохом, и многие (и конечно я сам) узнали для себя много нового. Был спорный вывод об использовании Readonly вместо модуля constant — достаточно взглянуть в баг-трекер, чтобы понять, что он тоже не сахар.
  • Стефан Сейферт (Nine) с докладом «use perl or die;» рассказал о двух своих проектах: CiderCMS — Perl CMS и CiderWebmail — реализация веб-интерфейса для почты на фреймворке Catalyst. Это хороший ответ на доклад участника Propaganda.pm — всё-таки на Perl есть достойные альтернативы популярным веб-приложениям.
  • Пирс Колей (pdcawley‎) поразил всех удивительным исполнением песни о конференции и присутствующих известных людях. Оказывается, у Perl-хакеров есть и другие таланты.

Закрытие

Андрей Шитов в заключительном слове поблагодарил всех за участие в конференции, представил всех тех ребят, которые работали над организацией и проведением мероприятия. Это была фантастическая конференция. Спасибо всем участникам и организаторам за доставленное удовольствие! Ждём видеозаписей докладов, чтобы дать возможность тем, кто не присутствовал, увидеть всё своими глазами.

Владимир Леттиев


Впечатления о YAPC::Europe 2013 в Киеве | Содержание | YAPC::Europe 2013 — уникальная возможность
Нас уже 1393. Больше подписчиков — лучше выпуски!

Комментарии к статье