brain_dump_etc
637 subscribers
99 photos
4 videos
3 files
383 links
Дампы мыслей, свалка ссылок, программизмы, вот это всё (ВНИМАНИЕ: много вкусовщины!)

Автор надампленых мыслей: @astynax

Чат к каналу: https://t.me/brain_dump_chat
Плейлист трансляций: https://youtube.com/playlist?list=PLUFoWyWge7mrg4GqHLMZV62gGC912PCGq
Download Telegram
brain_dump_etc
https://www.youtube.com/watch?v=YC2FvozglPc - интересная задача (эмуляция NES) и интересная комбинация #rust и #elm :) Rust то как раз оправдан - эмуляторы стоит писать как раз на таких языках. А вот Elm в таком проекте интересно было увидеть! Впрочем, я…
Посмотрел на исходники отладчика. Таки автор умеет фронтенд - webpack настроен, css препроцессится, и проч :(
Ну и ладно! Я всё равно думаю, что #Elm - неплохой вариант для быстрой разработки GUI, раз уж браузер - самая распространённая платформа для отображения графических интерфейсов (меня этот факт печалит, но приходится мириться). Может быть появятся альтернативы для Web-powered GUI для того же Rust и подобные отладчики можно будет делать с небраузерным интерфейсом, а пока поживём так...
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
На страничке "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
На Хаскеле, как известно, тоже лайфкодят музыку - Антон Холомьёв, являет собой яркий пример.

А ещё есть Tidal (https://tidalcycles.org/). Настоятельно рекомендую посмотреть видео с главной страницы, там хоть и под странным углом экран снят, но зато слышно отлично, на что Тидал способен!
Работает Tidal поверх SuperCollider, что неудивительно.

З.Ы. Вот один из докладов Антона: https://www.youtube.com/watch?v=vt1PjMrJ2Yg Тоже советую посмотреть :)

#haskell #livecoding #music
В декабре намечаются сразу две около-функциональные конференции:
FPConf 2 декабря в Mоскве и fby.by 17 декабря в Минске (ссылки ниже). На первой я буду выступать, на второй просто буду. Оба мероприятия обещают быть интересными, так что всячески рекомндую к посещению, буде вам интересна сия тематика.

Ссылки:
- http://fpconf.ru/
- https://fby.by/

#haskell #event
Залил таки свой пакетик в репозиторий эльмопакетов. Правда, документация пока в зачаточном состоянии. Но, глядя на примеры, пользоваться можно :)

http://package.elm-lang.org/packages/astynax/tea-combine/latest

#elm #library
Нарисовался интересный проект: https://github.com/shamansir/ielm - это такое подобие IPython Notebook (он же Jupyter), но для #elm. В этом видео https://vimeo.com/242822314 автор демонстрирует работу системы. И поверьте, там уже есть, на что посмотреть :)

#elm #repl #interactive
https://www.kickstarter.com/projects/954662076/gameshell-redefine-retro-game-console - мне уже хочется!

Не знаю, зачем, правда :) В принципе оправдание для покупки у меня есть - Dingoo A320 уже старенькая. Да и железо на Динге уж совсем своеобразное и программировать под него сложновато. А в этой штучке - ах, да, GameShell, это такая открытая модульная портативная консоль в корпусе, напоминающем Game Boy - и одноплатник с Linux на борту, и контроллер на базе ардуины, да ещё все модули можно вынуть из корпуса и поместить в другой, добавив (или убавив?) периферии. К тому же WiFi присутствует (у Dingoo его, конечно, не было).

Пока GameShell выглядит очень интересно. Это и потенциально отличный портативный эмулятор всякого олдскула, и платформа для построения карманных осциллографов, частотомеров, мультиметров в конце концов. Или синтезаторов, секвенсоров, генераторов эффектов. Для меня, например, этот проект выгладит привлекательнее той же моногострадальной Pandora, которая так и не взлетела (да даже и не разбежалась как следует).

P.S. раз уж на этой малышке будет нормальный Linux и честные кнопки, на оной отлично будет смотреться PICO-8.
https://leanpub.com/outsidefp вот ещё кто-то пишет книгу "типизированное ФП для людей со стороны".

Почитал я "About the Book" и как-то "взгрустнулось". Мне, как человеку, достаточно испорченному знакомством с #haskell/#elm/#purescript, немного обидно читать такое такое (тут мейнстрим противопоставляется типизированным ФП-языкам):

> By "mainstream", I mean:
> - Applications that require only "ordinary" reliability.

не говоря уж о

> - Applications that work in messy domains.
> - Applications that are continuously growing new features.

Вот только это правда. Обидная, но правда.

И мне с моим любимым Haskell уже даже морально тяжело делать "просто достаточно надёжные" приложения, а ведь надо ещё и компилятор убедить в том, что "пока и так сойдёт". Заметьте, я не утверждаю, что так делать в Haskell нельзя - сделать нарочито хуже, конечно же, можно. Но не хочется! А значит я буду стараться делать сразу настолько хорошо, насколько смогу.

Я вообще склонен считать, что в (или через) Haskell идут перфекционисты - тут же столько простора "сделать наконец нормально или даже лучше"! И overengineering в хаскельном коде встречается не реже, чем в коде на мейнстримовых языках (тут многие вспомнят пресловутые "абстрактные фабрики синглтонов"), только тут принято себя оправдывать, что, мол, "зато более корректно и категорно!".

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

И более того, те, кто старается "просто делать что-то", и уж тем более - "делать что-то просто", считаются ненастоящими программистами, странными чуваками и проч. Ведь простое решение не выглядит, как тема для публикации с кучей формул, не "движет науку в сторону светлого будущего", и просто "недостаточно красиво". Например, я много раз видел, как в чатах критикуют того же Габриэля Гонзалеса за то, что он пишет слишком простые - с чьей-то точки зрения - библиотеки или статьи.

Может быть сий неготивизм по отношению к простым решениям и вообще к упрощению, это всего лишь боязнь того, что в язык придут люди, которые смогут с помощью гонзалесовой Turtle писать простые скрипты, не парясь по поводу зависимых типов, рекурсивных схем, профункторов, и прочего "именно того, ради чего вообще в Хаскель стоило идти"? "Илитизм" какой-то, право слово.

Другой пример. Новичок приходит в Reddit и спрашивает "А какую либу мне выбрать, чтобы сделать простой web-сервис - Scotty или Spock?" (очень частая ситуация). Реалистичный вариант цепочки комментариев будет выглядеть так:

- Бери Servant - только Servant есть TRUE!
- (кто-то робко) Но у сёрванта порог вхождения выше и сообщения об ошибках непонятнее...
- У меня всё работает! И там ваще всё просто (если ты достаточно хорош)!

После этого новичок идет пробовать Servant, видит список требуемых расширений, или просто первое сообщение об ошибке и уходит в ужасе/печали - и хорошо, если не из ФП вообще, а только из Haskell. Одним потенциальным хаскелистом меньше. И какова будет реакция аудитории - особенно русскоязычной - "одним слабаком и неосилятором меньше!".

Смотришь на это и понимаешь, почему кто-то убегает из Haskell с "труёвым Servant" в "скучную и нетайпсейфную" Clojure, или из PureScript с его профункторными линзами и FRP на Halogen в "скучный" Elm. А ведь, на Haskell можно писать и просто (типа вебчика на Scotty)! Но простые решения будут порицаться, или как минимум будут приняты со снисхождением - это демотивирует. И смешные статьи или картинки про Haskell не на пустом месте появляются - есть благодатная почва.

Меня лично радует лишь то, что я даже на своём невысоком уровне умения "в настоящий Haskell" могу делать на оном то, что мне интересно - пусть даже это никого не впечатлит. И я люблю этот язык, пусть и "не благодаря, а вопреки". И быть может мне повезло, что я учил язык, варясь в собственном соку и читая "слишком простую" «Learn You a Haskell For Great Good» - некому было отбить у меня желание к изучению.
Вот как то так.
https://www.youtube.com/watch?v=NB_VBl7ut9Y интересный "отчёт о проделанной работе" на ниве современного ретро-игростроя.

Автор не только накодил игру по старый-добрый C64 (причем "ванильный", т.е. без всяхих добавочных ОЗУ и звуковых чипов!), но и потрудился написать к ней музыку (он это умеет), сделать отличное оформление коробки, наклеек на дискеты, мануала и даже аудио-кассеты с саундтреком!

И надо сказать, что образчик софта получился довольно интересный технически: ограничение по ОЗУ заставило использовать текстовый режим с перегружаемым знакогенератором (помнится, я такое в DOS делал на TurboPascal). Огранничение же текстового режима в плане выбора цветов вылилось в "спрайты" 2x2 символа с раздельной раскраской четвертей - на мой взгляд, получилось очень интересно. И автор даже "оснастку" себе сделал: написал редактор спрайтов и редактор карты - "графический режим" получился довольно своеобразный и готового ПО для "рисования" в нём, очевидно, не было. Любопытно даже просто слушать, как автор рассказывает, какие страницы памяти он освободил от "системного ПО", чтобы влезли данные, что пришлось выкинуть (работа с джойстиком) и т.п. - роматника ретро-геймдева!

Увы, C64 у меня лично нет, никогда не было (и вообще - Коммодоры у нас в стране не имели такого широкого хождения), так что покупать эту игру я не буду :( Впрочем, автор планирует как минимум подумать над DOS-версией - в эту я бы поиграл с удовольствием! А пока подожду - вдруг образы дискеток где-то промелькнут и удастся пощупать C64-версию хотя бы на эмуляторе.

#gamedev
Вот и настал декабрь. А это значит, что прямо сейчас делается куча Advent calendars (это такие серии статей по одной на каждый день с первого декабря и до католического рождества). Вот и на Qiita уже заполнена и заполняется целая "стопка" календарей, например, по языкам программирования: https://qiita.com/advent-calendar/2017/categories/programming_languages Увы, почти весь контент на этой площадке написан на японском языке. Но как минимум код подглядеть обычно можно :)
Ну и конечно же в этом году тоже проходит Advent of Code (http://adventofcode.com/) - марафон про решению задачек с помощью программирования.

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

А задачки, надо сказать, довольно хороши - некоторые даже прекрасны! Так что AoC, я считаю, это отличный способ расчехлить свой любимый ЯП (лучше - не тот, на котором работаешь работу) и показать другим, да и себе тоже, что порох в пороховницах ещё есть! :)
От @haskellru отпочковался чатик @haskell_learn - для начинающих изучать #haskell. Может вдруг кто из читающих мой канал тоже "из этих" - милости прошу, початимся! :)
Забавная серия статей о #fsharp в рамках FSharp Advent Calendar:
https://medium.com/@mukund.sharma92/the-lord-of-the-rings-an-f-approach-an-introduction-of-the-blogposts-5d6ad7624fee

Первая статья, например, с мобощью анализа различных источников пытается дать ответ на вопрос "Какой из фильмов по вселенной ВК - лучший?". На мой взгляд, отличная мотивация для читателей!

#fsharp #datascience
Я как-то умудрился пропустить https://isomorf.io, а ведь я люблю всякое эдакое - структурное редактирование, новые подходы к самому процессу "написания" кода, вот это всё.

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

Резюмирую: пройдите Tour (по ссылке выше) - не пожалеете! Ещё порекомендую почитать блог, например, эти статьи:
- https://blog.isomorf.io/what-is-isomor%C6%92-bdc50ce597ee - кратко об идее проекта
- https://blog.isomorf.io/an-experiment-in-structured-code-editing-68b917a9157c - более конкретно про структурное редактирование

#future of #development
Отличная вводная статья по Template Haskell: https://markkarpov.com/tutorial/th.html
Тут вам и мотивация и несинтетические примеры разного уровня сложности. Рекомендую

#haskell
Проект Luna наконец дорос до публичной беты! Скачать можно тут http://www.luna-lang.org/

Luna, это ещё одна попытка сделать среду для гибридной разработки, где "можно и код пописать, а можно и стрелочками кружочки посоединять". Назначение у языка/среды/системы на этот раз не "общее", а вполне конкретное: анализ данных и визуализация результатов - как раз та ниша, где нарисованные мышкой data flows вполне применимы. Замашки, правда, у создателей наполеоновские: Luna targets domains where data processing is the primary focus, such as data science, IoT, bioinformatics, graphic design and architecture., но тут, как говорится, "сам себя не похвалишь - другие не будут хвалить" ;)

Ах да, особенно радует то, что язык у Luna - статически типизированный чисто функциональный с выводом типов. И этот вот язык, по заверениям автора - как раз таки общего назначения (непонятно только, зачем).

P.S. Написан язык Luna на Haskell, и вообще Luna uses the state of the art Haskell’s GHC runtime system, enabling it to run thousands of threads in a fraction of a second. Это приятно слышать :)

#haskell #visualprogramming
https://www.youtube.com/watch?v=P3Bd3HUMkyU

Вот честно скажу - впечатлило сразу и сильно! Наконец-то появляются проекты, предполагающие широкое использование всех тех сенсоров, которые напихали в контроллеры Nintendo Switch!

Да, тут всё из картона и канцелярских резинок, но тем интереснее собирать (и разбирать!) такое вместе с детьми и без. А уж какая манера подачи - ролик вообще шикарный, сразу заставляет хотеть и консоль и эти наборы! Отдельно меня порадовал виброход - отличное нецелевое использование виброотдачи контроллеров :)

Надеюсь лишь, что в последствии появится какая-то среда программирования прямо на консоли, пусть даже и в виде чего-то Scratch-подобного. Можно и текстовый язык прикрутить (Lua?), благо USB-клавиатуры к свичу подключаются. Главное - чтобы Nintendo захотела.

Ссылка на проект: https://labo.nintendo.com/ Там пока представлены два набора, но вполне могут появиться и другие. Буду следить.

P.S. Для меня это ещё одна песчинка на чашу весов, подписанную "купи уже Switch" :)

#nintendo #switch #diy
Arpeggigon - интересный проектик про синтез музыки с применением FRP (Function Reactive Programming).

Суть ясна из видео https://www.youtube.com/watch?v=yJteVN8OQYk
Исходники доступны тут: https://gitlab.com/chupin/arpeggigon (внутре у ней Haskell+Yampa)

P.S. Автор впечатлялся проектом reacTogon: https://www.youtube.com/watch?v=AklKy2NDpqs - реальным интерактивным столом-синтезатором.

#haskell #frp #music
Вот даже у Бобука про Labo написано!