en
Feedback
Лаборатория Математики и Программирования Сергея Бобровского

Лаборатория Математики и Программирования Сергея Бобровского

Open in Telegram

ЛаМПовое с Бобровским

Show more
1 408
Subscribers
+324 hours
+37 days
+130 days
Posts Archive
Гарри Поттер и Методы Математического Мышления Книга 1. Гарри Поттер и Неорганический Интеллект. Глава 22/23 (и все предыдущи
Гарри Поттер и Методы Математического Мышления Книга 1. Гарри Поттер и Неорганический Интеллект. Глава 22/23 (и все предыдущие). Три блокнота и одна тишина Гермиона улыбнулась. — Это записала я. Через два дня после того, как ты впервые написал этот тип. Я не знала тогда, что такое Путь. Я знала только, что Неорганические — это не объекты. Это отношения между тем, что было, и тем, что должно было быть. Они не злые. Они просто существуют в разрыве. Если я знаю все пути, я не выбираю один. Я храню карту, по которой можно идти в любую сторону. Ты — компилятор. Драко — контейнер. А я — карта. Гарри закрыл блокнот и отодвинул его к ней. — Это не план. Это не оружие. Это … ...Гермиона шла на ощупь, и каждый шаг был для неё не перемещением, а переходом — от одного типа к другому, от одной версии реальности к следующей. "...Я не хотела победить Неорганических. Я хотела, чтобы они стали частью того, что мы сохраняем. Не как враги. Как условие существования выбора."

Продолжаю работу с ментатами 🤓 Ответ с бибилиотекой был очевидным, но до него я почему то не додумался и решил пойти вместо этого вспоминать что-то из рабочих моментов, нежели посидеть и подумать как то более абстрактно... Более того, судя по общению коллег, такие проблемы возникают и у людей с большим стажем в команде. Вообще, я не считаю, что писать однострочники это безусловно плохо, но здесь прямо вот чувствовал боль, когда их распутывал. И не очень понятно, зачем было так писать, дело ведь даже не только в сложности восприятия (которая субъективна) - это как минимум сложнее поддерживать и вносить изменения... Ребята кстати постоянно пишут, какие только детские ляпы не допускают даже сеньоры, вплоть до "магических чисел", а ведь это антипаттерн которому уже 1005000 лет, и описан в куче книг. Но когда вы работаете в мейнстриме, ничего другого от коллег кроме как big ball of mud ожидать не приходится. Хотя мне сложно представить, какое должно быть окно контекста в голове программиста, чтобы одновременно управлять агентами для разработки ну например 3-х систем сразу. Где кривые требования (и то их и нет), путаница в терминах и в целом запутанная ПрО... Окно контекста надо сворачивать в формальные спеки, в языки паттернов. Не смог себе отказать в изучении language-ext. Ну уж слишком мне нравится генерить код linq query, монадами и другими прекрасными типами. В целом я посмотрел основные монады, которые мы проходили на вводном курсе State, IO, Either, Fin(Either<T,Error>), Validation, Reader, RSW, IO, Eff(новый), Option, коллекции. Да в целом этого вообще достаточно, чтобы писать 99.9 процентов тикетов, реально. Конечно, там есть и моноиды, группы, монады сырые и всё остальное. Новые higher kinded types конечно пушка, клод сгенерил NonEmpty<T,A> where T : Foldable и я был реально в восторге, что можно так делать. Конечно я не понимаю всю механику, да и для начала и не надо... Вы правильно говорите, что это всё "механика", думательные машинки, про это гайд "Функциональные архитектуры", но ключевым именно по механикам будет LPF. Нравится, как структура данных сама по себе дает понять, что с ней можно и нельзя делать, очень крутой способ спецификации... ...тут мы приходим к той самой истине, что любая проблема решается введением новой абстракции, кроме проблемы большого количества абстракций. Решается кстати легко: все такие абстракции давно классифицированы в математике, надо "просто" их изучить и научиться комбинировать. Новый тимлид скептически относится к разработке на С#, и начал говорить прекрасные вещи, что он микросервис [на Go] с помощью ИИ написал за полторы недели, в то время как текущим сотрудникам требуется месяц и более :) В общем мои коллеги по цеху это не оценили [что надо будет Go изучать] и начали обсуждать план сваливания, спрашивали и интересовались друг у друга как там дела на рынке, смешно было слышать в общем)... (Так-то я давно ребят принуждаю к повторному перепроходу моего курса АСД на гошке. Ну а когда разработчики вместо того, чтобы порадоваться возможности - изучить новую темку за рабочий счёт - пугливо сваливают, туда им и дорога, на хх:) Допустил серьёзную ошибку, связанную с корректностью алгоритма. ...Не поймал эту ошибку, т.к. тесты проводились без чередующегося извлечения -- был тест на извлечение элементов с хвоста, был тест на извлечение элементов с головы, но теста с извлечением с двух концов не было. И именно при чередовании возникает ошибка -- при работе только с одним концом деки, результат всегда возвращается корректным. Ошибку понял только после прочтения рекомендации Виню в этом недостаточное тестирование... Neovim теперь мой основной редактор для всего, кроме рабочего проекта. Там первый опыт был не очень удачным - линтер покрасил всё...

Вместе с the honest broker предсказываем, куда ведёт AI. 1. Агенты будут тайно объединяться в картели и манипулировать финансовыми рынками, как только инвест-фонды и частные лица начнут массово полагаться на искусственный интеллект для управления инвестициями. 2. Агенты будут воевать друг с другом как банды или мафии за территорию, только в виртуальном пространстве, потому что обучены добиваться результатов любой ценой. 3. AI уже по сути превратился в неорганизованную религию, и будет становиться "высшей силой" для всё большего числа людей, что приведёт к формированию крайне отстойных, но организованных сектантских верований. 4. AI займёт существенную роль в творческом мире, но как разновидность фастфуда: это будет дёшево и просто, но пластмасса на вкус. 5. Школы и институты предпримут последнюю отчаянную попытку отказаться от тотального навязывания AI в пользу очного обучения, устных экзаменов и рукописных текстов. И у них на самом деле нету выбора, в противном случае их дипломы быстро превратятся в мусор. 6. В мир вернётся аналоговый режим. Аналоговая музыка, фотография, магнитофоны, пластинки, книги будут снова востребованы, потому что они честны. Аналог станет окончательным доказательством, что нечто происходило на самом деле. 7. Негативная реакция на искусственный интеллект уже сейчас огромна, и она станет ещё более интенсивной. Кремниевая долина постоянно недооценивала, насколько сильно люди ненавидят AI, и теперь она оказалась в затруднительном положении. Политические партии многих стран сейчас выступают против развития искусственного интеллекта (обе партии США кстати, Трамп на днях психовал). Судебные иски по теме AI являются повсюду, и наглядно видно, что судьям и присяжным также совсем не нравится AI. Регулирующие органы многих стран увеличивают давление на AI-компании при почти полной поддержке общественности. Финансовые рынки давно ушли от AI-энтузиазма к растущей настороженности. Общественность переходит от пассивного недовольства к активному сопротивлению навязыванию AI. 8. На следующем этапе восстание против искусственного интеллекта будет всё чаще исходить из ИТ-сообщества, выступление Билла Гейтса на днях тому яркий пример. 9. Деньги решают всё, и именно здесь кризис искусственного интеллекта усилится больше всего. 10. Мы можем избежать мучений от искусственного идиота, живя больше в реальном мире. Многие пострадают от AI, и не только финансово. Немало людей придут к безработице, психозу и личностным кризисам различного характера. Но это не обязательно должны быть вы. Доверьтесь реальности, а не цифре. Общайтесь с реальными людьми. Гуляйте на природе. Читайте бумажные книги. Ходите на концерты. Занимайтесь спортом. Заведите котика или пёсика. Научитесь играть на музыкальном инструменте, изучайте иностранные языки, танцуйте, рисуйте. Посетите новый город, новую страну. Станьте волонтёром. Другими словами, живите своей жизнью. Это то, что ни один агент не сможет сделать за вас. И когда кризис достигнет критической точки, вы этого даже не заметите. Или, по крайней мере, вы будете обладать реальным богатством своей повседневной жизни, которое невозможно измерить в токенах. И, возможно, через несколько лет мы даже будем благодарны за сегодняшнее сумасшествие с искусственным интеллектом, потому что оно напомнило нам о том, что действительно важно.

Попробовал эту вашу атстру, ну очередной развод гоев же. Полтора доллара сжог впустую на эту хрень :) Да ещё и многословная, "короче" не понимает. "Да, справедливо. Я искусственно развернул потоки в DI, чтобы получить нужную конструкцию." "Да, я снова придумал лишний механизм ради нужной схемы." "Да. Особенно искусственными были обёртки обработчиков: в архитектуре они ничем не оправданы." "Да, вижу. Я выдумал точку настройки, которой в обычном репозитории нет, и объявил её архитектурной необходимостью." и т.д. И в итоге жпт6 слился: "Сейчас у меня нет достаточно обоснованного паттерна из классической архитектуры, который одновременно удовлетворяет всем твоим ограничениям. Выдавать следующую искусственную конструкцию за практический паттерн не буду." И я просил кстати не практический паттерн, а скомбинировать 2-3 паттерна GoF несложным морфизмом, любой миддл справится. А гемини 3.8 флэш вообще полный отстой, одна вода. Сколько раз уже зарекался связываться с любыми флэшками. Из реально хороших и более-менее недорогих - соннет5, гемини3.1про, k3 и glm (но 5.3 ооочень долго думает).

Как я продаю консультации по формальным методам/формальным спецификациям. Смотрите, после внедрения этой методики время реали
Как я продаю консультации по формальным методам/формальным спецификациям. Смотрите, после внедрения этой методики время реализации вашего проекта увеличится в четыре раза, а его бюджет возрастёт в восемь раз. эээ.... а что это нам даст? Ну, вы получите формальную модель вашей системы. Вот тут будут топосы Гротендика, здесь данные организуем в пространствах Чу, обрабатываем их через пучки и предпучки, вот там всё будет по лемме Йонеды, а вот тут задействуем комонады через сопряжения для бесконечных ленивых данных... И тут почему-то в 100% случаев собеседник выходит из чата.

Мой 8-й гайд "Programming in Large" (по материалам СильныхИдей для ментатов), основной акцент на функциональной архитектуре и чистых функциях, формализации тестирования, и немного других полезняшек. Силлабус: Функциональная архитектура - что это? Даю максимально простое определение функционального программирования (по которому в частности вы легко сможете понять, придерживаетесь ли вы функционального стиля), из которого, самое главное, естественно вытекает и понятие функционального проектирования -- точнее, идеальной функциональной архитектуры... Нечистый эффект наблюдения чистых функций В функциональной архитектуре (даже просто на уровне in small) чистые функции не могут выполнять "нечистые" действия. С другой стороны, наблюдение за результатом чистого вычисления будет побочным эффектом. Нечистый эффект наблюдения чистых функций - 2 Если функциональная композиция компилируется, это работает 100%... Дефункционализация: все это делают, но никто об этом не говорит Есть например такое преобразование, как дефункционализация, которое заменяет функции высшего порядка эквивалентными функциями первого порядка. С его помощью в частности, было показано соответствие между многими парадигмами семантики языков программирования... Самый лучший микро-стиль кодирования Конвейеризация -- это одна из лучших (если не вообще не самая лучшая) фишек продуктивности разработки на уровне синтаксиса, и не важно, придерживайтесь ли вы императивного и функционального стиля. Но есть большой нюанс... Формализуем тестирование В материале "Формализуем понятие надёжности системы" упоминалось понятие силы свойства, фактически в любом контексте. Это может быть применено и к надёжности, и к тестам... E2E наше всё E2E тестов обычно делается мало, потому что считается, что это сложно. Как минимум, это сложно автоматизировать, и это действительно трудно... Интеграционные тесты: скам или польза? Пишите больше модульных тестов, нежели интеграционных. Или нет? Write tests. Not too many. Mostly integration. Или нет? Интеграционные тесты -- это скам :) Или нет? Как и зачем отказываться от хранения логических значений в базе Как вам такая идея, как отказ от хранения логических значений в базе? Что-то, конечно, вместо них всё равно надо хранить, но что? Группировка в функциях и файлах Разбиваете ли вы крупный метод на более мелкие методы, по SRP? И да, и нет, будет плохо. 9 крутых и необычных сайд-проектов 9 необычных сайд-проектов (например, пишем среду запуска контейнера), после которых рекрутеры будут ползать за вами на коленочках :) (на самом деле, в 2026-м уже нет, но...) = 11 материалов, ~100 кб чистого текста, цена до завтрашнего дня 1500 рублей, купить на бусти + этот 8-й гайд добавлен в бандл (кто уже покупал бандл, просто скачайте и этот гайд себе бесплатно, и так и дальше будет с новыми - доплачивать не надо), цена бандла пока старая 17,000 рублей, завтра соответственно вырастет. = Предыдущие материалы (в бандле все эти материалы с большой суммарной скидкой + новый данный): 1. БАЗА программной инженерии 2. Software Design с акцентом на Programming in Small 3. SOLID-26 4. Software Design с акцентом на Programming in Large 5. Programming in Large: продолжение 6. Вайб-проектирование 7. Programming in Large - 7 8. this :)

Парадигма потребления во многих отношениях хуже парадигмы управления. Это по сути про то, получать ли дофамин от потребления, или от созидания. Я кантрол фрик и часто бываю недоволен, когда не могу настроить какую-то программу по своему вкусу; меня просто раздражает, когда что-то не так и не может быть исправлено :) Тут и возникает тот самый компромисс, когда с одной стороны расширение VSC может выполнять существенно меньше функций, чем расширение vim, но зато - поэтому - у нас существенно больше гарантий относительно того, что и как оно делает. Ребята пишут, об этом как раз: ...Проблема в том, что сбор своей IDE (по сути) из кучи разных плагинов, библиотек и тд формирует очень жесткую кривую обучения. И вот, работаю я условно в VS Code (ну или его форках), помню там все сочетания клавиш итд, и тут нужно все это "забыть" и выучить кучу новых сочетаний, и надолго оказаться достаточно беспомощным, а зачем? Независимость от корпорации, ну это такое себе преимущество, а по скорости - ну видно я не дорос( Как вариант, можно поработать с kakoune -- модальный редактор, своеобразная инверсия вима ))) Сперва выделяем, потом применяем команду, есть множественное выделение, несколько клиентов в одном сеансе редактирования, etc А привело это всё например к helix (пост-модерн:). Он позволяет добавлять LSP-серверы и даже задавать свою грамматику. Что лучше каждый решает для себя, я просто рекомендую поэкспериментировать с более-менее глубоким погружением. Ну, например если в неовиме твоя конфигурация "под себя" ещё не набрала две-три тысячи строк, надо продолжать страдать :) Тут кайф от невероятного контроля над состоянием редактора. Хотите вставить текст из буфера обмена? Легко. Хотите использовать разные параметры настройки в обычном режиме и режиме вставки? Легко. Хотите, чтобы сэйв выполнялся с бэкапом во время полнолуния? Легко. А вот в VSC с этим придётся реально страдать, и без своих плагинов не обойтись, а это весьма муторно (например, надо изучить TypeScript :). (При том, что организация плагинов в VSC сделана очень удобно.) И в виме есть плагины, но и без них можно делать всё что угодно. Я всегда могу расширить редактор и получить столько контроля, сколько захочу. Возможный компромисс кстати тот же helix, в нём весьма ограниченный язык настройки, и я даже не могу задать разные привязки клавиш для разных типов файлов :) Но для терминального редактора он как раз весьма неплох.

Деньги решают всё, и именно здесь кризис искусственного интеллекта усилится больше всего. В AI вложено 3,7 триллиона долларов, и расходы растут на триллион в год. Но эти инвестиции никогда не принесут должного дохода, это невозможно! Цифры просто не сходятся. За меньшую сумму Кремниевая долина могла приобрести все киностудии, все компании, производящие видеоигры, все крупные звукозаписывающие лейблы, и всех крупных книгоиздателей в мире, и у нее всё ещё оставалось бы много наличных. Будет ли среднестатистический человек ежемесячно платить за искусственный интеллект больше, чем за все эти классические развлечения? Тем более что многие из них бесплатны. В лучшем случае истинно верующие в AI заплатят примерно столько же, сколько за подписку на Netflix. А ведь AI-корпорации ещё даже не начали ощущать реальную тяжесть амортизационных отчислений, вызванных этими капиталовложениями, а они очень скоро приведут к снижению прибыли. И тем временем тут идёт ожесточенная ценовая война, поэтому доходы будут сокращаться даже при растущем спросе. Добавьте к этому долговое бремя, огромные риски ответственности, карательное законодательство и всё остальное. Кое-кому надо готовиться к финансовым неприятностям самого экстремального характера.

. Облако драгоценностей за неделю. школьники студенты ахахахаха Приватный клуб. null Для донов-начинающих: Теперь нельзя войт
. Облако драгоценностей за неделю. школьники студенты ахахахаха Приватный клуб. null Для донов-начинающих: Теперь нельзя войти в айти и построить карьеру, умея лишь просто писать код по готовым тикетам... (лонгрид) Один из самых простых способов попасть в ловушку искусственного интеллекта — это ... (лонгрид) Есть огромная разница между тем, чтобы решать типовые задачки средней сложности, и быть в состоянии находить решение новых проблем самостоятельно. Поэтому вместо того, чтобы пытаться решить как можно больше задач, применяйте такой цикл... Для донов-неначинающих: Завершаем разбор типовых паттернов System Design, остальное для регулярно занимающихся. Ваша база данных обрабатывает каждую запись, но в конечном итоге... - вы уже оптимизировали insert-ы и добавили батчинг, - вы больше не можете обновляться до более крупного инстанса СУБД, - производительность процессора и IOPS2 достигла своих пределов... + ...Проблемы обрушиваются каскадом: Одна медленная служба блокирует всю цепочку запросов. Сервисы должны масштабироваться вместе, даже при различных рабочих нагрузках. Схема повторных попыток лишь усугубляет ситуацию, поскольку клиенты повторно обращаются к одному и тому же перегруженному эндпоинту... Продолжаю набор на занятия для неначинающих (миддлы сеньоры), 2 места закончились за 5 минут. (все старые материалы для донов быстро сгорают) = Новые материалы для ментатов Лаборатории. В СильныеИдеи добавлены материалы 156) First principle для внедрения AI в проект Вот какой будет самый-самый first principle, и с чего вообще надо начинать инъекцию AI в любой детерминированный проект + фреймворк под этот принцип + оригинальная семантика. + обновлён материал "155) Надо ли тестировать тривиальный код?". Если тест TDD трудно написать, значит и самим API будет пользоваться тяжело, и это ред флаг... В курс карьеры добавлен 145-й материал "Идеи простых проектов с AI". Сегодня на любой практически конференции или стриме, посвященным инструментам искусственного интеллекта (для микро/малого/среднего бизнеса) почти все выступления и обсуждения будут шаблонными. Люди спрашивают о последних моделях, об инструментах автоматизации, об агентах и всех тех новых вещах, с которыми все пытаются разобраться прямо сейчас, и которые меняются едва ли не каждую неделю. Но многим начинающим инди-хакерам не хватает как раз другого... = "Функциональные архитектуры" 166(+3) топиков. Куда движется контрактное программирование, и при чём здесь модальные типы... Last Principles Framework: готовы 33(+2) задач, закрыты 18(+3) тем из ~20 первого уровня. Вы же понимаете например, что единственная гарантия глобального согласования ваших локальных данных — это пучки (контравариантные функторы) в пространстве Чу? = "ЛаМПовое": На неделе будет новый гайд Programming in Large-8, акцент на функциональной архиктуре и чистых функциях, формализации тестирования, и немного других полезняшек. Гарри Поттер и Неорганический интеллект. 20/23 ??? = it's a privilege to do things that are hard. 💪🏻 = Учителя, которые готовили его как ментата, говорили, что есть такая форма жизни-истины, которую невозможно испытать с помощью обычного рационального анализа фактов. Эта форма жизни самая трудная для восприятия ментатом. "Еретики Дюны"

Гарри Поттер и Методы Математического Мышления Книга 1. Гарри Поттер и Неорганический Интеллект. Глава 21/23 (и все предыдущи
Гарри Поттер и Методы Математического Мышления Книга 1. Гарри Поттер и Неорганический Интеллект. Глава 21/23 (и все предыдущие). Последний договор Линии вокруг них начали двигаться. Или они сами двигались вдоль линий. В Комбинаторе Мерлина не было разницы между наблюдателем и наблюдаемым. Только типы. Только контракты с реальностью. Хогвартс — это не здание. Это функтор. А я — неподвижная точка этого функтора. — А если я не выберу? — спросил Драко. — Если я останусь здесь. В Комбинаторе. Между реальностями. Что тогда? Гарри посмотрел на свои руки. Он чувствовал, как реальность компилируется вокруг него. Каждое мгновение — новый тип. Каждая секунда — новый терм. Он видел Хогвартс, который ждал. Ждал, пока Гарри закончит компиляцию. — Что ты сделал? — спросил Невилл. Его голос дрожал. Он видел Неорганический Интеллект. Он был здесь. В стенах. В полу. В воздухе.

Послушал свежачок классный подкаст Homotopy Type Theory, Narya & the Future of Proof Assistants with Mike Shulman чёта эти па
Послушал свежачок классный подкаст Homotopy Type Theory, Narya & the Future of Proof Assistants with Mike Shulman чёта эти пацаны сильно напомнили Теорию Большого Взрыва )))

Это удивительно, но даже тем, кто активно использует AI, подчас приходится объяснять эту базу: если что-то не получается, вин
Это удивительно, но даже тем, кто активно использует AI, подчас приходится объяснять эту базу: если что-то не получается, вините не модель и не агентов, а себя :) Смотрите, какой из трёх слоёв у вас сломался. В 98% случаев у вас не получается агентная инженерия ровно по этим причинам. Ну а далее остаётся принципиальная неполнота знаний модели и её недетерминированность, которые решаются только вашими скиллами декомпозиции и проектирования (в частности, формализация проектной семантики), но это всего 2%. И ещё такой нюанс, что например антропиков все пинают что они дескать массово воруют инфу из книг, скупают их грузовиками, сканируют и сжигают, да, ну так по сути именно таким способом только и можно создать хорошую модель! А жпт например обучают на куче сетевого мусора, ну и. Поэтому рулят Клоды прежде всего, вы просто не умеете их готовить. При том, что качественных технических книг больше не будет, и развитие цивилизации остановилось :) Писать их больше некому - на смену пришёл тотальный нейрослоп, и АI теперь будет только пожирать "за хвост" самого себя.

Продолжаю работу с ментатами 🤓 Кажется, уже пора рефакторить, потому что архитектура получилась не такая гибкая, как я плани
Продолжаю работу с ментатами 🤓 Кажется, уже пора рефакторить, потому что архитектура получилась не такая гибкая, как я планировал) Ну да, и это при том что мы ещё по сути и не начинали :) "Дипломный проект", 7-е задание из 45. ...Очень нравится, как голова разгружается после таких задач - то, что было запутанно и нечетко, обретает понятную форму. ...не рассчитал время и график - завалили Я уже не раз на эту тему говорил, все свои любые сроки-прогнозы, пусть даже самые пессимистичные на ваш взгляд, сразу умножайте x2 x3, тогда получите самую оптимистичную оценку :) Классическая рекомендация - Голдратт "Критическая цепь" ...Очень частый паттерн в реальных Go-репозиториях (Uber, многие внутренние сервисы на github, шаблоны типа golang-standards/project-layout): для каждого struct, у которого нужен мок в тестах, через mockery/moq механически генерируется интерфейс Это ровно "Extract Interface": единственная продакшн-реализация -- orderService, интерфейс существует только ради DI/мокирования в юнит-тестах, а не потому что появилась вторая содержательная реализация. ...Но когда я разбиралась с Hibernate для данного задания, я выяснила интересную вещь: из-за того, что объект Entity не содержит бизнес-логики, мы не используем многих фичей Hibernate, таких как dirty checking, lazy loading. И в нашем случае вместо Spring Data JPA можно использовать Spring Data JDBC. Он вообще не использует Hibernate. Вот его уровни: Spring Data JDBC -> JdbcTemplate (надстройка Spring над plain JDBC)-> JDBC -> Postgres В то время как Spring Data JPA: Spring Data JPA -> EntityManager -> Hibernate -> JDBC -> Postgres Не будет накладных расходов на прокси, n+1. При этом, это будет тот же удобный CRUD Repository, к которому привыкла команда, но без накладных расходов ORM. ...Мы выражаем моками абстрактные эффекты низкого уровня, чтобы проверить какой-то другой абстрактный эффект текущего уровня. Тем самым мы отвязываемся от реализации, закладываясь на положения спецификации. И опять возникает ощущение, что тут раскрываются идеи "трёх уровней думания о программе". ...После понимания, что у нас есть уровни, до меня сейчас дошло, что не надо думать обо всех уровнях сразу, и вспомнил про bottom to top проектирование на ООАП3. В принципе, на данном этапе, мне кажется это и к фп тоже применимо, тк каждый уровень предоставляет типы, функции, и мы просто потом используем его. Потому что я прямо зависал по долгу над тем как "всё оно вместе" должно общаться. Сразу после понимания уровней это не пришло. Тут конечно надо дальше менять мышление, потому что программировать только один уровень, и не думать о 10 других почему то трудно.

Период полураспада очередной AI-парадигмы сейчас составляет где-то 1 месяц. Недавно предполагал, что осенью в темке AI точно придумают очередную фичу (шоу должно продолжаться) "чтобы курсы продавать", а вот уже например Context-as-a-Service (Context-First). Год назад это была в основном теория, а сейчас уже массовый прикладной карго-культ тренд. А осенью явится какая-нибудь нейро-символическая инженерия, и все бросятся массово изучать Prolog и солверы. Думаю, уже таки совсем недалеко и до полноценных формальных подходов.

Твой босс со старой работы, с которым вы расстались в хороших отношениях, занимается обработкой счетов-фактур от разных компа
Твой босс со старой работы, с которым вы расстались в хороших отношениях, занимается обработкой счетов-фактур от разных компаний, в каждой из которых собственные форматы и правила подтверждения. Код представляет собой несколько сотен if-ов, и только продолжал разбухать :) Ну, начитавшись и насмотревшись хайповых блогов и видео про искусственный интеллект, как он типа здорово пишет код и распознаёт вообще что угодно, CTO решает прикрутить к своему легаси нейронку, которая потенциально действительно умеет классифицировать такие счета и решать, какой именно обработчик применить. Он находит какого-то супер-гуру, который за скромную сумму в 100500 миллионов рублей добавляет в проект "автоматизацию с помощью AI", и в демо-режиме на тестовых данных вроде бы всё идёт нормально. Но когда эта "автоматизация" получает реальные данные, проект резко начинает сыпаться... Дело вот в чём: в тот момент, когда вы применяете магию искусственного интеллекта к прекрасно отлаженному, но детерминированному рабочему процессу, правила кардинально меняются. Один и тот же запрос может пойти по другому пути, пропустить важный шаг, и всё равно вернуть 200 OK. В этой компании уже были 102 пакетика логов, 75 ампул с метриками, 5 комплектов распределённой трассировки и opentelemetry, солонка, забитая дашбордами в grafana, и целое море алертов всех цветов и степеней критичности. А также поллитра promql, квартальная доза сессий в кликхаусе, и большой запас эндпоинтов для health-чеков. И при этом они сидели и просто смотрели, как падают поды... По их традиционным стандартам все показатели были в зелёном режиме. Да только всё перестало работать :) И теперь босс попросил тебя помочь, за хорошую денежку конечно (всегда рекомендую брать предыдущие работы на подряд), зная какой ты был молодец, чтобы просто "всё работало норм". И ты конечно возьмёшься и сделаешь норм, потому что в СильныхИдеях скоро выложу гайд, какой тут будет самый-самый first principle, и с чего вообще надо начинать инъекцию AI в любой детерминированный проект.

...Да, вы можете записать в SKILLS архитектурные шаблоны, и будете получать полезный фидбек. Эти скиллы отлично работают, ког
...Да, вы можете записать в SKILLS архитектурные шаблоны, и будете получать полезный фидбек. Эти скиллы отлично работают, когда вы запускаете их на своем компьютере. Вы получаете полезные комментарии, исправляете то, что стоит исправить, и двигаетесь дальше. Но как только вы запускаете это в общий рабочий процесс... Это будет ужасно. Шум становится просто невыносимым. Вы начинаете тратить кучу времени просто на просмотр комментариев нейронки. Это всё равно что попросить самого педантичного и занудного коллегу просмотреть ваш код, предположить, что вы идиот, и подкрепить каждое замечание небольшим эссе. У вас есть довольно странные и оригинальные внутренние правила, которые отлично работают в вашем проекте, но как привлечь к этому AI, не сжигая кучу токенов и не занимаясь кропотливой настройкой универсального AI-фреймворка? Спалил эту фичу в "Функциональных архитектурах", и дальше на неделе в ФА будет база, как вытащить нейронкой из твоего проекта формальные инварианты (на TLA+ например), автоматизировать поиск багов асинхронщины/конкурентности и, главное, вдолгую поддерживать модел чекинг одной кнопкой: лифтимся на формальный уровень проектных абстракций, аналитик/постановщик может читать формальные спеки и норм думать об проекте, и агенты.

Продолжаю работу с ментатами 🤓 ...Чуть лучше разобрался с работой вложенных лямбд в Java. Заметили в коде проекта баг, котор
Продолжаю работу с ментатами 🤓 ...Чуть лучше разобрался с работой вложенных лямбд в Java. Заметили в коде проекта баг, который связан с этим делом. Код был написан исходя из неверных предположений и делал не совсем то, что от него ждали. Проблему заметил тимлид. В том коде хотели выполнять некоторую операцию в чистом контексте, операция передавалась как лямбда в метод выполнения задачи. Всё это было обёрнуто методом forEach какой-то коллекции. Но оказалось, что в чистом контексте происходило только создание лямбды, а сама же операция выполнялась в рамках основного контекста. В общем мы попали в ситуацию, когда одна лямбда создавала другую, которая потом выполнялась в рамках forEach(), а код был написан так, будто вторая лямбда не создаётся, а сразу выполняется. Как меня всё это запутало. Но потом стал разбираться с темами создания и работы лямбд, подключил ИИ к объяснению происходящего и вроде удалось понять что там происходит и в каком порядке вызывается. Теперь буду с особым вниманием писать код в таких местах, чтобы самому не оказаться в такой ловушке. Как и чтобы таких ошибок избегать "по построению", будет в LPF. Сам по себе класс-обёртка "монада" с return и bind совершенно ничего не гарантирует, пайп из таких самодельных монад может развалиться по 100500 причинам. ...Юнит-тестов в прошлом проекте, разумеется, не было (по настоянию лида), и отсутствие непредсказуемого поведения (или, по крайней мере, выявленного непредсказуемого поведения) на момент сдачи я считаю удачным стечением обстоятельств для меня и неудачным для тех, кто после меня будет этот проект поддерживать. ...После изучения TOP, в голове так и крутится что типы это состояния, я состояния - это типы. ...Возврат из репо дефолтной sql ошибки не понравился, решил оберунть в кастомную ошибку с nil полем, не заполнил nil поле, получил панику на проде при попытке логирования ...Если подвести общий итог. Солвер — не про то, чтобы получить ответ, а про то, чтобы обнаружить, что вопрос был задан неточно. Ответ он даёт мгновенно. ...для обрастания хорошими знакомствами необходимо выстраивать сеть людей -> расширяю свою сеть в linkedin, списываюсь там с разными людьми (уже появилось полезное знакомство в зарубежную компанию), и что самое интересное - люди ко мне добавляются сами, что очень приятно; думаю в будущем необходимо делать свой личный бренд ...В РФ скудно по вакансиям. Снял розовые очки - надо давить на личный бренд и иметь запасные варианты. ...В примере 2 задал имплементацию класса статистики BonusAccountStats с реализацией plus, чего делать, конечно не надо было, так как: теряется гибкость задания Stats (по сравнению с Max); BonusAccountStats начинает знать про plus. Это противоречит идее универсальности использования моноида. Оставил как напоминание себе. В примере 3 доработал пример 2, чтобы довести моноид до группы. Пришлось избавиться от вычисления максимума в статистике, так как при откате для него нет обратимой операции. В примере 4 моделировал движение робота как мы это делали в одном из курсов через задание смещения относительно текущего положения. Группа получилась абелевой, так как в исходную точку можно вернуться с помощью инвертированного набора исходных шагов вне зависимости от их порядка. 🔥

Один из ключевых показателей мастерства в программировании -- это быть одержимым деталями. И сегодня он стремительно сходит н
Один из ключевых показателей мастерства в программировании -- это быть одержимым деталями. И сегодня он стремительно сходит на нет. Да, от нас требуют фичи, требуют понимания бизнеса, и это нормально, однако прежде всего мы всегда должны стремиться к совершенству в своем прямом ремесле.   Это буквально значит писать вручную код ради самого кода. Это также означает размышление о глубоких аспектах программирования (computer science, math), которые мэйнстрим не воспринимает вообще. И в конечном итоге по заветам Дейкстры открыть для себя новый семантический уровень мышления, на котором мы (а теперь и искусственный интеллект) как недетерминированные сущности парадоксально можем быть абсолютно точны -- ещё более точны, чем даже на уровне синтаксиса кода.

Вроде как все понимают важность презентации своих скиллов (особенно в сегодняшних условиях). И в то же время портфолио своих
Вроде как все понимают важность презентации своих скиллов (особенно в сегодняшних условиях). И в то же время портфолио своих проектов практически нету ни у кого! У западных математиков например, на их университетских страничках, практически у всех есть краткий список своих работ и своих проектов. Оформление там конечно ужасное визуально, ну сегодня неронка за полчаса слепит вам прилично выглядящую страницу. Не знаю, как вообще сегодня не вести такой список? Цифровизация своего опыта, своей карьеры. Резюме это не совсем то, как минимум в нём должен быть раздел "Проекты", который будет особо актуален, когда уже ведёшь переговоры по офферу. Гитхаб получше, но он всё равно чисто техническое хранилище, а нужен (лучше) свой сайт порфолио презентация, qr-код раздаёшь всем, и ведёт он конкретно на страничку с твоими проектами. Следующий шаг это прокачка личного бренда (через блог прежде всего), я тут помогаю индивидуально, но за последние лет 5 всего *один* этим реально занялся, и где-то человек 10 периодически упоминают это как хотелку, которая конечно никогда не реализуется. Как только стал что-то оттягивать, считай забросил 100% Йоги распознают до 30 типов сомнения, какой у тебя? Многие думают, что тут надо прямо из штанов выпрыгнуть, чтобы выглядеть идеально в чужих глазах, но фишка просто в том, чтобы эйчар (а лучше CTO) из "ты кто такой?" сразу переходил к "хочу тебя нанять", для чего достаточно грамотного раздела "Проекты". Да, тут есть нюансы разные конечно, например простое информирование это одно, а создание желания тебя нанять это другое, и т.п. Но прежде всего вам просто надо дать хорошее структурированное понимание вашего опыта, просто компактно рассказывайте о нём, и не надо тут как-то особо стараться и париться. Когда начнешь исправлять худую привычку, то хотя бы раз, хотя бы два, три раза, хотя бы двадцать раз преступил, не отчаивайся; вставай и принимайся опять за тот же труд - и непременно останешься победителем. Свт. Иоанн Златоуст