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

По всем вопросам @awkravchuk
Download Telegram
#лытдыбр

Марк Цукерящер, я смотрю, вообще там эцсамое. Как это, another person? Этот телефон вон у меня рядом с монитором лежит, алло
😱1
#common_lisp

С утра, ещё толком не проснувшись, прочитал в фиде статью про нынешние реализации Common Lisp , и приспичило посмотреть, как там проект Clasp поживает — это тот новенький, который на LLVM. Поискал ебилды для Gentoo, нашёл в оверлее tgbugs-overlay, но он у меня не захотел компилироваться. На базе него сделал себе в локальном оверлее ебилд, и после нескольких взмахов напильником получилось его собрать, вот он. Ожидал, что будет компилироваться несколько часов, — видел такие страшилки где-то в районе версии 1.0 этого проекта, однако на моём Ryzen 3600 оно собралось за 12 минут 😅
Первые впечатления следующие:
• Ого, оно работает! (см. рис. 1)
• Компилирует лисповый код Clasp страшно медленно, наверное, на порядок медленее SBCL.
• С кодировочками строк есть косячок (см. рис. 2).
• С совместимостью есть проблемы, но совсем не оттуда, откуда я ожидал (см. рис. 3): внезапно Clasp не смог подгрузить совершенно тривиальную библиотеку для парсинга JSON Jonathan из-за того, что в ней используется дурацкий синтаксический сахар cl-annot. Впрочем, я вроде бы всё равно собирался заменить JSON в своём движка d2clone-kit на обычные S-expr'ы. Там поглядим, может, в список поддерживаемых движком компиляторов и Clasp добавится 😊
🔥3👍1
#лытдыбр

Давеча немножко пощебетал в твиттере с господином Сандером Мертенсом, автором библиотеки Flecs, реализующей паттерн Entity-Component-System, который позволяет эффективно хранить и обрабатывать данные об объектах в игровых мирах. Я эту библиотеку даже в своё время демонстрировал на открытом уроке на работе.
Сандер начал к своему детищу прикручивать планировщик запросов, прямо как в настоящей реляционной базе данных, и, внимание, небольшую виртуальную машину, что, на мой взгляд, жуткий оверкилл. Возможно, к таким архитектурным решениям его привёл выбор реализации паттерна, — классически есть два стула варианта: на основе разреженных массивов, это тот подход, которого я придерживаюсь в своём движке, и на основе т.н. архетипов, когда объекты со схожими наборами компонент группируются в таблицы. Опять-таки, второй подход мне кажется более громоздким.
В твиттере я Сандеру немножко набросил на вентилятор, мол, больно уж ваш труд на Prolog/Lisp смахивает 😅 Сандер, в свою очередь, пояснил, что большая часть сложности его реализации проистекает не из-за поддержки взаимосвязей между объектами (что мне, конечно, тоже кажется оверкиллом), а из-за поддержки в запросах булевских операторов Not/Or и т.д. Что ж, в ближайших планах у меня оформление собственного кода для ECS в отдельную библиотеку, плюс обогащение его идеями, подсмотренными в том числе у Сандера, так что там видно будет 😊
#лытдыбр #проекты

Наконец перетащил все запланированные на будущее задачи в проекте d2clone-kit из issues Gitlab'а в простой советский трёхкопеечный Org-файл: ROADMAP.org. Как мне представляется, это такой ультимативный анти-vendor-lock-in: даже если Gitlab последует судьбе Github и будет скуплен Microsoft, и если придётся переезжать на какой-нибудь, прости г-ди, Sourcehut или вовсе хостить проект на CGit, запущенном на Raspberry Pi под кроватью — все мои планы останутся со мной в неприкосновенном виде 👍🏻
Ещё бы перетащить все TODO из комментариев в кодовой базе туда же, но тогда файл станет неприлично огромным 😅
👍3
#анонс #видео

Завтра в 9:00 МСК собрался триумфально вернуться на twitch немножко постримить кодинг ECS-библиотеки на Common Lisp, часик-полтора, не более. Особой пикантности стриму придаст тот факт, что в моём часовом поясе он начнётся в 7:00, так что буду максимально невыспан, но другого времени в плотном графике дел найти не удалось.

Трансляция, как всегда, будет тут: https://twitch.tv/awkravchuk. Записи не будет, но потом планирую из нарезок стримов смонтировать один небольшой видос. Оставайтесь настроенными 😊
🔥4👍1👏1
#лытдыбр

Ну что ж, вот снова пошла вода по трубам в моём утреннем стриме 😊
https://twitch.tv/awkravchuk
🔥1
#мемасики

Тут это, произошло аниме 😁
Есличо генератор вот этот https://imgcreator.zmo.ai/genwitht
❤2
#репост

Немножко мотивации от коллеги-лиспера 😊
Forwarded from memory heap (Artyom "avp" Poptsov)
Ниже идёт мой перевод статьи под авторством Карла Ланге:
http://carl.flax.ie/dothingstellpeople.html

Мои примечания выделены курсивом.

* * *

Делай вещи, рассказывай людям.

Это всё, что вам нужно для того, чтобы стать успешными.¹ Можно обойтись только одним из этих двух правил, на это достаточно редкий случай достижения успеха, и кто-то должен сделать за вас вторую часть.

Если у вас нет никаких умений, которые можно было бы развивать и продвигать, то вам нужно освоить хотя бы одно, так как за этим — будущее. У нас есть Khan Akademy, Wikipedia, Codecademy и практически все мировые знания на кончиках ваших пальцев. Используйте это.

Затем сделайте что-то, о чём вы можете рассказать. Сделайте что-то крутое. Что-то интересное. Потратьте на это время. Заморочьтесь по-полной. Даже если ваш проект — это самая бесполезная вещь, которую вы когда-либо делали, сделайте его, если вы можете рассказать о нём. Эта часть достаточно простая, так как вы делаете что-то, что считаете крутым и интересным. Если даже проект бесполезен — отлично, вам не надо будет поддерживать его в дальнейшем.

После этого найдите мероприятия, где собираются люди, с которыми вы хотели бы работать. Потом возьмите какой-нибудь напиток (или без него) и поговорите с людьми на мероприятии о своём проекте. Расслабьтесь — скорее всего это вашим собеседникам тоже интересно. Если даже нет — поскольку вы сделали проект сами, вы будете говорить со знанием дела. Это очень важный момент — и это тоже достаточно легко, поскольку вы говорите о чём-то, сделанной вами, и вы считаете это крутым и интересным. Как дополнительный бонус, много людей приходят на подобные события просто чтобы поговорить о крутых и интересных вещах, так что вы будете в своей тарелке.

Вы не поверите, как много возможностей открывается для тех, кто делает вещи и говорит о них. Это то, что позволяет путешествовать по просторам бизнеса — вы делаете что-то интересное и говорите людям об этом. Взамен вы получаете контакты, визитки и адреса электропочты. Затем вы получаете контракты, предложения о работе, находите инвесторов и т.д. Кроме того, вы заводите друзей, которые считают, что то, что вы делаете — это круто. Вы создаёте себе имя, как "человек, который сделал/сделала вот эту крутую штуку." Затем, если кому-то понадобиться сделать что-то, каким-то образом связанное с той крутой штукой, которую вы делали — они вспомнят про вас и предложат вам работу.

Киаран МакКан и я [Карл Ланге, автор оригинальной статьи — прим. перев.] начали работу над игровым движком для HTML5 (и связанным с ним блогом). Когда мы были на первом курсе колледжа. Мы так его и не доделали, но благодаря Flax [тот самый игровой движок — прим. перев.] мы попали на стажировку в Ericsson летом второго учебного года. Сейчас я на пути в Game Closure [некая компания, судя по всему занимающаяся разработкой игр и сейчас перекупленая другой компанией — прим. перев.], и Киаран устраивается на работу в Daemonware [также компания, занимающаяся разработкой игр — прим. перев.] Мы просто делали вещи и говорили о них другим людям.

¹ Я [Карл Ланге, автор оригинальной статьи — прим. перев.] определяю успешность, как "умение пользоваться возможностями, которые вам лично интересны," но я думаю, что эта мантра также работает на успех и в случае денег. Я на самом деле не имею в виду успех как что-то, наполняющее жизнь смыслом — хотя это зависит от того, чем вы ходите в жизни заниматься. Также я даю себе отчёт, что это не распростряняется на людей во многих жизненных ситуациях.
#мемасики

Wow, this is literally me 😅
#лытдыбр #мемасики

На прошлых выходных пытался настроить Netflix на Raspberry Pi, воткнутой в телевизор, и, как всегда, чуть не улетел в космос на жопной тяге из-за пакетного менеджера Debian. Можно сколько угодно шутить про Gentoo, однако сообщения об ошибках от её пакетного менеджера всегда предельно ясны: "программа foo не может быть установлена, потому что зависит от библиотеки bar с выключенным USE-флагом baz, но уже установленная программа qux требует, чтобы USE-флаг baz у библиотеки bar таки был включен". Debian'овский пакетный менеджмент хорош, более того, я считаю, что Debian — самый годный из дистрибутивов с бинарными пакетами, но его сообщения об ошибках меня уже второй десяток лет поражают до глубины души: "kodi-bin:armhf : Depends: libsmbclient:armhf (>= 2:4.0.3+dfsg1) but it is not going to be installed". А почему libsmbclient:armhf 2:4.0.3+dfsgklmnёprst не будет установлен? Да потому что пошёл ты нахуй, вот почему. Понятная картинка (я аж GIMP ради неё расчехлил):
❤3😁2😈1
This media is not supported in your browser
VIEW IN TELEGRAM
#fennel #проекты

Наш с товарищем игровой проект, судя по всему, переезжает с Defold на Löve2d — первый, конечно, является замечательным движком, но больно уж мне не нравится, что прежде чем написать хоть строчку кода, в нём нужно полчаса вазюкать мышкой, коей необходимо мацать туда-сюда графическое представление игровых объектов в редакторе. В Löve2d всё делается кодом, никаким редактором и не пахнет 😅
Заодно благодаря переезду появилась возможность сделать истинно интерактивную разработку, прямо как в горячо любимом нами Common Lisp 😊 Не без костылей, конечно, но стараниями господина Фила Хагельберга в Fennel и парой взмахов моим напильником получилось как будто бы сносно, см. видос.
❤1👍1
#common_lisp #лытдыбр

Сегодня на утреннем стриме зритель задал коронный вопрос, почему, мол, пишешь на лиспе. Я выдал вот такой экспромт 😅

https://youtu.be/iGkkRwCj3Po

Пора бы побриться, да
🔥3😁1
#мемасики

Твоё лицо, когда пытаешься установить триалку LispWorks
😁2🥰1
#лытдыбр #соцсети

Пока не знаю зачем, но завёл себе учётку в Mastodon, пусть будет: @awkravchuk@functional.cafe

Первый раз в моей жизни, когда мне пришлось гуглить, как пользоваться социальной сетью, лол. Чтобы не забыть:
• a favorite is for the author ("I liked this")
• a bookmark is for you ("I want to see this again later")
• a boost is for your followers ("more people should see this")
👍3
О, про мой любимый город пишут ❤️