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
Провёл второй выпуск подкаста. В этот раз про железки поговорили: #arduino, #raspberrypi, #fpga — обо всём понемногу.

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

Гость подкаста, Айнур, представлял компанию iArduino, про железки которой я уже рассказывал. У ник и канальчик есть.
Есть для #python такая библиотека, prompt_toolkit (я вроде как писал уже про неё?). Она позволяет создавать свои интерактивные командные оболочки с автодополнением, всплывающими меню, статусной строкой, богатыми средствами редактирования командной строки.

На базе toolkit создан отличный Python REPL, ptpython. IPython тоже перешёл на использование PT в какой-то момент — и это отлично, ибо унификация!

Но не #repl едиными жив PT. На нём сделаны
- pgcli, популярная командная оболочка к PostgreSQL,
- wharfee, оболочка для docker CLI (да, с автодополнением контейнеров, процессов, тегов!),
- Kube-shell, оболочка для Kubernetes.

Питонистам может быть интересен проект click-repl, который превращает любое приложение с CLI на базе замечательной click в интерактивную программу (добавляет команду repl, с очевидным поведением).

Есть даже shell полноценный: xonsh. Умеет и команды запускать и автодополнять всё, от ключей командной строки и путей до страниц в man. По совместительству является ещё и Python REPL — позволяет сделать ls, а результат вызова прямо в list comprehension обработать!

Из интересных и курьёзных проектов PT используют
- pymux, terminal multiplexer (с интересными отличиями от tmux),
- pyvim, "pure Python vim clone" (!)

P.S. На страничке библиотеки (первая ссылка) вы можете найти длинный список других проектов, использующих PT. Советую посмотреть!
​​В блоге проекта Jupyter недавно написали о voilà — инструменте, превращающем .ipynb-блокнот в самостоятельное web-приложение.

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

Помимо отображения блокнотов, voilà предоставляет средства настройки этого отображения через встроенный механизм шаблонов. Например, можно вывести dashboards с "живыми" графиками (см gif-ку), и даже Vue'фицировать его и получить rich GUI на стороне клиента!

Поддерживаются любые Jupyter kernels, поэтому программировать можно не только на #python, но и на #haskell (IHaskell) — красота!

Сейчас авторы ведут работу над интеграцией voilà с JupyterHub/JupyterLab. Так что скоро можно будет опубликовать блокнот в hub, и вуаля, интерактивное приложение готово!
👍1
Напишу-ка я про креативность в условиях ограничений того или иного толка.

В детстве у меня было всегда плоховато с компьютерным железом — оно у меня всегда было "видавшее виды" и "почти отжившее своё". Но именно из-за того, что я не мог использовать свою технику, чтобы, подобно моим сверстниками, заниматься современными цифровыми развлечениями, я развлекал себя сам с помощью BASIC, Pascal, Delphi — так я и стал программистом :).

Так что тема творчества в "стеснённых обстоятельствах". Поэтому и здесь я пишу про микроконтроллеры вместо больших железок и про всякие #pico8. И почитать про такое я тоже люблю.

Поделюсь парой статей от одного автора, которого почитываю. Первая статья рассказывает про 8-bit демосцену: кратко описаны классические представители соответствующего "железа" и приведены записи демок для каждого экспоната — отличный материал для тех, кто хочет познакомиться с демосценой! Ещё одна статья рассказывает о демосцене применительно к опыту автора в использовании PICO-8 (ну как же я мог о таком не написать? ;)) — есть и примеры кода парочки интересных визуальных эффектов ("демосценерских", как водится).

А вот страничка с прекраснейшей презентацией к докладу, в котором автор рассказывает о своём опыте создания проектов во время поездок в автобусах (без интернета, мощного компьютера, отвлекающих факторов и т.п.) :). Доклад очень понравился и вдохновил — прямо таки жажду подобного опыта. Хочу поехать в деревню с олдскульным ноутом и творить! Не поеду, конечно же, ибо ленив, но мечтать о таком хочется :^D.
​​Я уже писал про конструктор "собери себе телефон" — MAKERphone. Вот ещё один телефон для самодельщиков: ZeroPhone.

Эта машинка уже посерьёзнее: работает #RaspberryPi Zero вместо ESP32, да и прочего обвеса побольше имеет на борту. Собрано всё в виде бутерброда, все модули взаимозаменяемы — скажем, модем 2G можно заменить на модем 3G. Красивого корпуса как у MAKERphone пока нет, но напечатают, думаю, скоро :)

Вольно перескажу идеи, заложенные в основу проекта:

- максимальная открытость (насколько это возможно),
- высокая ремонтопригодность,
- простота модификации как железа, так и ПО,
- возможность писать софт на #python (автор даже вынес это в отдельный пункт).

Это всё подчёркнуто ставится в противовес современным телефонам для широкого рынка, которые закрыты для изучения и модификации, да и о самостоятельном ремонте предлагают забыть.

Ну что же, посыл интересный, будем посмотреть!

Меня позабавил выбор устройств ввода и вывод: это мембранная цифровая клавиатура и графический OLED-экран низкого разрешения (128x64). Ведь Pi Zero может и полноценный рабочий стол показывать, а тут такое ретроградство! Зато так сильно более гиково, это уж точно :) UI реализован на ZPUI — форке библиотеки pyLCI, которую как раз и используют для создания пользовательских интерфейсов для Linux-машинок с такими вот экранами.
Сходил на днях в музей-магазин Yandex. В первый раз сходил обстоятельно — прошлые заходы были наскоком. Посетить хотел с целью не значок купить, но на музейную экспозицию посмотреть.

А посмотреть там есть на что, в первую — и интересную мне очередь — приличное количество компьютерной техники разных лет. В музее можно пощупать Next Cube, Apple II, несколько ЕС'ок. Всякие "Микроши" во множестве также присутствуют.

И почти всё работает! Да, тот же IBM Portable PC грузится с эмулятора накопителя, как и большинство других машинок, но остальное всё аутентичное — и ПО, и экстерьер! На означенном "портативном" компьютере я и в The Last Mission поиграл, и в Moon Patrol. (увы, горячо любимого мной в детстве Tower Toppler не было). Ах, как же LMISSION выглядит на "янтарном" монохромном экране!

Ещё посидел за БК-0010). А руки-то помнят! И как "монитор" запустить, а оттуда — БЕЙСИК. Написал коду, нарисовал картинок. Я и не запомнил, что `Shift` на БК вниз сдвигает регистр, а вот "черепашку" вместо "$" в тамошнем БЕЙСИКе и фонетическую латинскую раскладку очень даже помню :)

Товарищ мой плотно залип в AT&T Unix PC — этот тоже работает, и даже графическое окружение загружает! Пытались скомпилить hello world на Си, но с заголовочниками не разобрались. Но зато порадовались ls, vi и прочему юниксовому софту на зелёном монохромном экране. Даже мышь трёхкнопочная была и курсор рисовала — терминал там в графическом эмуляторе работает, в многооконном окружении (самостоятельном, без иксов, само собой).

Итого. Если захотите вдруг, будучи в Москве, пол-дня потратить на ретроградство — посетите сий музей. Не пожалеете!
Люблю такое. Nimic — маленький игрушечный язык, который умеет только делать макроподстановки. Программа считается выполненной, когда больше ничего нельзя "макроподставить".

"Hello world" выглядит так:

hello world

Лаконично ;)

В статье прямо на макросах реализуется поток исполнения инструкций — встроенного нет! Затем реализуются условная конструкция if, которой изначально тоже нет, как и булевого типа (типов вообще нет!). Следом pattern matching уже на основе if.

А ещё Nimic умеет вызывать bash соответствующим ключевым словом. И это единственный способ сделать side effect, или, скажем, реализовать систему модулей

macro (import #file) (bash (cat #file))

и математику(!)

macro (math #m) (bash (bc <<< " #m "))

Реализован язык за выходные. На #haskell, как водится. Есть даже интерактивный отладчик (см. картинку ниже). Рекомендую к ознакомлению :)
Интерактивный отладчик для Nimic
Вот вам и вебчик на 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 называется, кстати — ностальгичней некуда!).