Лаборатория Математики и Программирования Сергея Бобровского – Telegram
Лаборатория Математики и Программирования Сергея Бобровского
1.29K subscribers
1.19K photos
24 videos
930 links
ЛаМПовое с Бобровским
Download Telegram
Обожаю смотреть нашу первую-вторую лиги!
Собрал за пару часов такую же глупую как и футбол игрульку "Лучшая Лига Мира"
(жпт использовал только для генерации календаря встреч).

Процесс игры очевиден (всего одна кнопка:).

Скачать игру тут zip 27 кб :)

В корне игры текстовый файлик teams.txt, предварительно замените название самой первой команды (Динамо М), на название той, за которую вы будете играть.
Нужна NET 4.8.

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

Хулиганы второй лиги снова рвутся в бой!..

=

А это, видимо, памяти Цоя?
"The hardest part of letting go, is saying goodbye."

+ фоном к игре можно послушать думерское
👍45❤‍🔥10😁2
Прекрасное:
"Telescopes Are Tries: A Dependent Type Shellac on SQLite"

Представляем телескопы (преобразователи зависимых типов в обычные) как префиксные деревья с вложенными отображениями (например, словари Python), а так как телескопы эквивалентны конъюнктивным запросам, получаем
категорию, где композиция соответствует контекстным преобразованиям.

То есть можно легко и просто эмулировать зависимые типы (да и просто сложные типы F#/Haskell) словарями Python, где ключи — значения переменных, а значения -- вложенные контексты; и никаких GADT/singletons.

Более того из "телескопных" описаний несложно генерировать SQL, а в результате получаем прозрачную работу не только с реляционными данными, но и с графами, транзитивными замыканиями и т.п.
34🤔20👍3❤‍🔥22
.

В дополнение к сегодняшнему посту.

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

А так-то ведь это задачка вполне по силам и сообразительному третьекласснику! Просто выделить существительные: гном, инструмент, оружие, животное, растение, руда, тайл...

Так вот, поразительно, но ни жпт5 ни грек4 ни клод4.1 не смогли сделать что-то элементарно адекватное, хотя бы намёком подразумевающее иллюзию понимания. Дублирующиеся понятия, какие-то совершенно посторонние сущности, абстракции абстракций, полный 💩

Во-вторых, все они также безбожно тупят 🤮 и в простейших нешаблонных задачках software design: например, подробно пишу, что надо сделать сигнатуру метода по reified generics, а оно мне выдаёт type erasure lol и никакие мои возмущения не принимает.

В-третьих, и это самое главное, после пяти лет моих регулярных размышлений на эту тему (можно найти мои старые сериалы, где я рассуждал про сильное объектно-ориентированное мышление), я наконец-то придумал (или, точнее сказать, открыл) ту формальная модель, которой можно следовать, чтобы достигнуть цели сегодняшнего поста. Мечты сбываются! 💥 хотя я ещё полгода назад и предположить не мог...
Прежде всего помогло конечно то, как я прокачался, когда делал гайды по гомотопической теории типов. По результату открываются какие-то совсем удивительные инсайты 😇

И это совсем не про то, что "надо больше практиковаться" или "читать книги по объектному мышлению" (что само по себе безусловно полезно, но недостаточно).

Я дам моим ментатам логически атомарные шаги, которым надо просто тупо следовать, чтобы спроектировать систему на тысячи классов с полного нуля, сохраняя сложность проекта линейной, а не экспоненциально растущей.

То есть мы резко повышаем мастерство, (почти) не прокачивая скиллы 🚀

Сперва сделаю такую формальную модель для ООП, потом и для ФП.

Единственный минус, что это получается уж очень тяжёлая интеллектуальная работа 🤓 и AI совсем не помощник...

Хотя после HoTT мне уже ничего не страшно 😁

Почитайте сегодняшний пост, чтобы понять, о чём я говорю.
651👍166🤝1
.

Облако драгоценностей за неделю.

Основной паблик:

Программный пост, типа.

Но с сегодняшнего дня паблик vk закрытый: все посты видны только папищекам, вступление только через моё личное приглашение.

Для донов-начинающих:

Мне периодически пишут
— Сергей Игоревич, я прошёл известные онлайн-курсы, потратил 200 тысяч рублей. Результата ноль. В программировании так ничего и не понимаю. Что со мной не так?
С вами всё в порядке. Проблема в том, что 98% современных курсов по программированию учат обрезанной версии!..

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


Для донов-неначинающих:

Продолжаю выкладывать для донов материалы СильныхИдей — доступны моим ментатам, но тут расширенные и дополненные версии.
49. Как найти смысл данных в вашем проекте.

Как AI-агенты угрожают SaaS-модели.

Какой из фреймворков потянет сегодня миллиард запросов в секунду (без кэша, HAProxy, Prometheus/Grafana)?
Условия: идентичные ноды, JSON-запросы, равномерное распределение.
Ключевые метрики: P99 latency, использование CPU/RAM, стабильность.
(поразительно, но go gin и не первый и не второй, и даже проиграл кору asp net)

(все старые материалы для донов постепенно сгорают)

=

Первые сериалы из существенно переработанных и улучшенных материалов СильныхИдей (по сути три книги) доступны на бусти:
1. БАЗА программной инженерии
2. Software Design с акцентом на Programming in Small
3. SOLID-25
4. Гайд Вайб-проектирование


=

Новые материалы для ментатов Лаборатории.

В "Бесстрашные переговоры по зарплате" добавлен 55-й материал "98% программистов не знают Это!".
У всех программистов, испытывающих трудности с работой, есть одна общая черта. Дело не в недостатке знаний. Это не слабое резюме. Это не плохие софт-скиллы. Дело в том, что ...
что вы годами тратите всё своё время на рутину в интересах других людей, скребя копейки, вместо того, чтобы постоянно развивать скиллы, за которые хорошо платят на рынке труда, и стратегически по ит-бизнесу (что будешь делать после 40?), т.к. у вас на это "нету времени". Ну ок, это ваша жизнь; просто не забывайте, что "всем пофиг".


В СильныеИдеи добавлены материалы
"121) 1, 2, 3... Много!" (поговорим о классах эквивалентности для Много),
"119) Самый лучший микро-стиль кодирования".


Мы здесь, потому что это трудно.
it's a privilege to do things that are hard.

=

Self-Hack (тайм-менеджер + мотиватор + idle-игра).
Готово 42(+0) уровней из 54 альфа-версии,
этим летом бета-версия 💯 будет готова.

Таки игра рассыпалась ) ну, когда надо 1.58 возводить в степень 20,000, и много раз в секунду подобных вычислений, и это далеко не конец. так-то работает, но начались тормоза, а кто знал... Пришлось перефигачивать код более чем полностью.
Нашёл древнюю либу gnu mpfr из 90-х, там есть условный bigfloat (на экспоненту отведён int, т.е. до 2+ миллиардов), но синтаксис по понятным причинам префиксный, поэтому рефакторинг получился эпичным.
13515👍5❤‍🔥41
This media is not supported in your browser
VIEW IN TELEGRAM
Вопрос, а кому вообще всё это надо? MLTT, HoTT, индуктивные типы, процесс-алгебры, pi-калкулусы, кодирование топосов, hopf fibrations и прочая попса, которая сделает вас overengineering и в результате полностью unemployable? :-)

Я не знаю. Понятно, что в айтишке - по определению - лучше быть умненьким, чем глупеньким, и тем не менее вы можете строить прекрасную карьеру и зарабатывать хорошие деньги (или уже нет?), всю жизнь занимаясь например джоном рестом, crud-ом-шмудом, saas-ом-фигасом, микросервисами-фигервисами, парсингом-шмарсингом, сайтами-фигайтами, и прочей примитивной (хотя и доходной до поры до времени) линейной туфтой с нулевыми перспективами и задачками уровня первокурсников (впрочем, в универах хотя бы АСД изучают...).

Тема чистого проектирования сегодня немножечко понимаема фактически только в геймдеве. Тамошний уровень сложности логики, да и system design, на 1-2 порядка круче любого бизнес-проэкта, и пацанов надо брать на работу с опытом прежде всего из разработки игр. Представляете - симулировать сложнейшие миры с тысячами особенностей в реалтайме, с тучами юзеров в онлайне...

Я где-то в середине 2000-х делаль ММО про пиратские войны на Java, по-моему Java 2 :) Тогда очередной хайп шёл про перспективы java-апплетов для браузеров, ну и J2ME наверное на миллиарде устройств уже была, телефоны точно все её держали. Клиент просил игру на 150 krps! :) Я хз откуда он такую оценку взял, и сделал тайно для начала на 1000 rps :) ибо понимал, что до такого хайлоада либо шах либо ишак сдохнет (сдох в итоге шах - финансы закончились :) - но закладывался на масштабирование конечно...

Всегда любил gamedev, у меня валяются на флешках где-то сотни начатых - и заброшенных - проектов, но могу сказать 💯 что в 💯 случаев, когда я после игрового кодинга переключался на рабочие задачки, то всегда поражался их примитивизму.

Собственно из-за геймдева я и зашёл в computer science, потому что меня всегда дико бесило (буквально до этого месяца 🤓), что проекты достаточно быстро запутываются, а классические рекомендации программной инженерии помогают слабо и не выдирают корень проблемы. Но я всё же продолжал бороться со злом, а не примыкать к нему, как все остальные, и вот, спустя где-то ~20 лет, наконец победил! 🏆

Это кстати вполне нормальный срок для достижения истинного мастерства 💥 буквально на днях слушал историю русского автогонщика из assetto corsa competizione, который рассказывал, что наконец научился профессионально проходить повороты, а учился он этому 25 лет 😁

Начинал он, я так понял, с Grand Prix из 90-х и Indi500, где появились первые действительно реалистичные физические модели. Ну а потом netKar и rFactor.
3🔥48158👍4
Чем в айтишке глупенькие отличаются от умненьких?

Глупенькие a) ненавидят писать тесты, и b) ненавидят думать заранее.

Таким образом умненькие в дополнение к своим преимуществам по определению получают ещё новые огромные бонусы, потому что

a) AI действительно хорош в написании тестов, снимая много шаблонной нагрузки, и

b) AI непропорционально сильно вознаграждает тех, кто продумывает максимально много заранее. Команды, добивающиеся топовых результатов -- это те, кто умеет разрабатывать хорошие спецификации (в идеале, в формальном виде, например через BDD, или с помощью TLA+), качественно занимаются проектированием и позволяют AI реализовывать проект в TDD-наморднике под строгим контролем сверху вниз.
Мой гайд по вайб-проектированию в помощь.

Всё идёт норм и очень радует: результаты будут отличаться на всё больше и больше порядков.
6👍50194❤‍🔥1
.

Продолжаю работу с ментатами 🤓

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

...До этого я вообще не знал, что такое дефункционализация. Когда впервые услышал — показалось чем-то сложным и непрактичным. Типа "зачем заменять функции на классы?"
Перечитывал материал раз 10. И только после переписывания примеров начало доходить что это такое и зачем нужно.
Вывод: раньше казалось «overengineering», теперь — нормальный инструмент, особенно в проде, особето в ETL и распределенных вычислениях.

...Раньше я боялся глобального состояния, но теперь вижу в нём инструмент, а не антипаттерн. Главное - использовать его осознанно.
Спасибо!

...В целом, это задание научило меня думать о коде как о тексте для чтения, а не просто как о механизме выполнения. Принцип "встраиваемого проектирования" оказался неожиданно простым и мощным инструментом, который я точно буду использовать дальше.

...Удивительно, как можно задание из трех строчек прочитать неправильно. Максимальный размер словаря, конечно, взялся "по инерции" из предыдущего задания и задания курса АСД.
Хотя в условии об этом ни слова.

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

...Всю эту isinstance грязь можно упаковать в фабрику которая бы проверяла результаты и возвращала или результат или "подходящее" исключение. Ой, подождите, это что опять монады?...
Дальше еще 40 таких примеров, где то есть методы в которых разные такие вот BusinessLogicError рейзятся за условиями, ногу сломишь. вы были правы, я расстроился, мне никогда не переписать все это на монады, или хотя бы на внутренние коды ошибок которые можно было бы мапить в одном месте красиво :( :( :(

...Из состояний в проекте был использован локальный ин-мемори кэш, представляющий собой хэш-таблицу и наполняемый внешним сетевым вызовом определенной клиентской ручки.
Сейчас очевидно, что такой механизм был ненадежен. Из распространенных проблем: шквал запросов на клиента, когда ин-мемори кэш пустой и необходимо его заполнить, а также проблема с инвалидацией данных при "протухании" данных, что вело к неконсистентности.

...спроектировал класс "разделяемого состояния" для нескольких элементов GUI, который весь обмен сообщениями через шину инкапсулирует внутри себя. Заняло ~20 строк, по факту думал больше месяца. Без курсов по ООАП бы еще полгода городили костыли.


[по последнему, кстати, я ровно вот это и делаю для подобных случаев, чтобы не надо было думать вообще, по большому счёту]
134👍193❤‍🔥2
Очередное шаблонное нытьё "Live coding sucks" - синьор Мустафа с десятилетним опытом жалуется, ой-ой-ой как тяжело решать задачки когда кто-то смотрит со стороны, а я так не могу для меня это стресс, в реальной работе всё совсем другое бла-бла-бла... И подводит под это "научную" базу вдобавок.

Детский сад штаны на лямках.

Какой же ты сеньор, если не можешь быстро закодить алгоритмическую задачку просто на скиллах, на быстром мышлении. Даже если особо никогда АСД не изучал (что уже само по себе зашквар), ну за столько-то лет должен был осознанно выработать набор типовых паттернов кодирования задачек подобной сложности. Ну и натренировываться на собесах постоянно, это же абсолютное требование по карьере.

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

1. Вам надо выбрать стиль (ООП,ФП...)/язык/фреймворк для нового проекта. Определите требуемые свойства как типы-предикаты (пропозиции) и постройте формальные пути между ними, показывающие их совместимость или конфликты. Используйте одну из наиболее сильных систем классификаций -- h-levels из гомотопической теории типов.

2. Смоделируйте каждую сущность в проекте (таблицу базы, модель ORM) как Sigma-тип, где первая проекция содержит сами данные, а вторая - доказательство инвариантов. Например

Σ(x:User).(valid_email(x .email) × valid_password(x .password)))

Реализуйте каждый эндпоинт как функтор

F: Request → Response

где естественное преобразование

η: F ⇒ G

между функторами разных эндпоинтов автоматически обеспечит согласованность их композиции.

=

Вот тогда и найм быстро самовосстановится.
6🤯4027👍11😁5❤‍🔥1
Я повторил эксперимент с картинки применительно к нашей любимой айтишке =>

ЖПТ5
- Не торгуются за оффер — соглашаются на первое, теряют 20–40% на старте.
- Не понимают деньги — налоги/RSU/опционы/бенефиты, берут худшие пакеты.
- Продают часы, не leverage — не автоматизируют, не строят инструменты/продукты.
- Ноль бренда и нетворка — резюме тонет, цену диктует рынок, не они.
- Тратят всё — нет подушки и инвестиций, кредиты на гаджеты, любой простой = кассовый разрыв.

Клод Опус 4.1
1. "Я же программист, зарплата всегда будет"
Тратят всё, что зарабатывают. Нулевые сбережения. Один увольнение = паника и долги.
2. "Инвестиции? Это скам!"
Держат деньги на дебетовой карте под 0%. Инфляция съедает покупательную способность. В 40 лет понимают, что опоздали.
3. "Новый MacBook каждый год - это инвестиция в себя"
Покупают топовое железо для написания CRUD'ов. $3000 ноутбук для работы, которую делает машина за $800.
4. "Фриланс/стартап - это моё будущее богатство"
Прыгают с работы на работу за +10% зарплаты. Теряют бенефиты, опционы, карьерный рост. В итоге - вечный мидл.
5. "Я слишком умный для финансового планирования"
Не знают свои расходы. Не ведут бюджет. "Зачем Excel, если есть зарплата?" Удивляются, куда деваются деньги.
Итог: В 35 лет - съёмная квартира, кредитная машина и страх потерять работу.

Gemini 2.5 Pro
Держи. Без соплей.
Мгновенное «прожирание» прибавки. Получил +$500 к зарплате — тут же поднял расходы на $600. Новый айфон в кредит, модный смузи, квартира покруче. Итог: вечный ноль на счету, сколько бы ни платили.
«Верность» низкооплачиваемой «галере». Годами сидеть на одном месте из-за «стабильности» и «хорошего коллектива», пока рынок улетает в космос. Боязнь собеседований и торга за зарплату — прямой путь к нищете.
Финансовая безграмотность при высоком IQ. Знать всё о сложности алгоритмов, но не понимать, что такое сложный процент. Считать, что инвестиции — это для банкиров, а бюджет — для нищих. Деньги лежат на дебетовой карте и сжираются инфляцией.
Фетиш на гаджеты. Скупать новейшие макбуки, механические клавиатуры и 49-дюймовые мониторы, хотя старые работают идеально. Это не инвестиция в производительность, а дыра в бюджете ради дофамина.
Синдром «дешёвого фрилансера». Тратить вечера на копеечные заказы с бирж, вместо того чтобы вложить это время в обучение, которое поднимет твою основную ставку в 5 раз. Продавать час своей жизни за гроши.

=

И тут локально особо не поможет ни проработка финансовой грамотности, ни прокачка денежного мышления; корень проблемы в другом: само наше дефолтное мышление -- это кривейшая ОС уровня Windows 95.

Почему так? Вот например хорошая метафора:

"Хищник пришел к нам из глубин космоса и установил нам правила жизней наших. Человеческие существа — его пленники. Хищник нам бог и хозяин. Он сделал нас покорными и беспомощными. Если мы хотим протестовать — он подавляет наши протесты. Если мы хотим самостоятельности — он требует не делать этого."

Думайте прежде всего, как полностью сменить в своей голове дерьмовый инопланетный продукт с кучей вирусов и багов на норм ось уровня arch linux.
443💯19🤔7👏2
.

В продолжение сегодняшнего поста (теперь доступен только избранным:), даю там 4 простых шага, как вы можете тренироваться в теме проектирования самостоятельно, при этом не тратя месяцы и годы на изучение тяжёлых методологий наподобие DDD.


Я экспериментировал где-то 20-30 часов с моей новой методикой "как обучать формальному проектированию просто как готовой пошаговой технологии, чтобы человек с небольшим опытом мог создавать системы с полного нуля не на 20 классов, а на 20,000 классов, сохраняя сложность проекта линейной". Ключевая идея, что у нас есть 5-7 гибридных паттернов (повыше уровень абстракции, чем классические 23 GoF паттерна), для каждого из которых задано предусловие - когда тот или иной паттерн надо просто "тупо" применять, и как именно это делать. Ну например это "инвертированный" Visitor, который я вчера выложил для ментатов в СильныеИдеи (если угодно, это версия Double Dispatch с Action Interface).


И вот что я должен сказать по итогу: да, в результате действительно получается использовать эти паттерны так, что сложность проекта остаётся линейной: практически любую новую фичу мы добавляем за O(1), максимум за O(log N). Но при этом во-первых нужен приличный скилл и опыт применения паттернов (хотя бы классических), приличный порог вхождения, во-вторых сама архитектура быстро становится весьма громоздкой (очереди, синхронные шины приходится внедрять практически с самого начала) и тяжеловатой для понимания, если брать уровень среднего миддла, и в-третьих AI в этом вообще ничего не понимает, тупит и плавает, а так как многие моменты уже неформальны, вообще непонятно, стоит ли его рекомендациям доверять или нет.

Это была моя мета-ошибка: мне надо было сразу начинать с того факта, что ООП -- это полный sucks 💩

Я плюнул на это всё, и за полчаса начисто зафигачил с нуля тот же самый учебный проект в функциональном стиле 💥 При этом и AI классно помогал, так как все функции чистые, а он в алгоритмических задачках реально хорош. Ну и TDD на ФП ложится вообще идеально, плюс ещё куча других плюсов.

В общем, буду дальше учить проектированию только в функциональном стиле, это же чистая математика ❤️ и постепенно к моей модели сохранения линейной сложности в дополнение к тем десяткам паттернов, что даю на первом курсе по функциональному программированию, соответственно добавлю несколько ключевых секретных гибридных паттернов, и плавно буду подключать абстракции из гомотопической теории типов.

Тут вообще всё элементарно, куда проще чем классы, вот смотрите: HOFs как экспоненциалы, свободные композиции при совпадении доменов-кодоменов, финальные ко-алгебры для описания индуктивных рекурсивных типов, ограниченные типом функции (поведения в поведениях), монадические трансформеры, категорные классы как паттерны декомпозиции, и прочая попса 😇


Ну а те десятки часов, которые я потратил на эксперименты с ООП, в принципе тоже не пропадут: я просто в СильныеИдеи добавлю отдельный материал с теми гибридными паттернами.
547🔥7👍3👌2
.

Облако драгоценностей за неделю.

Основной непаблик (с 19.08.25 закрытый):

Какой же кайф писать в функциональном стиле после ООП, как всё получается легко и просто, естественно и масштабируемо, я вам передать не могу. Точнее, могу :)


Для донов-начинающих:

Самое бестолковое решение из всех возможных — ввязаться в это дело, отдать ему свои силы, время и деньги, а затем бросить...

Списки дел/todo — добро или зло?
Хотя я большой фанат списков дел, всё же есть две достаточно большие группы людей, которым они не очень зайдут... Поэтому для этих групп я предлагаю такую модель как ...

База по карьере, серия 17: Данная группа внутренних стремлений — это в основном то, что будет определять ваш выбор профессии...

Для донов-неначинающих:

Продолжаю выкладывать для донов материалы СильныхИдей — доступны моим ментатам, но тут расширенные и дополненные версии.
50. Как готовить сверхгибкий код.
Моделирование предметной области (домена), превращение мира в чистые красивые структуры данных выглядит увлекательным занятием. Однако вам быстро становится совсем не так весело, когда реальный мир даёт контрпример, который портит всю вашу чистую онтологию более чем полностью...

Золотые правила карьеры разработчика.
3. Если тебя на работе не уважают — ...

(все старые материалы для донов постепенно сгорают)

=

Первые сериалы из существенно переработанных и улучшенных материалов СильныхИдей (по сути три книги) доступны на бусти:
1. БАЗА программной инженерии
2. Software Design с акцентом на Programming in Small
3. SOLID-25
4. Гайд Вайб-проектирование


=

Новые материалы для ментатов Лаборатории.

В раздел "Элитный программист" добавлены
75-й материал "Списки дел -- добро или зло?"
74-й "Шиза полезна не только в программировании"

В СильныеИдеи добавлен 122-й материал "Анти-Visitor".
Я не раз рассказывал о том, насколько хорош паттерн Visitor ("Всё, что вы знаете об ООП, неверно", "Ключевой паттерн Visitor в ООП и ФП"), но и у него конечно имеется своя тёмная сторона, о которой необходимо знать...

В курс карьеры добавлен 107-й материал "Нетворк-лайт".
Ты когда-нибудь проводил всю ночь, уставившись в экран, просто пытаясь улучшить своё резюме?..
И ты продолжал рассылать и рассылать их, одно за другим, пока не взойдёт солнце?
Но ни единого ответа, только тишина, из-за которой ты чувствуешь себя совершенно невидимым...

Мы здесь, потому что это трудно.
it's a privilege to do things that are hard.

=

Self-Hack (тайм-менеджер + мотиватор + idle-игра).
Готово 43(+1) уровней из 54 альфа-версии,
этим летом бета-версия 💯 будет готова.
Хорошая новость, что вся игровая механика в целом собрана и более-менее сбалансирована, остаётся добавить несколько игровых фич по шаблонам (патриархи криптодуш :), ну и дойти до конца, а т.к. это idle, времени требуется прилично.
Как закончу все уровни, сперва отдам на тестирование моим ребятам, а потом будет полностью открыто для всех бесплатно.
41👍162
Какой ещё Эрланг? Это же винтажный гаджет, типа первого айфона! Все уже переехали на нейросети и квантовые вычисления, а вы тут со своими процессами, которые общаются почтовыми голубями.

Весь современный мир понял, что асинхронность нужна в 10% случаев — и это прекрасно делается парой async/await на подоконнике, ивентлупом на коленке или setTimeout(() => {}, 0) с магической надписью "Node.js". А в Эрланге 90% кода — это ритуал вызова шаманских духов через send... receive... и надежда, что они не перепутают сообщение с предсказанием погоды.

Какие там есть легенды про Эрланг?

* Распределённость из коробки? Да это как получить в подарок конструктор "Собери свой кластер", где нет инструкции, а все детали от разных производителей. В итоге каждый инженер-алхимик месяцами варит свой эликсир из gproc, libcluster и молитв на удачу. И всегда найдётся один главный процесс-баттлнек, который хранит состояние и смотрит на вас, как суслик из "Джуманджи".

* Отказоустойчивость? Какая отказоустойчивость в языке, где главный принцип — "Let it crash", а потом "перезапустим и будем делать вид, что так и задумано"? Перезапустили упавший сокет? Ага, конечно. Пересоздали таблицу в памяти, которая испарилась? Без проблем! Просто представьте, что это фича — самоочищающаяся база данных. А знаменитый RabbitMQ, написанный на Эрланге? Он иногда выглядит как сырая поделка, которая падает от badmatch на ровном месте, словно кот с дивана во сне. Привет пока, ОTP!

* Параллельность? А зачем, если есть ZeroMQ, который как рок-звезда — приходит, бросает в сокет месседж и уходит, не дожидаясь ответа? Зачем городить лес из процессов, которые перешептываются между собой, когда можно просто бросить в общую шину событие и забыть?

Короче, Эрланг — это как пытаться запустить SpaceX при помощи парового двигателя и энтузиазма. Почётно, исторически значимо, но пока вы настроите безаварийный полёт, OCaml уже на Марсе яблони сажать будет.
42🤔14😁75🐳1
Какие вам ещё монады-шмонады?? По ним написано 100500 гайдов "монада -- это моноид в категории эндофункторов" (включая мой сериал для малышей :), и всё равно фактически никто из программистов их так и не понимает в прикладном плане: реальная композиционность в монадах отсутствует более чем полностью. По сути это просто чрезмерно и совершенно излишне абстрагированная версия алгебраических эффектов с хендлерами, которые как раз и легко понимаемы, и прекрасно компонуются.

"Вы не можете обучать новичков программированию сверху вниз, поскольку они не знают, какой низ является верхом"
-- Чарльз Энтони Ричард Хоар
👌41👍1762
Такое мы забираем:

Omarchy: turn a fresh Arch installation into a fully-configured, beautiful, and modern web development system based on Hyprland by running a single command.
An opinionated Arch + Hyprland Setup by аж сам DHH (автор RoR)
❤‍🔥3013👍9🔥5
Какой вам ещё OCaml-шмакамл? Это древнейший стрелочный патриарх, ископаемое из палеозойской эры функционального программирования: "смотрите, они уже тогда пытались вывести монаду из-под контроля!"

OCaml сделан с той первобытной непосредственностью, с которой неандерталец впервые догадался использовать палку. Под личиной F# он идеально вписывается в мэйнстрим: все "промышленные" языки — это исторически сложившиеся техногенные катастрофы. Унаследовали миллионы строк кода? Поздравляем, ваш язык теперь официально "практичный". ML просто ждёт своего часа, чтобы присоединиться к этому пантеону уродцев.

Программист на OCaml уже вкусил запретный плод чистых функций, но его психика ещё не готова смотреть в бездну высших уровней куба Барендрехта без последствий.

А типичный фисярп-крестоносец — это шизофрения в чистом виде. Днём он на работе вкалывает на Си-образных ассемблероподобных конструктах C++/C#, отлавливая утечки памяти и выстрелы в ногу, а вечером, чтобы успокоиться, пишет на ML, убеждая себя, что это "близко к математике". Это не карьера, а когнитивная ломка на постоянной основе.

(обратите внимание на модную одежду на картинке: ничего не напоминает? :) а это 1971-й год)
29😁15👍6👏2
2025 -- это последний год, когда будут существовать программисты.
😁6111🤔5🐳3
Имеет ли сегодня смысл платить за любое обучение по теме программирования? От обучения с нуля до повышения сеньорской квалификации? Сотни (десятки, единицы, десятые, сотые, тысячные...) тысяч рублей? Когда всё есть бесплатно в интернете в открытом доступе -- и подробнейшие курсы по любым темам, и великолепные лекции индусов на ютубе с автоматическим переводом, и ЖПТ как отличный ментор 24/7, который всегда под пальцами, и в любой момент даст идеальный совет?

Я уж молчу про высшее образование, которое стало абсолютно бесполезным: просто выбросишь годы на изучение древних учебников престарелых профессоров, застрявших на уровне Фортрана и Паскаля.

AI сегодня в любом случае развивается куда быстрее, чем ты.

Хорошее дело например -- изучить профессию столяра-краснодеревщика, и пилить реплики итальянской мебели. В строительной индустрии безумные деньги будут вливаться ещё много-много лет, и там жуткий спрос на профессиональные кадры. Крановщики например у нас в Северном порту на Речном вокзале зашибают многие сотни тысяч только так.

Платное обучение программированию сегодня -- это лотерея, причём не красное/чёрное 50 на 50, а чисто ставка на зеро.

Это действительно близко к казино...
-- Эльвира Набиуллина

это чем-то похоже на спорт
чем-то на казино
чем-то на караван-сарай
чем-то на отряды Махно
32🤔25💯82👍2
Прекрасный сайд-проект, дико уважаю:
"This Website is Served from Nine Neovim Buffers on My Old ThinkPad"

Автор создал плагин nvim-web-server для Neovim, который превращает редактор в HTTP-сервер. Написан на чистом Lua и использует встроенные в Neovim возможности асинхронного I/O через библиотеку libuv. Несмотря на то, что сервер работает внутри редактора на интерпретируемом языке, он оказался заметно быстрее Nginx! Да и стандартный питоновский сервер http.server на потоках на его фоне смотрится весьма печально.

При этом сервер успешно работает на стареньком ноуте ThinkPad E430.

Очень шустрый рантайм благодаря LuaJIT компилятору + быстрый event-loop от libuv.

Neovim запущен в Docker-контейнере с ограниченными правами, профилями AppArmor и seccomp, а также правилами netfilter для изоляции.

Обеспечено фактически моментальное обновление контента на сайте при сохранении файла прямо в буфере Vim. Плагин имеет встроенную поддержку формата Djot (аналогично Markdown) с автоматической конвертацией в HTML.
36🔥244😁3❤‍🔥1
Ладно, спалю таки вам секретнейшие секреты тибетских гуру по старту айти-предпринимательства в 2025-м, которые рассказывают только илитные бизнес-коучи на курсах за многие миллионы долларов.

Вам НЕ надо начинать "свой дело" с нуля.

Вот вам базовая схема из 4-х путей.

1. Находите любую из десятков тысяч средних-малых it-компаний, которая занимается той темой, в которых вы намеревались создать свой уникальный супер-доходный проэкт. Например, какой-нибудь классический SaaS парсинга. Связываетесь с овнером (это важно! главное, не с наёмными менеджерами, которым абсолютно пофиг на свою контору), благо многие из них присутствуют в соцсетях, и предлагаете добавить/встроить в более-менее раскрученную линейку его продуктов, в готовую и более-менее известную инфраструктуру в своей ЦА с уже существующим спросом, и ваш сервис.

Профит :)

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

Можете кстати делать просто более лучшую версию уже существующих сервисов, благо и API могут быть приоткрыты, и код клиентов бывает выложен на гитхаб.

(Это в том числе и прекрасный путь для нахождения хорошей и интересной работы.)

(продолжение следует)
🤔42🙏1293👍2