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
Вот вам и вебчик на Nimic — с netcat под капотом!
(ехидный смех) >8:^]
​​Пока вчера ехал в поезде, решил порисовать. На #racket, конечно же.

Получилось такое. Не то чтобы это что-то сложное, но в детстве мне нравились такие вот параметризованные картинки, вот и решил тряхнуть стариной.

P.S. Надо бы этот "мирок" анимировать. Но нужно будет придумать, как сделать переход из света в тень для облаков (они из трёх кружков состоят, так что можно попробовать поэлементно затенять...)
​​Я уже пару раз писал про самодельные телефоны. Напишу ещё раз: знакомьтесь, WiPhone!

WiPhone не умеет подключаться к сотовой сети, вместо этого предлагается VoIP. Зато корпус у телефона на этот раз не настолько "диайвайный". Цветной QVGA экран, #esp32 вместо мозгов (:)), поддержка #arduino (языка), #micropython — софт писать сможет каждый. Из периферии имеется MicroSD, 3.5mm jack, классические кнопочки. Все шины вынесены на коннектор материнской платы.

Дальше начинается более интересное: к материнской плате можно подключить дочернюю, которая по совместительству будет ещё и задней крышкой корпуса. И таких "дочек" уже анонсировано немало! Тут и банальная "батарея побольше" (аж до 5Ah), и паяемая макетка. Есть матричка RGB-диодов во всю "спину" телефона, платформа с колёсами (RC Car — как будто нынче мало проектов a la "сделаем ещё и из этого радиоуправляемую машинку" >:^[). Присутствуют дочки с NFC/RFID и barcode-сканером — можно для складского учёта использовать или на LARP(ПРИ) использовать для сканирования пеньков на предмет клада.

Но мне лично гораздо интереснее задник с LoRa: вот это уже интересное дополнение к не-очень-мобильному-из-за-WiFi телефону, позволяющее "СМСить" на расстояния до 2км! И задник с BusPirate тоже выглядит полезно и "непопсово" :)

P.S. Не то чтобы этот проект сразу же заставляет себя хотеть, но как минимум польза от железки вместе с задниками BusPurate и LoRa может быть вполне ненулевая!

#diy #electronics
Печальная новость, конечно: BitBucket выпиливают поддержку Mercurial.

Я несколько лет проработал в компании, в которой Mercurial использовали для хранения кода. В своих проектах на git перешёл только из-за GitHub, а до этого использовал Hg — на BitBucket как раз. До сих пор считаю, что концептуально Mercurial приятнее и в использовании проще.
​​С микроконтроллерами фирмы Atmel я знаком давно, особенно — с семействами ATMega и ATTiny. На полках и балконе храню запас старых "мег" в DIP-корпусах — вдруг захочется светодиодом помигать! И пусть нынче на каждом шагу призывают забыть уже AVR и пересесть на STM, но любителей старых-добрых "авээрок" всё ещё предостаточно.

Взять хотя бы того же David Johnson-Davies, ведущего Technoblogy — с завидной постоянностью выдаёт статьи про свои проекты на базе малюток ATTiny. И какие проекты! 3D-часы, показывающие время в виде стереоскопической картинки (ага, такой, для просмотра которой нужно скрещивать глаза), функциональный генератор на восьминожке ATTiny85 и наручные часы на ней же (12 светодиодов, управляемые одной лишь восьминожной без какого-либо дополнительного обвеса вроде сдвиговых регистров!). Проще говоря, ну очень вдохновительно!

А недавно я порадовался статье "Getting Started with the New ATtiny Chips" (там же). Для меня стало новостью то, что "тиньки" всё ещё выпускают и даже обновляют модельный ряд! Нынешние ATTiny стоят доллар и меньше, но уже имеют на борту невероятные (для ATTiny, конечно) 32К ПЗУ, обязательные I2C, ЦАП, 16bit таймеры — уже не очень-то tiny, получается!

Надо сходить на "али" и поискать партейку восьминожек — пополнить балконный запас :)
​​Обычно dev.to выглядит, как англоязычный habr. И статейки там публикуются чаще всего капитански-графоманские.

Впрочем, бывают и исключения вроде этого: The Programming Language That Changed My Life! Статья простенькая, но воодушевляющая. Пусть автор и написал всего лишь, что смог таки открыть для себя Prolog и страшно рад этому. Комментарии к публикации тоже стоят ознакомления. В отличие от хабра, здесь всё культурно, никто никого "неосиляторами" не называет и ЧСВ не меряется. Люди просто делятся своими просветлениями от знакомства с теми или иными языками.

В статейке упоминается книга "PROLOG Programming for Artificial Intelligence" (за авторством Ivan Bratko) как открывающая глаза. Добавил себе в "прочитать когда-нибудь". Только сначала надо бы "The Reasoned Schemer" осилить…

#prolog #book
​​Решили тут похакатонить на #haskell#gamedev, движки, вот это всё.

Сабж: https://kocherga.timepad.ru/event/1057629/

Оффлайн, Москва, антикафе, бородачи с ноутами.
​​Нынче ретрокомпьютинг в моде, и даже некрокомпьютинг не то чтобы непопулярен :) Отдельно выделялись и выделяются деятели, создающие аналоги старых железок на базе современной элементной базы. Наконец, кто-то просто делает компы "под старину", не являющиеся совместимыми реализациями ретрокомпов, а скорее следующие духу того времени. На волне моды на ретрогейминг мода на ретрокомпьютинг, можно сказать, почти выбирается из свет из бездны маленьких маргинальных хобби (что-то я сегодня ехидный…)!

Вон, 8-Bit Guy опубликовал видео о своём "компьютере мечты" в его понимании. И я прям рад, что дело движется! Уж за качество работы этих товарищей я не волнуюсь, они знают своё дело и плюс-минус точно знают, что же хотят в итоге получить: retro-like компьютер с BASIC и олдскульными графикой и звуком, но чтоб непременно на производимых сейчас компонентах, да чтоб с понятной/понимаемой архитектурой и богатыми средствами для расширения (а не "всё на одной #fpga"). Сообщество вокруг проекта собралось активное и продуктивное: уже сваяли два варианта видеосистемы, опробовали несколько вариантов звуковой (не SID, и, похоже, уже не Yamaha), запилили реально работающие прототипы на промышленных печатных платах (а не эта ваша макетколапша!). Roadmap имеется, так что этому retro'ish computer — быть!

А ещё сейчас делаются проекты вроде SmartyKit Apple. Этот как раз в стиле "ничего не паяем, всё на breadboard и проводках", но зато ностальгичный Apple I со всеми вытекающими (из уст ностальгаторов слюнями).

Я же на неделе был на лекции одного из создателей GIGATRON — беспроцессорного компа на TTL-логике. Лекция понравилась, kit не купил (богато, но дорого!). Вот тут видеозапись лекции, рекомендую посмотреть — интересная вышла. GIGATRON, это RISC-комп гарвардской архитектуры, созданный по девизом "минимальное кол-во сложных чипов, да и остальных чтоб поменьше было" (потому RISC, и потому же гарвардская архитектура вместо фон-неймановской). Что же, этот проект тоже вполне удался: киты продаются, сообщество пишет софт и пилит аппаратные расширения, сам комп — работает и программируется. Программирование в силу ограничений железки, делается через боль и страдание, но зато сам процесс заставляет проявлять недюжинную смекалку! Чего только стоит реализация секдулинга пользовательского кода с втыканием кусков вычислений в паузы отрисовки во время обратного хода луча! Всё-всё, я закругляюсь с расшифровкой видео, дальше смотрите оригинал!

Напоследок скажу, что меня всё это радует, но для себя пока идеальную железку — такую, чтобы "shut up and take my money!"© захотелось прокричать — я пока не нашёл. Подожду железки от восьмибитного парня сотоварищи (она Commander X16 называется, кстати — ностальгичней некуда!).
Почитайте отчётик (осторожно, Habr!) о мероприятии — я прям проникся!

Сам давно хочу поучаствовать в чём-то таком — самодельщицко-ролевиковом! Чтоб прям и софт тематический пописать, попаять да помакетировать из скотча, картона и поликапролактона (#diy or die!).

Надо-бы узнать, как в такое вписаться в следующий раз…
​​VR нынче на рынке много, а вот AR-проектов маловато — всех потеснил MicroSoft с их Holo Lens. И тем интереснее каждый новый проект в этой области. А уж Tilt Five просто чудесный!

Сейчас проект выставлен на KickStarter, описан довольно подробно, но вот промо-видео у кампании — исключительно развлекательно-завлекательное. А интересно-то как раз "мясо"! За мясом предлагаю пройти сюда: тут вам и описание технологий от одной из создателей, и демонстрация работы, и вѝдение перспектив проекта — рекомендую к просмотру!

Из видео я лично вынес следующее. Очки работают на отражённом свете, поэтому формируют сцену только в рамках специального коврика, покрытого отражающими микросферами (я бы уголковым отражателям порадовался, но сферы сделать проще, конечно). На каждый глаз работает свой проектор. Свет идёт от очков к коврику, отражается обратно и через специальное стекло попадает в глаз — никакого короткофокусного проецирования прямо в глаза, как у Google Glasses!. До смотрящего доходит 85% света от проектора, и это при том, что сами очки довольно прозрачные и не мешают смотреть на реальность одновременно с разглядыванием дополнений к оной! При этом каждый смотрящий видит только свою картинку, хотя коврик для всех общий — отличная задумка для любителей настолочек (это основная ЦА на данный момент).

Проекторы использованы собственной разработки, сильно широкоугольные, с поляризованным светом. Первое даёт возможность видеть сцену даже боковым зрением, если вдруг отвернёшься, а ещё — масштабировать пространство за счёт дополнительных ковриков. Второе (поляризация) нужно для селективности и для фильтрации стеклом очков. Теперь о выдаваемой картинке: 720р при 180 к/с на каждый глаз — внушительно!

Спросите, как быть уверенным, что картинка с заданными характеристиками будет успевать доезжать до очков с вычислителя (любой совместимый девайс, умеющий в USB)? Отвечу: это и не нужно, ведь вся геометрия отображения сцены на плоскость с учётом положения игрока относительно коврика делается на девайсе! Да, очки получают трёхмерную модель, не учитывающую положение головы игрока, а весь трекинг делают очки, используя широкоугольную ИК-камеру с подсветкой (эта камера и даёт привязку к границам коврика). Вторая камера, подсвечиваемая и "видящая" на другой длине волны, трекает физические предметы на столе — фишки и карточки с QR-кодами, а также специальные контроллеры-волшебные палочки.

Отвязка расчёта сцены движком игры от обсчёта картинки для глаз игрока даёт возможность игре выдавать сравнительно низкий FPS, а для игрока картинка останется плавной! Это позволяет к одному компьютеру подключить столько очков, сколько он сможет обслужить в рамках конкретной игры. А ещё при "лаге" картинки не страдает зрение игроков, ведь замирание графики не приводит к замиранию рисовки сцены — можно даже зависшую игру продолжать разглядывать!

Сейчас девайс работает с Unity, но потенциально сможет работать с другими движками. Создатели уже договорились с Fantasy Grounds о портировании их виртулальных сред для игры в настолки, а это уже серьёзно! Более того, будет работать cross play с теми, у кого ещё нет очков, но есть компьютер или мобильный девайс! Не замкнутая на себя система — это отлично!

Давно такого не было и вот я опять воодушевлён! Буду следить за прокетом!

#ar #gamedev
​​Есть такой аудиочип — MOS6581, в народе SID (Sound Interface Device). Чип очень любим и комодорщиками (фанатами #retrocomputer Commodore 64), и в целом любителями #chiptune.

Микросхема содержит три управляемых генератора тона и набор фильтров. Генераторы тона умеют генерировать колебания разной формы — пила, треугольник, прямоугольник и шум. Из фильтров доступны ФНЧ, ФВЧ, ПФ и комбинации. Более того, каждый генератор поддерживает управление ADSR! Словом, SID — настоящий трёхголосый Lo-Fi синтезатор в одном Narrow-DIP корпусе!

Для #sid пишется огромное количество музыки и сейчас, да и во времена молодости Коммодора писались свои "нетленки", вроде Monty's run от Роба Хаббарда (здесь можно и послушать и посмотреть визуализацию сигналов генераторов).

Существуют и специальные модификации железа вроде 2SID, позволяющие с того же C64 управлять сразу парой SID-чипов. Вот интересное видео по теме, заодно демонстрирующее работу в специальном композиторском ПО для C64 — MSSIAH (советую вообще присмотреться к каналу автора, если вас в целом цепляют чиптюн, синтезаторы и ретро-железки. И circuit bending заодно — про это тоже расскажу как-нибудь).

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

И приходится любителям SID делиться на два лагеря: любителей оригинала, потребляющих старые запасы, и не столь принципиальных ценителей, готовых использовать и достаточно правдоподобные функциональные аналоги.

Вторым может серьёзно помочь проект FPGASID. Как можно догадаться по названию, это реализация SID на #fpga. По заверениям авторов, FPGASID старается быть неотличимым от оригинала с точки зрения аналоговой части и самого звука. А ещё является "drop-in заменой" для старичка, т.е. может быть вставлен в кроватку, рассчитанную на оригинал! Более того, FPGASID умеет притворяться не только одиночным SID-чипом, но и той самой 2SID-сборкой! Теперь и у желающих "просто приобщиться", вроде меня, появилась возможность распробовать SID-чиптюн без необходимости шерстить eBay в поисках заветного "дохлого C64 с живым SID"!

В заключение добавлю ссылку на 2SID-кавер на "Space Oddity" Дэвида Боуи. Трек прям "с пылу, с жару", презентован в сентябре этого года. А тут, если не хватит одной лишь музыки, можно посмотреть на запуск FPGASID в космос под микс 2SID-версии "Space Oddity" с оригинальной песней — эпичненько!
​​Вот ещё пример #sid-музыки: шедевральный Last Ninja 2 OST, Central Park (по ссылке заодно и графику можете оценить. ИМХО, C64 в первую очередь звуком примечателен — на её фоне картинка впечатляет меньше).

У этого трека есть уйма каверов, вроде этого от Fastloaders, или этой версии от KATOD (модифицированный С64 с оригинальным SID, а ещё — электрогитара :)) и просто неплохого "метал-ремикса".

P.S. К KATOD присмотритесь, если ретромузычка подобного плана вам нравится. У них как раз недавно клип "Superkomputer" вышел тематический: PowerGlove, спектрумы, ковёр, бигуди — очень аутентично!
Я уже писал про свои эксперименты с WebAssembly/WASI, недавно даже подкаст-монолог про это дело записал. Словом, я за темой слежу, причём слежу именно за направлением "универсальных бинарников".

А тут такая новость: Mozilla, Intel, RedHat и Fastly создали Bytecode Alliance — сообщество по пилению того самого нового формата бинарников.

Суть: реализовать возможность запускать универсальны WASM-бинарники в защищённых окружениях на разных системах и при этом управлять а) зависимостями и б) доступом зависимостей к системным ресурсам. Пункт "б", ИМХО — самый интересный! Можно взять стандартную библиотеку работы со строками (ага, leftpad) и запретить ей доступ ко всему, кроме, собственно, работы со строками!

Fastly регулярно пишут про свои эксперименты с Rust/Wasmer и им очень интересна вся эта тема с управлением правами wasm-бинарников. FastlyLabs открытые проекты по теме пилят. Словом, прямой коммерческий интерес к такому применению Wasm уже есть. А это очень важно для выживания технологии!

Отдельно радует роль #rust в около'wasm'овой экосистеме: на нём и рантаймы пишутся и инструментарий вроде wascap. Не говоря уж о том, что Rust — один из первых языков, начавших прорабатывать компиляцию в Wasm.

Ждём, надеемся, держим руку на пульсе #wasm :)
​​Так уж случилось, что я тут веду очные занятия по "основам типизированного ФП", в качестве учебного языка использую, как водится, #haskell. На днях мы прошли монады и написали библиотечку парсер-комбинаторов. На очереди Transformers, robots in disguise… ой, не эти, а обычные ("monads in disguise"?).

Изначально записалось аж тридцать человек(!), десятка два начали ходить, сейчас ходят 8-10. Один ученик в своём блоге о занятиях даже заметку написал — приятно! А вот домашние задания делают не все, поэтому приходится разбирать оные на самих уроках…

Зато потихоньку нарабатываю методтички (Literate Haskell + PDF) — пригодятся для будущих сессий!
(на картинке находится акроним TFPB, от Typed Functional Programming Basics)
​​Я почему-то всегда думал, что я уже писал здесь про Propeller и саму контору Parallax. Оказалось — нет, не писал. Восполняю пропуск!

Есть такая фирма, Parallax. Занимается разработкой своих линеек микроконтроллеров, а также наборов для обучения робототехнике.

Эпоха Stamps

В 199х Parallax была известна своими BASIC Stamp — это такие микроконтроллеры, которые работают под управлением специализированной версии #BASIC. Каждый контроллер выглядел, как 24-ногая микросхема (на самом деле это была маленькая платка), которая для работы требовала только батареи на 9В. Достаточно высокоуровневый, язык PBASIC позволял управлять множеством видов периферии, код загружался в ППЗУ по последовательному порту (позже через USB2UART), а ведь до Arduino оставался ещё десяток лет! Платформа была достаточно популярна тогда, но имеет своих почитателей и сейчас.

В 1997 году Parallax запустили образовательную программу "Stamps in Class", которая знакомила учеников с микроконтроллерами, основам разработки программ и электронных схем. Ученики даже программировали роботов Boe-Bot (один из самых популярных продуктов Parallax), имеющих BASIC Stamp 2 в роли "мозга".

Что интересно, по началу BASIC Stamp и BASIC Stamp 2 делались на баже микроконтроллеров PIC, которые устанавливались на ту самую плату-сборку, имитирующую DIP-корпус. Позже Parallax начали применять свой собственный PIC-подобные контроллеры Parallax SX, и продолжали применять до 2009г, когда чипы были сняты с производства.

В 2002г Parallax сделали смелый шаг — выпустили Javelin Stamp. На этот раз "почтовые марки" предлагалось программировать на Java! Да, это была урезанная версия и языка и платформы, но всё равно это было впечатляюще!

А потом в 2006г stamps наконец перешли на Parallax Propeller и язык Spin. Об этом в следующем посте <музыка из JoJo>
​​(продолжение предыдущей записи)

Эпоха Propeller

Propeller, это уже полностью детище самой Parallax, микроконтроллер с процессором 32-битной RISC-архитектуры, имеющим восемь ядер (2006г, напомню!). Программировался контроллер на своём ассемблере, а также на отдельном языке Spin — всё это, а также IDE для Spin разработали сами Parallax!

Для чего же микроконтроллеру восемь ядер, спросите вы? Ответ на этот вопрос и делает Пропеллер таким интересным! Дело в том, что Propeller не нёс на своём борту выделенных аппаратных шин, вроде UART, SPI и i2c: вместо этого предлагалось реализовывать соответствующие шины программно и поручать их обслуживание отдельным ядрам! Даже вместо прерываний и таймеров предполагалось использовать именно отдельные ядра. Потенциальные возможности поражали, ведь получился "почти ПЛИС", только программируемый на процедурном языке: представьте, что вы можете сделать контроллер с семью последовательными портами (одно ядро будет таки выполнять вашу программу) или что-то вроде "3 SPI + 2 TWI + 2 Dallas 1-wire"!

Кроме того, разные ядра могли по-разному тактоваться, что сильно упрощало формирование видеосигналов разных форматов. Или, скажем, цифрового звука.

Ввод-вывод был организован через один общий 32-битный порт со специальной подсистемой, защищающей от конфликтов при совместном доступе. Каждый из 32 пинов мог выдавать ШИМ!

Сам Spin был высокоуровневым языком, компилирующимся в байткод, который и выполнял Propeller на отдельных ядрах (их называли Cogs) — по интерпретатору на ядро. Язык использовал отступы для обозначения блоков, в коде допускались ассемблерные вставки.

Со временем появились компиляторы для C и PropBASIC (специальный диалект для Propeller), пара реализаций #Forth и прочие менее успешные поделки вроде подмножеств Pascal и Java.

Увы, железка получилась слишком уж специфической: для новичков она была сложна (трудно в голове уложить восемь программ), а для промышленности — слишком необычна. К 2010ым производство свернули.

В 2014 Parallax открыла под GPL 3.0 как всё ПО, так и всё "железо": код интерпретатора Spin, сред разработки, Verilog-описание процессора, HDL-файлы для обвеса. Так что Propeller 1 теперь полностью открыт. Хотя бы это радует!

Parallax тогда же объявил, что теперь они занимаются разработкой нового Propeller с производительностью 200 MIPS/Cog (вместо 20 MIPS на ядро у Propeller 1). Но я не знаю, в каком состоянии сейчас проект находится :(

Вторая жизнь Propeller 1

Так как платформа открыта, энтузиасты воплощают её в том или ином виде на FPGA. Есть и коммерческие реализации. Например, Soft Propeller от Trenz-Electronic — реализация Propeller на базе Xiliz Zinq (я как-то писал про Pynq — ПЛИС из этого же семейства, программируемый на Python). Что интересно, Soft Propeller физически совместим со старым "пропеллерным" железом: платка с ПЛИС, выполнена в том же формфакторе Narrow DIP, в котором выпускался оригинал, и может быть просто вставлена на место старого чипа! Люблю такое!
Демо либы для NTSC-графики. Тетрис на двоих. Редактор Spin-кода в SVGA режиме. Всё работает на #Propeller