SBozhko

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

# Понедельник 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…

20:25

Ну и конечно же рекомендую курс 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…

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

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

21:14

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

21:18

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

21:28
@backendsecret удачи.. - сказал мне мой предшественник и ушел оставив наедине с полугодовалым легаси 😃 #adventureTime
21: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 #java
11:12
@backendsecret как долго компилится и собирается средний проект и как можно это ускорить (давай - выкладывай секреты :)
11:24

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

11:29

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

11:31

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

11:33
@backendsecret мне кажется, что для любого языка можно составить такой файлик. Например, вот для ruby и js :)
destroyallsoftware.com/talks/wat
11:36
"Asynchronous Distributed Snapshots for Distributed Dataflows" - Carbone et al. 2015 blog.acolyer.org/?p=1052 #themorningpaper
11:41
Список русскоязычных подкастов на тему информационных технологий github.com/AveVlad/russia…
#DevZen первый в списке :)
11:42
@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
@backendsecret
Klang's Conjecture:
If you cannot solve a problem without programming you cannot solve a problem with programming
10:28

А сейчас минутка "А знаете ли вы". В 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:20

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

19:22

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

19:33
@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:34
RT за #fpconf, #opengl и #vulkan! ::: FPConf и Vulkan с гостем @zeuxcg — Episode 0055 devzen.ru/episode-0055/ via @gliush #devzen
17: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 Go
16: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 Как оно?

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

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

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

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

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

20:14

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

20:57

other