# Понедельник 39 твитов
Доброе утро понедельника! По просьбе @dcromster на этой неделе с вами @SBozhko из славного города Минска.
9:41Занимаюсь нагруженным сервер-сайдом на Scala, что-то около обработки больших данных.А по пятницам превращаюсь в подкастера (привет, #devzen)
9:44На этой неделе поговорим про Scala: чем она хороша, для кого, а кому ее лучше избегать.
9:56Джавистам перейти на Scala очень легко. Просто начните новый проект либо модуль существующего на этом языке.
10:11Примерно таким же образом год назад моя команда перешла на него. До сих пор не пожалели.
10:12А для сомневающихся вот вам быстрое 5-часовое введение от @mr_mig_by m.habrahabr.ru/post/209532/
10:15@backendsecret какие основные плюсы ?10:16
Во-первых, Scala – это красиво :)
10:19А вообще, значительно меньше boilerplate-кода. Работа с коллекциями в разы приятнее. Уже не могу жить без map, filter, zip
10:22Наличие фреймворка легковесных потоков в виде akka. И, конечно же, Option, Either и case-классы. Отвыкать от этого совсем не хочется.
10:26И, наконец, посмотрите на Scala-вакансии. Как правило, это не типичный для Java кровавый enterprise, а куда более интересный мир high-load
10:30Что касается книг, то я рекомендую Programming in Scala amazon.com/Programming-Sc…. Да, большая, но зато очень доскональная и понятная
10:47@backendsecret @mr_mig_by 5 часов это быстро?)
Есть в этом толика сарказма ;) twitter.com/Timrael/status…
11:46@backendsecret какие основные минусы?
В основом это возможность сделать одно и то же разными способами. Так что будьте готовы к долгим спорам из-за стиля twitter.com/vmakhaev/statu…
11:50Кроме этого в той же akka есть много подводных камней, если работаете с каким-либо ресурсом синхронно.
11:52В этом случае лучше для таких "блокирующих" акторов делать отдельный диспетчер (по сути это пул потоков).
11:55А здесь можно подробнее почитать, как с этим жить: doc.akka.io/docs/akka/snap… (Blocking Needs Careful Management)
11:57Кроме этого, в Scala dsl считается чуть ли не высшей формой развития разных библиотек. Не могу сказать, что я разделяю эту страсть к dsl-ям.
12:00Ну и будьте готовы сами допиливать существующие либы. А из-за того, что они написаны на более сложной Scala, это может быть довольно трудно
12:03Но здесь я вспомню слова Баруха @jbaruch: "Технологии идеальны, а люди мудаки". Так что Scala хороша ;) А вся проблема в людях, как и везде.
12:08@backendsecret #scala , получается, это такой #perl в мире джавы? TIMTOWDI, MAP, FILLTER (GREP in Perl) и т.д.
Да, такое порой имеет место при сильной упоротости разработчиков. Скатиться в write-only код можно довольно легко. twitter.com/Foxcool_ru/sta…
12:13@backendsecret недавно в Scala, почему в akka задепрекейтели redis как broker? Как сереализует данные, если речь о remote акторах?19:58
Задепрекейтили Redis не как брокер, а реализацию мейлбокса, который хранит сообщения в Redis.Впрочем, такая же история с ZooKeeper и MongoDB
20:01Потому что механизм durable мейлбоксов разрабатывается в модуле akka-persistent. А иначе получалось ненужное дублирование.
20:04В remote акторах сериализация проиходит с ичпользование протобафа. Для этого есть поддержка из коробки. Но можно и свое взять, если надо.
20:05@backendsecret перл - не синоним write-only кода. Ужасно можно писать и на питоне. Я имел ввиду схожесть философских отправных +инструменты20:06
Мне,конечно, сложно судить о философии и инструментах Perl. Но из того, что я знаю, со Scala мало пересечений. А кто-либо может из сравнить?
20:09@backendsecret А что можно почитать по akka? Что-нибудь ближе к архитектуре, проектированию. Книги, блоги и.т.п.20:10
Документация у akka на официальном сайте отличная. Что очень здорово, что есть pdf, как для Scala, так и для Java API akka.io/docs/
20:13Есть книга Effective Akka. Она совсем небольшая, но в ней вы найдете best practices для akka с толковыми примерами shop.oreilly.com/product/063692…
20:19Из блогов по akka рекомендую letitcrash.com и typesafe.com/blog
А если хочется паттернов с акторами — letitcrash.com/post/591902669…
Ну и конечно же рекомендую курс Principles of Reactive Programming coursera.org/course/reactive
20:28Знаете, ведение твиттера @backendsecret съедает кучу времени. Поэтому только в половину девятого иду с работы.
И это только первый день :) надеюсь,вы сегодня более продуктивны? А какую фичу вы сегодня запилили на вашем бэкенде? twitter.com/sbozhko/status…
20:48@Timrael @backendsecret ящитаю это быстро: за 5 часов можно полностью покрыть весь A2 уровень и посмотреть вблизи на основные фичи21:27
@backendsecret не возникало ли ощущения, что #scala слишком сложна и хочется взять что-то более простое для текущей задачи... например PHP?23:20
Чувствую подвох в этом вопросе.
23:21Нет, такого желания не было. Scala тем и хороша: язык эволюционирует вместе с вами. Чем глубже изучаете его, тем интереснее становится.
23:23Не зря же это SCAlable LAnguage.
23:25@backendsecret чем больше знаешь тем непонятнее пишешь :)
Да, есть такой сайд-эффект. Code review сильно помогает, если в команде инженеры разного уровня и стиля twitter.com/crashkin/statu…
23:47# Вторник 30 твитов
Доброе утро, друзья! Ну что, вы отстендапились уже? Как вы, кстати, относитесь к ежедневным скрам-ритуалам?
11:15И про какой аспект бэкнед разработки на Scala вы хотите узнать сегодня?
11:16@backendsecret Утренний - пошёл он на ... Вечерний - хороший повод подвести итоги.11:25
@backendsecret утренние ситдауны объединяют!11:25
@backendsecret утром стендап полезен, чтобы понять кто и что будет делать. Важно чтобы стендап не занимал много времени и был информативен.11:25
@backendsecret стараюсь опоздать на работу, чтобы не попасть на это дело11:25
@backendsecret клево, но не все умеют спокойно к ним относится. На самом же деле, че такого? Затерли по работе и разбежались!11:27
@backendsecret Что делать когда надо разбираться с кодом эволюционированых?
Попросить у автора кода отсыпать того замечательного порошка, который был использован при написании! twitter.com/pdrobushevich/…
11:31@backendsecret чем занимаешься во время компиляции?
Веду твиттер бэкенд разработчика! twitter.com/avevlad/status…
11:33Но обычно помогает только долгое, внимательное, кропотливое изучение исходника: переход по функциям, прогон тестов.
11:38А вы какие еще способы знаете, ежели нужно вникнуть в чужой код, весьма сложный и запутанный?
11:39@backendsecret наявність ритуалів (будь-яких при чому - спільні обіди, треди в чатиках і т.д.) частина формування групи людей в команду
Отличный ответ! Ритуалы как средство формирования команды. Между прочим, человечество давно пользуется этим методом. twitter.com/chorna_kiwka/s…
11:42@backendsecret я имею стойкой предубеждение, что ежедневные стендапы бесполезны
Нет на вас сертифицированного скрам-мастера! twitter.com/lowl4tency/sta…
11:44@fliptheweb @backendsecret не бьют, но и пользы о них тоже нет. А идти могут по часу. За время стендапа я успеваю 1-2 таска из дома закрыть.
1-2 таска за среднестатистический стендап! Мне бы такую продуктивность. twitter.com/vladimore/stat…
11:47@backendsecret все верно и поэтому хорошо бы, чтобы эту сложность хотя бы язык не превносил и так есть с чем разбираться13:39
Утром отлично поговорили за стендапы и скрам. Спасибо за живой отклик. А теперь поведаю свое мнение касательно этого добра.
20:47Собственно, к стендапам я отношусь положительно. Полезно быть в курсе того, что делает команда. Но agile-команда не должна быть большой.
20:49Есть даже такое понятие: "two-pizza team". В бОльшей команде стендап сильно разбухает и становится бесполезным. Скучно слушать нерелевантное
20:52Но я категорически против бездумного следования ритуалам. Хотите стойте, хотите — сидите. Как вам удобно.
20:55Да, есть мнение, что стоя люди будут меньше говорить. Но не в этом же суть. Цель — рассказать, что сделал, что будешь делать, какие блокеры.
20:56@backendsecret у меня сперва с командой, потом общий с лидами команд в 1600. Раз в неделю общий. Меня устраивает
*голосом Нерзула*
Нужно больше митингов! twitter.com/a_lithium/stat…
@backendsecret ок, у нас вообще их два :) один общий где один человек за всю команду рассказывает коротенько и можно другие тимы послушать21:09
@backendsecret второй внутри команды, с техническим мясом, какие у кого интересные штуки/проблемы/затыки и т.п.21:09
@backendsecret самый быстрый вариант - сесть вдвоем за таску. Ты пишешь код, а он тебя ведет. 2 часа, а понимания как если бы неделю копался
Очень дельный совет. К сожалению, работает только если есть автор. А санитары быстро приезжают за такими авторами. twitter.com/listochkin/sta…
21:14Вот, к слову, парное программирование отлично подходит, если нужно ввести нового человека в проект. Это куда быстрее, нежели копаться самому
21:18А что вы можете порекомендовать для ввода нового инженера в проект?
21:28@backendsecret удачи.. - сказал мне мой предшественник и ушел оставив наедине с полугодовалым легаси 😃 #adventureTime21:32
@backendsecret кстате, у меня вопрос. а кто в бэкендах юзает XSL+XML и какова мотивация для сего действа?23:19
@backendsecret а мы всякие лекции записываем для внутреннего пользования, чтобы по десять раз одно и то же не рассказывать.23:38
@backendsecret и предварительный code-review с выделенным наставником. Перед общим code-review.23:38
# Среда 16 твитов
Рубрика "Знаете ли вы". Знаете ли вы, откуда взялся логотип Scala? А теперь посмотрите на лестницу в EPFL: deliveryimages.acm.org/10.1145/260000…
0:45Как Scala-разработчик я должна пиарить Scala, но сейчас сижу и изучаю Go. И вам скажу, что Go весьма неплох, но мне видится чересчур простым
0:56И некоторые моменты в нем вызывают недоумение. Я уже завела себе файлик, который так и называется "wtf golang". Зря не вела такой для Scala.
1:14Мои впечатления от языка Scala после года работы с ним eax.me/scala-one-year/ #fprog #scala #java11:12
@backendsecret как долго компилится и собирается средний проект и как можно это ускорить (давай - выкладывай секреты :)11:24
Средний проект (хотя что считать таковым?) собирается у меня на макбуке мавеном за 01:34 минут.
11:29Можно разбивать проект на модули (сервисы) и собирать каждый по необходимости. Также есть инкрементальная сборка, есть еще проме мавена sbt
11:3101:34 минут - это сборка с нуля с прогоном юнит-тестов. Так что не скажу, что собирается все очень медленно.
11:33@backendsecret мне кажется, что для любого языка можно составить такой файлик. Например, вот для ruby и js :)11:36
destroyallsoftware.com/talks/wat
"Asynchronous Distributed Snapshots for Distributed Dataflows" - Carbone et al. 2015 blog.acolyer.org/?p=1052 #themorningpaper11:41
Список русскоязычных подкастов на тему информационных технологий github.com/AveVlad/russia…11:42
#DevZen первый в списке :)
@backendsecret а зачем? Все эти wtf будут просто первым впечатлением с непривычки
Тоже так делаю при разборе нового проекта. twitter.com/borovikov/stat…
11:45Наверняка вы наслышаны про коллекции в Scala. Это и правда очень гибкий инструмент, с которым действительно удобно и приятно работать.
19:09Но настоящие бэкенд разработчики знают, что ничего не дается просто так. А когда речь идет о высоких нагрузках, миллисекунды решают.
19:14Если хотите узнать, чего стоит это удобство в Scala, и вас не испугают байт-код и ассемблер, то этот доклад для вас: youtube.com/watch?v=M7ptT_…
19:19Знаете как работает инфа в инетиках? Вчера @backendsecret запостил про стендапы, сегодня я предложил завести их на новой работе.
Здесь должен быть дисклеймер про ваш страх и риск. twitter.com/kmmbvnr/status…
22:18# Четверг 22 твита
Всего год пишу продакшен код на Scala, а меня уже передергивает, когда вижу неоправданные мутабельные переменные в коде на других языках.
0:32@backendsecret а зачем? Все эти wtf будут просто первым впечатлением с непривычки0:36
Позвольте не согласиться. Wtf-ки, возникающие при изучении нового языка, библиотеки, инструмента, очень важны.
0:38Они указывают на сомнительные моменты для стороннего наблюдателя с незашоренным взглядом.
0:40По сему я считаю, что такие вещи нужно обязательно фиксировать. Это очень ценный фитбек. Вспомните хотя бы "коридорное тестирование".
0:42@backendsecret быстрое объяснение почему #golang такой learnxinyminutes.com/docs/ru-ru/go-…0:43
Внимание. Вброс. После почти недели с Go у меня в голове крутится только одно слово: "убогонький". Нет в нем мощи Scala. Продолжаю изучение.
0:50Полагаю, внимательный читатель заметил каламбур? УбоGoнький там должно быть.
1:01@backendsecret да ему даже до жавки, особенно восьмой долеко1:20
@backendsecret очень тяжело пересаживаться со scala+akka на java+spring. Ощущение связанных рук18:41
@kmmbvnr @backendsecret не осилил sicp, на Scala не пишу, от неоправданно мутабельных переменных передергивает. ЧЯДНТ?
Да это же замечательно! twitter.com/xeningem/statu…
18:42Последнее время читаю только 4 твиттера — @jsunderhood, @cssunderhood, @iamspacegray и @backendsecret. Отличный формат!
Спасибо! Мы стараемся для вас :) twitter.com/fliptheweb/sta…
18:43@backendsecret П - популярность.
К слову, доклад про внутренности Scala сделал @public_void_grv. Так что можете ему задавать каверзные вопросы :) twitter.com/public_void_gr…
18:46@public_void_grv @backendsecret было бы несправедливым не упомянуть то чего Odersky недавно рассказывал youtube.com/watch?v=48js0H…
Да, это тоже весьма интересный доклад про внутренности Scala и jvm twitter.com/ivanenok/statu…
18:48@backendsecret по поводу избегать - по подробней плз.
Итак, кому же надо избегать Scala. twitter.com/NilzBor/status…
18:58На мой взгляд, первая причина — это если jvm вам не подходит в принципе.
18:59Вторая—если в команде уровень инженеров сильно разнится. Каждый будет писать в своем стиле, что приведет к совершенно неподдерживаемому коду
19:02Либо же люди будут много и часто спорить, что тоже не есть хорошо.
19:04@backendsecret а бить граблями по рукам за несоблюдение код-стайла уже не модно?19:08
Здесь даже речь идет не только и не сколько о стиле наименования переменных, отступов и пр. Это скорее об уровне функциональщины в коде.
19:09Если в языке есть множество способов сделать одно и то же, то такая свобода может сыграть против вас.
19:13@backendsecret посоветуйте, что почитать про spring, интересует web
Мне в свое время книга Spring in Action очень понравилась. Там был хороший пример с web manning.com/walls4 twitter.com/pl__nk/status/…
21:18# Пятница 15 твитов
Как решать сложные задачи в программировании:
8:06В этом репозитории ребята пилят тул для визуализации akka-cluster на D3 github.com/dsugden/cluste…
8:17<- теперь, когда мне нужно будет объяснить что такое «костыль», я просто покажу это фото pic.twitter.com/Z4ZryUCFGW
Замечательно! twitter.com/ptico/status/6…
9:45@backendsecret10:28
Klang's Conjecture:
If you cannot solve a problem without programming you cannot solve a problem with programming
А сейчас минутка "А знаете ли вы". В Scala есть интересный класс AnyRef. Он явлется базовым для всех пользовательских классов.
12:26На самом деле это всего лишь алиас для java.lang.Object. Но какова причина существования AnyRef, учитывая, что уже есть java.lang.Object?
12:27Дело в том, что изначально Scala была задизайнена для работы как на Jvm, так и на .NET. Для .NET AnyRef — это алиас для System.Object.
12:28Если вы всегда хотели заниматься Data Science, но не знаете, с чего начать, у меня для вас есть план развития. pic.twitter.com/j9M1fqEmlB
12:50Не мое, но жизненно :)
ПМ сказал:
"Опять дедлайны
И куча неотложных дел".
И отпуск мой он на релизе вертел.
А вы ходили в отпуск этим летом? Я вот нет.
19:22Гоняю тесты, фикшу тесты.
Для пятницы сойдет вполне.
Ищите наш релиз продукта
На дне.
@backendsecret а что такое отпуск?
Ну это такое время, когда можно спокойно пилить свои проекты. twitter.com/ivanenok/statu…
19:34@ivanenok @backendsecret отпуск это такое мифическое время, когда ты не программируешь несколько дней подряд.19:35
Сегодня вечер пятницы, а значит, пора приниматься за подготовку к выпуску подкаста #55. Создаю интригу: скоро у нас ожидается раздача слонов
20:43А чем вы обычно заниматесь по вечерам пятницы? Неужели пишете код?!
20:48# Суббота 5 твитов
— Какой тупая защита на сайтах, «введите имя своего питомца»...11:33
— У меня на это есть случайно нумерованные жабы.
@backendsecret иногда код иногда бар, а ты чем занимаешься по пятницам, не считая подкаста? :)
Да вы сложные вопросы задаете :) twitter.com/anton_davydov/…
13:31Уже больше года каждая пятница — это подкаст + подготовка к нему. Есть исключения, когда я в разъездах. Но это крайне редко.
13:34RT за #fpconf, #opengl и #vulkan! ::: FPConf и Vulkan с гостем @zeuxcg — Episode 0055 devzen.ru/episode-0055/ via @gliush #devzen17:30
@afiskon @backendsecret @zeuxcg @gliush отличный выпуск18:53
# Воскресенье 17 твитов
Неделю изучаю Go и пишу на нем небольшой проект для себя. Нужно признать, что у меня предвзятое мнение. Но тем не менее отмечу следующее:
13:27Когда пишешь код на Scala, чувствуешь себя умным, а когда пишешь на Go, ощущаешь себя кодером.
13:27Это лишь мое впечатление. Возможно, ошибочное. Но как-то не заходит этот язык для меня пока что. Очень жаль, конечно.
13:30Идея переходящего акка @backendsecret интересная.13:31
go is a terrible, terrible language, yet still a major productivity boost. Amdahl's law in another context.16:47
reduce: what you will do with your expectations after you start with Go16:51
Rust and Scala drown you in complexity. Go drowns you in simplicity.16:52
You often see languages which are fighting the last war. Go is fighting the War of 1812.17:07
@backendsecret представь, кем чувствуют себя люди, пишущие на PHP
Боль и унижение? twitter.com/lopinopulos/st…
18:35@backendsecret чувствуют, что через неделю в школу (простите).18:36
@backendsecret сам пишу время от времени, ощущение, как будтов чем-то липком вымазался
Давайте еще откровений PHP-разработчиков! twitter.com/lopinopulos/st…
18:56Ну что, ребята, через час мне перекроют доступ к этому аккаунту. У вас осталось мало времени, чтобы успеть задать мне свои вопросы :)
20:00@backendsecret зачем программирование? ведь есть другие замечательные профессии
Согласна. Изначально хотела стать ученым-геологом, а потом математиком. twitter.com/rubyunderhood/…
20:05@backendsecret твое мнение по поводу #playframework
Перегруженный, имхо. Я вообще за либы больше. Если нужно быстро сделать что-то типичное, то фреймворк вполне ок. twitter.com/NilzBor/status…
20:09@backendsecret приходилось использовать в боевых проектах ?
Только для небольшого проекта, который вычитывает из зукипера оффсеты очередей кафки и выводит это в виде таблицы. twitter.com/NilzBor/status…
20:14За сим прощаюсь. С вами на этой неделе была @SBozhko. Это был замечательный опыт. Спасибо вам за это!
20:57# Ссылки
other
- http://m.habrahabr.ru/post/209532/
- http://www.amazon.com/Programming-Scala-Comprehensive-Step-Step/dp/0981531644
- http://doc.akka.io/docs/akka/snapshot/general/actor-systems.html
- http://akka.io/docs/
- http://shop.oreilly.com/product/0636920028789.do
- http://letitcrash.com/
- http://letitcrash.com/post/59190266995/eai-patterns-series-by-vaughnvernon
- https://www.typesafe.com/blog
- https://www.coursera.org/course/reactive
- http://deliveryimages.acm.org/10.1145/2600000/2591013/figs/uf1.jpg
- http://eax.me/scala-one-year/
- https://www.destroyallsoftware.com/talks/wat
- http://blog.acolyer.org/?p=1052
- https://github.com/AveVlad/russia-it-podcast
- https://github.com/dsugden/cluster-console
- https://www.youtube.com/watch?v=M7ptT_yY97U&list=PLVe-2wcL84b_xDvw7rO_qlw7OcllbHsIN&index=28
- http://learnxinyminutes.com/docs/ru-ru/go-ru/
- http://www.manning.com/walls4
- https://groups.google.com/forum/#!topic/finaglers/y3fvt3d4nBk
- https://groups.google.com/forum/#!topic/akka-user/eXiBV5V7ZzE
- http://devzen.ru/episode-0055/