Size: a a a

2017 August 30
brain_dump_etc
Вот пример публикации. ИМХО, хорошая работа!
источник
brain_dump_etc
ADT - произведение и копроизведение типов

Тип можно трактовать как множество значений (На самом деле это не всегда так). Мощность типа - количество элементов в этом множестве.

Произведение типов - декартово произведение множеств, то есть множество всех возможных пар, где первый элемент - элемент первого множества, а второй - второго.
A = {a, b, c}
B = {x, y}
A×B = {(a, x), (a, y), (b, x),
      (b, y), (c, x), (c, y)}
     
Мощность произведения двух множеств равна произведению мощностей множителей.
|A × B| = |A| × |B|

Пример в хаскеле:
-- тут мы говорим, что `x`
-- имеет тип `(Int, String)`
x :: (Int, String)
-- а тут мы говорим, какое у
-- x значение
x = (1, "hello")

-- делаем тип IntStringPair
-- значение которого является пара
-- из числа и строки.
-- Для создания значения этого типа
-- используется конструктор MkIntStringPair
-- который принимает число и строку
-- и создает элемент типа IntStringPair
data IntStringPair = MkIntStringPair Int String
y :: IntStringPair
y = MkIntStringPair 1 "hello"

-- Конструктор и тип могут иметь
-- одно название, они не будут
-- пересекаться, ведь типы можно
-- использовать только в сигнатуре,
-- а конструкторы только в выражениях
data Triple a b c = Triple a b c
z :: Triple Int String Int
z = Triple 1 "hello" 2

Меченное объединение, сумма или же копроизведение типов - объединение двух множеств так, что каждый элемент нового множества помечается исходным множеством, благодаря чему новый тип будет содержать все копии значений из исходных множеств.
A = {1, 2, 3}
B = {3, 4}
A + B = {A 1, A 2, A 3, B 3, B 4}

Как видно, каждый элемент нового множества помечен исходным множеством, поэтому число 3 встречается дважды, ведь A 3 ≠ B 3.

Очевидно, мощность такого типа равна сумме мощностей слогаемых.
|A + B| = |A| + |B|

В хаскеле суммы типов создаются с помощью символа | в определении типа (или же с помощью определений конструкторов с GADTs).
data Either a b = Left a | Right b
x, y :: Either Int String
x = Left 10
y = Right "hello"

data Bool = False | True
-- изоморфно Either () ()
-- где () - единичное множество,
-- то есть множество из одного элемента
-- () = {()}
-- (Важно не путать ()-тип и ()-значение)
z, u :: Bool
z = False -- Left ()
u = True -- Right ()
источник
2017 September 04
brain_dump_etc
Просто оставлю это здесь:
https://github.com/LightningJimmyJoeJohnson/Anime-Girls-Holding-Programming-Books
Вдруг вам понадобится картинка с анимешной девицей и книгой по вашему любимому ЯП :)

Что примечательно, по кол-ву присутствий на картинках с большим отрывом лидирует SICP, что с одной стороны радует, с другой - вовсе не удивительно :D

#anime #meme #picture
источник
brain_dump_etc
Пример
источник
brain_dump_etc
Довольно интересная статейка на #haskell WiKi: https://wiki.haskell.org/Haskell_logos/New_logo_ideas - тут собраны работы, участвовавшие в The great 2009 Haskell logo contest (кстати, именно в рамках этого конкурса был выбран текущий логотип!).

Некоторые образчики очень занятны и даже довольно круты, советую пролистать и приобщиться, даже если вы не интересуетесь #haskell (зря!)

P.S. Тут ещё немного текста и картинок по истории лого: http://www.willamette.edu/~fruehr/logos/intro.html
источник
2017 September 07
brain_dump_etc
Тема криптовалют и #blockshain в целом нынче очень популярна. Вот и в #haskell мире движуха пристутсвует - пишут "на коленке" игрушечные криптовалютки, вот это всё. Пример такого проекта: https://github.com/tdietert/nanocoin

Проект достаотчно интересный с точки зрения знакомства с тем "как там всё работает". Тут вам и P2P сеть и Proof-of-work. А ещё автор ставит себе целью подробно всё документировать - отличная возможность приобщиться к среднему по сложности проекту на Haskell, реализующему хайповую штуку и поучиться на живом примере!

P.S. Буквально вчера выложили доклад автора нанокоина: https://www.youtube.com/watch?v=wjyiOXRuUdo - тут и о проекте говорится и в целом о криптовалютах
источник
2017 September 11
brain_dump_etc
Меня порой спрашивают, какую книгу стоит читать желающему начать учить #haskell. Обычно я советовал "Learn You a Haskell for Great Good" - я сам на ней вырос, вот и другим рекомендую. И я всё ещё считаю эту книгу хорошей для новичков в ФП. Однако теперь я буду давать ссылку на этот пост: https://medium.com/@_bravit/%D0%BA%D0%BD%D0%B8%D0%B3%D0%B8-%D0%BF%D0%BE-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8E-%D0%BD%D0%B0-haskell-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D1%8B-712c1f5b7749

Ссылка ведет на статью с выводами, которые сделал Виталий Брагилевский, взяв на себя труд рассмотреть все более-менее популярные книги для начинающих изучать Haskell. Ссылки на отзывы об отдельных книгах ищите по ссылкам в вышеуказанной статье. ИМХО, стоит обратить внимание на книгу Курта - я и сам на неё натыкался, и с виду она мне понравилась, но одно дело - мое мнёние, совсем другое - мнение человека, который Haskell преподаёт (кстати, Виталий учит не только хаскелю, но и, например, Idris!).
источник
brain_dump_etc
Reddit-обсуждение статьи про сравнение GHCJS и PureScript (вместе с различными библиотеками для оных) в плане быстродействия. Причем связки из языка и фреймворка/библиотеки сравниваются и между собой и с популярными конкурентами из мира JavaScript. И даже Elm присутствует "до кучи". Сравниевается производительность в разного вида задачах, связанных с изменением DOM - как точечным, так и массовым. В конце статьи автор приводит своё мнение о каждом из попробованных им решений, в т.ч. и касательно удобства использования, что тоже интересно.

https://www.reddit.com/r/haskell/comments/6z8e3m/benchmarks_ghcjs_reflex_miso_purescript_thermite/
источник
2017 September 12
brain_dump_etc
В последнее время площадки, начинавшие с продажи indie-игр, предлагают купить по минимальной цене целые подборки неигрового контента.

HumbleBundle, например, частенько продаёт наборы первых томов комиксов от конкретного издательства, или, скажем, пачку книг по вселенной Doctor Who.

Вот прямо сейчас можно купить кучку книг по Data Science от O'Reilly: https://www.humblebundle.com/books/data-science-books Причем пять книг отдают вообще за доллар!

P.S. Часть денег - определяемая вами (!) - идет в различные благотворительные фонды. Кого-то может порадовать только этот факт :)
источник
brain_dump_etc
Ещё одна площадка, за которой я слежу (я там частенько покупаю музыку в жанрах SynthWave и ChipTune - тоже бандлами), это https://groupees.com. Обычно тут
продаются игры и музыка, иногда - книги. Но вот прямо сейчас можно приобщиться к

- курсам по #js: https://groupees.com/frontend-js-bundle Тут вам и ReactJS и Vue с Agnular'ом. Правда, курсы, в основном, новичковые.

- курсам по #python: https://groupees.com/python-perfection-bundle - тут и NumPy со SciPy, и работа с XML (BeautifulSoup) и даже по #gamedev есть курс!

Ещё присутствуют бандлы курсов по "Full Stack Dev" (тут у них сборная солянка из Linux, C#, WordPress и прочих MySQL) и по игростроению (сплошной Unity).

Короче говоря, советую сходить и посмотреть самим - если нравятся видеокурсы, или, скажем, музыка в стиле "Митол + Вокалоид" (да, там и такой бандл продаётся сейчас :))

#mooc
источник
brain_dump_etc
Всё таки NeoCities - интересная площадка. 150 тысяч сайтов и все доступны по IPFS - сие примечательно само по себе. Но самое интересное, это публика, создающая сайты на этой площадке: Каждый сайт, как окно в прошлое - анимированные low-res/low-color .gif'ки, фоновая музыка на страницах (да-да!), вёрстка табличками - ностальгичненько!

Типичные образчики неосайтиков:
- https://gifypet.neocities.org/ (этот отдельно прекрасен!)
- https://2bit.neocities.org
- https://anlucas.neocities.org/
- https://joppiesaus.neocities.org/

Некоторые сайты хоть и менее олдскульны технологически, но тоже очень самобытны:
- https://fauux.neocities.org/
- https://suyu.neocities.org/ (да, анимуфагов на NeoCities много :^])
- https://dragonquest.neocities.org/

И парочка мне лично доставивших:
- https://liooil.space/ (not safe for eyes!!!)
- https://substack.neocities.org/ - тут много всяческих "живых" визуальных штуковин, интерактивных и не очень.

P.S. NeoCites, это отличный бесплатный хостинг статических сайтов с ограничением на форматы заливаемых файлов и нарочитой минималистичностью. Если вдруг вам чего-то такого хочется - стоит попробовать :)
источник
brain_dump_etc
Меня тут заподозрили в рекламе о_О
Увы, профита ни от NeoCities ни от бандломагазинов я не получаю да и ссылки то все на виду - ни одна не реферальная. И вообще, можете по ссылкам ходить через анонимайзеры и мне меньше достанется (меньше от ничего :D)
А если вдруг кто сильно против такого контента, то можете меня не читать, а я и дальше буду делиться тем, чем захочу :)
источник
2017 September 15
brain_dump_etc
На CrowdSupply вывешен интересный проект: https://www.crowdsupply.com/chips4makers/retro-uc

Суть: #arduno-совместимая по форм-фактору плата с ASIC-чипом, умеющим эмулировать Z80, Motorolla 68K и MOS6502.

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

Да и просто интересующимся историей вычислительной техники - и историей ПК в частности - будет интересно! Ведь эта платка позволит максимально уменьшить порог входа - не каждый готов искать на барахолках живой Zilog, а потом ещё тратить время на воссоздание необходимой обвески, дабы этот процессор просто запустить.
источник
2017 September 17
brain_dump_etc
Не animusic, но уже близко: https://www.youtube.com/watch?v=bAdqazixuRY
KUKA всё же отлично умеют рекламировать своих роботов!

Про animusic: я сравнивал с этим клипом, конечно же https://www.youtube.com/watch?v=3ahoqR6OGdM Тут вам и гитары и ударка и лазеры - и всё в руках роботов :)
Конечно же animusic, это анимация, и ценна она в первую очередь вниманием к деталям, качеством проработки инструментов и синхронизацией картинки и звука (лучше всего это заметно здесь: https://www.youtube.com/watch?v=toXNVbvFXyk) - авторы использовали специальный софт, который "оживлял" модели инструментов под готовую музыку, руками только слегка "доводили" полученную анимацию. И тем интереснее наблюдать прогресс робототехники - интересно даже не столько совершенствование самих роботов, сколько проникновение оных в области, не связанные напрямую с теми нишами, в которых роботы нашли применение изначально (имею в виду промышленность). Вполне можно ожидать, что кто-то сделает робо-оркестр, который сыграет "в живую" не хуже этих анимированных крабьих лапок :)

Кстати, воплощать в жизнь непосредственно animusic уже пробовали: https://www.youtube.com/watch?v=E4hjx3_A-cw - Intel воплотила Pipe Dream (https://www.youtube.com/watch?v=hyCIpKAIFyo) в виде рекламного стенда для одного из своих мероприятий.
источник
2017 October 05
brain_dump_etc
Если вы вдруг знаете JavaScript и хотите изучать Elm, то присмотритесь к этому подкасту: http://jstoelm.com/ Подкаст молодой, но выпуски выходят частои регулярно. Даже show notes отличные - очень развёрнутые, с кучей полезных ссылок, их можно читать как самостоятельный блог.

#js #elm #podcast
источник
2017 October 11
brain_dump_etc
https://www.youtube.com/watch?v=YC2FvozglPc -
интересная задача (эмуляция NES) и интересная комбинация #rust и #elm :)
Rust то как раз оправдан - эмуляторы стоит писать как раз на таких языках. А вот Elm в таком проекте интересно было увидеть! Впрочем, я лично не удивлён, т.к. Elm как раз очень хорошо подходит тем, кто хочет "просто сделать GUI", но фронтендом непосредственно не интересуется (и часто не хочет погружаться в тонкости настройки webpack, babel, вот этого всего).

В комментариях к ролику автора спросили "Very nice! Btw, why did you choose Elm instead of PureScript (which has higher abstractions like typeclasses etc)?", на что он ответил "I haven't heard of purescript until now, so I guess Elm is just marketed better or has more people talking about it.". Этот микродиалог меня натолкнул на две мысли:

1) автор столкнется с болью и унижением, если попробует приобщиться к #purescript и во многом благодаря (да уж, что ещё "благо") тулингу - имхо, npm+bower+pulp+psc-package могут любить только мазохисты, профессионально деформированные фронтендом;

2) всё таки заметность у Elm уже достаточна для того, чтобы язык выбирали те, кто client-side web developing особо не интересуется и сталкивается с оным лишь эпизодически - по необходимости.

P.S. В описании видео есть ссылки и на эмулятор и на отладчик - тут уж кому что интересно :)
источник
brain_dump_etc
Вообще активности вокруг #Elm всё больше. Публикации вроде этой https://www.reddit.com/r/elm/comments/73hccd/why_elm_needs_a_better_native_code_policy/  явно показывают, что многие используют язык "в продакшне" и серьёзно намерены продолжать использовать Elm. И если такие инструменты, как elm-github-install, выглядят сделанными "на коленке" с целью побыстрее подпереть те места в экосистеме, которые подпирают, то автор Grove подходит к решению проблемы комплексно. Этот исключительно деятельный товарищ не только реализовал инструмент (https://github.com/panosoft/elm-grove), но ещё и поднимает дискусии на reddit (пример одной из них как раз находится по ссылке в начале поста) и участвует в них активно, аргументируя свою позицию - очень адекватно аргументируя, замечу! Дискуссии же показывают, что многие хотят большего, чем готовы сейчас представить разработчики ядра языка - хочется иметь возможность делиться "нативным кодом", да так, чтобы оный тоже пакетировался и версионировался, желательно столь же просто, как чисто-эльмовые пакеты.

Сам я лично на Grove обязательно посмотрю в ближайшее время, а пока интересно следить за его развитием. Скажем вот прямо сейчас автор анонсировал (https://www.reddit.com/r/elm/comments/75ipdv/making_grove_safe_for_everyone_to_use/), что Grove теперь можно использовать и безопасно  - устанавливать только pure elm пакеты - и иметь при этом
- возможность установить зависимость из локальной папки - это очень удобно при разработке одновременно и приложения и библиотеки, которую приложение использует
- возможность устанавливать пакеты из приватных репозиториев - уверен, production этого очень хочет :)

Кстати, раз уж пишу о движухе вокруг Elm, пусть будет ещё и эта ссылка: https://elm-directory.herokuapp.com/effect-manager-packages - потихоньку пополняющийся список "менеджеров эффектов", некоторые из которых множество эльмоводов ждёт-недождётся от авторов Elm и которые теперь можно устанавливать через Grove.
источник
brain_dump_etc
brain_dump_etc
https://www.youtube.com/watch?v=YC2FvozglPc -
интересная задача (эмуляция NES) и интересная комбинация #rust и #elm :)
Rust то как раз оправдан - эмуляторы стоит писать как раз на таких языках. А вот Elm в таком проекте интересно было увидеть! Впрочем, я лично не удивлён, т.к. Elm как раз очень хорошо подходит тем, кто хочет "просто сделать GUI", но фронтендом непосредственно не интересуется (и часто не хочет погружаться в тонкости настройки webpack, babel, вот этого всего).

В комментариях к ролику автора спросили "Very nice! Btw, why did you choose Elm instead of PureScript (which has higher abstractions like typeclasses etc)?", на что он ответил "I haven't heard of purescript until now, so I guess Elm is just marketed better or has more people talking about it.". Этот микродиалог меня натолкнул на две мысли:

1) автор столкнется с болью и унижением, если попробует приобщиться к #purescript и во многом благодаря (да уж, что ещё "благо") тулингу - имхо, npm+bower+pulp+psc-package могут любить только мазохисты, профессионально деформированные фронтендом;

2) всё таки заметность у Elm уже достаточна для того, чтобы язык выбирали те, кто client-side web developing особо не интересуется и сталкивается с оным лишь эпизодически - по необходимости.

P.S. В описании видео есть ссылки и на эмулятор и на отладчик - тут уж кому что интересно :)
Посмотрел на исходники отладчика. Таки автор умеет фронтенд - webpack настроен, css препроцессится, и проч :(
Ну и ладно! Я всё равно думаю, что #Elm - неплохой вариант для быстрой разработки GUI, раз уж браузер - самая распространённая платформа для отображения графических интерфейсов (меня этот факт печалит, но приходится мириться). Может быть появятся альтернативы для Web-powered GUI для того же Rust и подобные отладчики можно будет делать с небраузерным интерфейсом, а пока поживём так...
источник
2017 October 17
brain_dump_etc
https://jackschaedler.github.io/jazzari/
Очень интересная шткуа: программируемый (увы на #js) секвенсор для трио из ударки, синта и баса.
Возможности довольно неплохие для приложения, работающего исключительно в браузере. И DSL, на котором собственно программируются инструменты, довольно эргономичен, насколько это вообще применимо к JavaScript ;). А уж визуально всё просто отлично оформлено: цвета, анимация, визуализация - мне лично по нраву!

Отдельно хочу отметить, что применение изменений "на лету" сделано превосходно - дело SonicPi(http://sonic-pi.net/) живёт!

Ах да, ещё названия у программ-примеров отличные! "Kiss my Rollerblades", "Hammock Driven Drums" (о да!), "Sinus Pain", вот это всё :3

#music #js #livecoding
источник
brain_dump_etc
На страничке "Learn more" описанного выше проекта есть отличная подборка ссылок про то "куда дальше смотреть, если хочется приобщиться к программированию музыки" (ссылка: https://jackschaedler.github.io/jazzari/about.html).

Упомянутый Sonic Pi и там присутствует, кстати. А ещё "Learn Music" от Ableton (https://learningmusic.ableton.com/) - отличная штука! И Ear Sketch (https://earsketch.gatech.edu) - этот на #python программируется (помимо #js), что приятно (надо будет попробовать).

#music #learning
источник