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
Многие ещё помнят ролик про матч по настольному теннису между человеком и роборукой от KUKA. С тех пор роборуки в рекламе и вообще массмедиа применяются периодически и уже не так удивляют.

Меня же в своё время робот-теннисист не так впечатлил, как впечатлили танцующие роботы (опять KUKA?) в шоу Timeless 2013 от Mylène Farmer. У Милен вообще каждое шоу, это праздник для ушей и глаз (да, я фанат), а тут получилось ещё и технологичненько: в 2013 промышленные роботы для массового зрителя были в новинку, да и подача не подкачала!

Так это выглядело, когда роботы подтанцовывали, а вот танец роботов без человеческой подтанцовки :)

Кстати, коллекционное издание записи концерта выглядело, как 40-сантиметровая фигурка такого робота! Увы, не функциональная...

P.S. концерт нужно целиком смотреть, конечно - он отличный, как обычно ;)

#robot #music
Я тут на днях спонтанно попроцедурил на #racket. Можно смотреть тут.

Суть: процедурная графика на Racket в среде DrRacket, пара рекурсивных картинок, немножко анимации.

#procedural_generation
Интересный проектик, реализованный целиком на #elm: Kite, довольно продвинутый редактор направленных графов с группами вершин, метками, цветами, автоматическим и ручным "выравниванием" конфигурации - удобная штука для своих задач.

В интерфейсе есть заглушки для будущих улучшений: визуализации алгоритмов, выборок и запросов по графу, игр на графах и т.п. - есть за чем последить!
Как-то резко всплыли на моём горизонте сразу несколько вещей, связанных с ПЛИС (#fpga), и как ни странно... с #python :)

Во-первых, Pynq - инструментарий для Xilinx Zinq.

Zinq, это такие SoC (System on Chip) c ARM ядром рядом с FPGA и даже GPU в некоторых моделях - отличные штуки для машинного зрения, самоуправляемых автомобилей, вот этого всего. Pynq позволяет всё это богатство мощностей программировать прямо из Jupyter Notebook! Для исследований на стыке железок и datascience - "самое то"!

Платы на старших "цинках" довольно дорогие, что не удивляет. Но есть и решения "для дома", например платы вроде Pynq-Z2 (на картинке к посту) - розовенькие, что характерно :)

Если приглядеться к картинке, то можно увидеть шину расширения от Raspberry Pi и посадочное место для #arduino sheilds, помимо USB host, пары HDMI, Ethernet и прочих mini jack. Идельная плата для хоббиста-электронщика! Ещё и цена подъемная.
Второй проект - MyHDL, инструментарий, позволяющий использовать #python как HDL (язык для описания железа).

MyHDL транслирует код на Python в Verilog и VHDL, после чего разработчик может использовать стандартные для нужной #fpga инструменты. Помимо того, что в Python доступна работа с периферией, заявлена возможность трансляции практически любых функций, реализованных на Python, в функциональные аналоги на HDL!

Вот и статейка по данной теме (да, habr-не-торт, но это не перевод, а оригинальный материал, так что можно потерпеть).
Раз уж я пишу про #fpga и генерацию HDL, не могу не упопянуть про ClASH - основанный на #haskell функциональный HDL, транслируемый в VHDL/Verilog/SystemVerilog.

Тут вам и система типов выразительная и REPL для "поиграться вживую". И очевидный выигрыш от декларативщины. Например, вот так выглядит реализация FIR-фильтра (украл с офсайта):

fir coeffs x = dotp coeffs (window x)
where
dotp as bs = sum (zipWith (*) as bs)

Декларативно!

А ещё у проекта есть блог с отлично оформленными статьями. Про систолические массивы, например ;)
Широко известный в узких кругах The 8-Bit Guy рассказал о новом проекте - 8/16-битном компьтере с BASIC на борту.

Железка будет совместимой с современной периферией (в первую очередь - с дисплеями) и реализована будет на настоящем 65816 (использован будет реальный чип, а не эмулятор на ПЛИС).

Назначение Commander 16 (так проект называется сейчас) - быть наглядным пособием по архитектуре компьютера. Такой компьютер должен быть обозрим своим пользователем целиком, от железа и до ПО. Поэтому и предполагаются простой процессор, BASIC в ПЗУ, отсутствие ОС.

Лично я очень рад появлению этого проекта и идеи авторов мне очень близки!

P.S. В ролике мелькают похожие - и уже существующие - проекты, что вызывает отдельный интерес.
Наткнулся на интересный бложик, где автор пишет про #racket, макросы и... программирование Commodore64 (#c64) - на Racket и макросах!

Обязательно почитайте эту и эту статьи - это прекрасно! Специальный диалект для Racket, позволяющий с комфортом писать на ассемблере для C64 (или для эмулятора VISE), это сильно!
Я продолжаю поглядывать, как там у эльмеров. Недавно вот попробовал перевести на пробу один из своих проектиков на #elm 0.19 - смог :) А ещё я послушиваю выборочно подкастик elmtown - порой приходят очень интересные гости.

Так вот, в выпуске №43 гостями выступили авторы расширения для IntelliJ IDEA, реализующего поддержку Elm для этой IDE. Оказывается, разрабатывается этот плагин внутри и на деньги MicroSoft(!), написан на Kotlin (не то чтобы удивительно, но тоже приятно!) и востребован внутри компании - у MS есть даже продукт с фронтом на Elm! Эльмерам на заметку: если спросят, "и где этот ваш Elm используется?", можете смело говорить - "в MicroSoft!" :)

Отмечу, что и в целом выпуск у подкаста получился интересный. Гости рассказали и про проблемы, с которыми столкнулись при разработке упомянутого расширения, и про саму "кухню" плагиностроения для IDEA:
- почему нужно переносить "половину компилятора" в IDE,
- насколько сложно поддерживать функционирование инструментов в условиях частично невалидного и/или синтаксически некорректного кода,
- как непросто сделать поддержку нескольких версия языка одновременно (такое может потребоваться в рамках даже одного проекта - во время поэтапного перевода частей оного на свежую версию).
Если вам интересна тематика средств разработки, настоятельно рекомендую послушать!
Через полтора месяца пройдёт очередной Lisp Game Jam. Напоминаю на всякий случай, вдруг кто соберётся поучаствовать? :) Можно присылать работы, созданные с помощью CL, #clojure, Scheme (#racket) и даже Emacs Lisp!

#gamedev #event
Я сюда периодически пишу про #fantasy_consoles (#pico8 в основном).

Нашёл довольно большой список "моделей": https://paladin-t.github.io/fantasy/index. Тут вам "железки" разного толка, программируемые и ASM, и на привычных уже для виртуальных консолей Lua/BASIC/PYTHON. Экзотика тоже встречается: Pix64, скажем, "программируется" на PNG :)

Присутствует даже "консоль" для для Nintendo 3DS: что может быть лучше написания своей игры путём натыкивания BASIC-кода стилусом на виртуальной клавиатуре - стоя в метро, конечно же!

P.S. Обязательно посмотрите хотя бы на Pix64 программируемую картинками (ссылка выше). Как мне кажется, выбран наиинтереснейший подход к декларативному описанию простых игр!
Для #esp8266 существует интересный игровой дивжок: Little Game Engine. На железке работает виртуальная машина, код для которой можно писать в online IDE, запуская прямо на встроенном в среду эмуляторе! Так что не "интернетом вещей" единым жива ESP8266, как говорится :)

Тут можно посмотреть демонстрацию работы:
https://www.youtube.com/watch?v=hUVykJf2aws

Статейка по теме:
https://hackaday.com/2019/03/11/esp8266-gets-its-game-on-with-open-source-engine/

#diy #electronics #gamedev
Минутка (само)пиара:
Forwarded from Хекслет
Полезный вебинар в копилку знаний для программиста! 15 марта в 19:00 по МСК на ютуб-канале - "Функциональное программирование как парадигма: цели, способы, применимость". Рассказывает разработчик и преподаватель Hexlet Алексей Пирогов.

Трансляция доступна по ссылке https://youtu.be/0GX4JRAGEzc. Подписывайся на канал и ставь колокольчики, чтобы не пропустить!

💡 БОНУС для слушателей: на вебинаре расскажем, как выиграть билет на SECON'19.
Рубрика "ссылочки от читателей": http://themagicsmoke.ru/courses/stm32/

По ссылке можно найти объемный и всеохватывающий курс по работе с микроконтроллерами STM32. Описывается и работа с самими м/к и взаимодействие с популярной периферией, и внутреннее устройство микроконтроллеров - материала действительно много!

#learning #electronics #stm32
Manning выпустили новую бесплатную книжку: https://www.manning.com/books/exploring-haskell

По сути это несколько глав из книги по основам #haskell и одна глава из книги для продолжающих (от @bravit111). Главы подобраны неплохо, "почувствовать вкус" дают :)

#book
Раз уж так сталось, что я теперь преподаватель на Hexlet и буду поднимать там направление обучению #python, то пропиарю бесплатный дочерний ресурс с курсами по "самым основам": https://code-basics.ru

На CodeBasics есть курс по Python за моим авторством, а ещё начал формироваться курс по #racket (моё участие в его наполнении пока довольно скромное, но то ли ещё будет!). Курс по Racket не совсем новичковый, он в основном расчитан на тех, кто уже с программированием знаком - "второй курс", можно сказать - но и особой сложности не ожидается, "можно давать детям" :)

Приглашаю бетатестить это всё. Можно писать комменты к урокам, а можно и в гитхаб реквестить!

#learning
Ох, и тяжко курс по #racket делать! Даже вводный. А всё потому, что терминологии много необычной! Зато весело :) Перелопатил и причесал базовые уроки, скоро больше "мяса" будет.

----------

Пока же рекомендую посмотреть, как на Racket "делают вебчик":
Continue: Web Applications in Racket

Подход, как водится, интересный. Мягко говоря :) И если генерацию HTML из S-expressions ещё можно себе представить, коли хоть раз видел уже подобное в других лиспоподобных языках, то подход к управлению состоянием абсолютно прелестный и абсолютно "схематичный" - continuations!

Исторически в Scheme (а поэтому и в Racket) машинерия для CPS (Continuation-passing Style) присутствовала из коробки, наряду с оптимизацией хвостовых вызовов. Поэтому библиотек, использующих этот подход, для Racket написано немало.

Вот и web-server-lib такая. Мы описываем разметку страницы в виде функции, а к ссылкам прикрепляем continuations, содержащие рекурсивные вызовы этой функции для всех состояний(!), в которые можно перейти из текущего!

Т.о. состояние не покидает функцию, а продолжает жить между вызовами оной. И более того, для каждой сессии в браузере состояние у "вьюхи" по умлочанию будет своё! Библиотека сама на себя берёт заботу о сессиях и coockies.

Разумеется, можно развить приложение до использования глобального состояния, в т.ч. отказаться от CPS вообще, но с развлекательно-познавательной точки зрения интересен как раз искоробочный подход на базе продолжений.
Вот собственно пример из туториала (я бы на let сделал вместо локальных define, но это такой старый schema style). В остальном - один continuation другим погоняет :) Но для stateful проложения вполне компактно.
Смотрите, какая прелесть!

Это Circuit Playground Express - платка от AdaFruit в их любимом исполнении (круглая). На борту
- неопиксели (куда уж без них?)
- микрофон
- пищалка
- датчик температуры
- датчик освещённости
ну и по мелочи всякое вроде светодиода "на помигать" и пары кнопок.

Мозги - Cortex M0 (атмеловский ATSAMD21) + 2МБ флеша (для CircuitPython, о котором я ещё напишу!)

#electronics #python