2016-04-16

О HappyDev-Lite 2016 Spring

HappyDev бывает не только большой, но и маленький. Точнее лёгкий. Большой — это для взрослых дяденек и тётенек программистов, тестировщиков и всех прочих, с суровыми мастер-классами. Маленький — это для школьников и студентов, чтобы рассказать им, что такое ИТ, зачем оно нужно, куда пойти учиться и работать.
Ленин
В силу близости к организаторам сих чудесных мероприятий, я поучаствовал. На прошлом, осеннем Lite, я рулил слайдами и микрофонами на дизайнерском потоке. А теперь, весной, я, во-первых, родил вступительный доклад, во-вторых, вёл почти весь единственный поток.
Собственно, мой доклад был уже четвёртым повторением темы про роботов и технологическую сингулярность. Это я уже рассказывал на субботнике и на пикнике. Теперь, для юной аудитории, пришлось прибрать фатализма и добавить оптимизма. Смотрим в будущее с оптимизмом. Последние успехи AlphaGo внушают оптимизм, что сингулярность таки наступит.
Ведущий потока из меня, кажется, получился жестоким. Я умолял докладчиков завершиться вовремя. И жестоко пресекал попытки затянуть сессию вопросов-ответов до бесконечности. Из-за этого, конечно, не все желающие смогли задать вопросы. Извините. Но так надо.
Зато у меня получилось в обед выгнать половину участников из зала. Это тоже было необходимым злом. Иначе все не смогли бы и не успели бы и пообедать, и стенды наших милых спонсоров посмотреть. То, что на конференцию не заявились сто пятьдесят зарегистрированных школьников, несколько облегчило задачу. Ай-ай-ай. Кстати, о стендах, я на них не был, ибо пришлось весь день торчать в зале.
Докладчики
В общем, ведущим быть прикольно, но утомительно. Зато послушал почти все доклады. Были интересные.
Дмитрий Пашкевич и Евгений Гущин хорошо так начали обзор технологий. К чему готовиться будущему веб или мобильному разработчику. Сюда бы ещё про десктоп чего добавить, но, похоже, в Омске десктопом никто всерьёз не занимается.
Потом пошли про языки и технологии. Анна Тарасенко поведала, какие языки программирования бывают. И что программисту нужно ещё знать свой родной язык, заодно с английским. Андрей Юдин убеждал слушателей, что JavaScript — самый универсальный язык: на нём можно делать и веб, и мобильное, и даже писать для Ардуинки. А напоследок Евгений Тюменцев в очередной раз утверждал, что языки — ничто, а старые добрые правильные принципы и идеи, желательно доказанные математически, — всё. Впрочем, дискуссия о языках задела молодёжь за живое. И пошли вопросы о том, на каком языке писать, и какой язык учить. Вместо того, чтобы спрашивать о том, как писать правильно.
Во время обеда, пока половина участников бегала по стендам, а другая сидела в зале, а потом они менялись, Иван Стрельников совершил подвиг. Он рассказал свой доклад дважды. Каждой половине аудитории. Интересный доклад. Про то, как он покинул Омск, но вернулся. Потому что Кипр — настолько беззаботное место, и там становится так хорошо, что перестаёшь о чём-либо беспокоиться и превращаешься в овощ. «Хэппи энд в двадцать пять лет.» Лично я согласен с заявлением из зала о том, что если мало забот, нужно завести детей.
После обеда Андрей Очкин очень неплохо объяснил, зачем вообще идти в ИТ. Алексей Дударев поведал об ещё одной интересной области приложения информационных технологий — ГИС. Да, карты. В Омске ими занимаются. Серик Бейсенов очень зажигательно рассказал о том, что программисты должны думать о пользователях. Думать они должны хорошо, и дарить юзерам подарки, в виде отличного софтверного продукта.
До последней тройки докладов досидели лишь самые стойкие. Виктор Белов объяснил, кто такие тестировщики и почему они тоже люди. Николай Морозов немного погрузил тонкостями нагрузочного тестирования. Константин Борисов напоследок оживил всех. Он рассказал о культурных различиях между русскими и американцами. Запомните, не задавайте глупых «почему», а просто делайте, что просят :)
Общее фото
В завершение конференции были вручение слонов за какие-то конкурсы, что проходили на стендах спонсоров, и групповая фотография. Ок. Всё прошло хорошо. Будем повторять.
Цветочек

2016-04-03

О CodeFest 2016

Надо писать про очередной КодеФест. Я опять на него не хотел ехать. Но твиты с анонсами ключевых докладов как-то убедили. Ну и не пожалел.
CodeFest
В прошлый раз кодефестили на тему DDD и CQRS. В этот раз, как Орта Терокс задал тему открытости, так все про оперсорц и поминали. Либо прям: «Мы тут фигачим фиговину на GitHub под BSD лицензией». Либо как минимум: «Это наш внутренний продукт, но некоторые части мы скоро выложим на GitHub». Почти в каждом докладе. Мне, как адепту свободного ПО, было немного обидно, что термин «оперсорц» употребляют налево и направо, а про «свободное ПО» не сказали ни разу.
Сам Орта говорил не только об открытости кода. Он говорил об открытости всего процесса разработки, которого они добились в своей компании. Код открыт на Гитхабе, багтрекер открыт на Гитхабе, открыты документация и блоги. Любой желающий может, если не непосредственно присоединиться к разработке, то хотя бы передать публичный привет разработчикам. И такая открытость влияет на самоощущение, даже на качество кода. Уже нельзя запушить говнокод, уже нельзя забить на баг. Всё видно.
Такая открытость, пожалуй, и прекрасна. Но им повезло с бизнесом. Сам код, а это приложения для iOS, которые предоставляют доступ к художественным галереям, не имеет ценности. Денежную ценность в их случае имеет контент, те самые картины. А доступ к контенту довольно легко контролировать и монетизировать.
Алексей Фёдоров из Одноклассников отлично рассказал про магический способ синхронизации через CAS инструкции современных процессоров. Справедливости ради, я знал об их существовании. Однако было интересно узнать подробности, а также недостатки. Основной недостаток в том, что при большом числе конкурирующих потоков, они будут долго крутиться в бесполезных циклах, пока последовательно не сделают, что хотели. И, кстати, synchronized секции в нашей любимой Java далеко не всегда представляют собой тяжёлые блокирующие мониторы. В некоторых случаях JIT может использовать здесь как раз CAS инструкции. Слышал я это давно, кажется на каком-то Java Day в том же Новосибирске.
Андрей Акиньшин из JetBrains похвастался новой разработкой нашей любимой компании: Project Rider. Это кросплатформенная IDE для .Net. Не то, чтобы я сильно любил .Net, но последние пару лет приходилось иметь с ним дело. И как раз Riderа очень сильно не хватало. Ребята замутили жуткий костыль, но иначе быстро сделать было нельзя. Гуй от IDEA, на Java с дописками на Kotlin, лезет через сеть к бэкенду от ReSharper на C#, запущенному под модифицированным Mono. Получилось переиспользовать наработки и IDEA, и ReSharper. К сожалению, в силу костыльной природы проекта, Rider пока не может войти как плугин в IDEA Ultimate.
Чуток застал доклад Вадима Макеева из Opera Software. И понял, как бесконечно далёк я от фронтенда. Кажется, время, когда можно было ручками писать HTML и чуток сдабривать его CSS, безвозвратно прошло. Ну а Вадим рассказал про магию свежей модной молодёжной грид-раскладки. Мне понравилось. Но всё же жутко любопытно, как оно работает. О боже, это наш грядущий стандарт!
Денис Иванов из 2ГИС долго и нудно объяснял азы CQRS. Зачем? Ведь год назад всё уже разжевали лучше некуда. К тому же в контексте секретного сервера на акторах, который мы пилим, CQRS выглядит как вчерашняя полумера. Мы поймали Дениса после доклада и попытались убедить. Не получилось.
Александр Казаков из СКБ Контура выдал потрясающий доклад про... Ну я для себя его назвал: «Про таймауты». В теории с горизонтальным масштабированием всё просто. Берём несколько stateless сервисов, ставим перед ними балансировщик, и всё ок. На практике не всё так просто. Нужно согласовывать таймауты, чтобы клиент не решил, что всё пропало, раньше, чем балансировщик решит, что сервис сдох. Нужно думать над стратегией обращения балансера к сервисам, как он будет определять, что сервис умер, когда будет обращаться к следующему, опять-таки тщательно учитывая таймауты. Иначе легко получить такой кластер, который для внешнего клиента работает даже медленнее одной машины. Очень интересно и поучительно. И есть раздолье для математиков и статистиков, если что. Чтобы высчитывать оптимальные стратегии исходя из наблюдаемых данных.
Сергей Белов из Digital Security, после докладов которого я обычно боюсь даже подумать о том, чтобы выйти в Интернет или запустить хоть какую-нибудь программу (ведь везде уязвимости!), на этот раз рассказал про некоторые инструменты для поиска уязвимостей. Самый скучный доклад Сергея, но всё равно полезненько.
Антон Галицын из 2ГИС поделился опытом развёртывания OpenStack. Молодцы. Подвиг совершили, я считаю. Если понадобится разворачивать OpenStack, я теперь знаю, к кому обратиться за консультациями.
Тимурку Шевлякова я пропустил. Как оно там было?
Зато послушал опытного шоумена Никиту Липского из Excelsior. Эти ребята из Новосибирска уже давно пилят свою JVM. Со статической компиляцией в нативный код. Одну из немногих JVM, официально одобренных ещё Sun. В отличие от андроидных оных. Мало кто знает внутренности JVM как они. Так что если будут хитрые вопросы про Java — готу к ним. У нас пара вопросов было, спросили. На докладе не было ничего кардинально нового для меня. Но, полагаю, для Java разработчиков, которые почему-то обошли вниманием Java Virtual Machine Specification, было полезно.
Уважаемые организаторы, с обедами в этот раз было хорошо. Всё-таки нормальный рис и котлетки — это сильно лучше авиационного обеда. Если бы это всё было бы ещё и раза в два дешевле, как оно положено быть в хорошей столовке, то было бы совсем отлично.
Star Wars
На второй день с утра выступала знаменитая Дорофея. Мы, в попытке нормально позавтракать, опоздали. Но, думаю, я ничего не пропустил. Макс обладает чудесной способностью из раза в раз повторять одно и то же, но разными словами. И весело. На этот раз с обезьяной. И ещё брать за это деньги. Завидую.
Антон Турецкий из Badoo рассказал про внедрение Dockerа. Нормальная история внедрения. Хороший рассказчик.
Доклад Игната Ковальчука из Google про Kubernetes в меня как-то не вошёл. Не помню, о чём он был. Помню только, что про Kubernetes была лишь треть доклада.
Никита Арыков из Pushwoosh ненавязчиво прорекламировал свою компанию в связи со смертью Parse.com. Parse — это такой облачный бэкенд для мобильных приложений, где можно (было) ничего не программируя, заполучить REST API для своих сущностей и пуш уведомления. Проект был куплен Фейсбуком и закрыт. Сейчас частично заоперсорсился и, при желании, обрезанную версию можно запустить на Heroku.
Александр Золотарёв потрясающе интересно рассказал про свою MAPS.ME. Я для себя открыл это приложение лишь недавно. В моём рейтинге картографических приложений MAPS.ME делят второе место с Яндекс.Навигатором, после 2ГИС. Алекандр рассказал, как всё начиналось, как росло, как они зарабатывали деньги, как дружили с YotaPhone, как продались Mail.ru и стали бесплатными. Но было и несколько технических деталей. Как они берут данные OpenStreetMap и «сжимают» их, чтобы мобильным юзерам меньше надо было качать. Классный доклад.
Гарный хлопец Андрей Светлов порадовал упоротых питонистов. Они пилят библиотеку aiohttp — HTTP фиговина поверх asyncio. Как я понял, это очередная инкарнация идей Twisted, Tornado и иже с ними. Наверное, это хорошо.
Константин Осипов из Mail.ru рассказал про Tarantool. Это такая in-memory NoSQL СУБД, родившаяся в недрах Mail.ru для их внутренних нужд. Про Tarantool на Кодефесте постоянно рассказывают уже года четыре подряд. И у меня постоянно возникало недоумение: зачем ещё одна СУБД, зачем в памяти, зачем превращать СУБД в application server на Lua? Но в этот раз, кажется, впервые, речь зашла о внутреннем устройстве Тарантула. Во-первых, они очень трепетно относятся к транзакциям. Во-вторых, у них там внутри акторы. Прозвучало волшебное слово, и доклад сразу стал интересным.
У них три толстеньких актора. Первый отвечает за сетевые взаимодействия с клиентами, принимает от них запросы на исполнение транзакций. Второй выполняет транзакции, в него встроена Lua машина. Все транзакции выполняются в единственном потоке, а значит, строго последовательно и изолированно. Третий отвечает за запись журнала транзакций на диск. Здесь транзакции накапливаются, чтобы получился некий batch, который одной операцией сбрасывается на диск. Если запись прошла успешно, только отсюда отсылается клиенту сообщение о том, что транзакция завершилась успешно. Протокол взаимодействия с клиентом — асинхронный. Если при записи журнала произошла ошибка, все транзакции из batch откатываются.
Очень приятно, что ребята натолкнулись на похожие проблемы и пришли к тем же решениям, что и мы в акторном сервере. Так что будем дружить. Как минимум надо будет попробовать прикрутить Тарантула к нашим акторам.
Напоследок Антон Шаяхов, чёрный маркетолог из Кнопки, рассказал про холакратию. Кнопка, как оказалось, — вообще интересный бизнес. Такой аутсорсинг услуг бухгалтера, юриста и бизнес-консультанта, замешанный на ИТ. А холакратия — это интересный способ организации связей внутри большой организации, альтернативный найму менеджеров, которые присматривают за сотрудниками, и менеджеров, которые присматривают за менеджерами, и начальников, которые... В холакратии каждая маленькая часть компании — круг — вполне самостоятельна и самодостаточна, и сама выстраивает отношения с другими кругами. Права, обязанности и контроль сосредоточены в круге, а не делегируются менеджерам. Очень мило, мне понравилось.
Me
Но это был не конец Кодефеста. По традиции Павел Мочалкин из 2ГИС выдал секретный доклад. На этот раз в леопольдовом стиле, про дружбу, и в дорофеевом стиле, что никто не... дурак, и прежде, чем обвинять, остановитесь и подумайте. Ну ок. В утомлённый за два дня мозг такие доклады входят хорошо.
Общение бесценно