# Среда 71 твит
Устраиваю московский митап по 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
Господи, на чем только не пишут люди 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:05bit.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 .net13:54
Но и на одной машине можно запустить миллионы акторов.
13:58@backendsecret мне всегда было интересно, а почему не хаскель, только из-за jvm?
Для меня:
1) Пологая кривая обучения.
2) Меньше сахара и легче писать "грязный код".
3) Отличная поддержка IDE. twitter.com/raxpost/status…
@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:0910 лет назад мы на этой системе делали киоск для приема комунальных платежей.
18:09Все это "отделение банка" засовывалось в термирал как для оплаты телефона. Красочный клиент на Delphi ходил на этот CLI и делал проводки.
18:10Вечером киоск дозванивался по GPRS до интернета и обменивался журналами с центральным сервером. Хайтэк.
18:11Far be it from me to draw any premature conclusion about this... pic.twitter.com/z3zRD3VTbs18:57![]()
@backendsecret дык у нас доси крутится в основе бизнеса тулза писанная в 85-м, пашет так-же только обмен данными допилили постоянный :p20: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:431) Их нужно писать. Для каждого велосипеда можно легко подсчитать стоимость разработки умножив ЗП программиста на трудозатраты.
12:452) Чем больше функциональности, тем дороже. В готовые инструменты вложены человекодесятилетия труда.
12:463) Не работает с первого раза. Первая версия велосипеда будет сырой. Это верно так же, как для любого другого ПО.
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@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) Забранчил, запушил, забыл пофиксить.
@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
После трудовой недели могу себе позволить немного крепкого! pic.twitter.com/PmcnUEMezh
@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
# Воскресенье 3 твита
@backendsecret Не, не было такого. Redux отчасти инспирирован Elm Architecture. React изначально был сделан на SML вроде бы.10:29
Всем доброе утро (или что у вас там). Сегодня у меня уже не получится с вами пообщаться. Надеюсь было интересно :)
10:42С вами был @yelbota P.S Подписывайтесь на комиксы про DataWorld @data_monsters
10:43# Ссылки
bit.ly
- http://bit.ly/2ax433Y
- http://bit.ly/2aI1P0N
- http://bit.ly/2b8kX7h
- http://bit.ly/2aAJyTn
- http://bit.ly/2aWm0JG
other
- http://www.scala-lang.org/
- http://akka.io/
- http://www.scala-js-fiddle.com/
- https://github.com/fomkin/pushka
- https://github.com/fomkin/vodka
- https://github.com/lihaoyi/Scalite
- https://github.com/iamale/twt
- http://devzen.ru/live/
- https://gitter.im/DevZenRu/live
- https://www.youtube.com/watch?v=d8sEmGrseZY
- https://www.youtube.com/watch?v=93h-8MKG48s
- https://gist.github.com/fomkin/2d209963fdf04a61c1c77b3265b56cd7
- https://ru.wikipedia.org/wiki/Эзоп
- http://epicport.com/ru/ttd
- https://m.youtube.com/watch?v=XRWZqq0PYiM
- https://soundcloud.com/aleksey-fomkin/scalalaz-1