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
Я собрался завтра в настолку играть в её виртуальном представлении внутри Tabletop Simulator. И игровую сессию мы будем стримить. Ретранслирую объявление о мероприятии следом за этим сообщением.

Вообще настолку эту делает мой товарищ Никита Соболев. Проект открытый (Creative Commons), вот тут живёт: https://github.com/sobolevn/ship-it-boardgame Кое у кого даже физические копии уже имеются (у меня пока нету). Тематика у игры айтишно-злободневная, но это всё, что лично я пока про игру знаю 🌚

Опыт трансляции настольных игр для нас нов, так что помимо разбирательств с игрой я предвкушаю всякие технические моментики. Но это ещё сильнее перекликается с тематикой игры 🙈
🔥5
Forwarded from Никита Соболев
привет!

в среду 10 июля играем в IT-шную опенсорсную настолку Ship IT в хорошей компании!

в программе:
- душные ITшные шутки
- специальный набор карт для взаимодействия со зрителями
- конкурс на самый смешную шутку в комментариях (приз: физическая настолка!)

участвуют:
- Аня Курносова Pytup: https://t.me/+Bz-uVcXh4Jk1YTNi
- Алексей Пирогов https://github.com/astynax
- Денис Пушкарев https://github.com/zloirock
- Паша Коршиков https://t.me/tech_meetup
- Олег Чирухин https://github.com/olegchir

ведущий: Никита Соболев https://github.com/sobolevn

начало: 19:30 по МСК
ссылка на трансляцию: https://www.youtube.com/watch?v=pR8tQaoOitc
ссылка на игру: https://github.com/sobolevn/ship-it-boardgame
🔥6
Forwarded from Montenegro IT Events
🐍 Быстрое создание GUI для браузера и не только. Python в связке с FastUI, hyperdiv, Flet

В экосистеме Python всегда было достаточно инструментов, позволяющих разрабатывать графические интерфейсы разной сложности. Достаточно назвать Tkinter, PyQT, Kivy.
В наше время самой популярной средой для "запуска" графических приложений является браузер. Вот только принципы построения Web-приложений не слишком удобны, когда хочется сделать что-то достаточно интерактивное, сделать максимально быстро, использовать преимущественно Python.
Рассмотрим и сравним три достаточно молодых проекта: FastUI, hyperdiv и Flet — все они дают питонисту инструментарий для построения Web GUI (и не только!), использовать который так же просто и удобно, как в старые добрые времена разработки для Desktop!

🐍 Алексей Пирогов,Developer Advocate
Давно сосуществует с Python сам, взрастил изрядное количество младших коллег, разработал профессию "Python программист" на платформе Hexlet. Любит ФП и функциональные языки и в целом интересуется разными подходами к разработке, и тем, как эти подходы сочетаются друг с другом. Ведет воркшопы на CodeRetreat.me, обучает Clojure в OTUS.

🐍 Обсуждение доклада на Montenegro IT Show

🐍 Хочешь стать докладчиком, лайфкодером, смолтолкером или проспонсировать новый MONTE PYTHON пиши мне

🐍 Обязательно заполни форму, по ней будем разыгрывать призы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🤔1
Буду рассказывать про GUI на питоне — дельфист во мне даёт о себе знать. Но либы рассмотрю весёлые и местами дикие внутри. А то про PyQt рассказывать странно, Tkinter всерьёз никто не воспринимает (не я), WxWidgets тоже слишком старые.

Я давно об этой теме думаю, но так пока и не собрался статей понаписать. А тут решил сразу на сцену выйти :) Потом будет проще от чего-то отталкиваться. Может быть даже книжку напишу (нет, потому что устареет мгновенно).
Ну что же, вот мне и 0x28. Число не круглое, так что буду ждать 0x30 или даже 0x40 — там хоть следующий бит переключится 😎
🔥46
Внезапно через цать минут тут будет около часа разглагольствований на языковые темы. Достоверность фактов не гарантирую, потому что не готовился, как обычно, и вещать буду исключительно по памяти. Или не вещать, а на вопросы отвечать, как пойдёт уж.

https://youtube.com/live/Bck72bhEbgE?feature=share

Кстати, там на канале в streams ещё есть часик про ООП со мной же. Тоже на любителя зрелище :Р
👍10
В комментариях к сегодняшней заметке в побочный канал прозвучало, что таки некоторым прям неудобно читать положение часовой стрелки. Интересный инсайт, правда-правда!

Что ещё интересно, так это то, что криптических часов любят понаделать ардуинщики начинающие. Обычно это банальные бинарные часы. Так вот читать таковые страшно неудобно! Я тоже как-то думал сделать свои, чтобы в матовой полупрозрачной коробке были на гибких кабелях "свалены в кучу" светодиоды трёх цветов — единицы часов, десятки минут, единицы минут. Коробку предполагалось встряхивать, а потом считать в уме просвечивающие через корпус точки — чисто арт-объект, а не на каждый день хронометр :)

У часостроительной компании Tokyo Watch тоже всегда в ассортименте полно часов подобного толка — нечитаемых, но нескучно выглядящих. Но легендарные (в моих кругах, по крайней мере) Heko были как раз вполне читаемые — а всё потому, то что светодиоды хоть и выглядели необычно в комбинациях, но по сути стрелки "рисовали"! Я всё ещё без проблем читаю свою реализацию (софтовую, к хардовой доступа сейчас нет), потому что это всё те же стрелки!
😱1
​​На днях вернулся со своей второй поездки в Черногорию. Перелёты опять были с приключениями, но в меру волнительными, так что впечатления по итогам от поездки очень положительные!

В этот раз CodeRetreat был сильно более практическим, чем прошлый: мы практически всё время коллективно писали код! Нам не помешали ни отключения электричества, ни проектор из позапрошлого десятилетия, позволяющий оценить качество сглаживания шрифтов максимально наглядно при помощи пикселей с плотностью "три штуки на сантиметр" :) И похайкали мы отлично, конечно же — локация к этому очень располагала. Если подытожить ощущения, то мы и отдохнули хорошо, и мозги перезагрузили и подзарядили! Будем повторять!

В рамках практики мы писали parameter injection для обработчиков запросов в aiohttp: хотелось научиться подсовывать обработчикам кусочки Request Object, если функция-обработчик декларирует формальные аргументы с известными именами и типами. А ещё организовали простенький Dependency Injection, пробрасывающий элементы из глобального хранилища состояния приложения в обработчик — так же через декларирование параметров со специальной аннотацией.

Python взяли версии 3.12, потрогали новый синтаксис для type variables. Паттерны поматчили ещё и даже отдельно поигрались с этой возможностью Python в образовательных целях: оказалось, что не все в принципе с ней знакомы. А потом на митапе Monte Python был доклад про Pattern Matching — интересное совпадение — но у нас пример получился покруче тех, что в докладе мелькали :P

В процессе игры в "откопай аннотации типов в рантайме" пришлось повозиться с тем, что aiohttp использует свой вариант @property, только мемоизирующий да ещё и в виде C-extension, содержимое которого поинтроспектить во время исполнения не выйдет. Пришлось вместо изучения класса Request на предмет пригодных для инжекции свойств захардкодить доступные свойства вместе с типами значений — да, не так красиво, "зато работает".

Когда инжектировали зависимости, надизайнили type aliases красивые, чтобы скрыть оборачивание в Annotated. В процессе пришлось научиться матчить с учётом всех этих слоёв: в Python типы — это значения, и с ними приходится повозиться. Наткнулись на то, что классы, которые реализуют эти самые аннотации и псевдонимы типов — приватные, а значит для нужд pattern matching придётся импортировать эти классы с приглушением линтера.

А потом… мечта разбилась о быт: нету в Python способа указать, что в качестве параметра типа должен выступать строковый литерал! Да, я понимаю, что это уже "значение как тип", то есть хотелка из области зависимых типов. Но попробовать стоило!

В итоге успели не всё, но Proof of Concept вполне удался. Может быть ребята захотят доделать наш прототип до стоящего публикации состояния!

P.S. Осенью есть мысль сделать трек про "Kotlin для людей со стороны", в рамках которого попробовать и Web, и GUI, и мобильщину — по верхам, но широко.
🔥13👍4
​​СЯУ, что есть такой диалект ClojureScript, как Squint. Компилируется в JS, своих коллекций не имеет, а вместо этого использует имеющиеся в JS структуры, но стандартные функции вроде assoc делают shallow copy — прям как в JS нынче носят (я про сплайсинг вместо деструктивных апдейтов). А для тех, кому прям семантики ClJS хочется, есть Cherry от тех же авторов — компиляторная часть у обоих диалектов общая, отличия в стандартной библиотеке в основном. Google Closure Compiler не использует ни один из диалектов, так что "бинарники" на выходе компактные получаются. Надо будет со Squint поиграться в связке с HTMX: Web Components сделать и через HTMX оными поуправлять.

А ещё, пока тыкался в примеры этого всего, узнал ещё и про Lit, Mithril и прочие штуки из мира JS, про которые я и слыхать не слыхивал. Продолжу и дальше не слышать, хотя Lit как средство подготовки Web Components смотрится неплохо на первый взгляд.

Меня всё ещё во всём этом напрягает необходимость что-то компилировать и вообще пакетами какими-то рулить через npm. Но если уж обмазываться ClojureScript, то Squint и Cherry точно не такие развесистые, как Shadow ClJS. Собственно, одна из особенностей HTMX, которая меня радует, это как раз возможность просто подключить .js-файл из CDN или сервером раздать и ничего не собирать (да, как способ не возиться с сетевой частью и вообще всю логику на сервере держать, HTMX ценен в первую очередь, но и простота подключения важна для меня лично).

А вообще сейчас бы хоть что-то для Web делать, а то я что-то никак не придумаю, на что бы в принципе время потратить… Только на канальчики сил и хватает

P.S. из лиспиков для браузера есть ещё Biwa — эта вообще не требует никакой подготовки кода, вы прямо в теге <script> на Sсheme пишете. Это, как минимум, красиво!
👍9🔥6
Montenegro IT Events
🐍 Быстрое создание GUI для браузера и не только. Python в связке с FastUI, hyperdiv, Flet В экосистеме Python всегда было достаточно инструментов, позволяющих разрабатывать графические интерфейсы разной сложности. Достаточно назвать Tkinter, PyQT, Kivy. В…
https://www.youtube.com/watch?v=drx9ec0aU3w Вот и запись подъехала, правда только в виде скринкаста под мою болтовню.

Так что кривляний моих не видно — я руками машу интенсивно обычно 🌚 — эта часть развлекательности останется только в памяти тех, кто лично поприсутствовал 😎 UPD: меня становится видно, когда заканчиваются слайды и начинаются вопросики!

Так или иначе, запись иметь всё равно приятно!
👍8
Опять в ЧГ поеду в октябре. На этот раз погружать людей в MicroPython и Micro:bit — железки, это интересно, но некоторых пугает порог входа, а я буду пробовать высоту этого порога снизить!

Сам-то я с BBC Micro:bit игрался давно уже, ещё во времена первой версии. А у V2, которую мы будем трогать (а потом каждый свою домой заберёт) уже и динамик есть на борту свой, и микрофон. Можно будет попробовать коммуникацию пересвистом сделать! Планирую ещё в беспроводную сеть попробовать девайсы объединить, чтобы те приветствовали друг-друга, слали "визитки" — так делают иной раз умные бейджи как на DEFCON (это три ссылки на разные посты :Р)!
🔥3
Forwarded from Montenegro IT Events
CodeRetreat — выездной кэмп для разработчиков в Старом Баре, идеальный микс отдыха в горах, атмосферы летнего лагеря, интересных воркшопов и полезного нетворкинга. Приглашаем на новые смены:

Golang Camp: Go gophers!
13—16 октября. Ведущие Артемий Рябинков, Андрей Солдатенко и Искандер Шарипов.
Три воркшопа: Kubernetes операторы, работа с ML-моделями и разработка игр.

Data Engineering Сamp
16—19 октября. Ведущий Николай Марков.
Качаем набор навыков по выстраиванию инфраструктуры и процессов вокруг жизненного цикла данных в компаниях.

Micro:bit Retreat. Cобираем и программируем железяки
19—22 октября. Ведущий Алексей Пирогов.
Давно присматриваетесь к Arduino, Raspberry pi, умным домам, но не знаете с чего начать — вот легкий старт в новое хобби.

Будет душевно! Уедете не только с новыми знаниями, но и новыми друзьями и тележкой впечатлений. Все подробности на сайте.
🔥5
​​Когда я недавно делал доклад в Черногории по поводу того, как на пайтоне можно делать пользовательский интерфейсы, я рассмотрел несколько самых разных по сути своей вариантов, но упустил из виду один очень интересный — FastHTML.

FastHTML позиционирует себя как платформу, которая позволяет создавать пользовательские интерфейсы преимущественно на Python. GUI при этом отображается в браузере, работает отзывчиво и реактивно.

Особенности:

- JavaScript чаще всего писать не придётся, потому что платформа использует HTMX в качестве средства доставки обновлений интерфейса. Вы можете дописывать кусочки интерактивности на JS, это не возбраняется, мол, "для того JS и создавался" 🌚
- На серверной стороне не используется никакой шаблонизатор, вместо этого вся вёрстка делается с использованием так называемых "компонент" — это по сути просто функции, генерирующие вёрстку. Сетевая же часть использует платформу ASGI, а именно uvicorn и Starlett.
- О стилях тоже предлагается особо не думать, а вместо этого полагаться на библиотеки тех самых компонент, которые скрывают всю стилизацию в простых случаях.
- В принципе всё приложение можно описать в одном Python-файле, мол, настолько мало boilerplate требуется для начала работы.

Вообще рекомендую сходить почитать видение проекта — текста там немного. Почувствуете, насколько у автора наболело по поводу состояния Web-разработки на Python "до этого момента". Люблю почитать такое! 😎

Ещё из интересного стоит отметить один моментик касательно самого автора: Jeremy Howard много работает в области data science и прочего ML и работает давно — и всё это время варится в собственном соку. Творчеством занимается в собственной компании Fast.AI (компания до нынешнего хайпа была основана, если что). Так вот, у Джереми весь Open Source написан с применением Literate Programming на базе Jupyter Notebooks и авторской надстройки над оным под названием nbdev. Описанный выше FastHTML написан в стиле LP, библиотеки полезняшек, которые в FastHTML использованы — тоже. Само по себе такое увлечения меня, давнишнего фаната LP, впечатляет. Но код генерируемый выглядит страшненько, хотя тут во многом ещё и авторский вкус влияет на читаемость: у Джереми очень плотный код, обычно питонисты так не пишут, зато пишут data scientists! К счастью, когда Джереми показывает примеры кода публике, он может переключиться на чуть более популярный стиль 😅

P.S. Если вдруг кому интересно, могу ещё написать про то, как автор FastHTML предлагает работать с SQLite. Можно даже попробовать постримить разработку какого-нибудь классического проектика вроде Pet Clinic на FastHTML и использовать в процессе nbdev — будет максимально нишево, но не факт, что очень Fast 🙃
👍10🤔2
​​Вёл вчера открытый урок для курса по Clojure. Как обычно, рассказал про историю языка, поотвечал на дежурные вопросы про то, зачем он вообще нужен и есть ли вообще работа для кложуристов (местами нужен, работа находится 😎). Где-то с час транслировал окно Emacs и показывал, как же на этой нашей Clojure пишут.

В рамках демо решил всё показывать на Babashka, как на более легковесной версии интерпретатора. А ещё хотел показать нечто, что было бы легко запустить локально. И тут babashka выигрывает безоговорочно: что может быть проще скачивания одного исполняемого файла, в котором находится и сам интерпретатор и приличная пачка библиотек, полезных при скриптовании (к слову о всяких тулкитах)?

Показал я синтаксис в одном большом файле со сворачиваемым аутлайном (люблю outshine, даже презентации с его помощью показывал 💅), поотвечал на вопросы. А потом запустил Web-приложение на базе встроенного в Babashka сервера (HttpKit), а HTML сгенерировал силами встроенного же Data DSL (Hiccup) — приятный набор батареек, осмелюсь сказать! Разве что, compojure или другого роутера не хватает слегка, но в принципе жить можно и так, пока проект небольшой — а там уже и большая Clojure JVM запросится на замену 😜

Страничку-то я отдал, но статическая страница — это скучно! Вот только и обременять зрителей настройкой инструментария для сборки ClojureScript тоже не хотелось. Посему Squint и Cherry (см выше) я отбросил и вооружился Scittle — это интерпретатор всё тот SCI, интерпратор подмножества Clojure, который используется и в Babashka. Только Skittle интерпретирует ClojureScript прямо из тегов <script>! Это же настоящий No Build, про который любит говорить DHH 😆

Мне самому подход No Build очень импонирует, вот и в демо я просто в строковом литерале отгрузил кусочек ClJS — хотелось уложиться именно в один файл. Тем более что в Emacs можно выделить регион и открыть в отдельном буфере как код на заданном языке (да, не только в IDEA так можно, хоть в последней и прямо по месту код подсвечивается). Скрипт мой оживил часики на страничке и progress bar в такт секундам начал двигать (виджет взял из Pico.CSS, потому что не умею верстать). А заодно получилось показать, как обращение с объектами хостовой платформы делается.

Результат я положил в Gist вместе с краткой инструкцией по запуску, можете поиграться. На мой вкус возможность делать интерактивные микро-приложения, минимально заботясь о всяких сборщиках и зависимостях — это здорово!
👍14🔥9
Через часик запущу трансляцию тут. Попробую постримить какой-то простой проектик на FastHTML, БД на пару сущностей, CRUD для них. Проверю, настолько ли оно Fast, как заявлено :)

Приходите пообщаться, если что. А запись попробую сделать и выложу потом.
👍12
Live stream started
Live stream finished (2 hours)
Вот запись. Смело можно пропускать минут сорок (прям 40 ровно и пропускайте, я проверил), потому что я там возился с тем, чтобы завести fastlite, но оказалось, что я так и не понял, как с этой штукой работать 🤦🏻‍♂️

https://github.com/astynax/fh-todos а вот код, если что. Я сделал там таки, чтобы добавление тудушки не затрагивало остальную таблицу.
👍3🔥3