yelbota

3 августа 2016

# Среда 71 твит

Всем привет! С вами запоздалый разработчик бэкенда @yelbota.

11:36

Я работаю чем-то типа CTO в компании DataMonsters. А вообще я люблю #Scala.

11:36

Устраиваю московский митап по Scala. Следующий в конце августа.

11:37

Еще мы недавно начали подкаст про Scala. Об этом отдельно.

11:37

Знаете почему я опаздал? Потому что пароль копипастил задом на перед. Ха-ха.

11:37

Сегодня мы будем говорить... Никогда не догадаетесь. О Scala!

11:40

Знаете, первые программистские деньги я заработал разрабатывая на MUMPS. Это был интересный опыт, если вы понимаете о чем я.

11:44

Потом было очень много AS3/Flex, Java. В 2010 познакомился со Scala, а с 2013 полностью на нее перешел. С тех пор не отпускает.

11:47
@backendsecret расскажи тогда, как вникнуть во внутреннюю кухню Scala? Как научиться видеть, как она работает на уровнях пониже?

Я думаю: что бы я делал с этим кодом на месте компилятора? Если этот вопрос ставит меня в тупик, то переписываю. twitter.com/folex_ru/statu…

11:50

А если серьезно, то я стараюсь думаю на высоком уровне. На низкий спускаюсь, только когда проектирую свои велосипеды или все тормозит.

11:52
@backendsecret ну это скалу, расскажи как это MUMPS на самом деле? Ужас-ужас или для своего домена сойдет?

вот представь что ты пишешь на PHP3 и табуретка горит и ты горишь и ты в аду. twitter.com/borovikov/stat…

11:54

Можете представьте, что любите язык даже тогда когда проект инкрементально компилируется минуту? Так вот это Scala. pic.twitter.com/KYXkSG0mxL

12:07
Господи, на чем только не пишут люди twitter.com/backendsecret/…

На чем только не пишут люди, что бы не писать на хаскеле. twitter.com/rimmer333/stat…

12:10

Есть миф, что на Scala сложно начать писать. В действительности гораздо проще чем на MUMPS, уж поверьте.

12:20

Кайф в том, что можно начать писать "как обычно". То есть как на любом другом языке с си-образным синтаксисом.

12:21

Без всякого функционального программирования и монад.

12:22

Но язык устроен так, что постепенно вы начинаете втягиваться в ФП. Сначала вы перестаете пользоваться var.

12:24

@backendsecret Потом вы откажитесь от мутабельных коллекций.

12:24

@backendsecret Дальше вы познаете магию flatMap и поймете что такое тайпклассы.

12:25

Ваш код станет чистым и понятным.

12:27

И в тот момент, когда вы будете готовы слиться в экстазе с миром чистых абстракций, вы подключите к проекту scalaz.

12:28
@backendsecret как с работой то? Тут и "там"?

В РФ дефицит. Все ищут Scala разработчиков. Это без меры раздувает и без того раздутое эго. twitter.com/dcromster/stat…

12:31
@backendsecret зачем она вообще нужна? Ни рыба, ни мясо + компиляция вечность. Где фишки?! :D

В Scala куча фишек. Кайф в том, что огромное количество вкуснятины реализовано очень маленьким количеством средств. twitter.com/Shiroginne/sta…

12:36

То есть я утверждаю, что Scala простой язык.

12:37

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

12:38
@backendsecret почему если в РФ дефицит, работы для scala-разработчика не найти?

Вакансии на HH по полгода не закрываются. Люди приходят на митапы хантить. Так что я не знаю почему. twitter.com/FancyWriter/st…

12:42
@backendsecret насколько легко на неё перейти, если нет опыта с Java?

Если писать на Scala-как-на-Scala, то легко. Это просто другой язык. twitter.com/dcromster/stat…

12:44

Но если писать на Scala-как-на-улучшеной-Java то лучше наверно выбрать Kotlin.

12:44
@backendsecret и на сколько легко и есть смысл переходить, если есть опыт с Java?)

Scala позволяет мягко переходить от императивной к функциональной парадигме. twitter.com/White_Desay/st…

12:47

То есть очень просто. Чуть непривычный синтаксис. Удобство быстро уносит в дивный новый мир аппликатиных функторов.

12:48
@FancyWriter @backendsecret может просто с этим скала-разработчиком что-то не так?

На пример он компайлер-гай, оверквалифайд и ему надо в команду Одерского, да. twitter.com/ru_ostroumova/…

12:49
@backendsecret хорошо. С чего начать? И вообще Scala для каких задач?

Как всегда с сайта языка scala-lang.org. Однако есть альтернативный, дьявольский путь. twitter.com/dcromster/stat…

12:52
@backendsecret Ну это же временно. Сначала все пишут Scala-как-на-улучшеной-Java. Но потом втягиваются. Не вижу в этом ничего страшного.

Не всегда. Если проект зависит от Java-фреймворков, то втянуться не получится. twitter.com/solverit/statu…

12:57

В обычном Scala слишком много JVM. Java-библиотеки ломают "лестницу". По этому я предлагаю начинать со Scala.js.

13:05

bit.ly/2ax433Y Scala.js лучшная Scala. Ой, кажется кто-то стучит в двель. Пожалуйста помо

13:06
@backendsecret Это очень спорно. Писали проект на "ScalaEE" под JBoss. Вполне себе идеоматичненько получалось.

Вам следует поставить памятник :) twitter.com/solverit/statu…

13:08

Про задачи. Scala хороша, как ни странно, для бэкенда, представляете? Особенно бэкенда-без-состояния.

13:12

Если кто не в курсе большинство бэкендов которые мы пишем держат свое состояние вовне. На пример в СУБД. Это называется без-состояния.

13:14

То есть мы принимаем запрос от пользователя, в процессе обработки собираем нужные данные, выполняем какое-то преобразование и отдаем ответ.

13:17

И если программа не меняет своего состояния, то зачем нам переменные, массивы и все другие изменяемые штуки, что есть в других ЯП?

13:19

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

13:22

По этому Scala плавно будет вас подводить к такому стилю разработки. Со временем вы перестанете понимать почему раньше писали по-другому.

13:23
@backendsecret Так, стоп, а от массивов-то как (и зачем) отказаться, если данные на входе или на выходе пайплайна будут массивом, например?

Массив - не единственный способ хранения последовательностей. twitter.com/webholt/status…

13:25
@backendsecret чистые функции с обращениями к бд, окда

Нет, обращение к БД это не чистая функция. Это будет функция с побочным эффектом. Об этом отдельно. twitter.com/Arhelmus/statu…

13:26
На фоне нового @backendsecret придумал новый вид извращения, архитектура на основе чистых микросервисов, такие себе сервисы стесняши
13:37

Тем, кто хочет глубже погрузиться в мир функционального программирования на Scala можно рекомендовать книгу bit.ly/2aI1P0N

13:38
@backendsecret Clojure

Божественные лиспы вне конкуренции. Но на лиспах нельзя писать прод, потому что это священные языки. twitter.com/palpatinen/sta…

13:44
. @backendsecret посмотрел вакансии. Scala везде идёт в связке с Java. ЗП хорошая, но очень редко показана.

Еще надо понимать, что у Scala слава языка для "больших данных". По этому часто в вакансиях Scala указан Spark. twitter.com/dcromster/stat…

13:46

Для тех, кто живет энергией и угорели по изменению состояния, есть Akka akka.io. Это реализация модели акторов на Scala.

13:49

Если на пальцах, то актор это процесс. У него есть память, он умеет принимать сообщения и отправлять сообщения другим акторам.

13:51

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

13:54
@backendsecret для приверженцев корпорации зла есть AKKA .net
13:54

Но и на одной машине можно запустить миллионы акторов.

13:58
@backendsecret мне всегда было интересно, а почему не хаскель, только из-за jvm?

Для меня:
1) Пологая кривая обучения.
2) Меньше сахара и легче писать "грязный код".
3) Отличная поддержка IDE. twitter.com/raxpost/status…

15:03
@backendsecret а скажи еще, правильно я понимаю что весь io в скале идет только через java либы или их обертки?

Много разных оберток. twitter.com/raxpost/status…

15:04
@backendsecret в чем все-таки отличие это обычного процесса?

"Физически" это объект у со списоком входящих сообщений, которые последовательно обрабатываются в тред-пуле. twitter.com/raxpost/status…

17:06

Кстати, можно поиграться со Scala прямо в браузере scala-js-fiddle.com

17:34

В качестве примера там не слишком понятный код, но все таки, согласитесь, что круто?

17:39

Расскажу историю про MUMPS. Изначально система работала так:

18:07

Есть отделение банка, там стоит компьютер и терминалы для операцинисток.

18:07

Терминалы работают как терминалы. Окошки в текстовом режиме.

18:07

Но был CLI режим. Командная строка для продвинутых операционисток.

18:08

В конце дня журнал транзакций пакуется в ARJ.

18:08

Компьютер дозванивается до центрального офиса и происходит обмен журналами.

18:08

Не спрашивайте в каком году это писалось. Я не знаю.

18:09

10 лет назад мы на этой системе делали киоск для приема комунальных платежей.

18:09

Все это "отделение банка" засовывалось в термирал как для оплаты телефона. Красочный клиент на Delphi ходил на этот CLI и делал проводки.

18:10

Вечером киоск дозванивался по GPRS до интернета и обменивался журналами с центральным сервером. Хайтэк.

18:11
Far be it from me to draw any premature conclusion about this... pic.twitter.com/z3zRD3VTbs
18:57
@backendsecret дык у нас доси крутится в основе бизнеса тулза писанная в 85-м, пашет так-же только обмен данными допилили постоянный :p
20:58
@backendsecret проблема таких систем в том, что разрабы нифига не хотят модернизировать ибо полностью переписать систему нужно и стрегут уе

Для переписывания нужна экономическая целесообразность. В моем случае новую систему начали делать на технологии 80х. twitter.com/POS_troi/statu…

21:07

# Пятница 101 твит

Всем привет. Давайте сегодня поговорим про велосипедостроение. Плюсы, минусы, подводные камни.

12:31

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

12:33

Это хорошо и правильно. Но почему я должен использовать говно, если оно уже написано?

12:34

Большая часть софта это жуткое bloatware. Это же относится к популярным библиотекам и фреймворкам.

12:36

Ценой использования готовых решений будет стоимость изучения, внедрения и интеграции с другими готовыми решениями.

12:38

Кроме этого многие инструменты имеют перекрывающую друг друга функциональность и разную идеоматику.

12:40

Самое страшное начинается, когда мы сами делаем какой-то инструмент. В этом случае мы транзитивно передаем зависимости нашим пользователям.

12:42

С другой стороны мы можем писать велосипеды, которые лишены перечисленных проблем. Но у них есть другие проблемы:

12:43

1) Их нужно писать. Для каждого велосипеда можно легко подсчитать стоимость разработки умножив ЗП программиста на трудозатраты.

12:45

2) Чем больше функциональности, тем дороже. В готовые инструменты вложены человекодесятилетия труда.

12:46

3) Не работает с первого раза. Первая версия велосипеда будет сырой. Это верно так же, как для любого другого ПО.

12:48

Таким образом у нас получается сложный компромис. Каким образом решить: писать свое, или использовать чужое? Попробую изложить свой рецепт.

12:50

Итак, если инструмент решает задачу, не имеет зависимостей и не является системообразующим, то его можно брать, каким бы плохим бы он не был

12:52
@backendsecret имхо обе стратегии имеют право на жизнь, гораздо важнее придерживаться одной стратегии

Хе. Получается, мы должны либо обмазаться JavaEE, либо как @5HT написать весь стэк с нуля? twitter.com/borovikov/stat…

12:56

Если инструмент решает локальную задачу, но претендует на то что бы быть в основе, смело выкидываем и пишем вело.

12:58
@backendsecret хули там писать, 5К строк всего :-)

Думаю 5К строк 5К строкам рознь. twitter.com/5HT/status/761…

13:01

С другой стороны, не надо писать системообразующие велосипеды, если только ваша команда не обладает топовой экспертизой в этой области.

13:03

Мой путь: берем мэйнстимовое системообразющее решение (на пример Scala+Akka), дополняем качественными утилитами, все остальное пишем сами.

13:06
@backendsecret вот давай на примере SSO рассмотрим, OpenAM может и ужасен, но как потом своё велосипед заставить логиниться в AWS?

Не надо писать системообразующие вещи, если ты не эксперт в области. Думаю эксперт напишет плагин для вело за 5 мин. twitter.com/borovikov/stat…

13:09
@backendsecret Как-то вообще странно так вот абстрактно говрить о такой теме.

Можно и нужно. У инструментов есть общие свойства. Но вопрос выбора, это почему-то всегда тыкание в авторитеты. twitter.com/solverit/statu…

13:13

  • Что будем юзать для нашего сервиса регистрации упячек?
  • Ну не знаю, Akka, Cassandra, Jackson. Этим же все пользуются, так ведь?
  • 13:16
    @backendsecret мы вот уже трижды переписали свою собственную message/task queue. В итоге все равно уходим на rabbitMQ — внедрение дешевле.

    То же хороший случай провала с системообразующим велосипедом. twitter.com/YuriyBogomolov…

    13:18
    @backendsecret Я к тому, что это всегда по ситуации конкретного проекта решается. Нет универсального решения для всего.

    Очевидно да. Именно по этому мне хотелось бы иметь методологию оценки и выбора инструментов. twitter.com/solverit/statu…

    13:20
    @backendsecret ну да, на джаве только соснуть хуйцов можна, я ж тоже как и вы ебался в жопу когда-то 5 лет на JVM и 10 на CLR

    ИМХО дело не в платформе. Если знать что делать, то минималистичный стэк можно возвести на чем душа пожелает. twitter.com/5HT/status/761…

    13:22

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

    13:26

    На пример в мире Scala все пихают Akka куда можно и куда нельзя. Зачем использовать Akka, если у вас нет стэйта?

    13:28
    @backendsecret Вот на этом момент неплохо бы рассказать. Хорошие и плохие юзкейсы для Akka. И почему Akka без стейта это плохо.

    Для вычислений без явного состояния есть Future/Task и какое-нибудь FRP в запущенных случаях. twitter.com/solverit/statu…

    13:41

    Аkka нужна когда у нас есть долгоживущие объекты со стэйтом. Какие-нибудь игроки или комнаты к примеру.

    13:42
    @backendsecret а вы кстати какого типа приложения на скале пишете?

    Разные проекты для разных клиентов. Иногда тупой CRUD, иногда всякое дикое машинное обучение. twitter.com/raxpost/status…

    13:47
    @backendsecret Каким образом Future/Task поможет сделать IO или кластер на худой конец?

    Зачем нужен прям вот кластер, если нет явного стэйта? Мб достаточно балансировщика на входе? Про IO не понял вопроса twitter.com/solverit/statu…

    13:52

    Вот, к примеру, мы делали мессенджер. Там скачала стэйт жил в Akka-акторах. Со временем стейт переехал в БД и Akka стала только мешать.

    13:54

    Я имею в виду, что без стейта не будет кластера. Будут просто _независимые_ вычислительные единицы.

    13:57

    Пойду поработаю. Вечером под пиво обсудим опенсорс и социализацию. А пока опрос. Комитите в открытые проекты?

    14:05
    @backendsecret кстати а банки тут причем? Банковским программёрам запрещено коммитить в опенсорс?)

    Серьезные ребята не занимаются этими студенческими поделками. Мир серьезных продуктов в которых все и так работает. twitter.com/POS_troi/statu…

    14:30
    @backendsecret Линуксовое ядро - студенческая поделка?)))

    Естественно. Убогая, глючная поделка. Не то что Windows NT. В пост призывается Программист за 30 @oldprog30 twitter.com/saymons21_root…

    14:42

    Вы исходники видели? Там же кошмар! Не то что у Windows.

    14:45
    @backendsecret нет, но очень хочу. Раз 6 формировал pull request’ы, но в процессе их появления решал проблему без кода и отменял их.
    16:37
    @backendsecret @saymons21_root да, это так. Линукс потому и ставят в некритических местах, а не на рабочих станциях.
    18:34

    Почему говорим про опенсорс в пятницу вечером? Потому что тем кому не интересна тема сейчас заняты, не правда ли? Остальные расчехлили гит.

    18:38
    @backendsecret странно построенное умозаключение. мне интересна, но я тоже занята )

    Пришло время выбирать на чьей ты стороне! bit.ly/2b8kX7h twitter.com/katyabutenko/s…

    18:44

    Лично я комичу почти исключительно в свои проекты. Очень редко куда-нибудь еще. Из крупных проектов был маленький PR в Scala.js.

    18:46

    Когда-то относительно давно активно участвовал во Flexmojos. Это была такая мавен-инфраструктура для Adobe Flex.

    18:47

    Не могу не воспользоваться случаем попиарить свою любу для JSON в Scala github.com/fomkin/pushka

    18:48

    И свой HTTP-сервер для API github.com/fomkin/vodka Юзать его нельзя, но присоединиться к разработке можно. Это для тех кто хочет в Scala.

    18:50

    Три стадии опьянения:
    1) Забранчил, пофиксил, забыл запушить
    2) Пофиксил, запушил, забыл забранчить.
    3) Забранчил, запушил, забыл пофиксить.

    18:53
    @backendsecret забранчил пофиксил, забыл покушать

    На ночь есть вредно. twitter.com/raxpost/status…

    18:56

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

    18:59
    @oldprog30 @backendsecret Некретичные места. Ок. Ничего что у гугла, яндекса, и прочих таких сервисов 24x7x365 инфраструктура на нём?

    И - ирония. twitter.com/saymons21_root…

    19:02

    Лучший способ оценить программиста - посмотреть как он работает в репе. Сам код, подписи к комитам, наличие README, как сборка сделана.

    19:04

    Вообще я считаю, что пустой гитхаб в 2016 году это звоночек. Либо перед нами "программист старой закалки" либо с ним что-то не так.

    19:09

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

    19:10
    @backendsecret или у него битбакет

    Это не принципиально. Я кстати очень любил меркуриал раньше. Клевая система контроля версий была. Жаль что загнулась twitter.com/Alex_MIPT/stat…

    19:23
    @backendsecret а это не про контроль версий. вообще: почему современный программист должен контрибутить в опенсорс?

    Потому что у него скорее всего возникают проблемы с открытыми библиотеками, и он пытается их решить. Не костылями. twitter.com/Alex_MIPT/stat…

    19:26

    Потому что он нашел ошибку в документации. Потому что у него появилась хорошая идея и он решил сделать PoC.

    19:27

    Я мечтаю что бы компания, где я работаю, производила много хорошего опенсорса. Пока это не так. Привет @data_monsters

    19:38

    На открытие проектов требуются дополнительные ресурсы, которые сложно выделить. И бизнес не всегда согласен. Так что увы и ах.

    19:40

    В будущем проприетарного кода не будет. Программы будут доступны под свободными лицензиями. Дело Столлмана живет! pic.twitter.com/9vNqyeveqt

    19:42

    После трудовой недели могу себе позволить немного крепкого! pic.twitter.com/PmcnUEMezh

    19:47
    @backendsecret Hi! We support the intent of our developers to contribute in open source projects and dream about publishing our own things

    Of course you are. No doubt. twitter.com/data_monsters/…

    19:52
    @backendsecret да, как с музыкой. Раньше за все драли бабки, а сейчас мейнтейнеры по ночам бесплатно пилят и умоляют поюзать их либу

    Потому что чем больше внедрений, тем больше вероятность что купят поддержку. twitter.com/raxpost/status…

    19:53
    @backendsecret потому что у него излишек свободного времени?

    Фиксы можно делать в рабочее. Норм. компании это не запрещают. Остальное - это время на саморазвитие. Оно же есть? twitter.com/Uznick/status/…

    19:56
    @backendsecret фиксы у себя и фикс в oss разные вещи: билд,тесты,документация

    А что это за фикс такой без описания и тестов? Или у себя это все не надо делать? Типа пофиксил и лей на прод? twitter.com/2j2e/status/76…

    20:12

    Кстати тема с гитхабом должна работать в обе стороны. У компании должны быть открытые проекты, а не их видимость (я знаю вы читаете меня).

    20:12

    Я понимаю, что делать PR в большой проект это не просто. Но даже если патч не принят, активность обычно видна.

    20:15

    В последнее время письма от западных рекрутеров начинаются так: "Мы изучили ваш гитхаб, и нам интересен ваш опыт".

    20:23
    @backendsecret да, так в гугол зовут
    20:27
    @backendsecret все велосипеды изобретены, больше нечего писать. Теперь только читателем быть модно.

    С текущим уровнем выразительности языков до этого состояния нам очень далеко. twitter.com/bipulsecloud/s…

    20:30

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

    20:32
    @backendsecret - Каким вы видите свой гитхаб через 5 лет?
    20:33
    Либо занимается коммерческими проектами, зарабатывая бабки, а не удовлетворяет нужды халявщиков за бесплатно twitter.com/backendsecret/…

    И собирается пойти в менеджеры "после тридцати". То же путь. Но мимо меня. twitter.com/buddhaengineer…

    20:34

    Тогда мы не будем тратить время на перевод с компьютерного языка на человеческий и обратно. Не будем писать бойлерплэйт.

    20:37

    А пока 90% нашей работы это машинерия. Обертки вокруг алгоритмов, которые тоже по 100 раз надо переписывать, потому что платформозависимость

    20:38
    @backendsecret это не связано, но одно скажу точно: программист, не зарабатывающий деньги для компании, не нужен ни в 30, ни в 20 лет.
    20:40
    @raxpost @backendsecret @saymons21_root сервер можно перезагрузить и никто не заметит, а рабочую станцию нельзя :-)
    20:55
    @backendsecret орали "я не последний человек в опенсорсе, сделал свои задачи, делаю что хочу", вместо улучшений в рабочем коде.

    Ну это вопиющий случай. twitter.com/strangeqargo/s…

    20:59
    @backendsecret ну т.е. все-таки не следует сразу минус ставить за "нет коммитов на гитхабе" (у меня есть, если что)

    Суть в публичной активности. Гитхаб проще всего. Не верю в ребят которые пишут только проприетарный коммерческий код twitter.com/strangeqargo/s…

    21:06

    Ребята, я знал, что бомбанет. Спокойно, гитхаб не универсальный критерий. Собеседование не заканчивается его предъявлением.

    21:15

    Существуют сильные разработчики без опенсорс-активности. В последнее время их становится меньше.

    21:15

    Работа должна быть видна. Дизайнер показывает картинку, ученый статью в журнале, программист показывает код.

    21:17

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

    21:18
    @backendsecret для таких случаев обычно просят показать какой-то кусок готовой работы, зачем тут опенсорс вообще

    И ты такой пойдешь и будешь показывать третьим лицам коммерческий код? Серьезно? twitter.com/b3ard0m/status…

    21:19
    @backendsecret код без контекста, согласованный с прошлым заказчиком, большой ценности не имеет

    Во первых тогда он его просмотра нет толку. Не интересно как скобочки и отступы расставлены. twitter.com/b3ard0m/status…

    21:21

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

    21:24
    @backendsecret а как помогут понять уровннь регулярные, допустим, но маленькие коммиты в какую-нибудь библиотеку?

    Значимость изменений, уровень дискуссии, ход принятия PR (комментарии). Ты просто смотришь как человек работает. twitter.com/b3ard0m/status…

    21:26

    Делать опенсорс - это инвестировать в свое будущее. Точно так же как читать умные книжки и проходить курсы.

    21:32

    На этом и закончим. А то уже очепятки делать начинаю. Завтра поговорим про роль образования и что нужно уметь программисту в 2016 году.

    21:37

    На последок вброшу свой прошлогодний пост bit.ly/2aAJyTn

    21:53

    Кстати с минуту на минуту будет трансляция моего любимого #DevZen devzen.ru/live/ Общение в гитлере gitter.im/DevZenRu/live

    22:34
    @backendsecret а почему бы не обучение ожидаемому поведению?

    Это далеко не всегда эффективно. Слушал доклад недавно. Сейчас расскажу в реплаях. twitter.com/xferra/status/…

    22:37
    Начало записи #devzen задерживается минут на 10, так что вы еще можете успеть к самому началу! devzen.ru/live/
    22:37

    На пример есть задача: нужно распознать американский футбол или европейский. Можно бешено учить нейросеть, а можно посмотреть локацию IP.

    22:40

    Если с US айпишника загружена картинка, то американский, в противном случае европейский. Докладчик утверждает что точность большая.

    22:41

    Такой вот feature engineering.

    22:42

    А есть и просто чисто формальные системы.

    22:42
    @backendsecret на анализ этого нужно время и он учитывает только один фактор: IP. Датамайнинг поумнее будет.

    Если тупое решение дает меньшее количество ошибок, чем умное, то надо юзать тупое. twitter.com/xferra/status/…

    22:50

    Я не специалист по ML, но по моему это очевидно. Поправьте если не прав.

    22:51
    @backendsecret а был адекватный анализ почему ошибок меньше/больше? И что быстрее - обучить или самому придти к выводу 'вычисляем по ip' ?

    Цифры какие-то были. Суть в том, что оказалось, что IP это отличная фича. Там еще был пример про хаски и волка. twitter.com/xferra/status/…

    23:25

    Что на фотографиях с хаски всегда снег.

    23:26

    Доклад про футбол (десятая минута). youtube.com/watch?v=d8sEmG…

    23:58

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

    Ну что, за образование? В смысле начнем беседу. У меня, на пример, оно полное среднее. После школы отправился чинить компы и сети тянуть.

    9:17

    Можно было попробовать поступить в орловский политех, но я решил что слишком тупой. Родители не настаивали.

    9:19

    Если вернуться назад, я бы всеми силами старался поступить на Физтех или в Бауманку. Мне образования очень не хватает.

    9:23

    При этом я долгое время считал, что правильно поступил, что люди зря тратят время в ВУЗах.

    9:25

    Потом стало не хватать математики. Потом грамотного английского. На форумах по починке принтеров много не выучишь, знаете ли.

    9:27

    Я ощущаю превосходство образованных людей в некоторых дисциплинах. Приятно работать с теми кто знает больше.

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

    Не сказал бы что физтехов плохой английский. На сколько я понял там просто без хорошего англ. нельзя закончить. twitter.com/oleg_antonyan/…

    9:38
    @backendsecret сослагательное наклонение — самая бессмысленная штука. что мешает подтягивать то, чего не хватает, сейчас?

    Сложно получать какие-то знания, когда много лет учился без них обходиться. twitter.com/alexfedoseev/s…

    9:41

    Тем не менее программировать без образования можно. Причина: у нас кустарное ремесло. Информатика далека от решения реальных задач.

    9:47

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

    9:49

    Буквально нет никакого моста между академической информатикой и промышленных программированием.

    9:56
    @backendsecret Иногда алгоритмами и паттернами можно заменить целую команду кодеров. Стэйт-машина в сложном биллинге избавит от лапшекода

    Знать не достаточно. Нужно уметь разглядеть стейт-машину. Этому не учат, как я выяснил. twitter.com/strangeqargo/s…

    9:58

    Промышленное программирование существует параллельно. Знаменитые паттерны (вообще антинаучная кустарная хрень), "знания фреймворков".

    10:01

    Теперь микросоервисам и правильному сервис дискавери еще учат.

    10:02

    И для программиста это начинает составлять основу знаний. Получается есть одна кучка с паттернами и этим всем. Это он применяет ежедневно.

    10:04

    И есть вторая кучка с "алгоритмами и структурами данных". Он не забывает их исключительно ради собеседований.

    10:05

    Почему мне нравится функциональщина? Потому что она основана на науке. Вместо грубых "паттернов" там есть теория категорий.

    10:07

    ФП дисциплинирует. Что бы быть хорошим в ФП нужно уметь видеть закономерности.

    10:13

    Без образования тяжело в ФП. Теория категорий не базовая дисциплина. Все материалы подразумевают что ты заботал и хорошо помнишь математику.

    10:19

    И ты начинаешь ботать. Но выясняется что у любой дисциплины есть такой же контекст. Получается что математику надо учить с детства.

    10:26

    Мне в седьмом классе на вопросы "почему у квадратного уравнения два корня? и вообще что значит два корня?" училка сказала, что я тупой.

    10:26

    С тех пор я знаю математику так. Мне понятно что такое группа, полугруппа, моноид и функтор. Но не понятно что такое линейное пространство.

    10:28

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

    10:30

    В будущем без образования программировать не получится. ФП заменит то что есть сейчас, как станок с ЧПУ заменил кустарное производство.

    10:41
    Это очень смешно, учитывая, что разработка только упрощается и удешевляется и иначе быть не может. twitter.com/backendsecret/…

    Окей. Моя аналогия не очень. Давай попробую с другой стороны. twitter.com/buddhaengineer…

    10:49

    Она упрощается потому что умные ребята ее упрощают и удешевляют. Со временем "операторы станков" и станут не нужны.

    10:49
    @backendsecret даже ФП не требует особо ничего изобретать и доказывать теоремы. Это всего лишь средство.

    Да. Наука сама по себе инструмент. Но ты же не станешь строить космический корабль используя классическую механику? twitter.com/buddhaengineer…

    10:55
    @backendsecret неэффективно = экономически нецелесообразно.

    Неэффективно сажать хаскелиста фигачить говнобложики по шаблону. Так же как сажать ученого ремонтировать жигули. twitter.com/buddhaengineer…

    11:00

    Некоторые сомневаются, что кодирующие обезьянки станут не нужны. Помните такую профессию "эникейщик"?

    11:02

    Это такой мальчик, который виндовс умел переустанавливать и Ctrl+Alt+Del, "загрузить в безопасном режиме".

    11:03

    Их нет. Так же как вымирают "админы на сетке". Так же вымрут специалисты по вордпрессу или какому-нибудь BPM-движку.

    11:05
    Только что осознал, что кто-то всерьез имеет профессию "спец по вордпрессу". Это как в спец по клизме, примерно. twitter.com/backendsecret/…

    Мне один товарищ на серьезных щщах объяснял что знание yii круче знания вордпреса, потому что универсальное. twitter.com/0xfe0d/status/…

    11:12

    Никогда больше не буду пытать сделать заказную разработку в России. Никогда.

    11:13

    Такие дела, котятки. Надо получать образование и развивать его. Или вас заменит какой-нибудь клауд сервис написаный парой умных дядек.

    11:19
    @mikhail_aksenov Требовать большего интеллекта надо от компьютера, а не от человека, иначе какое же это будущее @backendsecret

    Нельзя управлять тем что умнее тебя. Средний уровень образования рос вместе с индустриальным прогрессом. twitter.com/meowthsli/stat…

    11:32
    @backendsecret в почтовом ящике постоянно реклама компьютерных мастеров. Никуда они не делись.

    А еще есть сапожники, портные. Это не значит что кустарное производство живет. twitter.com/artempugachev/…

    11:50

    Важный вопрос. Чем вы руководствуетесь?

    12:03
    @backendsecret я имею ввиду, что сложно таким как мы попасть в такую интересную компанию людей. У нас -комплексы, у них - стереотипы

    По моим наблюдениям, чем выше индекс Хирша, тем меньше снобизма :) twitter.com/__fro/status/7…

    12:16

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

    12:17

    Три столпа ООП: костылирование, инкостыляция и поликостылизм.

    12:29
    в ООП для достижения успеха закономерностей видеть не нужно, и оно не дисциплинирует. Шах и мат! twitter.com/backendsecret/…

    Что бы проверить дисциплинирующую силу ООП? посадите любителя SpringMVC за Akka/Erlang и посмотрите что он напишет. twitter.com/_komaz/status/…

    12:36

    Иногда я жалею что вырос воспитанным человеком.

    12:46

    Чем вы занимаетесь, когда не работаете или учитесь? Я воспитываю сына, читаю худ. литературу, играю на PS4, катаюсь на велике.

    13:18

    Из худ. литературы в последнее время очень нравится Нил Стивенсон. Особенно хорош Алмазный Век.

    13:19

    Из игр меня очень впечатлила Child of Light. Такая европейская JRPG для девочек допубертатного возраста. Невероятно крутая.

    13:22
    @backendsecret уже несколько человек порекомендовали эту книгу :) Недавно прочел Snowcrash его, очень понравилась

    Да, "Алмазный Век" это косвенное продолжение. twitter.com/filipovskii/st…

    13:23
    @backendsecret делаю подкаст @podcastcode, копаюсь в математике музыки, бегаю, читаю
    13:23

    Саундтрэк к Child of Light шикарный youtube.com/watch?v=93h-8M…

    13:30
    @backendsecret сплю. в чём-нибудь новом ковыряюсь (но всё реже и реже :(
    13:30

    И крутого еще To The Moon. В нее прям на ноуте можно играть. Там меньше про игру, больше про историю.

    13:32

    Есть интересная тема. Но прежде маленкий опрос. Тормозит? http://185.143.172.173:9190 (новые тудушки под скорлом)

    13:54

    Окей. 10 голосов. У 2 тормозит, у 8 нет. Будем считать результат достаточным.

    14:21

    "При чем же здесь бэкенд?" - спросите вы. Отвечаю. Эта программа работает полностью на сервере. На клиенте пару строчек служебного кода.

    14:22

    Вот так примерно выглядит код gist.github.com/fomkin/2d20996…

    14:23

    Схема такая. Сервер отправляет на клиент команды па манипуляцию с DOM, клиент присылает события от пользователя.

    14:25

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

    14:26

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

    14:27

    Мы получаем бесшовную разработку "все в одном месте". Пользователь экономит батарею и процессор, потому что на клиенте ничего не выполняется

    14:30
    @backendsecret и не дай бог юзер зайдёт в метро :)

    Да, это не будет работать в оффлайне. Страничка повиснет до лучших времен. Но это можно обратаывать и сообщать юзеру twitter.com/filipovskii/st…

    14:31
    @backendsecret ,а в большом, сложном приложении не будет ли это слишком большой нагрузкой на бекенд?

    Сложно сказать. Это "большое приложение" с точки зрения вычислений и памяти. ~4000 DOM-элементов. twitter.com/Anvar_Kr/statu…

    14:33

    Это PoC, по этому никаких оптимизаций не делалось. Крутится на серваке с 512 МБ.

    14:34
    .@backendsecret мне нужно познать твой опыт самообразования. Хочется сравнить со своим. Где, что, как? Вот такой вот общий вопрос.

    Мне кажется у всех самоучек это индивидуально. На пример ФП я изучал методом пристального всматривания. twitter.com/__fro/status/7…

    14:37
    @backendsecret вдруг соединение стало супер медленным— Билет Шрёдингера.

    Это решается расширением протокола. Если есть требование - включай подтверждение получения пакета. twitter.com/filipovskii/st…

    14:38
    @backendsecret с упором в практику

    У @moscoding интенсивы с упором на практику. twitter.com/__fro/status/7…

    14:40
    @backendsecret мой поинт — батарейка и вычислитеьтные возможности девайсов растут быстрее чем растет скорость интернета (в среднем по миру)

    Особенно в телефонах за 50 долларов :) twitter.com/filipovskii/st…

    14:46
    @backendsecret @meowthsli @mikhail_aksenov какие-то штампы) почему нельзя управлять тем "что умнее тебя"?) Что значит "умнее"?

    ru.wikipedia.org/wiki/Эзоп twitter.com/rainrb/status/…

    14:47
    @filipovskii @backendsecret JetBrains YouTrack так сделан

    В смысле там настоящий тонкий клиент? twitter.com/gritzko/status…

    14:53

    Теперь о коде. Кто понимает что здесь написано bit.ly/2aWm0JG?

    14:57
    @backendsecret Сегодня (вчера?) узнал про cameyo.com, кстати. Идея вообще фееричная — по RDP в браузере рисуются Win-приложения

    Прикольно. Еще давно как-то видел GTK в вэбе. twitter.com/iamale_ru/stat…

    14:59

    Фронтэндеры должны были узнать Redux/React с поправкой на Scala.

    15:01
    @backendsecret я Java разработчик. Но все понял, Доктор, это плохо?
    15:06
    @backendsecret О, под Emscripten кстати были демки с GUI ещё. Даже игры запускают (OpenTTD, например: epicport.com/ru/ttd)
    15:06
    @backendsecret та ну, научность появляется когда что-то применяется обосновано. неважно что, ООП или монады

    Научность появляется там, где нет веры. ООП тема очень размытая и религиозная. twitter.com/borovikov/stat…

    15:15
    Теперь о коде. Кто понимает что здесь написано bit.ly/2aWm0JG?

    Вы лучшие! Не ожидал таких результатов :) twitter.com/backendsecret/…

    15:18
    @backendsecret дык о том и речь, что ФП просто ещё одна религия. каких-то достоверных исследований на тему полезности ни ООП ни ФП нет.

    Сам термин "полезность" нуждается в уточнении. Совсем другое дело "предсказуемость". twitter.com/borovikov/stat…

    15:19
    }
    }
    )
    )
    )
    }
    }
    )
    cyka blyat twitter.com/backendsecret/…

    ИМХО лучше чем

      </div>  
    </div>  
    

    </div> twitter.com/vkozulya/statu…

    15:20
    @backendsecret Вот поэтому люблю indentation-based языки (хотя Jade вот не люблю, он какой-то неправильный)

    К сожалению в Scala нельзя сделать такие eDSL. Но я видел расишние для компилятора, которая делает такой саму Scala twitter.com/iamale_ru/stat…

    15:36

    А вот и он github.com/lihaoyi/Scalite К сожалению заброжен :(

    15:43
    @backendsecret не всё. но у нас ситуация где не измеряется вообще ничего. никто не будет делать один и тот же проект 20 разными способами

    Вот смотри. Тебе надо построить лодку. Ты можешь пойти к деду-лодочнику и поучиться мастерству. twitter.com/borovikov/stat…

    15:57

    А можешь пойти и почитать книжку по судостроению. Спроектировать в CADe детали, взять станок и запилить их. Потом собрать лодку.

    15:59

    А теперь представь что это происходит в XVII веке. Все обычно выбирают первый путь. Второй путь пока не понятен.

    16:00
    @backendsecret О, а могу попиариться? Набросал как-то вечером github.com/iamale/twt. Подходит для любых языков с {}
    16:01

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

    16:04

    И кустари такие говорят: "Ну и чо?". Ни кто же не понимает, что вторым способом можно построить авианосец @borovikov

    16:05
    @backendsecret так они и писались со scala, в доке по redux это где-то официально упоминается.

    Не слышал о таком. Призывается @dan_abramov twitter.com/PliskoVS/statu…

    16:07
    @backendsecret пока это выглядит так, что мне рекомендуют сделать лодку в виде сферы, так как у неё наименьшая площадь при заданном объёме
    16:08

    Продолжая про толстый-сервер-на-скале. Будем звать его Королев. Я устал писать REST (хотя я его обычно не пишу), а вы?

    16:15

    Есть всякие GraphQL и прочее, но в конечном итоге все сводится к построению AP системы, а это сложно (призывается @gritzko) @filipovskii

    16:22
    @backendsecret @filipovskii ага, первые 10 лет точно
    16:24

    Так что радикальное предложение: пускай все будет на серваке.

    16:25

    Скорость разработки драматически вырастет. Надежность тоже, ведь система становится проще.

    16:27

    Бизнес выиграет. Кроме того мы пополним ряды бэкендеров грамотными фронэндерами, а код-манкиз спишем в утиль.

    16:28
    @backendsecret если серверов много, то снова AP, ха-ха

    Если мы не обслуживаем одного клиента двумя серверами, то все ок. twitter.com/gritzko/status…

    16:29
    @backendsecret 😃 радикальное предложение в ответ — не писать сервера самим, всё равно они делают одно и то же m.youtube.com/watch?v=XRWZqq…
    16:30

    Тоже хорошая тема. Пишем толстенный клиент, прямой коннект к базе, роли, хранимочки. Как в 90е. Tasty! @filipovskii

    16:32

    Для смартфорна придется городить API конечно @iamale_ru

    16:33
    @backendsecret если возводить в абсолют, всё кажется абсурдом. Сервер можно обобщить, пример: firebase, usergrid, GQL as a service любой

    Мне не очень понятно как будет происходить управление общими и приватными данными. Можешь рассказать коротко? twitter.com/filipovskii/st…

    16:42

    Мы не путаем термины "клиент" и "пользовательский интерфэйс"? @filipovskii

    16:44

    То есть BaaS для самых простых случаев? @filipovskii

    16:57

    Да без разницы @chikiro_twi

    17:37
    Я давно уже на C пишу функции, так что с ФП знаком не по наслышке twitter.com/backendsecret/…
    18:32
    Выложили первый выпуск #Scalalaz #podcast soundcloud.com/aleksey-fomkin…
    21:01

    Availability + Partition Tolerance @Uznick

    22:28

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

    @backendsecret Не, не было такого. Redux отчасти инспирирован Elm Architecture. React изначально был сделан на SML вроде бы.
    10:29

    Всем доброе утро (или что у вас там). Сегодня у меня уже не получится с вами пообщаться. Надеюсь было интересно :)

    10:42

    С вами был @yelbota P.S Подписывайтесь на комиксы про DataWorld @data_monsters

    10:43

    bit.ly

    other