https://lists.freedesktop.org/archives/xorg-devel/2023-March/059004.html
Нам пишут, что никто не хочет руководить проектом Xorg - не нашлось достаточного количества номинантов, чтобы начать выборы.
Меня тут, конечно, гораздо больше заинтересовал список текущих директоров - "The directors who received two year terms starting in 2022 were Emma Anholt, Mark Filion, Alyssa Rosenzweig and Ricardo Garcia"
Вот вы говорите, что в IT мало женщин. Ну как же мало, если 2 из 4 позиций директоров xorg - это женщины?
Нам пишут, что никто не хочет руководить проектом Xorg - не нашлось достаточного количества номинантов, чтобы начать выборы.
Меня тут, конечно, гораздо больше заинтересовал список текущих директоров - "The directors who received two year terms starting in 2022 were Emma Anholt, Mark Filion, Alyssa Rosenzweig and Ricardo Garcia"
Вот вы говорите, что в IT мало женщин. Ну как же мало, если 2 из 4 позиций директоров xorg - это женщины?
😁10🐳6👎3❤1
Когда проект, по сути, завершен, и программисту в нем нечего делать, он начинает вылизывать в проекте что-нибудь. #ball_lick
Вот, есть такая сборочная система - #meson. Она, по сути, написана. Там есть все, что может пожелать любой sane сборочный скрипт, и даже много чего лишнего.
Но проект же должен развиваться, нужно катить новые релизы.
https://mesonbuild.com/Release-notes-for-1-1-0.html
Давайте я просто оставлю несколько цитат, про то, какие же проблемы решает проект в своем развитии:
"sudo meson install now drops privileges when rebuilding targets"
Нет, это не помощь пользователю, это очередная боль мейнтейнера, который будет вынужден помнить про очередную неочевидную "магию".
Инструменты должны быть простыми, и должны fail fast, вместо того, чтобы "решить проблему любым доступным образом". Потому что "следующий какой-то доступный способ" сделает чуть-чуть иначе, чем основной.
"meson install now supports user-preferred root elevation tools
Previously, when installing a project, if any files could not be installed due to insufficient permissions the install process was automatically re-run using polkit. Now it prompts to ask whether that is desirable, and checks for CLI-based tools such as sudo or opendoas or $MESON_ROOT_CMD, first"
Вы понимаете, сколько в этом говне прикопано "магии", которая, в зависимости от доступного окружения, будет делать разные действия при выполнении одних и тех же команд? Моб твою ять, поведение сборочной системы зависит от того, есть на машине polkit, или нет.
Ну а еще, конечно, любой "promtps" в batch cli по сборке и установке - это харам.
Я бы с радостью заморозил сейчас версию meson у себя, но ведь всегда найдется какой-нить красноглазый студент, решивший заюзать новую клевую фичу именно в своем сборочном файле.
Вот, есть такая сборочная система - #meson. Она, по сути, написана. Там есть все, что может пожелать любой sane сборочный скрипт, и даже много чего лишнего.
Но проект же должен развиваться, нужно катить новые релизы.
https://mesonbuild.com/Release-notes-for-1-1-0.html
Давайте я просто оставлю несколько цитат, про то, какие же проблемы решает проект в своем развитии:
"sudo meson install now drops privileges when rebuilding targets"
Нет, это не помощь пользователю, это очередная боль мейнтейнера, который будет вынужден помнить про очередную неочевидную "магию".
Инструменты должны быть простыми, и должны fail fast, вместо того, чтобы "решить проблему любым доступным образом". Потому что "следующий какой-то доступный способ" сделает чуть-чуть иначе, чем основной.
"meson install now supports user-preferred root elevation tools
Previously, when installing a project, if any files could not be installed due to insufficient permissions the install process was automatically re-run using polkit. Now it prompts to ask whether that is desirable, and checks for CLI-based tools such as sudo or opendoas or $MESON_ROOT_CMD, first"
Вы понимаете, сколько в этом говне прикопано "магии", которая, в зависимости от доступного окружения, будет делать разные действия при выполнении одних и тех же команд? Моб твою ять, поведение сборочной системы зависит от того, есть на машине polkit, или нет.
Ну а еще, конечно, любой "promtps" в batch cli по сборке и установке - это харам.
Я бы с радостью заморозил сейчас версию meson у себя, но ведь всегда найдется какой-нить красноглазый студент, решивший заюзать новую клевую фичу именно в своем сборочном файле.
🔥11❤2🥱2😁1🐳1💯1
https://awesomekling.substack.com/p/how-were-building-a-browser-when
Тут вот автор https://serenityos.org/ решил похвастаться историей успеха про то, как они запилили еще один браузер. Не в смысле еще одну обертку над webkit/chrome/firefox, а реально +1 full reimplementation, включая движок JS. #ladybird
except it is not.
https://github.com/pg83/ix/blob/main/pkgs/bin/ladybird/ix.sh - у меня уже достаточно давно умеет собираться снепшот их кодовой базы, к сожалению, пока их браузер не умеет вообще ничего (у меня он валился на простой скачке контента).
Возможно, потому что им приходится велосипедить вообще все (посмотрите на список зависимостей - только QT), потому что основной их потребитель - это SerenityOS.
Пока нет, но очень хотелось бы. Сформулирую так - хотелось бы появления какой-то субкультуры "suckless web", который бы работал в простом браузере, без всех современных изысков в js/html.
Современный веб бесит своей сложностью и монструозностью.
Тут вот автор https://serenityos.org/ решил похвастаться историей успеха про то, как они запилили еще один браузер. Не в смысле еще одну обертку над webkit/chrome/firefox, а реально +1 full reimplementation, включая движок JS. #ladybird
except it is not.
https://github.com/pg83/ix/blob/main/pkgs/bin/ladybird/ix.sh - у меня уже достаточно давно умеет собираться снепшот их кодовой базы, к сожалению, пока их браузер не умеет вообще ничего (у меня он валился на простой скачке контента).
Возможно, потому что им приходится велосипедить вообще все (посмотрите на список зависимостей - только QT), потому что основной их потребитель - это SerenityOS.
Пока нет, но очень хотелось бы. Сформулирую так - хотелось бы появления какой-то субкультуры "suckless web", который бы работал в простом браузере, без всех современных изысков в js/html.
Современный веб бесит своей сложностью и монструозностью.
Substack
How we're building a browser when it's supposed to be impossible
“How is the SerenityOS team making such good progress on building their Ladybird browser, when we've heard for years that it’s impossible”?
👍12🔥4
commit -m "better"
Будни #bootstrap Закончил собирать YT. Не весь, пока только сервер. С удивлением обнаружил, что там нет цели install: [5968/5968] Linking CXX executable yt/yt/server/all/ytserver-all ninja: Entering directory `/ix/build/B771eHwr4Dr1dzEA/obj' ninja: error:…
#conan
Как говорится, не выдержала душа поэта, и, вместо пустышки + ручной подготовки структуры директорий по conanfile.txt, я запилил скрипт, который, по conanfile.txt, берет все нужное из окружения, и строит нужную структуру директорий.
Скрипт достаточно хорош, чтобы корректно обработать простой conanfile - https://github.com/ytsaurus/ytsaurus/blob/main/conanfile.txt, и, далее, кореектно собрать YT.
https://github.com/pg83/ix/blob/main/pkgs/bld/conan/conan.py
Натурально, добавляешь ЭТО в PATH, и cmake отрабатывает верно.
Как говорится, не выдержала душа поэта, и, вместо пустышки + ручной подготовки структуры директорий по conanfile.txt, я запилил скрипт, который, по conanfile.txt, берет все нужное из окружения, и строит нужную структуру директорий.
Скрипт достаточно хорош, чтобы корректно обработать простой conanfile - https://github.com/ytsaurus/ytsaurus/blob/main/conanfile.txt, и, далее, кореектно собрать YT.
https://github.com/pg83/ix/blob/main/pkgs/bld/conan/conan.py
Натурально, добавляешь ЭТО в PATH, и cmake отрабатывает верно.
🔥10👍5😁3
https://en.liujiacai.net/2023/04/13/zig-build-system/
Тут вот рассказывают про сборочную систему Zig, zig build.
Я не знаю, это какое-то наваждение, охватившее большое число программистов - "если язык достаточно хорош, чтобы описать сложную программу, то и описывать сборку программ на этом языке - тоже хорошо".
Zig - очень низкоуровневый язык, сборочные файлы "zig build" - тихий ужас.
Ну и, "для того, чтобы собрать программу для zig, нужно собрать программу на zig", тоже очень доставляет.
Тут вот рассказывают про сборочную систему Zig, zig build.
Я не знаю, это какое-то наваждение, охватившее большое число программистов - "если язык достаточно хорош, чтобы описать сложную программу, то и описывать сборку программ на этом языке - тоже хорошо".
Zig - очень низкоуровневый язык, сборочные файлы "zig build" - тихий ужас.
Ну и, "для того, чтобы собрать программу для zig, нужно собрать программу на zig", тоже очень доставляет.
🤔5👍2💯2🤮1
#rust
https://www.opennet.ru/opennews/art.shtml?num=58969
Слуште, я вот даже не знаю, что сказать по поводу этих новостей.
С одной стороны, понятно желание как-то упорядочить использование торговой марки, с другой, многие положения выглядят как откровенное жлобство.
https://github.com/thepowersgang/mrustc/issues/301
Да, да, я знал, куда полезть за жареным. mrustc, кажется (IANAL), вполне себе нарушает новые правила использования торговой марки - "Generally no - it is not permitted to use the Rust name or Logo as part of your own trademark, service mark, domain name, company name, trade name, product name or service name"
Кстати, кажется, я теперь должен писать вот такой вот шебанг в каждый текст про раст?
"проект Rust и организация Rust Foundation не вовлечены в создание и рецензирование содержимого"
Rust Foundation - контора пидорасов!
https://www.opennet.ru/opennews/art.shtml?num=58969
Слуште, я вот даже не знаю, что сказать по поводу этих новостей.
С одной стороны, понятно желание как-то упорядочить использование торговой марки, с другой, многие положения выглядят как откровенное жлобство.
https://github.com/thepowersgang/mrustc/issues/301
Да, да, я знал, куда полезть за жареным. mrustc, кажется (IANAL), вполне себе нарушает новые правила использования торговой марки - "Generally no - it is not permitted to use the Rust name or Logo as part of your own trademark, service mark, domain name, company name, trade name, product name or service name"
Кстати, кажется, я теперь должен писать вот такой вот шебанг в каждый текст про раст?
"проект Rust и организация Rust Foundation не вовлечены в создание и рецензирование содержимого"
Rust Foundation - контора пидорасов!
www.opennet.ru
Изменение политики товарных знаков Rust Foundation
Организация Rust Foundation опубликовала форму обратной связи для рецензирования новой политики товарных знаков, связанных с языком Rust и пакетным менеджером Cargo. По окончании опроса, который продлится до 16 апреля, Rust Foundation опубликует финальную…
🤡13👍10🔥1
https://www.phoronix.com/news/Wine-8.6-Released
#wine решили забандлить libm из #musl.
Это, конечно, хорошая тема. Потому что позволяет wine runtime еще меньше зависеть от системы.
Если не можешь статически собрать весь код - то собери статически (ну или, хотя бы, по жестким версиям исходников динамически) свой runtime.
#wine решили забандлить libm из #musl.
Это, конечно, хорошая тема. Потому что позволяет wine runtime еще меньше зависеть от системы.
Если не можешь статически собрать весь код - то собери статически (ну или, хотя бы, по жестким версиям исходников динамически) свой runtime.
Phoronix
Wine 8.6 Released With Bundled Musl Libc Math Library
Wine 8.6 is out as the newest bi-weekly development release of this open-source software to enjoy Windows games and applications on Linux and other platforms.
🔥7👍4🤔3👎1
https://www.fsf.org/blogs/community/googles-decision-to-deprecate-jpeg-xl-emphasizes-the-need-for-browser-choice-and-free-formats
#fsf высказались по теме выключения поддержки #jpeg_xl в Chromium.
Слушайте, я не смог прочесть этот текст.
У меня опять сработала регулярка на тему "проклятых sjw", на фразе "... issue in the history of the Chromium project, the nominally free basis for the Google Chrome browser"
Мерзотные, левацкие sjw, вот кто такие эти fsf.
Ну вот реально, вот как им еще сказать "вы, конечно, выполняете все правила free software, и мы, конечно, по нашим же правилам, так и должны вас назвать, но вы нам не нравитесь, поэтому вот вам плашка nominally".
Всем же понятно, что есть free software, а есть какое надо free software, и не надо их смешивать!
Или, может, с Mozilla Foundation проще договориться, чем с google? (хер там)
#fsf высказались по теме выключения поддержки #jpeg_xl в Chromium.
Слушайте, я не смог прочесть этот текст.
У меня опять сработала регулярка на тему "проклятых sjw", на фразе "... issue in the history of the Chromium project, the nominally free basis for the Google Chrome browser"
Мерзотные, левацкие sjw, вот кто такие эти fsf.
Ну вот реально, вот как им еще сказать "вы, конечно, выполняете все правила free software, и мы, конечно, по нашим же правилам, так и должны вас назвать, но вы нам не нравитесь, поэтому вот вам плашка nominally".
Всем же понятно, что есть free software, а есть какое надо free software, и не надо их смешивать!
Или, может, с Mozilla Foundation проще договориться, чем с google? (хер там)
www.fsf.org
Google's decision to deprecate JPEG-XL emphasizes the need for browser choice and free formats
🤡9👍6👎5🔥2🤔2🐳1🖕1
#abi #dwarf #elf #unwind #gold
Я как-то кидал ссылку на реализацию базовых функций Itanium ABI, для раскрутки стека и исключений. Вот, в каком-то смысле, продолжение - а что же там такое делает компилятор с линкером на пару, чтобы поддержать itanium runtime?
https://lesenechal.fr/en/linux/unwinding-the-stack-the-hard-way
Текст - огонь. Он явно войдет в мою золотую коллекцию ссылок про низкоуровневое устройство современных runtime.
По многим темам в интернетах не хватает ссылок уровня upper intermediate - это когда ты еще не прочел 10 стандартов по 1000 страниц каждый, но, после прочтения подходящего текста, ты уже можешь взять в руки какой-то инструментарий, и сделать что-то содержательное.
Есть куча зумерских восторгов вида "гля я заменил __cxa_throw, у меня программа теперь падает новым интересным образом", есть спецификации на ELF/DWARF, которые ни один нормальный человек читать не захочет (если он не на зарплате, конечно), а вот текстов "посредине" - очень и очень мало.
В тексте очень сжато расписано, как устроены разные секции, нужные для обработки исключений, начиная от ELF формата выполняемых файлов, и кончая описанием байткода DWARF, нужного для вычисления значения регистров в разные моменты выполнения программы (в том числе, base pointer), по текущему контексту.
Прямо очень, очень хорошо.
Большую часть того, что там написано, я и так знал, но чтобы вот так, системно, в одном месте - никогда не видел.
Я как-то кидал ссылку на реализацию базовых функций Itanium ABI, для раскрутки стека и исключений. Вот, в каком-то смысле, продолжение - а что же там такое делает компилятор с линкером на пару, чтобы поддержать itanium runtime?
https://lesenechal.fr/en/linux/unwinding-the-stack-the-hard-way
Текст - огонь. Он явно войдет в мою золотую коллекцию ссылок про низкоуровневое устройство современных runtime.
По многим темам в интернетах не хватает ссылок уровня upper intermediate - это когда ты еще не прочел 10 стандартов по 1000 страниц каждый, но, после прочтения подходящего текста, ты уже можешь взять в руки какой-то инструментарий, и сделать что-то содержательное.
Есть куча зумерских восторгов вида "гля я заменил __cxa_throw, у меня программа теперь падает новым интересным образом", есть спецификации на ELF/DWARF, которые ни один нормальный человек читать не захочет (если он не на зарплате, конечно), а вот текстов "посредине" - очень и очень мало.
В тексте очень сжато расписано, как устроены разные секции, нужные для обработки исключений, начиная от ELF формата выполняемых файлов, и кончая описанием байткода DWARF, нужного для вычисления значения регистров в разные моменты выполнения программы (в том числе, base pointer), по текущему контексту.
Прямо очень, очень хорошо.
Большую часть того, что там написано, я и так знал, но чтобы вот так, системно, в одном месте - никогда не видел.
lesenechal.fr
Unwinding the stack the hard way • lesenechal.fr
Tutorial on how to make a stack trace or backtrace manually unwinding the stack using ELF’s .eh_frame and call frame information (CFI)
🔥21👍4💯1
commit -m "better"
Как говорится, доверяй, но проверяй! Я тут, случайно, в выводе pstree увидел красивое: flock---unbound Глаз за это зацепился, потому что я сразу подумал, что тут что-то не то, дерево процессов должно было выглядеть так: flock---timeout---unbound Ну,…
#unbound #musl #dns #dnsmasq
Перешел с unbound на dnsmasq, по советам коллег.
(да, я понимаю, что это продукты несколько разных масштабов, потому что unbound - настоящий рекурсивный dns resolver, а dnsmasq - "просто" кеширующая прокся (+dhcp +говна самовар), я их использовал для одного и того же)
Заодно сделал использование локального кешера обязательным, потому что musl без этого так себе работает - https://wiki.musl-libc.org/functional-differences-from-glibc.html#Name-Resolver/DNS, а люди потом жалуются на alpine - https://martinheinz.dev/blog/92
Коллеги посоветовали посмотреть в сторону #systemd-resolvd, но, КМК, они так шутят, потому что, будучи статически слинкованным, он будет под сотню мегабайт весить, наверное.
Перешел с unbound на dnsmasq, по советам коллег.
(да, я понимаю, что это продукты несколько разных масштабов, потому что unbound - настоящий рекурсивный dns resolver, а dnsmasq - "просто" кеширующая прокся (+dhcp +говна самовар), я их использовал для одного и того же)
pg# ls -la /ix/.../bin/unbounddnsmasq (вроде) не виснет, и весит меньше.
... 5683992 unbound
pg# ls -al /ix/.../bin/dnsmasq
... 2948464 dnsmasq
Заодно сделал использование локального кешера обязательным, потому что musl без этого так себе работает - https://wiki.musl-libc.org/functional-differences-from-glibc.html#Name-Resolver/DNS, а люди потом жалуются на alpine - https://martinheinz.dev/blog/92
Коллеги посоветовали посмотреть в сторону #systemd-resolvd, но, КМК, они так шутят, потому что, будучи статически слинкованным, он будет под сотню мегабайт весить, наверное.
martinheinz.dev
Why I Will Never Use Alpine Linux Ever Again
<p>
Nowadays, Alpine Linux is one of the most popular options for container base images. Many people (maybe including you) use it for anything and everythi...
Nowadays, Alpine Linux is one of the most popular options for container base images. Many people (maybe including you) use it for anything and everythi...
👍6🤔2🔥1
https://www.phoronix.com/news/Fedora-38-Released
Пишут, что вышла свежая Fedora. Пишут, что собрана она gcc 13, который еще не вышел. https://gcc.gnu.org/
Мне кажется, или собирать дистрибутив для людей до-релизным компилятором - это такое?
Пишут, что вышла свежая Fedora. Пишут, что собрана она gcc 13, который еще не вышел. https://gcc.gnu.org/
Мне кажется, или собирать дистрибутив для людей до-релизным компилятором - это такое?
Phoronix
Fedora 38 Released With GNOME 44 Desktop, GCC 13, Many New Features
Fedora 38 has been released today after meeting its early release target.
💩5❤3🤩2🤔1
#stal/ix #security #ROP
Мне тут в голову пришло забавное соображение про безопасность в контексте статической линковки, с которым я раньше никогда не сталкивался.
Возьмем, например, https://en.wikipedia.org/wiki/Return-oriented_programming
Это такая конструкция, которая позволяет составить вредоносный код, исполняющийся в адресном пространстве процесса, из запчастей самой программы.
Это довольно просто, мы берем все суффиксы всех возможных функций, и модифицируем стек так, чтобы каждый следующий ret случался в следующий нужный нам кусок программы:
Количество реюзабельных кусочков пропорционально общему объему кода программы.
Поэтому, как ни странно, статическая линковка, за счет того, что линкер выкидывает неиспользуемые функции, дает меньше строительных материалов для атаки, нежели когда ты в себя влинковал кучу мертвого кода из кучи .so (суммарный объем всех .so для почти любой программы, конечно, больше, чем та же программа, но слинкованная статически).
А, значит, "более безопасна"!
Мне тут в голову пришло забавное соображение про безопасность в контексте статической линковки, с которым я раньше никогда не сталкивался.
Возьмем, например, https://en.wikipedia.org/wiki/Return-oriented_programming
Это такая конструкция, которая позволяет составить вредоносный код, исполняющийся в адресном пространстве процесса, из запчастей самой программы.
Это довольно просто, мы берем все суффиксы всех возможных функций, и модифицируем стек так, чтобы каждый следующий ret случался в следующий нужный нам кусок программы:
func1:Вот, можно так аугментировать call stack, что будет выполнено:
...
A
B
ret
func2:
...
C
D
ret
AТут, конечно, вдумчивый читатель спросит - а где взять эти самые кусочки? Чаще всего их можно взять в хорошо известных и стабильных последовательностях кода, типа libc.so
B
ret
C
D
ret
...
Количество реюзабельных кусочков пропорционально общему объему кода программы.
Поэтому, как ни странно, статическая линковка, за счет того, что линкер выкидывает неиспользуемые функции, дает меньше строительных материалов для атаки, нежели когда ты в себя влинковал кучу мертвого кода из кучи .so (суммарный объем всех .so для почти любой программы, конечно, больше, чем та же программа, но слинкованная статически).
А, значит, "более безопасна"!
Wikipedia
Return-oriented programming
computer security exploit technique that manipulates the call stack to hijack control flow
🤔17👍7😁3🤡1🦄1
Как-то один умный человек мне сказал, что на Земле живет всего 100 (или 500?) настоящих живых людей, а все остальные - NPC (да, он из геймдева).
Ничего не могу сказать про это, но вот мир, конечно, очень маленький, по крайней мере, в узкой области профессиональных интересов (или хобби).
Поэтому, когда мне в тележеньку пришла отбивка от бота про то, что на lobste.rs появилась новая статья с заголовком "Functional exception-less error handling with C++23's optional and expected", я уже знал, кто ее написал, про что она будет, и даже знал, какие ссылки будут в конце этой статьи.
Почему?
Потому что на днях мне прилетело обновление библиотеки tl-expected (fun fact - используется только в тележеньке), https://github.com/pg83/ix/blob/main/pkgs/lib/expected/ix.sh#L4, и я нашел 5 минут поштырить, что же это такое.
Спойлер - мне совершенно не близок такой способ обработки ошибок, все эти .or_else(), .and_then() (а заодно псевдоумные рассуждения про монады и теорию категорий) - это от бедности, потому что не договорились про https://habr.com/ru/articles/430690/ (несколько раз кидал ссылку на proposal, пусть сегодня будет на habr)
Ничего не могу сказать про это, но вот мир, конечно, очень маленький, по крайней мере, в узкой области профессиональных интересов (или хобби).
Поэтому, когда мне в тележеньку пришла отбивка от бота про то, что на lobste.rs появилась новая статья с заголовком "Functional exception-less error handling with C++23's optional and expected", я уже знал, кто ее написал, про что она будет, и даже знал, какие ссылки будут в конце этой статьи.
Почему?
Потому что на днях мне прилетело обновление библиотеки tl-expected (fun fact - используется только в тележеньке), https://github.com/pg83/ix/blob/main/pkgs/lib/expected/ix.sh#L4, и я нашел 5 минут поштырить, что же это такое.
Спойлер - мне совершенно не близок такой способ обработки ошибок, все эти .or_else(), .and_then() (а заодно псевдоумные рассуждения про монады и теорию категорий) - это от бедности, потому что не договорились про https://habr.com/ru/articles/430690/ (несколько раз кидал ссылку на proposal, пусть сегодня будет на habr)
Microsoft News
Functional exception-less error handling with C++23’s optional and expected
C++23's new facilities for handling disappointments without exceptions.
👍10👎1
Programmer memes
Тест на программиста Programmer memes
Senior: "в среднем, осталось 0.95 яблока, берите float"
😁12
Наш (тут я, конечно, про проект #stal/ix) PR отдел рекомендовал мне завести блог на medium, потому что ссылки оттуда на там же HN/lobste.rs будут выглядеть солиднее, чем c какого-то там личного github.
С моей небольшой помощью наши совершенно потрясающие волонтеры запилили мне страничку с info - https://medium.com/@anton_samokhvalov/about (перебор? Не знаю, мне кажется, любое внимание не повредит), ну и, для затравки, один пост - https://medium.com/@anton_samokhvalov/about-bootstrapping-5eab2a0dba24
Мне кажется, это очень круто!
С моей небольшой помощью наши совершенно потрясающие волонтеры запилили мне страничку с info - https://medium.com/@anton_samokhvalov/about (перебор? Не знаю, мне кажется, любое внимание не повредит), ну и, для затравки, один пост - https://medium.com/@anton_samokhvalov/about-bootstrapping-5eab2a0dba24
Мне кажется, это очень круто!
Medium
About – Anton Samokhvalov – Medium
About Anton Samokhvalov on Medium. stal/IX creator (https://stal-ix.github.io).
👍20🤯4🔥3😢1🕊1