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
Сделал на своём #web сайтике-долгострое раздел для #daily_art.

Индекс и странички генерируются с помощью shake-скрипта из mustache-шаблонов (это всё на #haskell). Подсветка синтаксиса для Racket-кода делается вызовом CLI-утилитки из пакета pygments (это уже #python). А картинки рендерятся непосредственно вызовом #racket. Вот такой вот монстр Франкенштейна :)

Загружал первую версию контента через web interface редактора сайтов прямо на NeoCites (на нём сайтик хостится). Но в будущем воспользуюсь из API - или сам реализую клиентскую часть, или официальный CLI-tool возьму (который на Ruby написан - ещё один зверь в зоопарк). А в конце это всё можно будет упаковать в Docker-контейнер для красоты и модности :)
В кои-то веки выходные провёл как настоящий программист - оба дня кодил что-то (по паре часов всего в день, но всё же ;)).

****************

В Субботу ходил во второй раз на Dojo по #clojure. В этот раз на команды разбивались случайным образом, что, на мой взгляд, значительно интереснее. И полезнее для networking - на clojure-тусовки я попадаю редко, поэтому лишний шанс познакомиться с людьми, которым небезразлично ФП, меня однозначно радует :)

В прошлый раз мы писали Conway's Game of Life: получилось это. Работали двумя парами и та, в которой был я, отвечала за логику. Сделали всё на множествах через операции над ними (пересечение, объединение). Всем понравилось.

В этот же раз писали игру 2048 втроём, поэтому решили не делиться - за одним компьютером вместе творили. Решили сделать упор на логику, а интерфейс пользователя (который сразу решили сделать текстовым ;)) оставить на потом. Логика игровая получилось довольно компактной: сделали только "сдвиг влево", а остальные операции получили через транспонирование и отражение матрицы! Тесты делать было лень, поэтому разработка проходила "по локти" в REPL, что тоже добавило веселья. В установленное время мы уложились и наша реализация 2048 вышла вполне играбельной :) У "соперников" были вариант на #clojurescript в браузере и реализация с "текстовым UI" в отдельном графическом окне (на этой штуке рогалики бы писать!).

P.S. Понравилось, планирую продолжать посещать.

****************

В Воскресенье я к генератору подсайтика с #daily_art прикрутил генерацию миниатюр. А потом решил, что текущие правила для #shake "костыльноваты" и решил переписать :) Получившийся вариант генерации динамических правил мне нравится и важные фишки shake, вроде кэширования результатов сборки, так же работают. Результат можно посмотреть тут, а здесь можно глянуть на исходники.

P.S. Надо бы написать статейку про Shake для ruHaskell.
Ещё #daily_art

https://astynax.neocities.org/daily-art/2019-09-24-circuit-board.html

Этот простенький, но мне показался интересным
Оказывается, для #racket в teachpack'е для курса HTDP, помимо библиотеки 2htdp/image, с помощью которой я свой #daily_art рисую, а также 2htdp/universe, с помощью которой можно нарисованные картинки анимировать и даже превратить в игру(!), есть библиотечка тайлов (tiles) Planet Cute в виде racket-библиотеки 2htdp/planetcute!

Сам "Planet Cute", это набор изображений "строительных блоков", с помощью которых можно делать игры. И сами изображения и исходные макеты свободно доступны. Каждый блок представлен отдельным изображением. Все изображения имеют одинаковый размер и отлично (и очень просто!) компонуются (не нужно возиться с tileset'ом). На мой взгляд, это отличный стартовый набор для начинающего игростроителя :)

P.S. Мне уже не терпится что-то написать с использованием images/universe/planetcute. М.б. даже законченную игру :)

#gamedev
world.png
231.7 KB
Вчера поигрался с planetcute, получилось это (исходник).
Челендж #daily_art продолжается, почти каждый день "рисую"! Но проблема придумывания подписей уже начинает напрягать. Нынешнюю картинку, впрочем, поименовал сразу. Знакомьтесь, "кунжутная халва" :)
Кстати, пока я искал альтернативы для pygments, мне подкинули интересный вариант на замену: bat

bat, это такой cat(1), только написанный на #rust, и умеющий красиво подсвечивать синтаксис разных форматов файлов с помощью схем подсветки от SublimeText (использует библиотеку syntect).

Приятно, что таких проектов становится больше: rq, ripgrep, fd, а теперь ещё и bat (автор тот же, что и у fd, кстати). Я считаю, что нам нужны современные версии "рабочих лошадок", работающие быстро и стабильно - да такие, в которые и поконтрибутить приятно!
https://www.youtube.com/watch?v=y-xgWLYQc4g

Simon Peyton Jones как весгда прекрасен! И тема доклада лично меня равнодушным не оставила - всегда чувствовал в себе тягу к образованию других :) Доклад касается обучения CS в целом, также повествует про подвижки образовательной машины Великобритании в сторону правильного преподавания CS ученикам прямо со школы. Саймон призывает делать упор не на технологии, как это было в прошлом (оказывается, там тоже детей учили использованию MS Office), а на основы и идеи. В конце доклада можно найти кучу ссылко на расличные инициативы в озвученной области, а частности на Project Quantum - попытку сделать единый вопросник для тестирования изучающих CS.

Настоятельно рекомендую к просмотру!

#education #talk
Минутка #retrogaming

На Internet Archive теперь доступна библиотека игр для C64. В общей сложности 10К игр. Всё как обычно работает прямо в браузере (на обраузереном силами emscripten эмуляторе Vice).
Образовательный набор "собери свой телефон": https://www.kickstarter.com/projects/albertgajsak/makerphone-an-educational-diy-mobile-phone

MAKERphone, это настоящий тетефон, только старой школы. Никакой ОС не имеет. "Думает" с помощью ESP32, умеет запускать MicroPython. Звонит и шлёт SMS через GSM-модуль. Звук выводит через отдельный модуль с ЦАП и усилителем. Корпус собирается из листов оргстекла, паяются только детали с монтажём в отверстия (SMD-компоненты уже распаяны).

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

Одобряю.

#diy #electronics #kit
Авторы MAKERphone до этого уже собирали деньги на подобный проект. Это был MAKERbuino: https://www.kickstarter.com/projects/albertgajsak/makerbuino-a-diy-game-console

Это Arduino-совместимая плата с кнопками и монохромным LCD-экраном, выполненная в форм-факторе портативной игровой консоли. Нацеленная на использование в качестве оной же - после того, как устройство соберут и прошьют соответствующим ПО. Как минимум "змейки" и "тетрис" с "арканоидом" на таком железе можно реализовать :)

Ах да, корпус и здесь собирается из слоёв огрстекла. Это вообще довольно популярная среди хоббистов технология корпусирования.

P.S. Эти наборы можно купить. Со временем и MAKERphone будут продавать, думаю.

#diy #electronics #kit #gamedev #retrogaming
Красиво
Раз уж публикую сюда ссылочки на наборы, упомяну и Meggy Jr RGB: https://shop.evilmadscientist.com/tinykitlist/100-meggyjr

Этот набор довольно старый. Я его в первый раз увидел, когда только-только начал с микроконтроллерами знакомиться - десять лет назад.

По сути же Meggy, это тоже карманная игровая консоль. И у неё даже экран цветной! Вот только разрешение экрана необычное: оным у Meggy работает 8x8 RGB матрица - очень концептуально :)

Да, пикселей мало. Зато цветов много. И процессора хватит даже маломощного (ATMega168P, как в оригинальной Arduino). Как минимум, можно программировать красивые световые эффекты!

#diy #electronics #kit #gamedev
Опять же, красиво
Немножко попиарю книжки по Haskell

#haskell #learning #book
Forwarded from bravit-about
В издательстве Manning Publications отличная Deal of the Day с тремя книжками: Haskell in Depth, Get Programming with Haskell и Type-driven Development with Idris. Можно воспользоваться 50%-й скидкой по промокоду DOTD101718 на все три книжки. В двух не своих я, кстати, упомянут в благодарностях, а в Get programming был ещё и technical proofer. Очень их рекомендую.
Многие знают, что на железячных конференциях частенько оформляют бейджи участников в виде печатных плат. Чаще всего такие платы так или иначе подразумевают возможность поиграться с ними (похакать). Скажем, бейдж может быть #arduino совместимой платой с матрицей светодиодов и акселерометром и показывать при запуске умолчательной прошивки анимацию, управляемую наклонами корпуса. Иногда бейдж может подразумевать ещё и самостоятельную сборку (которую часто можно произвести прямо на мероприятии!). Меня такое всегда очень радует (посмотрел на стопку бейджей с обычных программистских конференций...).

Вот один из самых крутых электронных бейджей, которые я видел: https://hackaday.io/project/161859-2018-hackaday-superconference-badge
Это полноценный компьютер на базе PIC32 c QWERTY-клавиатурой, трёхголосым синтезатором звука и цветным экраном, запускающий BASIC, эмулятор CP/M (на котором можно поиграть в ZORK!). И, как водится, плата оснащена портами GPIO, которые в данном случае доступны из BASIC, т.е. внешними железками можно поуправлять, не подключая бейдж к большому компьютеру.

P.S. На hackaday есть даже раздел с подобными бейджами: https://hackaday.io/list/25935-conference-badges

#diy #electronics
Для тех, кто предпочитает читать на русском и в бумаге, и при этом хочет изучить #haskell порекомендую эту книгу. Оригинал вышел в марте, так что книга свежая. И цена за томик очень демократичная - "ДМК Пресс" в этом плане всегда радуют.

#book
Forwarded from argent_smith
Популярная вводная лекция Виталия Брагилевского о теории алгоритмов (или вычислений): https://www.youtube.com/watch?v=PK1YzLdTqXc
Наконец дошли руки поиграться с парой BBC micro:bit.

Если быть точным, то железки я щупал и раньше, но периферию так и не подключал ни разу и радиомодуль не пробовал использовать.

Пользовал MicroPython, потому что альтернативы пока не нашёл, а на JS писать не хочу. Был бы iPad, я бы попробовал Swift: да, теперь можно и такое, так что фанаты яблочных сред и языков - обратите внимание! :)

"IDE" внутрибраузерная, в которой предлагается писать Python-код, простенькая, конечно, но зато и работает без установки чего либо. Даже прошивка сделана очень просто: microbit видится в системе, как storage device без единого файла на нём, и при сохранение .hex-файла на который происходит прошивка и запуск программы! Очень остроумно! А в качестве альтертативы существует CLI-утилитка, позволяющая закидывать файлы на плату вручную - в т.ч. и файлы данных - и читать (и писать!) из питона стандартными средствами (эмулируется файловая система). Места немного, около 30КБ, но всё равно очень удобно. Также данный "ручной режим" приятен тем, что можно закидывать на плату python-модули и импортировать через стандартный же import, скажем, в головной модуль main.py.

Изначально хотел опробовать радиомодуль - у меня две платки как раз и я их связал в "сеть". Как и ожидалось, всё работает сразу и при минимуме усилий! Приятно. Пока ничего сложнее "нажал кнопку на одном модуле, а другой мигнул экраном, и наоборот" не придумал. Но имею план попробовать сделать автоматический выбор ведущего и синхронизацию с оным ведомого (жаль, что микробита у меня талько два!).

Потом откопал в закромах пьезопищалку и опробовал искоробочные либы для воспроизведения музыки и синтеза речи(!). Прямое подключение к порту пищалку не раскачивает как следует, так что надо бы в будущем добавить ключ. Но всё равно результат меня порадовал. Музыку играл встроенную: микробитова stdlib богата на встроенные приятности и music.play(music.NYAN) была вполне узнаваема :) Синтез речи очень условный, но зато можно тонко управлять произношением и выводом. Как миниум, здорово, что он есть из коробки.

Отдельно отмечу документацию - она отличная. В лучших традициях питонопакетов всё лежит на readthedocs, удобно структурировано, приятно читается.

#electronics #microbit #micropython #python
This media is not supported in your browser
VIEW IN TELEGRAM
Звуки взяты из примеров в документации - BBC не смогли не припомнить "Доктора" :)