dd if=/dev/stuff of=/dev/tg
2.59K subscribers
348 photos
5 videos
7 files
563 links
Музыка: @randommusicilike

18+. По всем вопросам, кроме рекламы: @rsil_feedback_bot

По вопросам рекламы (внимательно читайте приветственное сообщение): @rsil_ads_bot
Download Telegram
В дружественном чатике по fp-ts проскочила ссылка на перевод мануала по функциональному программированию от автора fp-ts Джулио Канти:
https://github.com/enricopolanski/functional-programming
Хороший, годный, плотный текст, затрагивающий и теорию категорий (с обязательной фоткой Филипа Уодлера в костюме Lambda Calculus Man), и стрелки Клейсли, и tagless final. Рекомендую 🙂
Forwarded from Lene.spb (Arina Malevskaya)
Моя невероятнейшая @lene_love сделала подарок, от которого я до сих пор тихо прихожу в себя — распечатанную фотку моего авторства, сделанную еще в далеком 2011 ❤️
Болезненное, но очень верное наблюдение сделано в канале Lil Functor: https://t.me/lilfunctor/252.

Действительно, ФП в TS идет по пути мимикрии под хаскель, и зачастую такие попытки натянуть сову на глобус не только приводят к неэффективному коду, но и значительно повышают bus factor и время онбординга новых разработчиков.

Что с этим делать? Я склонен согласиться с Михаилом, что идиоматичный подход появится только спустя несколько лет экспериментов, а сейчас библиотеки для TS штормит — fp-ts копирует хаскель и пурсу, effect-ts/waveguide/qio слизывают дизайн zio. Effect-ts так вообще беззастенчиво копирует API zio 1:1, что приводит к появлению в коде кадавров вида:

const LiveEnv = RandGenLive["+++"](ConfigLive[">+>"](LoggerLive))

export const main = pipe(
randomGteHalf,
T.retry(Schedule.recurs(10)["&&"](Schedule.exponential(100))),
T.provideSomeLayer(LiveEnv)
)

Поскольку в нашем любимом языке для рисования снежинок в браузере нет возможности добавлять свои инфиксные функции (операторы), то возникает риторический вопрос в целесообразности бездумного копирования API zio. Поэтому, в частности, я не спешу с написанием статьи по effect-ts на хабр — мне кажется, что Майкл Арнальди слишком увлекся попытками сделать Scala из TS.
dd if=/dev/stuff of=/dev/tg
На следующих выходных, 19-20 июня, я буду выступать в Пензе на SECON’2021 с докладом «Путь функционального программиста». Моё выступление будет в секцию фронтэнда, но по факту о фронте я не буду говорить ровным счетом ничего. Доклад будет обзорного характера…
В общем, я чуток задолбался ждать, когда появится видео моего доклада, поэтому обзор конфы напишу без него.

Если вкратце, то было круто — восемь стримов, много секций (от бэка и баз данных до космоса, проектного менеджмента и бизнеса в целом). Мой доклад был в малом зале картинной галереи; с акустикой там было не очень хорошо ввиду отсутствия одной стены, но моего голоса вроде бы хватило, чтобы доклад слышали даже на задних рядах. Сама же площадка в целом оставила спорные впечатления — как место для отдыха она весьма приятная: речка с чистой водой, много оригинальных скульптур на пленэре, аккуратная архитектура. Но для организации конференции она не очень подходит, на мой взгляд: с кейтерингом были проблемы (не вдаваясь в подробности — треш полный), плюс мелкие организационные шероховатости чуть смазали впечатление. Зато было много активностей для детей — от головоломок до робототехники и азов программирования.

Из докладов мне, внезапно, больше всего понравился нетехнический доклад Павла Шубина про освоение Венеры. Он очень круто и со знанием дела рассказывал о проблемах венерианских миссий, как со стороны Советов, так и США. Вот его сайт, а вот доклад с таймкодом. Еще очень крутым получился круглый стол на тему управления проектами в современной реальности 100%-ой удалёнки, куда @lene_love и меня позвали экспертами. Я считаю, что мы хорошо справились, и если видео с круглого стола будет выложено, то также опубликую его тут.

Из технических обсуждений мне понравилось общаться с ребятами из Shogun и авторами remote-data-ts — Антоном Сутарминым и Кириллом Агалаковым. Ребята крутые специалисты, и мы обсудили достаточно много интересных вещей из мира функционального TS. Кстати, напоминаю, что существует отдельный чатик по fp-ts — так что если вы используете библиотеки из его экосистемы (или еще нет), то приходите туда с вопросами.

Подводя итог — SECON оказалась интересной конференций, и я благодарен организаторам, что меня позвали туда выступить.
Я зарегистрировался на платформе GetMentor: https://getmentor.dev/mentor/yuriy-bogomolov-452
Предоставляю разовые или регулярные консультации по функциональному программированию на TypeScript, использованию Domain-Driven Design или архитектуре в целом, а также могу помочь с вопросами менеджмента команды и пострения карьеры. Также отдельно можно оговорить проведение архитектурного ревью проекта в целом.
Forwarded from HighLoad++
Разрабатывать конкурентные системы сложно. Самые плохие ошибки закрадываются в алгоритм еще на стадии проектирования, не находятся никакими тестами и ждут реальной нагрузки и своей уникальной последовательности событий, чтобы взорваться и всё испортить.

Находить такие ошибки можно, даже не написав ни строчки кода — если пользоваться методами формальной верификации алгоритмов. Таких методов много. Вместе с Алексеем Найденовым (ITooLabs) поговорим про TLA+/TLC, про PlusCal — транслируемый в TLA+ язык спецификации алгоритмов специально для инженеров, про инструментарий, а также про практики применения TLA+/TLC в реальных проектах https://clck.ru/X9JVa.

Осталось совсем мало времени, чтобы забронировать по выгодной цене свое участие в Saint HighLoad++. Торопитесь! Программа и билеты https://clck.ru/X9JWK
Если вы в 2021 еще пишете на чистом JS, вы явно что-то делаете не так:
Forwarded from AlexTCH
Пишут, что https://people.cs.uchicago.edu/~shanlu/paper/hotos19_azure.pdf
found that 21% of the cloud outages resulted from inconsistent data format assumptions across different software components and versions

Good luck with dynamically typed languages.
(Сам я, конечно, не читал что там пишут 😁)
Forwarded from Lene.spb (Arina Malevskaya)
Жизненно)))
Forwarded from AlexTCH
https://doi.org/10.1017/S0956796821000113
"How to design co-programs" by Jeremy Gibbons

Статья призывает расширить подход How to Design Programs (aka HtDP, серия курсов, обучающих студентов программированию с нуля, плюс два издания одноимённой книги: https://htdp.org/ если кто не знает) за счёт введения понятия ко-рекурсивных функций и соответствующих паттернов для их построения.

Говоря по-простому, ко-рекурсивные функции — это такие, которые строят свой результат "по кусочкам", используя конструкторы соответствующего (алгебраического) типа данных, вместо того (или вместе с тем) чтобы разбирать входные данные "на кусочки" при помощи сопоставления с образцом (aka [datatype] pattern matching).

Я безусловно согласен с Гиббонсом в том, что ко-рекурсивные функции — очень полезный инструмент в арсенале разработчика, особенно, начинающего. Тем не менее, на мой взгляд, эта тема требует намного более тщательной методической проработки чтобы органично встроиться в общую канву HtDP.

Более того, самая интересная часть этой статьи — ещё одна статья, которая не была написана, к сожалению. 😊 В середине повествования Гиббонс обсуждает "генеративную рекурсию" (generative recursion, термин из HtDP), и показывает как функции (изначально) в форме общей генеративной рекурсии могут быть представлены в виде композиции структурно-рекурсивной и ко-рекурсивной функции (так же известной как "иломорфизм" или "хиломорфизм" — hylomorphism). К сожалению, за кадром остаются самые важные и интересные вопросы: как понять, что данную конкретную функцию можно представить в виде такой композиции, или придётся использовать генеративную рекурсию общего вида? как выбрать подходящую промежуточную структуру для рекурсии и ко-рекурсии? Возможно, эти вопросы удастся прояснить тем, кто интегрирует тему ко-рекурсивных функций в свои учебные программы. 😊
Я сдул пыль со своего блога, немного его причесал и выложил туда все публичные статьи, которые писал про функциональное программирование, в том числе переведенные на английский статьи из цикла «Введение в fp-ts» с Хабра.
Встречайте: https://ybogomolov.me 🤘🏻

Серия "Intro to fp-ts":
https://ybogomolov.me/01-higher-kinded-types
https://ybogomolov.me/02-type-classes
https://ybogomolov.me/03-nullables-exceptions
https://ybogomolov.me/04-tasks

Серия #MonadicMondays:
https://ybogomolov.me/monadic-monday-compilation-april
https://ybogomolov.me/monadic-monday-compilation-may
https://ybogomolov.me/monadic-monday-compilation-june
https://ybogomolov.me/monadic-monday-compilation-july

Прочее:
Статья про типобезопасный фронт: https://ybogomolov.me/typesafe-typescript
Статья про пакет circuit-breaker-monad: https://ybogomolov.me/circuit-breaker-in-functional-world
Недавняя заметка про комментарии к функциям как образовательный ресурс: https://ybogomolov.me/comments-as-education

В дальнейшем все материалы, которые я буду создавать, будут в первую очередь публиковаться именно в блоге.
https://github.com/earldouglas/linear-scala — линейные типы в скале, проверка которых осуществляется с помощью ScalaFix.
на что только не идут люди, чтобы не пользоваться Z3
Свежая статья — о кодировке данных высших родов (higher-kinded data, HKD) на TypeScript:
https://ybogomolov.me/higher-kinded-data
Новое видео на канале: «Making Illegal States Unrepresentable in TypeScript»!

В этом докладе я рассматриваю очень полезную тему из domain-driven design — как сделать некорректные состояния непредставимыми. Затрагиваются темы opaque-типов и смарт конструкторов, программирования на уровне типов, Tagless Final и индексированных монад.