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
Forwarded from Хекслет
12 апреля в 19:00 по МСК на youtube-канале Hexlet пройдёт интервью с тимлидом и ФП-адвокатом в Evrone Павлом Аргентовым. Тема интервью - FP||!FP на работе.

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

Ведущий интервью - Алексей Пирогов, Hexlet.

Трансляция доступна по ссылке: https://youtu.be/P1YWeLJCarI. Подписывайтесь на канал и ставьте колокольчик, чтобы не пропустить.
Опять буду вебинарить. На этот раз - в режиме диалога! Заодно новый микрофон опробую
Forwarded from Хекслет
18 апреля в 19:00 на канале Hexlet стартует стрим с преподавателем профессии "Python-разработчик" Алексеем Пироговым. Что будет - код в прямом эфире и рассказ про Elm.

Ссылка на стрим: https://youtu.be/M-iZOAnlTBM.
Подписывайтесь на канал и ставьте колокольчик.
Постримлю #elm, как-то так
Антон Холомьёв (@anton_kho) поделился свежим видео: https://www.youtube.com/watch?v=0np4mOkfDgE

Антон - автор "Учебника по Haskell" и хаскельной же обёртки для CSound (CSound - это такой движок для программного синтеза звука), а по ссылке можно как раз понаблюдать работу CSound Expressions под управлением MIDI-контроллера.

Как мне кажется, demo получилось очень показательное. Надеюсь, что кого-то оно сподвигнет таки попрограммировать музычку на Haskell.

#haskell #procedural_generation #music
Принёс немного прелестной дичи: язык legit (спасибо за наводку, дорогой некто).

Legit - эзотерический язык программирования, программа на котором кодируется структурой git-репозитория!
Язык, как водится, стековый, активно пользует гитовы теги как именованные метки, умеет простой ввод-вывод. А ещё - компилируется в LLVM! Да, помимо интерпретатора есть ещё и транслятор в LLVM IR, так что можно даже исполняемый бинарник получить :)

Позабавило одно интересное свойство программ на Legit, цитирую:
A fun consequence of programs defined by a Git history is that you can’t properly track versions, because they already are Git repositories. All you can do is force-push a new version to GitHub.
На мой взгляд, это прекрасно!

#programming #fun
🤔1
Интерпретатор brainfuck, реализованный на legit! И его можно скомпилить в бинарник и получить уже самодостаточный интерпретатор brainfuck. Остаётся забутстрапить Legit, чтобы он был написан сам на себе и скомпилен в бинарник, опять же...
"Опять доклады"
Forwarded from Хекслет
24-25 мая в Казани пройдёт конференция по функциональному программированию FPURE. 25 докладов, 2 воркшопа, и среди докладчиков преподаватель Hexlet Алексей Пирогов. Тема его доклада: "Функциональный дизайн и паттерны ФП".

Регистрируйся для участия здесь: http://amp.gs/U9Yn
Фух, перевёл-таки свой пакетик tea-combine на elm-0.19!

Увы, без инфиксных операторов eDSL стал похуже выглядеть, но тут уже ничего не попишешь, как говорится.

#elm #library
Хороший доклад про внедрение #elm, а следом и #haskell в рабочий процесс: https://www.youtube.com/watch?v=5CYeZ2kEiOI

Описаны цели и профиты от внедрения, но доклад не останавливается на этом. Говорится и про проблемы найма сотрудников, и про сложность обучения — и самое главное — про то, как преодолевать такие трудности.

Отдельно можно отметить подход к внедрению новой технологии, который в NoRedInk использовали при рассмотрении Elm и Haskell (в качестве замены для React и RoR соответственно):

- взять некритичную но реальную задачу и переписать с использованием новой штуки,
- довести до production,
- взвесить плюсы и минусы смены инструментария.

Кмк, вполне адекватно и масштабируемо на любые "внедрятельные" мероприятия!
Добрался наконец до Wasmer/WAPM/Rust и накидал учебный проектик.

О чем это всё? Итак, есть такая штука — WASI, интерфейс для взаимодействия WebAssembly-кода с системой без участия браузера. У WASI есть не несколько реализаций, одну из которых я и решил попробовать. Wasmer — это универсальный рантайм WebAssembly, совместимый со спецификацией WASI и имеющий свой пакетный менеджер WAPM.

Wasmer позволяет запускать .wasm-бинарники на различных ОС — Linux, Windows, macOS — без перекомпиляции и потенциально может быть хорошим вариантом для "ультрапереносимых" программ. Написан на #rust, что отдельно радует.

Rust же, в свою очередь, в своей nigtly-ипостаси умеет собирать .wasm-бинарники. Которые затем можно опакетить WAPM и/или запустить на Wasmer.

Это я и решил проверить и получил в итоге упомянутый в начале проектик. Отмечу, что весь инструментарий поставился и заработал сразу без каких-либо проблем — очень неплохо!

Программка реализована простейшая, но использует внешнюю библиотеку из Crates для вывода цветного текста, так что будет интересно проверить работоспособность бинарника на Windows.

#wasm
Записали с Никитой Соболевым подкаст про всякое околопитоновое: пакеты и пакетирование, безопасность этого всего.

В этой ипостаси (со мной в роли ведущего и с уклоном в IT таки) подкаст ещё только возрождается, так что нужно будет и над звуком поработать и над "отбивками". Но первый блин, хоть и комковат, но на оладушек потянет! :)

P.S. Помучились с настройкой записи и вообще общения изрядно. Mumble на мною поднятом сервере на DigitalOcean позволил сконнектиться, но услышать друг друга нам так и не удалось. В итоге записали беседу силами бота в Discord — модно, молодёжно :)

#podcast #python
👍1
Анонсировали тут play.date — портативную консоль интересного дизайна.

Что же это за железка? Портативная игровая консоль, само собой, но не "очередная", к счастью. Экран монохромный, кнопок мало, рукоятка как у шарманки сбоку! Вот в этой рукоятке и заключается вся инаковость — вращение оной управляет самим игровым процессом (да, игры у play.date будут свои, ориентированные именно на такое управление). Советую пройти на страницу и посмотреть анимацию, демонстрирующую (увы, очень поверхностно) этот самый игровой процесс — смотрится хорошо и необычно.

P.S. Я, как увидел первую картинку в интернете, сразу пошел на сайт и уже на первом экране подумал, "что-то уж больно знакомо всё — цвета, углы, кнопки, крутилка". Так и вышло (с):

> By the way, the crank came from our friends at Teenage Engineering. They were our partners for Playdate’s design. Isn’t it nice?

Nice, indeed! Ждём продолжения!

#gaming #console
Вот и отчёт о походе на FPURE
Forwarded from Хекслет
Преподаватель Хекслета Алексей Пирогов выступил на конференции FPURE в Казани. О том, как прошла конференция: http://amp.gs/dLph
Провёл второй выпуск подкаста. В этот раз про железки поговорили: #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-машинок с такими вот экранами.