Лисп в изгнании
230 subscribers
156 photos
21 videos
5 files
233 links
Авторский канал на околоайтишную тематику.

По всем вопросам @awkravchuk
Download Telegram
Forwarded from Haiku
Всем привет!
Ребята, присоединяйтесь к хакатону от Самураев с 26 по 28 июня. Отличная возможность для тех, у кого есть интересный проект/идея, но не доходят руки! 😉

Если коротко про формат, то:
Дата: 26-28 июня
Формат: оффлайн + онлайн
Приз: $1000
Проект: новый, без объемных наработок
Тема: любая (+1 балл за Health IT, FHIR, Aidbox)
Стек технологий: любой, можно использовать ИИ (за ФП – сердечко от оргов)
Команда: 2-9 человек
Победителя выбирают сами участники голосованием

А если ты в Черногории, то приходи к нам на виллу, похакатоним оффлайн. Будет бассейн, настольный теннис и разные приколюхи.

Участие бесплатно, необходимо зарегистрироваться здесь.
5
#лытдыбр #emacs

Что-то я всю эту неделю тюленил под кондиком, спасаясь от сорокаградусной жары пытался настроить почту в Emacs, ибо Thunderbird, которым я пользовался до этого, как в анекдоте про воздушные шарики, бракованный, потому что не радует 😅

Сначала попробовал вроде бы более популярный notmuch, но быстро понял, что там нужно построить целую машину Голдберга из шелл-скриптов для того, чтобы вся локальная почта правильно синхронизировалась с GMail. По ходу дела ещё выяснилось, что в GMail придётся включить авторизацию по "паролю приложения" и интерфейс поменять на английский (чтобы имена папок были правильные), и что Python (и, по продолжению, offlineimap) до сих пор не умеет правильно считывать мультиаккаунтный .netrc, лол. В итоге плюнул и всё сделал на mu4e + mbsync, и оказалось, что mu4e мало того, что гмыло поддерживает почти целиком из коробки, так ещё и невероятно красив и пугающе удобен, я уже с трудом понимаю, как я жил до него 😊

Последние пару дней вазюкался с неправильным удалением почты, аж тред на реддите создал, но таки в конечном итоге всё победил) Тут хочется сказать большое спасибо очень дружелюбному русскоязычному емакс-коммьюнити и отдельно Андрею Орсту 🫶

Ну и только что закоммитил все конфиги себе в репу с дотфайлами, чтобы сохранилось на века 😁
🔥72👍21
#проекты #clojure

На той неделе поучаствовал в летнем хакатоне HealthSamurai, где умудрился за три дня пройти от давно вынашиваемой идеи до рабочего прототипа и сделал на Clojure бота, уведомляющего об обновлениях версий используемых библиотек в произвольных проектах (ну как произвольных, пока только на Clojure и Python), этакий аналог Snyk, но в телеграме. Вот видос с таймкодом, где я рассказываю о том, что удалось сделать на хакатоне, а вот и сам бот — он пока в открытом бета-тесте и бесплатный 😊
👍82
#лытдыбр #проекты #common_lisp

Сегодня с утреца в рамках акции растаскивания кодовой базы моего старого проекта d2clone-kit на отдельные хорошо протестированные и задокументированные запчасти с чётким интерфейсом наконец доделал то, что собирался уже очень давно — вытащил в отдельную библиотеку макрос для изменения размера простых массивов Common Lisp, вот она: trivial-adjust-simple-array. Ну и по ходу дела зарефакторил ECS-библиотеку с её использованием.

Возможно, какой-нибудь седобородый лисп-старец, несмотря на мои подробные оправдания объяснения в Readme, зачем это, объяснил бы мне, что я делаю фигню и эта библиотека не нужна, но у меня таких знакомых нет 😅
🔥5
#лытдыбр

А ещё на той неделе впервые в жизни побывал на подкасте, посвящённом лиспам, брейкбиту, BSD-системам, климактическому кризису, многопользовательским текстовым адвенчурам и другим гиковским вещам, за авторством широко известного в узких кругах screwtape (он же screwlisp), подпишитесь на него, он странный, но клёвый. Правда, запись похерилась и из часа подкаста остались только первые 15 минут, да ещё и сайт с архивами подкаста вообще сейчас лежит 😅 Но вышло очень продуктивно — вынес пару идей по поводу того, на какие штуки стоит обратить внимание в разработке игрового движка на Common Lisp 😊
5🔥1
#лытдыбр #common_lisp

Дописал сегодня с утра тесты к фиче ECS-фреймворка, сделанной ещё в пятницу — возможности задать порядок выполнения систем; она у меня давно болталась на первых местах TODO-листа, даже вон люди про неё issue уже создают 😅

Оказалось, что "топологическая сортировка" только звучит страшно, а на самом деле — по сути банальный обход графа в глубину, который я на лиспе осилил сделать за пару часов 😊
🔥83
О, на видосике я и кондей 😋
This media is not supported in your browser
VIEW IN TELEGRAM
🇲🇪 В Черногории все еще красный уровень опасности из-за жары, температура сегодня будет около 40 градусов.

Черногория-Новости
😢53👍1🫡1
#common_lisp #лытдыбр

Немного инсайдерской инфы: судя по тому, что бессменный автор де-факто стандартного пакетного менеджера для CL Quicklisp, Zach Beane, запостил на той неделе issue по поводу warning'а компиляции в моей библиотеке cl-fast-ecs, входящей в Quicklisp, и развешал тегов canbuild и cantbuild в репозитории с заявками на включение в дистрибуцию, есть подозрение, что в ближайшее время нас может ждать новый релиз Quicklisp. Ну или нет 🤷‍♂️ с инсайдерской инфой всегда так)
👾1
#common_lisp #лытдыбр

"Ни месяца без новой опенсорсной библиотеки", — под таким жизнеутверждающим лозунгом выложил новый микрофреймворк на Common Lisp для нахождения маршрутов в играх алгоритмом A*, cl-astar. Почему микрофреймворк? Потому что там всё на макросах, я ж у мамы амбассадор лингвистической абстракции 😊 Библиотека выстроена вокруг макроса DEFINE-PATH-FINDER, в который прокидываются результаты вызова других вспомогательных макросов и лямбд, задающих требуемые параметры — тип координат, функция стоимости передвижения, эвристика оценки расстояния до цели, определение соседей у узла маршрута, способ обработки результата и прочее, и этот супермакрос из всех этих веточек и мусора собирает функцию, которая и будет искать маршрут. Причём результирующая функция сильно вылизана с точки зрения оптимизации, по результатам бенчмарков находит путь в рандомном лабиринте из 100x100 узлов чуть меньше, чем за миллисекунду, что не сильно медленнее реализаций этого алгоритма на C++ 💪

Уже переписал с использованием этого микрофреймворка передвижение персонажей в последнем шедевре Cycle of Evil, и оно сразу стало более адекватным. Собственно, микрофреймворк уже доступен в Quicklisp-репозитории LuckyLambda и распространяется по либеральной MIT-лицензии, так что призываю к его использованию в ваших проектах 😊
🔥18👍2
#лытдыбр #мемасики #scheme #common_lisp

Наткнулся тут в недавней статье про Medley/Interlisp на шикарное сравнение:
• Scheme — это экзотический спорткар. Быстрый. На ручной коробке. Без радио.
• Emacs Lisp — это Subaru GL 4WD 1984 года: "машина, которая всегда впереди тебя".
• Common Lisp — это Ходячий замок Хаула 🤣
😁5
#лытдыбр #проекты

Принял стратегическое решение отключить бота для слежения за обновлениями — популярностью он не пользоваться, рекламой заниматься я не умею, а если начинать учиться, то с другими моими проектами получится, как на приложенном мемасике 😅

Благо, удалось извлечь из этого проекта пользу: он был развёрнут на FreeBSD и PostgreSQL поверх OpenZFS, и теперь я из практики знаю, как обращаться с этим ультрахардкорным стеком 😊
🔥6👍1🙈1
#лытдыбр #common_lisp

Сделал ещё один маленький шажок к ресурсной системе игрового движка на CL — теперь при запуске автоматически происходит переход в каталог с ресурсами, причём хоть при загрузке кода в Emacs, хоть при запуске из сдампанного lisp-образа, хоть из линуксового AppImage 😊

Соответствующие изменения уже есть в последней версии нашего крайнего шедевра Cycle of Evil, в шаблоне игры на Common Lisp и в туториале по cl-fast-ecs я уже вот-вот накоплю силы для второй части, честно-честно 😅
🔥13
#мысль_в_душе #common_lisp

По результатам обсуждения макросов CL в коммьюнити Lisp forever пришла в голову такая мысль: не секрет, что в большинстве лиспов у функций сохраняется информация об исходном коде, так что, например, при возникновении исключительной ситуации в стек-трейсе можно написать что-то в духе (foo) from foo.lisp line 42. Почему бы не сохранять также для каждой строчки инфу о раскрытых макросах, которые были на этой строчке, чтобы ещё можно было написать, типа, (foo) from macro expansion of (with-open-file) in foo.lisp line 42?

С каждым днём мне всё труднее удерживать себя от того, чтобы бросить всё и начать пилить свой супербыстрый и суперкрутой диалект лиспа 😅
5👍3
#лытдыбр #common_lisp

Отправил в библиотеку cl-tiled PR с фичой, которой нам сильно не хватало для игры на весенний лисповый геймджем, а именно — поддержки объектов-шаблонов Tiled. Ну то есть как нам, не хватало моему товарищу, занимавшемуся картами, я-то просто сочувственно цокал языком 😅

Теперь шаблоны в cl-tiled будут поддерживаться прозрачным образом, даже код старых игр менять не придётся. Вы знаете, где выгрузить фуру с лайками и прочими положительными реакциями типа 🎉, чтобы автор библиотеки быстрее принял пуллреквест 😊
🔥7
This media is not supported in your browser
VIEW IN TELEGRAM
#лытдыбр #common_lisp

Умудрился тут себе заработать воспаление плечевого сустава, так что уле=еле полулёжа сижу за компом, закидавшись обезболивающими. Но всё же потихоньку нахожу в себе силы пилить вторую часть туториала по геймдеву на Common Lisp, чтобы успеть опубликовать его до середины октября и иметь возможность пошутить шуточку "и года не прошло с первой части" 😅

Вон даже осилил сделать подгрузку анимированных тайлов 😊
🔥8
#лытдыбр

А вот и отзывы подъехали к моему ECS-фреймворку для Common Lisp, хоть сейчас верстай лендинг с разделом Testimonials 😅
🔥9😁42💯2
#лытдыбр

Пока из-за больного плеча валялся на диване нетрудоспособным тюленчиком, осилил дочитать книжку Кристиана Кеннека "Lisp in small pieces", в которой подробно рассматривается строение интерпретаторов и компиляторов разных лиспов, и, конечно же, я загорелся идеей сделать свой крутой компилятор своего диалекта лиспа 😅 Как будто у меня хобби мало — уже поджимают сроки со второй частью туториала по геймдеву на Common Lisp, и буквально сегодня объявили дату осеннего Lisp Game Jam (спойлер, это 25 октября).

В общем, сегодня схожу на первый сеанс ЛФК, меня там каак вылечат, и тут-то я всё и сделаю))
8😢2👍1
#лытдыбр #common_lisp

Пока потихоньку доделываю туториал по геймдеву на CL, умудрился наткнуться и починить багу в библиотеке для UI Nuklear (она во второй части туториала тоже будет фигурировать 😊). Бага причём есть не только в liballegro-бэкэнде (я уже давно прикипел к этой библиотеке), но и в некоторых других бэкэндах, но на них у меня сил, конечно, не хватит 😅
🔥5