SBozhko

17 августа 2015, Россия

# Понедельник 39 твитов

Доброе утро понедельника! По просьбе @dcromster на этой неделе с вами @SBozhko из славного города Минска.

6:41

Занимаюсь нагруженным сервер-сайдом на Scala, что-то около обработки больших данных.А по пятницам превращаюсь в подкастера (привет, #devzen)

6:44

На этой неделе поговорим про Scala: чем она хороша, для кого, а кому ее лучше избегать.

6:56

Джавистам перейти на Scala очень легко. Просто начните новый проект либо модуль существующего на этом языке.

7:11

Примерно таким же образом год назад моя команда перешла на него. До сих пор не пожалели.

7:12

А для сомневающихся вот вам быстрое 5-часовое введение от @mr_mig_by m.habrahabr.ru/post/209532/

7:15
@backendsecret какие основные плюсы ?
7:16

Во-первых, Scala – это красиво :)

7:19

А вообще, значительно меньше boilerplate-кода. Работа с коллекциями в разы приятнее. Уже не могу жить без map, filter, zip

7:22

Наличие фреймворка легковесных потоков в виде akka. И, конечно же, Option, Either и case-классы. Отвыкать от этого совсем не хочется.

7:26

И, наконец, посмотрите на Scala-вакансии. Как правило, это не типичный для Java кровавый enterprise, а куда более интересный мир high-load

7:30

Что касается книг, то я рекомендую Programming in Scala amazon.com/Programming-Sc…. Да, большая, но зато очень доскональная и понятная

7:47
@backendsecret @mr_mig_by 5 часов это быстро?)

Есть в этом толика сарказма ;) twitter.com/Timrael/status…

8:46
@backendsecret какие основные минусы?

В основом это возможность сделать одно и то же разными способами. Так что будьте готовы к долгим спорам из-за стиля twitter.com/vmakhaev/statu…

8:50

Кроме этого в той же akka есть много подводных камней, если работаете с каким-либо ресурсом синхронно.

8:52

В этом случае лучше для таких "блокирующих" акторов делать отдельный диспетчер (по сути это пул потоков).

8:55

А здесь можно подробнее почитать, как с этим жить: doc.akka.io/docs/akka/snap… (Blocking Needs Careful Management)

8:57

Кроме этого, в Scala dsl считается чуть ли не высшей формой развития разных библиотек. Не могу сказать, что я разделяю эту страсть к dsl-ям.

9:00

Ну и будьте готовы сами допиливать существующие либы. А из-за того, что они написаны на более сложной Scala, это может быть довольно трудно

9:03

Но здесь я вспомню слова Баруха @jbaruch: "Технологии идеальны, а люди мудаки". Так что Scala хороша ;) А вся проблема в людях, как и везде.

9:08
@backendsecret #scala , получается, это такой #perl в мире джавы? TIMTOWDI, MAP, FILLTER (GREP in Perl) и т.д.

Да, такое порой имеет место при сильной упоротости разработчиков. Скатиться в write-only код можно довольно легко. twitter.com/Foxcool_ru/sta…

9:13
@backendsecret недавно в Scala, почему в akka задепрекейтели redis как broker? Как сереализует данные, если речь о remote акторах?
16:58

Задепрекейтили Redis не как брокер, а реализацию мейлбокса, который хранит сообщения в Redis.Впрочем, такая же история с ZooKeeper и MongoDB

17:01

Потому что механизм durable мейлбоксов разрабатывается в модуле akka-persistent. А иначе получалось ненужное дублирование.

17:04

В remote акторах сериализация проиходит с ичпользование протобафа. Для этого есть поддержка из коробки. Но можно и свое взять, если надо.

17:05
@backendsecret перл - не синоним write-only кода. Ужасно можно писать и на питоне. Я имел ввиду схожесть философских отправных +инструменты
17:06

Мне,конечно, сложно судить о философии и инструментах Perl. Но из того, что я знаю, со Scala мало пересечений. А кто-либо может из сравнить?

17:09
@backendsecret А что можно почитать по akka? Что-нибудь ближе к архитектуре, проектированию. Книги, блоги и.т.п.
17:10

Документация у akka на официальном сайте отличная. Что очень здорово, что есть pdf, как для Scala, так и для Java API akka.io/docs/

17:13

Есть книга Effective Akka. Она совсем небольшая, но в ней вы найдете best practices для akka с толковыми примерами shop.oreilly.com/product/063692…

17:19

Из блогов по akka рекомендую letitcrash.com и typesafe.com/blog
А если хочется паттернов с акторами — letitcrash.com/post/591902669…

17:25

Ну и конечно же рекомендую курс Principles of Reactive Programming coursera.org/course/reactive

17:28
Знаете, ведение твиттера @backendsecret съедает кучу времени. Поэтому только в половину девятого иду с работы.

И это только первый день :) надеюсь,вы сегодня более продуктивны? А какую фичу вы сегодня запилили на вашем бэкенде? twitter.com/sbozhko/status…

17:48
@Timrael @backendsecret ящитаю это быстро: за 5 часов можно полностью покрыть весь A2 уровень и посмотреть вблизи на основные фичи
18:27
@backendsecret не возникало ли ощущения, что #scala слишком сложна и хочется взять что-то более простое для текущей задачи... например PHP?
20:20

Чувствую подвох в этом вопросе.

20:21

Нет, такого желания не было. Scala тем и хороша: язык эволюционирует вместе с вами. Чем глубже изучаете его, тем интереснее становится.

20:23

Не зря же это SCAlable LAnguage.

20:25
@backendsecret чем больше знаешь тем непонятнее пишешь :)

Да, есть такой сайд-эффект. Code review сильно помогает, если в команде инженеры разного уровня и стиля twitter.com/crashkin/statu…

20:47

# Вторник 33 твита

Доброе утро, друзья! Ну что, вы отстендапились уже? Как вы, кстати, относитесь к ежедневным скрам-ритуалам?

8:15

И про какой аспект бэкнед разработки на Scala вы хотите узнать сегодня?

8:16
@backendsecret Утренний - пошёл он на ... Вечерний - хороший повод подвести итоги.
8:25
@backendsecret утренние ситдауны объединяют!
8:25
@backendsecret утром стендап полезен, чтобы понять кто и что будет делать. Важно чтобы стендап не занимал много времени и был информативен.
8:25
@backendsecret стараюсь опоздать на работу, чтобы не попасть на это дело
8:25
@backendsecret клево, но не все умеют спокойно к ним относится. На самом же деле, че такого? Затерли по работе и разбежались!
8:27
@backendsecret Что делать когда надо разбираться с кодом эволюционированых?

Попросить у автора кода отсыпать того замечательного порошка, который был использован при написании! twitter.com/pdrobushevich/…

8:31
@backendsecret чем занимаешься во время компиляции?

Веду твиттер бэкенд разработчика! twitter.com/avevlad/status…

8:33

Но обычно помогает только долгое, внимательное, кропотливое изучение исходника: переход по функциям, прогон тестов.

8:38

А вы какие еще способы знаете, ежели нужно вникнуть в чужой код, весьма сложный и запутанный?

8:39
@backendsecret наявність ритуалів (будь-яких при чому - спільні обіди, треди в чатиках і т.д.) частина формування групи людей в команду

Отличный ответ! Ритуалы как средство формирования команды. Между прочим, человечество давно пользуется этим методом. twitter.com/chorna_kiwka/s…

8:42
@backendsecret я имею стойкой предубеждение, что ежедневные стендапы бесполезны

Нет на вас сертифицированного скрам-мастера! twitter.com/lowl4tency/sta…

8:44
@fliptheweb @backendsecret не бьют, но и пользы о них тоже нет. А идти могут по часу. За время стендапа я успеваю 1-2 таска из дома закрыть.

1-2 таска за среднестатистический стендап! Мне бы такую продуктивность. twitter.com/vladimore/stat…

8:47
@backendsecret все верно и поэтому хорошо бы, чтобы эту сложность хотя бы язык не превносил и так есть с чем разбираться
10:39

Утром отлично поговорили за стендапы и скрам. Спасибо за живой отклик. А теперь поведаю свое мнение касательно этого добра.

17:47

Собственно, к стендапам я отношусь положительно. Полезно быть в курсе того, что делает команда. Но agile-команда не должна быть большой.

17:49

Есть даже такое понятие: "two-pizza team". В бОльшей команде стендап сильно разбухает и становится бесполезным. Скучно слушать нерелевантное

17:52

Но я категорически против бездумного следования ритуалам. Хотите стойте, хотите — сидите. Как вам удобно.

17:55

Да, есть мнение, что стоя люди будут меньше говорить. Но не в этом же суть. Цель — рассказать, что сделал, что будешь делать, какие блокеры.

17:56
@backendsecret у меня сперва с командой, потом общий с лидами команд в 1600. Раз в неделю общий. Меня устраивает

*голосом Нерзула*
Нужно больше митингов! twitter.com/a_lithium/stat…

17:58
@backendsecret ок, у нас вообще их два :) один общий где один человек за всю команду рассказывает коротенько и можно другие тимы послушать
18:09
@backendsecret второй внутри команды, с техническим мясом, какие у кого интересные штуки/проблемы/затыки и т.п.
18:09
@backendsecret самый быстрый вариант - сесть вдвоем за таску. Ты пишешь код, а он тебя ведет. 2 часа, а понимания как если бы неделю копался

Очень дельный совет. К сожалению, работает только если есть автор. А санитары быстро приезжают за такими авторами. twitter.com/listochkin/sta…

18:14

Вот, к слову, парное программирование отлично подходит, если нужно ввести нового человека в проект. Это куда быстрее, нежели копаться самому

18:18

А что вы можете порекомендовать для ввода нового инженера в проект?

18:28
@backendsecret удачи.. - сказал мне мой предшественник и ушел оставив наедине с полугодовалым легаси 😃 #adventureTime
18:32
@backendsecret кстате, у меня вопрос. а кто в бэкендах юзает XSL+XML и какова мотивация для сего действа?
20:19
@backendsecret а мы всякие лекции записываем для внутреннего пользования, чтобы по десять раз одно и то же не рассказывать.
20:38
@backendsecret и предварительный code-review с выделенным наставником. Перед общим code-review.
20:38

Рубрика "Знаете ли вы". Знаете ли вы, откуда взялся логотип Scala? А теперь посмотрите на лестницу в EPFL: deliveryimages.acm.org/10.1145/260000…

21:45

Как Scala-разработчик я должна пиарить Scala, но сейчас сижу и изучаю Go. И вам скажу, что Go весьма неплох, но мне видится чересчур простым

21:56

И некоторые моменты в нем вызывают недоумение. Я уже завела себе файлик, который так и называется "wtf golang". Зря не вела такой для Scala.

22:14

# Среда 22 твита

Мои впечатления от языка Scala после года работы с ним eax.me/scala-one-year/ #fprog #scala #java
8:12
@backendsecret как долго компилится и собирается средний проект и как можно это ускорить (давай - выкладывай секреты :)
8:24

Средний проект (хотя что считать таковым?) собирается у меня на макбуке мавеном за 01:34 минут.

8:29

Можно разбивать проект на модули (сервисы) и собирать каждый по необходимости. Также есть инкрементальная сборка, есть еще проме мавена sbt

8:31

01:34 минут - это сборка с нуля с прогоном юнит-тестов. Так что не скажу, что собирается все очень медленно.

8:33
@backendsecret мне кажется, что для любого языка можно составить такой файлик. Например, вот для ruby и js :)
destroyallsoftware.com/talks/wat
8:36
"Asynchronous Distributed Snapshots for Distributed Dataflows" - Carbone et al. 2015 blog.acolyer.org/?p=1052 #themorningpaper
8:41
Список русскоязычных подкастов на тему информационных технологий github.com/AveVlad/russia…
#DevZen первый в списке :)
8:42
@backendsecret а зачем? Все эти wtf будут просто первым впечатлением с непривычки

Тоже так делаю при разборе нового проекта. twitter.com/borovikov/stat…

8:45

Наверняка вы наслышаны про коллекции в Scala. Это и правда очень гибкий инструмент, с которым действительно удобно и приятно работать.

16:09

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

16:14

Если хотите узнать, чего стоит это удобство в Scala, и вас не испугают байт-код и ассемблер, то этот доклад для вас: youtube.com/watch?v=M7ptT_…

16:19
Знаете как работает инфа в инетиках? Вчера @backendsecret запостил про стендапы, сегодня я предложил завести их на новой работе.

Здесь должен быть дисклеймер про ваш страх и риск. twitter.com/kmmbvnr/status…

19:18

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

21:32
@backendsecret а зачем? Все эти wtf будут просто первым впечатлением с непривычки
21:36

Позвольте не согласиться. Wtf-ки, возникающие при изучении нового языка, библиотеки, инструмента, очень важны.

21:38

Они указывают на сомнительные моменты для стороннего наблюдателя с незашоренным взглядом.

21:40

По сему я считаю, что такие вещи нужно обязательно фиксировать. Это очень ценный фитбек. Вспомните хотя бы "коридорное тестирование".

21:42
@backendsecret быстрое объяснение почему #golang такой learnxinyminutes.com/docs/ru-ru/go-…
21:43

Внимание. Вброс. После почти недели с Go у меня в голове крутится только одно слово: "убогонький". Нет в нем мощи Scala. Продолжаю изучение.

21:50

Полагаю, внимательный читатель заметил каламбур? УбоGoнький там должно быть.

22:01
@backendsecret да ему даже до жавки, особенно восьмой долеко
22:20

# Четверг 13 твитов

@backendsecret очень тяжело пересаживаться со scala+akka на java+spring. Ощущение связанных рук
15:41
@kmmbvnr @backendsecret не осилил sicp, на Scala не пишу, от неоправданно мутабельных переменных передергивает. ЧЯДНТ?

Да это же замечательно! twitter.com/xeningem/statu…

15:42
Последнее время читаю только 4 твиттера — @jsunderhood, @cssunderhood, @iamspacegray и @backendsecret. Отличный формат!

Спасибо! Мы стараемся для вас :) twitter.com/fliptheweb/sta…

15:43
@backendsecret П - популярность.

К слову, доклад про внутренности Scala сделал @public_void_grv. Так что можете ему задавать каверзные вопросы :) twitter.com/public_void_gr…

15:46
@public_void_grv @backendsecret было бы несправедливым не упомянуть то чего Odersky недавно рассказывал youtube.com/watch?v=48js0H…

Да, это тоже весьма интересный доклад про внутренности Scala и jvm twitter.com/ivanenok/statu…

15:48
@backendsecret по поводу избегать - по подробней плз.

Итак, кому же надо избегать Scala. twitter.com/NilzBor/status…

15:58

На мой взгляд, первая причина — это если jvm вам не подходит в принципе.

15:59

Вторая—если в команде уровень инженеров сильно разнится. Каждый будет писать в своем стиле, что приведет к совершенно неподдерживаемому коду

16:02

Либо же люди будут много и часто спорить, что тоже не есть хорошо.

16:04
@backendsecret а бить граблями по рукам за несоблюдение код-стайла уже не модно?
16:08

Здесь даже речь идет не только и не сколько о стиле наименования переменных, отступов и пр. Это скорее об уровне функциональщины в коде.

16:09

Если в языке есть множество способов сделать одно и то же, то такая свобода может сыграть против вас.

16:13
@backendsecret посоветуйте, что почитать про spring, интересует web

Мне в свое время книга Spring in Action очень понравилась. Там был хороший пример с web manning.com/walls4 twitter.com/pl__nk/status/…

18:18

# Пятница 15 твитов

Как решать сложные задачи в программировании:

5:06

В этом репозитории ребята пилят тул для визуализации akka-cluster на D3 github.com/dsugden/cluste…

5:17
<- теперь, когда мне нужно будет объяснить что такое «костыль», я просто покажу это фото pic.twitter.com/Z4ZryUCFGW

Замечательно! twitter.com/ptico/status/6…

6:45
@backendsecret
Klang's Conjecture:
If you cannot solve a problem without programming you cannot solve a problem with programming
7:28

А сейчас минутка "А знаете ли вы". В Scala есть интересный класс AnyRef. Он явлется базовым для всех пользовательских классов.

9:26

На самом деле это всего лишь алиас для java.lang.Object. Но какова причина существования AnyRef, учитывая, что уже есть java.lang.Object?

9:27

Дело в том, что изначально Scala была задизайнена для работы как на Jvm, так и на .NET. Для .NET AnyRef — это алиас для System.Object.

9:28

Если вы всегда хотели заниматься Data Science, но не знаете, с чего начать, у меня для вас есть план развития. pic.twitter.com/j9M1fqEmlB

9:50

Не мое, но жизненно :)

ПМ сказал:
"Опять дедлайны
И куча неотложных дел".
И отпуск мой он на релизе вертел.

16:20

А вы ходили в отпуск этим летом? Я вот нет.

16:22

Гоняю тесты, фикшу тесты.
Для пятницы сойдет вполне.
Ищите наш релиз продукта
На дне.

16:33
@backendsecret а что такое отпуск?

Ну это такое время, когда можно спокойно пилить свои проекты. twitter.com/ivanenok/statu…

16:34
@ivanenok @backendsecret отпуск это такое мифическое время, когда ты не программируешь несколько дней подряд.
16:35

Сегодня вечер пятницы, а значит, пора приниматься за подготовку к выпуску подкаста #55. Создаю интригу: скоро у нас ожидается раздача слонов

17:43

А чем вы обычно заниматесь по вечерам пятницы? Неужели пишете код?!

17:48

# Суббота 5 твитов

— Какой тупая защита на сайтах, «введите имя своего питомца»...
— У меня на это есть случайно нумерованные жабы.
8:33
@backendsecret иногда код иногда бар, а ты чем занимаешься по пятницам, не считая подкаста? :)

Да вы сложные вопросы задаете :) twitter.com/anton_davydov/…

10:31

Уже больше года каждая пятница — это подкаст + подготовка к нему. Есть исключения, когда я в разъездах. Но это крайне редко.

10:34
RT за #fpconf, #opengl и #vulkan! ::: FPConf и Vulkan с гостем @zeuxcg — Episode 0055 devzen.ru/episode-0055/ via @gliush #devzen
14:30
@afiskon @backendsecret @zeuxcg @gliush отличный выпуск
15:53

# Воскресенье 17 твитов

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

10:27

Когда пишешь код на Scala, чувствуешь себя умным, а когда пишешь на Go, ощущаешь себя кодером.

10:27

Это лишь мое впечатление. Возможно, ошибочное. Но как-то не заходит этот язык для меня пока что. Очень жаль, конечно.

10:30
Идея переходящего акка @backendsecret интересная.
10:31
go is a terrible, terrible language, yet still a major productivity boost. Amdahl's law in another context.
13:47
reduce: what you will do with your expectations after you start with Go
13:51
Rust and Scala drown you in complexity. Go drowns you in simplicity.
13:52
You often see languages which are fighting the last war. Go is fighting the War of 1812.
14:07
@backendsecret представь, кем чувствуют себя люди, пишущие на PHP

Боль и унижение? twitter.com/lopinopulos/st…

15:35
@backendsecret чувствуют, что через неделю в школу (простите).
15:36
@backendsecret сам пишу время от времени, ощущение, как будтов чем-то липком вымазался

Давайте еще откровений PHP-разработчиков! twitter.com/lopinopulos/st…

15:56

Ну что, ребята, через час мне перекроют доступ к этому аккаунту. У вас осталось мало времени, чтобы успеть задать мне свои вопросы :)

17:00
@backendsecret зачем программирование? ведь есть другие замечательные профессии

Согласна. Изначально хотела стать ученым-геологом, а потом математиком. twitter.com/rubyunderhood/…

17:05
@backendsecret Как оно?

Превосходно! twitter.com/webholt/status…

17:05
@backendsecret твое мнение по поводу #playframework

Перегруженный, имхо. Я вообще за либы больше. Если нужно быстро сделать что-то типичное, то фреймворк вполне ок. twitter.com/NilzBor/status…

17:09
@backendsecret приходилось использовать в боевых проектах ?

Только для небольшого проекта, который вычитывает из зукипера оффсеты очередей кафки и выводит это в виде таблицы. twitter.com/NilzBor/status…

17:14

За сим прощаюсь. С вами на этой неделе была @SBozhko. Это был замечательный опыт. Спасибо вам за это!

17:57

other