brain_dump_etc
644 subscribers
101 photos
4 videos
3 files
403 links
Дампы мыслей, свалка ссылок, программизмы, вкусовщина!

Автор: @astynax
Донаты (patreon и прочее): https://astynax.me/support.html
Чат: https://t.me/brain_dump_chat
Twitch: https://www.twitch.tv/astynax2hs
Discord: https://discord.gg/tJvze5
Download Telegram
Завтра под запись буду изучать PyView — это LiveView как в Phoenix для Elixir, или, если вам вдруг такая аналогия больше подойдёт, korolev для Scala (ну и древность я вспомнил, скажут некоторые).

Кратко: это такой способ делать интерактивные Web-приложения с обработкой событий на стороне сервера, тогда как клиент остаётся простым исполнителем задач вида "вставь эту div на место той". При этом, в отличие от использования HTMX, тут не нужно думать о жизненном цикле элементов, поскольку "virtual DOM" (UPD: не прямо vdom, идейный аналог) и вычисление минимальных дельт для отправки в браузер происходят под капотом, в прикладном коде же всё декларативно остаётся.

Я уверен, что в мире JS/TS такое давно носят, но в других экосистемах этот подход встречается довольно редко, вот мне и интересно посмотреть, как Python тут себя покажет. Проект очень молодой, но уже выглядит солидно, как мне показалось. Если вдруг заинтересуетесь, сходите послушать/посмотреть этот подкаст с автором — мне понравилось, например.

---
UPDATE

Вот запись. Пробовал стационарный микрофон, хороший, Blue Snowball (откопал в закромах). Но этот "снежок" умудрился подхватить с фона гул 🙈 Увы, пока что петличка и микрофон проводной гарнитуры выигрывают по качеству. Когда shock mount у меня появится, попробую повещать на снежок ещё раз 😎
👍5🔥2
Завёл таки. Подписывайтесь! 😎

https://www.patreon.com/cw/aleksei_astynax_pirogov

Как разберусь с Ko-fi и прочими бусти, будут и они.
👍3🔥2
Сегодня еженедельный стрим будет про библиотеку rich. Пройдусь по основным штукам, но в итоге хочу сделать кое-что не совсем (совсем не?) стандартное для TUI в целом и для этой либы в частности 😎

Картинка для привлечения внимания (нашёл на reddit):
🔥9
Вот запись сегодняшнего стрима.

Если вдруг кому-то будет интересно потрогать получившийся код "генератора сайтов, выглядящих как Volkov Commander", то я могу его довести до какого-то MVP, а там можно будет допиливать по желанию 😎
🔥6
В Python недавно стало на один способ склеивания строк больше: PEP-750 aka t-strings.
f"Hello, {world}"
# VS
t"Hello, {world}"

(пишу этот текст в Emacs, а он пока не умеет раскрашивать содержимое t-строк так же, как он это делает с f-strings 🙈)

У этого нововведения есть одна большая проблема: это не templates, а на выходе получаются не strings 🙃 Скорее это что-то вроде template tags из мира JS/TS. В результате вычисления такого литерала получается последовательность статических строк вперемешку с приведёнными к строке значениями подвыражений внутри фигурных скобок. То есть в одну строку ничего ещё не склеено, хоть все подстановки уже вычислены!

Недавно видел один хороший доклад про этот PEP и про то, куда может развиться экосистема, если правильно отреагирует на эту новинку. Один из докладчиков, будучи в команде PyCharm, показывает, как внутри t-строк работает language injection, подсвечиваются HTML-теги и Python-код, работает автодополнение и проверка типов — люблю такую заботу о DX!

Так вот, если лень видео смотреть, просто думайте об этой штуке, как о способе санировать подстановки перед склеиванием в SQL, HTML или любые другие текстовые форматы, в которых возможна инъекция чего-то не очень хорошего.

А ещё отделение статических фрагментов от динамических позволяет делать всякие оптимизации. В библиотеке PyView, про которую я недавно рассказывал, при генерации HTML используются те самые t-strings, а этой библиотеке как раз важно знать, какие части вёрстки всегда содержат статический текст, чтобы быстрее вычислять изменения с для отправки команд, модифицирующих DOM в браузере. Приятно видеть, что новинка языка уже внедрена и приносит пользу!

За мою карьеру я навидался всяких видов интерполяции строк и форматирования и могу сказать, что концептуально t-строки мне нравятся. Я не очень люблю тот факт, что внутри подстановок есть свой подъязык для управления приведением к строке, но это я и в ранее добавленных f-строках не люблю, тут ничего нового не добавилось 😜
👍4
Вот, Ko-Fi ещё завёл: https://ko-fi.com/astynax
Сюда продублировал и эту ссылку, и патреоновскую: https://astynax.me/support.html — тут вообще будут все актуальные способы поддержки меня.

Ко мне тут пришёл Gandi и хочет $50 за домен recursive.one за второй год, GoDaddy даже меньше хотел 🙈 Буду благодарен, если скинете копеечку на это дело. Или на чай — а я за вас выпью! Или с вами попью, если вы вдруг проездом в Ереване окажетесь 😎

Вся эта история с доменами меня печалит, конечно...
👍3
В 13:30 GMT+4 очередной стрим. Расскажу, как и зачем именно я пользую #uv (https://docs.astral.sh/uv/) — просто чтобы было, к чему отсылать в будущем 😎 Заодно озвучу свои претензии и хотелки, не без этого, и посравниваю с тем, что использовал раньше.

До poe тоже доберусь, скорее всего — в рамках синергии инструментов должно получиться неплохо!

Стрим будет на Twitch, как обычно (ссылка есть в описании канала). Запись выложу на YT со ссылкой сюда.
🔥4👍3
Сегодня там же и в то же время (Twitch, 13:30 GMT+4) буду разбираться, что там и как в data-* — это такой hypermedia framework, то есть ещё один способ расширить Web без написания клиентского кода.

data-star похож на HTMX, но ещё больше смещён на сторону backend: сервер посылает через SSE патчи к DOM не в ответ на запросы "а дай-ка мне кусок HTML, я сам его вставлю в документ", а по своей воле. При этом обеспечивается большая локальность поведения: да, кое-какая разметка со стороны HTML имеется, например, подписки на события, но при этом нет средств для управления фрагментами HTML, приходящими с сервера. В какой-то степени это более низкий уровень, чем в HTMX, но зато и контроля больше — можно идти и делать своего "убийцу PyView" 😎

Стоит отметить, что data-star, разумеется, агностичен к тому, что у вас на backend, лишь бы вы могли SSE посылать. При этом у проекта уже есть SDK под кучу языков, включая интересные мне Python, Rust, Haskell, Clojure 🤓

Ссылки для тех, кто не захочет мой стрим смотреть:
- https://data-star.dev
- "Datastar: Modern web dev, simplified" —  подкаст с авторами, где они презентуют свое детище. Мне очень понравилось слушать.
🔥8👍1
Через 10 минут стартану вторую серию про data-star. Скорее 1.5, потому что придётся наверстать то, что в прошлый раз не записалось. Но потом продолжу эксперименты дальше.
🔥3
Вторая часть приключений с data-star. Напоминает о том, что не попало на "плёнку" в прошлый раз по прихоти OBS.

https://youtu.be/1N9V3gZhR60

По итогам экспериментов могу сказать, что data-star выглядит наименее магично по сравнению с HTMX и прочими turbolinks. Хорошо использовать такие штуки, когда хочешь иметь максимум контроля.

Отдельно понравилось то, что в data-star приходится думать о том, как происходит восстановление состояния view при переподключении SSE, которое происходит, например, при деактивации вкладки в браузере — вы, ведь, хотите экономить батарейку и трафик 😉

В будущем планирую попробовать data-star в связке с другими языками. Особенно, мне кажется, получится хорошо скрестить data-star с babashka — чтобы потом делать на этой связке "локальный web".
🔥3
Эх, OpenAI купили Astral. Это прям для меня печаль на ближайшие дни...
With Astral joining OpenAI, we’ll continue to support these open source projects while exploring ways they can work more seamlessly with Codex—enabling AI systems to operate across the full Python development workflow.

Вот это меня напрягает (цитата из статьи на сайте OpenAI). Не такого будущего я ждал для инструментов, которыми я вдохновляюсь уже какое-то время (взять тот же стрим про uv).

Уже вижу момент, когда от авторов потребуют обеспечить заметный для нужд PR отдела Codex процент кода, написанного этим самым кодексом.

Сначала Anthropic купили bun, теперь эта покупка. OpenSource не зарабатывает и оказывается в активах гигантов. А там уже все эти заявления про "в дальнейшем будет поддерживать разработку" проверку временем не проходят.
😱12🔥4
Сегодня постримлю пораньше — через 10 минут, в 11:00 GMT+4

Планирую поковырять prek — новый blazingly fast мультитул для Git hooks — в связке с poe, uv, ruff.
👍3
Кажется, получилось неплохо! Заодно дал некоторую вводную про то, что же за вещь такая — эти наши Git hooks.

https://youtu.be/oeca7fvjDf4
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
just a little thingy in #tic80

Внимание: там всё мигает, имейте в виду, если для вас это критично
🔥8
Через 5 мин стартану стрим про cozy programming & stuff
🔥5👍1
Вот запись моего сегодняшнего монолога про Cozy Programming:

https://youtu.be/QVmCLRrunoc

В программе:

- Ностальгия по BASIC (тут про такое уже было)
- PICO-8, про который тут есть и в количествах
- TIC-80 — его открытый аналог, см анимацию выше
- Железки вроде GameShell и PlayDate (про обе писал, смотрите ссылки)
- DrRacket как уютный способ порисовать картинки кодом (пост про это — тут)

Также коснулся особенностей графики ZX Spectrum, палитровой анимации, вспомнил про Amiga Workbench — всё это вскользь, но в контексте.
🔥3
Стартанул стрим по моему сетапу для Clojure по просьбам трудящихся
🔥4
Вот запись: https://youtu.be/LusYWxmwWX0

Ничего уникального, просто Emacs и Cider, но зато показываю на примере кода для Babashka 😎
🔥1