Очень крутой доклад Domain Driven Design made Dependently Typed от Andor Pénzes: https://www.youtube.com/watch?v=QBj-4K-l-sg
Слайды и пример кода к докладу: https://github.com/andorp/order-taking
Слайды и пример кода к докладу: https://github.com/andorp/order-taking
YouTube
Domain Driven Design Made Dependently Typed
For more details see; https://github.com/andorp/order-taking/
My talk about DDD and the high level overview of the Idris implementation of the Domain Modeling Made Functional Book, where I used dependent types to formalize the Bounded Context and Workflow…
My talk about DDD and the high level overview of the Idris implementation of the Domain Modeling Made Functional Book, where I used dependent types to formalize the Bounded Context and Workflow…
Forwarded from Alex Gryzlov
YouTube
Kevin Buzzard: "What is the point of Lean's maths library?"
12th of August, 2021. Part of the Topos Institute Colloquium.
-----
Abstract: Lean is a computer proof checker developed by Microsoft Research. Over the last four years I have been part of a team of mathematicians and computer scientists who have got it into…
-----
Abstract: Lean is a computer proof checker developed by Microsoft Research. Over the last four years I have been part of a team of mathematicians and computer scientists who have got it into…
Я зарегистрировался на платформе GetMentor: https://getmentor.dev/mentor/yuriy-bogomolov-452
Предоставляю разовые или регулярные консультации по функциональному программированию на TypeScript, использованию Domain-Driven Design или архитектуре в целом, а также могу помочь с вопросами менеджмента команды и пострения карьеры. Также отдельно можно оговорить проведение архитектурного ревью проекта в целом.
Предоставляю разовые или регулярные консультации по функциональному программированию на TypeScript, использованию Domain-Driven Design или архитектуре в целом, а также могу помочь с вопросами менеджмента команды и пострения карьеры. Также отдельно можно оговорить проведение архитектурного ревью проекта в целом.
https://getmentor.dev
Юрий Богомолов | GetMentor – открытое сообщество IT-наставников
Евангелист функционального программирования на TypeScript @ YBogomolov.me | GetMentor – это открытое комьюнити IT-наставников, готовых делиться своими опытом и знаниями. Наша задача – помогать людям находить ответы на свои вопросы в работе или жизни через…
Forwarded from HighLoad++
Разрабатывать конкурентные системы сложно. Самые плохие ошибки закрадываются в алгоритм еще на стадии проектирования, не находятся никакими тестами и ждут реальной нагрузки и своей уникальной последовательности событий, чтобы взорваться и всё испортить.
Находить такие ошибки можно, даже не написав ни строчки кода — если пользоваться методами формальной верификации алгоритмов. Таких методов много. Вместе с Алексеем Найденовым (ITooLabs) поговорим про TLA+/TLC, про PlusCal — транслируемый в TLA+ язык спецификации алгоритмов специально для инженеров, про инструментарий, а также про практики применения TLA+/TLC в реальных проектах https://clck.ru/X9JVa.
Осталось совсем мало времени, чтобы забронировать по выгодной цене свое участие в Saint HighLoad++. Торопитесь! Программа и билеты https://clck.ru/X9JWK
Находить такие ошибки можно, даже не написав ни строчки кода — если пользоваться методами формальной верификации алгоритмов. Таких методов много. Вместе с Алексеем Найденовым (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
Good luck with dynamically typed languages.
(Сам я, конечно, не читал что там пишут 😁)
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 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). К сожалению, за кадром остаются самые важные и интересные вопросы: как понять, что данную конкретную функцию можно представить в виде такой композиции, или придётся использовать генеративную рекурсию общего вида? как выбрать подходящую промежуточную структуру для рекурсии и ко-рекурсии? Возможно, эти вопросы удастся прояснить тем, кто интегрирует тему ко-рекурсивных функций в свои учебные программы. 😊
"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). К сожалению, за кадром остаются самые важные и интересные вопросы: как понять, что данную конкретную функцию можно представить в виде такой композиции, или придётся использовать генеративную рекурсию общего вида? как выбрать подходящую промежуточную структуру для рекурсии и ко-рекурсии? Возможно, эти вопросы удастся прояснить тем, кто интегрирует тему ко-рекурсивных функций в свои учебные программы. 😊
Cambridge Core
How to design co-programs | Journal of Functional Programming | Cambridge Core
How to design co-programs - Volume 31
Я сдул пыль со своего блога, немного его причесал и выложил туда все публичные статьи, которые писал про функциональное программирование, в том числе переведенные на английский статьи из цикла «Введение в 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-typenoscript
Статья про пакет circuit-breaker-monad: https://ybogomolov.me/circuit-breaker-in-functional-world
Недавняя заметка про комментарии к функциям как образовательный ресурс: https://ybogomolov.me/comments-as-education
В дальнейшем все материалы, которые я буду создавать, будут в первую очередь публиковаться именно в блоге.
Встречайте: 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-typenoscript
Статья про пакет circuit-breaker-monad: https://ybogomolov.me/circuit-breaker-in-functional-world
Недавняя заметка про комментарии к функциям как образовательный ресурс: https://ybogomolov.me/comments-as-education
В дальнейшем все материалы, которые я буду создавать, будут в первую очередь публиковаться именно в блоге.
ybogomolov.me
Intro to fp-ts, part 1: Higher-Kinded Types
https://github.com/earldouglas/linear-scala — линейные типы в скале, проверка которых осуществляется с помощью ScalaFix.
на что только не идут люди, чтобы не пользоваться Z3
на что только не идут люди, чтобы не пользоваться Z3
GitHub
GitHub - earldouglas/linear-scala: Linear types in Scala
Linear types in Scala. Contribute to earldouglas/linear-scala development by creating an account on GitHub.
Свежая статья — о кодировке данных высших родов (higher-kinded data, HKD) на TypeScript:
https://ybogomolov.me/higher-kinded-data
https://ybogomolov.me/higher-kinded-data
Новое видео на канале: «Making Illegal States Unrepresentable in TypeScript»!
В этом докладе я рассматриваю очень полезную тему из domain-driven design — как сделать некорректные состояния непредставимыми. Затрагиваются темы opaque-типов и смарт конструкторов, программирования на уровне типов, Tagless Final и индексированных монад.
В этом докладе я рассматриваю очень полезную тему из domain-driven design — как сделать некорректные состояния непредставимыми. Затрагиваются темы opaque-типов и смарт конструкторов, программирования на уровне типов, Tagless Final и индексированных монад.
YouTube
Making Illegal States Unrepresentable in TypeScript
In this talk I present "making illegal states unrepresentable" approach to modelling business domains in TypeScript. The talk covers topics like opaque types, type-level programming, Tagless Final and indexed monads.
Repository with code examples for the…
Repository with code examples for the…
dd if=/dev/stuff of=/dev/tg
Новое видео на канале: «Making Illegal States Unrepresentable in TypeScript»! В этом докладе я рассматриваю очень полезную тему из domain-driven design — как сделать некорректные состояния непредставимыми. Затрагиваются темы opaque-типов и смарт конструкторов…
В продолжение темы Tagless Final в личку прислали крутую статью об опыте использования этого стиля на чистом JS с типизацией через аннотации JSDoc:
https://habr.com/ru/post/584502
https://habr.com/ru/post/584502
В продолжение недавней драмы, о которой хорошо написали в канале Lil Functor:
Джон Де Гоуз написал статью о том, что ZIO organisation ставит перед собой две важные цели: pro-community и pro-professionalism. Это означает, что все проекты, находящиеся в организации ZIO, будут хостить у себя интеграцию с другими экосистемами, и поддерживать запросы конечных пользователей вне зависимости от того,кто кому в песочнице по голове совочком дал каких мировоззрений или политической ориентации придерживается человек.
Мне близка эта позиция — ставить инженерные практики выше политики/гендеров/мировоззрений/etc. Да, всегда можно сказать, что Джон снова использует ситуацию для агрессивного маркетинга ZIO, но в конечном итоге, мне кажется, такое позиционирование экосистемы выигрышно для конечных пользователей.
Джон Де Гоуз написал статью о том, что ZIO organisation ставит перед собой две важные цели: pro-community и pro-professionalism. Это означает, что все проекты, находящиеся в организации ZIO, будут хостить у себя интеграцию с другими экосистемами, и поддерживать запросы конечных пользователей вне зависимости от того,
Мне близка эта позиция — ставить инженерные практики выше политики/гендеров/мировоззрений/etc. Да, всегда можно сказать, что Джон снова использует ситуацию для агрессивного маркетинга ZIO, но в конечном итоге, мне кажется, такое позиционирование экосистемы выигрышно для конечных пользователей.
Telegram
Lil Functor
Новая микро-драма в Scala-сообществе: Роб Норрис, мейнтенер библиотеки для работы с SQL doobie, удалил интеграцию с другой библиотекой для SQL quill, потому что та вошла под крыло компании Ziverge, с которой у Норриса личный конфликт.
Поддерживать интеграции…
Поддерживать интеграции…
Новая статья — о простом тайп-левел представлении UUID:
https://ybogomolov.me/type-level-uuid
https://ybogomolov.me/type-level-uuid
ybogomolov.me
Compile-time validation of UUIDs
Заметка об использовании ScalaJS для написания кода под AWS-ный V8 напомнила о проекте, который позволяет нативно запускать хаскельный код в AWS:
https://theam.github.io/aws-lambda-haskell-runtime
https://theam.github.io/aws-lambda-haskell-runtime
theam
AWS λ Runtime - Home
Build fast and solid serverless applications
Forwarded from Lil Functor
Вот и пригодилась компиляция Scala → JavaScript. Только не для фронтенда.
Daniel Spiewak в концепте serverless-фреймворка предлагает компилировать код на Scala в JS, чтобы запускать его на движке V8. Таким образом получится избежать проблемы холодного старта JVM для короткоживущих функций. V8 не надо прогревать, а код для него можно писать всё на той же Scala. Не зря ведь scala.js делали и библиотеки под него кроссбилдили!
Понятно, что scala-native слишком далека от готовности к проду, но интересно, почему решили не использовать Native Image в GraalVM. Решение с js в любом случае оригинальное и может быть из него что-то вырастет.
Сам концепт: https://gist.github.com/djspiewak/37a4ea0d7a5237144ec8b56a76ed080d
Прототип библиотеки: https://github.com/typelevel/feral
Daniel Spiewak в концепте serverless-фреймворка предлагает компилировать код на Scala в JS, чтобы запускать его на движке V8. Таким образом получится избежать проблемы холодного старта JVM для короткоживущих функций. V8 не надо прогревать, а код для него можно писать всё на той же Scala. Не зря ведь scala.js делали и библиотеки под него кроссбилдили!
Понятно, что scala-native слишком далека от готовности к проду, но интересно, почему решили не использовать Native Image в GraalVM. Решение с js в любом случае оригинальное и может быть из него что-то вырастет.
Сам концепт: https://gist.github.com/djspiewak/37a4ea0d7a5237144ec8b56a76ed080d
Прототип библиотеки: https://github.com/typelevel/feral
dd if=/dev/stuff of=/dev/tg
Заметка об использовании ScalaJS для написания кода под AWS-ный V8 напомнила о проекте, который позволяет нативно запускать хаскельный код в AWS: https://theam.github.io/aws-lambda-haskell-runtime
Самое любопытное здесь — табличка с бенчмарками относительно JVM и ноды. Вопросы, конечно остаются — скажем, на код остальных примеров хотелось бы тоже взглянуть, — но значения времени холодного старта и потребления памяти вызывают заинтересованность, как минимум.