Авито конечно удивительный пример оторванности компании от реального поведения своих юзеров. Наверное, не слишком необычно, что богатые топ-менеджеры, принимающие решения в компании такого размера, сами не занимаются продажей и покупкой с рук, но уж для проформы то заглянуть разок могли бы в собственную экосистему.
Например: Авито ввёл комиссию для покупки с доставкой, и заявляет, что эта комиссия списывается с продавца. Но доставка нужна покупателю, а не продавцу. Продавцу даже менее удобно носить вещь куда-то, вместо того, чтобы ждать, когда к нему заедут. В итоге 99% продавцов при заказе с доставкой готовы продать только дороже на процент комиссии. И хорошо, если они пишут об этом заранее в тексте описания, а не в личку после того, как ты уже оплатил товар по изначальной цене. В итоге приходится заказ отменять и перезаказывать.
Или вот: Авито предлагает на выбор разные формы доставки, но продавцы отдельно ещё сами не готовы носить товар в какой-то далёкий для них пункт, поэтому иногда пишут, что, дескать, выбранный вами способ доставки не поддерживаем, выберите другой. Интерфейс опять же не даёт для этого никаких предварительных функций, приходится отменять.
В целом Авито правильно делает, пытаясь уменьшить необходимость контакта с людьми. В идеале я при покупке хочу как на маркетплейсах, а при продаже чтобы ко мне приезжал курьер и забирал. Без обсуждения, без торга, без попыток договориться итд.
Но реальные люди действуют так, чтобы минимизировать ущерб и объём возни для себя, и это нормально. И понятно всем, кроме руководства Авито.
#web
Например: Авито ввёл комиссию для покупки с доставкой, и заявляет, что эта комиссия списывается с продавца. Но доставка нужна покупателю, а не продавцу. Продавцу даже менее удобно носить вещь куда-то, вместо того, чтобы ждать, когда к нему заедут. В итоге 99% продавцов при заказе с доставкой готовы продать только дороже на процент комиссии. И хорошо, если они пишут об этом заранее в тексте описания, а не в личку после того, как ты уже оплатил товар по изначальной цене. В итоге приходится заказ отменять и перезаказывать.
Или вот: Авито предлагает на выбор разные формы доставки, но продавцы отдельно ещё сами не готовы носить товар в какой-то далёкий для них пункт, поэтому иногда пишут, что, дескать, выбранный вами способ доставки не поддерживаем, выберите другой. Интерфейс опять же не даёт для этого никаких предварительных функций, приходится отменять.
В целом Авито правильно делает, пытаясь уменьшить необходимость контакта с людьми. В идеале я при покупке хочу как на маркетплейсах, а при продаже чтобы ко мне приезжал курьер и забирал. Без обсуждения, без торга, без попыток договориться итд.
Но реальные люди действуют так, чтобы минимизировать ущерб и объём возни для себя, и это нормально. И понятно всем, кроме руководства Авито.
#web
Попробовал этот ваш Cursor. Мне прям несколько человек независимо советовали.
Ну, что могу сказать, да, вполне впечатляет. Точнее так: автокомплит хоть и хитрый, но лично у меня восторга не вызвал. Иногда угадывает очень круто, иногда очень плохо. А вот режим агента — это да. Я бы сказал, что это новый значительный качественный шаг в программировании. Большим моделям как раз и не хватало какой-то пристройки, которая позволяет им не только выдавать текст, но и совершать действия.
У вас как бы под рукой есть джун, который хорошо знает теорию и делает всё очень быстро. Он не понимает, зачем, не умеет проектировать, склонен к шаблонным решениям. Но всё равно теперь ваша работа состоит в том, чтобы аккуратно объяснять ему задачу обычной человеческой речью (в том числе на русском языке) и указывать на ошибки. Вся утомительная, но когнитивно простая рутина теперь делается за секунды вместо десятков минут. А рутины в разработке очень много, особенно если это продуктовая или заказная разработка на многословном энтерпрайз языке.
Стоит сказать, что Cursor, конечно, как и все форки VS Code, остаётся просто текстовым редактором, и ощущается соответственно. Если вы пишете настоящую программу на серьёзном языке, а не текстовый файл, то для надёжной работы вам всё равно параллельно нужно открыть взрослую IDE. Тем не менее, Cursor умеет читать структуру каталогов и учитывать устройство вашего проекта, а к контексту запроса в LLM можно вручную присоединять любое подмножество файлов.
Можно ли назвать это явным шагом к исчезновению работы программиста? Я искал информацию о том, какие профессии были уничтожены автоматизацией, и наткнулся на статью, где упоминались кучер и колёсник (тот, кто делал колёса для карет). Один из популярных комментариев: «Буквально вчера заказывал кучера, потому что свою карету отдал колесникам на ремонт помятого диска». Но это шутки, конечно. А так, есть профессии, где увеличение степени автоматизации в конце концов полностью исключает человека (расстановщик кеглей в боулинге, телефонистка, фонарщик), а есть те, где автоматика просто упрощает людям жизнь и помогает выполнять свою работу эффективнее (компьютер помогает математикам, экскаватор строителям, телескоп астрономам). В чём же отличие первых и вторых? Я бы сказал, что у вторых профессий есть факторы непредсказуемости, вызванные необходимостью создания нового. В расстановке кеглей новых задач не появляется, как и в переключении телефонных линий. А в программировании появляется, и вот почему: у человечества возникают как новые процессы, требующие автоматизации, так и видоизменяются старые. И это, по всей видимости, бесконечный процесс. Да, разумеется, сильный ИИ с сознанием и способностью принимать решения будет уметь всё, что умеет человек, и даже больше. Но до этой технологии нам далеко, и нейросети не являются тропинкой к ней.
Другое дело, что джуны теперь не нужны, простите. Там, где раньше требовалась команда из сеньора, пары мидлов и пары джунов, теперь справится один сеньор, ну может ещё с одним мидлом, и всё. Советую всем начинающим программистам учить не то, как делать, а то, почему нужно делать именно так. Архитектуру, паттерны, принципы, лучшие практики. Тогда в уходящий айти-поезд ещё можно заскочить.
#dev
Ну, что могу сказать, да, вполне впечатляет. Точнее так: автокомплит хоть и хитрый, но лично у меня восторга не вызвал. Иногда угадывает очень круто, иногда очень плохо. А вот режим агента — это да. Я бы сказал, что это новый значительный качественный шаг в программировании. Большим моделям как раз и не хватало какой-то пристройки, которая позволяет им не только выдавать текст, но и совершать действия.
У вас как бы под рукой есть джун, который хорошо знает теорию и делает всё очень быстро. Он не понимает, зачем, не умеет проектировать, склонен к шаблонным решениям. Но всё равно теперь ваша работа состоит в том, чтобы аккуратно объяснять ему задачу обычной человеческой речью (в том числе на русском языке) и указывать на ошибки. Вся утомительная, но когнитивно простая рутина теперь делается за секунды вместо десятков минут. А рутины в разработке очень много, особенно если это продуктовая или заказная разработка на многословном энтерпрайз языке.
Стоит сказать, что Cursor, конечно, как и все форки VS Code, остаётся просто текстовым редактором, и ощущается соответственно. Если вы пишете настоящую программу на серьёзном языке, а не текстовый файл, то для надёжной работы вам всё равно параллельно нужно открыть взрослую IDE. Тем не менее, Cursor умеет читать структуру каталогов и учитывать устройство вашего проекта, а к контексту запроса в LLM можно вручную присоединять любое подмножество файлов.
Можно ли назвать это явным шагом к исчезновению работы программиста? Я искал информацию о том, какие профессии были уничтожены автоматизацией, и наткнулся на статью, где упоминались кучер и колёсник (тот, кто делал колёса для карет). Один из популярных комментариев: «Буквально вчера заказывал кучера, потому что свою карету отдал колесникам на ремонт помятого диска». Но это шутки, конечно. А так, есть профессии, где увеличение степени автоматизации в конце концов полностью исключает человека (расстановщик кеглей в боулинге, телефонистка, фонарщик), а есть те, где автоматика просто упрощает людям жизнь и помогает выполнять свою работу эффективнее (компьютер помогает математикам, экскаватор строителям, телескоп астрономам). В чём же отличие первых и вторых? Я бы сказал, что у вторых профессий есть факторы непредсказуемости, вызванные необходимостью создания нового. В расстановке кеглей новых задач не появляется, как и в переключении телефонных линий. А в программировании появляется, и вот почему: у человечества возникают как новые процессы, требующие автоматизации, так и видоизменяются старые. И это, по всей видимости, бесконечный процесс. Да, разумеется, сильный ИИ с сознанием и способностью принимать решения будет уметь всё, что умеет человек, и даже больше. Но до этой технологии нам далеко, и нейросети не являются тропинкой к ней.
Другое дело, что джуны теперь не нужны, простите. Там, где раньше требовалась команда из сеньора, пары мидлов и пары джунов, теперь справится один сеньор, ну может ещё с одним мидлом, и всё. Советую всем начинающим программистам учить не то, как делать, а то, почему нужно делать именно так. Архитектуру, паттерны, принципы, лучшие практики. Тогда в уходящий айти-поезд ещё можно заскочить.
#dev
Известно, что один из самых надёжных способов починки любого устройства это «выключить и включить». Совершенно не шучу. Страшно вспомнить, как много раз именно этот принцип меня выручал. Поломка это, как правило, попадание устройства в нетипичное состояние, и легче всего вывести из этого состояния перезагрузкой. Второй надёжный способ, кстати, «разобрать и собрать», но речь сейчас не о нём.
В устройствах с разной степенью успешности внедряют автоматический перезапуск. Бывают решения типа BSOD, когда система просто говорит: «Человек,убей перезапусти меня, я так больше не могу». Смартфоны в ряде случаев умеют перезагружаться самостоятельно, хотя человек обычно такое своеволие не любит и воспринимает как серьёзный косяк. Серьёзнее, чем если телефон зависнет, и юзеру придётся перезапускать его вручную.
В микроконтроллерах частенько встроен watchdog: специальный таймер, который основные мозги должны сбрасывать. Если они зависли и не сбросили, то таймер сам уже производит перезагрузку. «Кнопка мертвеца», да. Тоже не слишком приятно, хотя другого способа как-то повлиять на зависший микроконтроллер обычно нет.
Но бывают устройства, чей перезапуск почти незаметен. Холодильник можно перезапускать без проблем, он и так постоянно включается и выключается. Какой-нибудь кондиционер тоже. И вот умную колонку.
Большую часть времени умная колонка стоит, ничего не делая. Почему же при пропадании сети Алиса сама себя не перезапускает? Сеть иногда пропадает именно у самой колонки (редко, раз в несколько месяцев, но бывает). Даже у наиболее новых моделей это встречается. И лечится только выдёргиванием её из розетки и повторным включением. Почему электроника Алисы не может после длительного отсутствия сети сама себя передёрнуть? Это же так очевидно.
Не понимаю.
#gadgets
В устройствах с разной степенью успешности внедряют автоматический перезапуск. Бывают решения типа BSOD, когда система просто говорит: «Человек,
В микроконтроллерах частенько встроен watchdog: специальный таймер, который основные мозги должны сбрасывать. Если они зависли и не сбросили, то таймер сам уже производит перезагрузку. «Кнопка мертвеца», да. Тоже не слишком приятно, хотя другого способа как-то повлиять на зависший микроконтроллер обычно нет.
Но бывают устройства, чей перезапуск почти незаметен. Холодильник можно перезапускать без проблем, он и так постоянно включается и выключается. Какой-нибудь кондиционер тоже. И вот умную колонку.
Большую часть времени умная колонка стоит, ничего не делая. Почему же при пропадании сети Алиса сама себя не перезапускает? Сеть иногда пропадает именно у самой колонки (редко, раз в несколько месяцев, но бывает). Даже у наиболее новых моделей это встречается. И лечится только выдёргиванием её из розетки и повторным включением. Почему электроника Алисы не может после длительного отсутствия сети сама себя передёрнуть? Это же так очевидно.
Не понимаю.
#gadgets
В эти дни я в Екатеринбурге на застройке площадки под AtomSkills. И вот только сейчас увидел, что у подъёмников-то управление шасси тоже из корзины. Из-за этого кажется, будто едет она сама, как робот, а человек наверху просто ждёт своего часа, когда его уже поднесут к чему-то, и он сделает, что нужно. Человек, как вариант манипулятора для машины. Насадка.
#gadgets
#gadgets
Ух, очень продуктивная была поездка. Наши взяли золото, причём, в этом году организаторы решили наградить в том числе экспертов по подготовке, чьи команды выиграли. Не надеялся я, что когда-нибудь ещё раз (после победы в 2022) поднимусь на эту сцену и получу медаль, а оно вот как сложилось.
Наверное, по эмоциям от AtomSkills один из самых сильных эффектов. С ним соперничают, разве что, мой первый хакатон VK Hack 2018, и крупнейший в мире хакатон «Цифровой Прорыв», сильно изменивший мою последующую жизнь.
В любом случае, каждый год AtomSkills это очень масштабное и классно срежиссированное мероприятие с большим количеством впечатлений, интереса, опыта. А сейчас вот был юбилейный чемпионат — десятый, и такой подгон. Два года не брали медалей, и никогда раньше в нашей компетенции не награждали тех, кто привёз команды. Видимо, мои хакатонные боги-покровители решили, что я засиделся.
В задание тоже удалось привнести некоторую новизну. В целом схема такая: эксперты совместно делают задание, придумывают шкалу оценки и критерии. Но при проверке решений каждую команду смотрят только те, кто к этой команде не имеет отношения. При этом критерии оценки это в большинстве своём объективные предикаты, на которые решение проверяется. Например, в критериях может быть фраза «Система позволяет создать нового пользователя: да (3 очка) / нет (0 очков)». Де-факто споров почти не возникает, коллегия экспертов почти всегда сразу видит и понимает, засчитывается тот или иной критерий или нет. Субъективные части в оценке тоже есть, но их влияние на результат в разы меньше, чем в обычных хакатонах. И да, важнейшее ключевое отличие: на AtomSkills решение каждой команды обязательно разворачивается независимо на пустом компьютере и прогоняется через бизнес-сценарии. Нельзя наврать в презентации, будто бы ты что-то сделал, чего нет. Нельзя сделать решение на моках или фейковое. Нельзя вытащить только на харизме и софт-скиллах.
В этом году мы, как авторы задания, к обычной энтерпрайз-части добавили алгоритмическую задачу. Стандартно командам предлагается сделать мини-CRM или нечто подобное в заданном домене, что увеличивает влияние заготовок. Если принести с собой слишком много подготовленных форм, CRUD'ов, конфигов и так далее, это экономит тебе много времени, и ты в итоге просто выигрываешь из-за форы. Сейчас же в мини-CRM была специальная функция: написать алгоритм оптимизации расписания работ. Детали задачи я расскажу завтра, но в целом никакие заготовки не помогали решить это эффективно, если не знать задачу заранее (а она до конкурса скрыта, и разглашение карается дисквалификацией).
В итоге лично на мой взгляд итоговый балл получился очень взвешенным:
— Если команда сделала хороший алгоритм и не провалилась при этом по обычной не-алгоритмической части, она набирала много баллов (как наши)
— Если команда сделала неэффективный, но работоспособный алгоритм, у неё был шанс вывезти за счёт супер идеального вылизанного исполнения не-алгоритмической работы (такие получили серебро и бронзу)
— Если алгоритм у команды не заработал вообще, то даже при супер идеальном остальном решении в тройку она не попала
— Если алгоритм у команды был хороший, но имелся сильный провал во всём остальном — она вообще оказывалась ниже середины
В общем, не знаю, попаду ли в следующий раз, но воспоминания и опыт невероятные.
#dev
Наверное, по эмоциям от AtomSkills один из самых сильных эффектов. С ним соперничают, разве что, мой первый хакатон VK Hack 2018, и крупнейший в мире хакатон «Цифровой Прорыв», сильно изменивший мою последующую жизнь.
В любом случае, каждый год AtomSkills это очень масштабное и классно срежиссированное мероприятие с большим количеством впечатлений, интереса, опыта. А сейчас вот был юбилейный чемпионат — десятый, и такой подгон. Два года не брали медалей, и никогда раньше в нашей компетенции не награждали тех, кто привёз команды. Видимо, мои хакатонные боги-покровители решили, что я засиделся.
В задание тоже удалось привнести некоторую новизну. В целом схема такая: эксперты совместно делают задание, придумывают шкалу оценки и критерии. Но при проверке решений каждую команду смотрят только те, кто к этой команде не имеет отношения. При этом критерии оценки это в большинстве своём объективные предикаты, на которые решение проверяется. Например, в критериях может быть фраза «Система позволяет создать нового пользователя: да (3 очка) / нет (0 очков)». Де-факто споров почти не возникает, коллегия экспертов почти всегда сразу видит и понимает, засчитывается тот или иной критерий или нет. Субъективные части в оценке тоже есть, но их влияние на результат в разы меньше, чем в обычных хакатонах. И да, важнейшее ключевое отличие: на AtomSkills решение каждой команды обязательно разворачивается независимо на пустом компьютере и прогоняется через бизнес-сценарии. Нельзя наврать в презентации, будто бы ты что-то сделал, чего нет. Нельзя сделать решение на моках или фейковое. Нельзя вытащить только на харизме и софт-скиллах.
В этом году мы, как авторы задания, к обычной энтерпрайз-части добавили алгоритмическую задачу. Стандартно командам предлагается сделать мини-CRM или нечто подобное в заданном домене, что увеличивает влияние заготовок. Если принести с собой слишком много подготовленных форм, CRUD'ов, конфигов и так далее, это экономит тебе много времени, и ты в итоге просто выигрываешь из-за форы. Сейчас же в мини-CRM была специальная функция: написать алгоритм оптимизации расписания работ. Детали задачи я расскажу завтра, но в целом никакие заготовки не помогали решить это эффективно, если не знать задачу заранее (а она до конкурса скрыта, и разглашение карается дисквалификацией).
В итоге лично на мой взгляд итоговый балл получился очень взвешенным:
— Если команда сделала хороший алгоритм и не провалилась при этом по обычной не-алгоритмической части, она набирала много баллов (как наши)
— Если команда сделала неэффективный, но работоспособный алгоритм, у неё был шанс вывезти за счёт супер идеального вылизанного исполнения не-алгоритмической работы (такие получили серебро и бронзу)
— Если алгоритм у команды не заработал вообще, то даже при супер идеальном остальном решении в тройку она не попала
— Если алгоритм у команды был хороший, но имелся сильный провал во всём остальном — она вообще оказывалась ниже середины
В общем, не знаю, попаду ли в следующий раз, но воспоминания и опыт невероятные.
#dev
В общем, была задача на оптимизацию плана работ: есть набор заказов, и в каждом N тасков. Таски могут зависеть друг от друга или нет, имеют длительность и тип. Ещё есть M работников, каждый из которых может выполнять таски только определённых типов, причём, у каждого своя скорость.
Если все таски в заказе выполнены, фирма получает сколько-то денег. У заказа есть дедлайн, за просрочку штраф (за каждый день просрочки), который вычитается из цены заказа. И ещё фирма тратит деньги за каждый день своей работы независимо от того, как загружены её сотрудники (то есть просто платит зарплаты по сути). Ещё важен учёт праздников и выходных.
Нужно заработать на определённом наборе заказов и работников как можно больше денег. Полный текст задачи и код программы проверки есть в репозитории. Эта задача является изменённым заказом, который мы с напарником решали в реальной жизни: оптимизация работы печатных станков для типографии. Правда, тогда и мы справились так себе, и заказчик в итоге сначала захотел всё вручную сам делать, а потом и вовсе похоронил проект при смене директора.
!!! Не читайте дальше, если хотите сначала попробовать решить самостоятельно, потому что я сейчас опишу эффективные подходы и результаты.
________________________________________
Так вот. Мы с другим экспертом Андреем сразу сели и написали разные варианты, чтобы задать шкалу, по которой будем оценивать решения команд. За пару часов я собрал примитивный жадный алгоритм, который сортировал заказы по прибыльности и укладывал в сетку кое-как, это дало нам нижнюю оценку. Мой алгоритм заработал ~75 млн виртуальных рублей, мы решили для оценки поставить нижней границей 40 млн. То есть всё, что ещё ниже, оценивалось в ноль баллов за качество оптимизации.
Затем Андрей закрылся дома на три дня и вышел на свет со сложным жадным алгоритмом, который очень хитро сортировал заказы и очень хитро укладывал их в сетку, попутно выбирая разные способы этой укладки в зависимости от конкретного заказа. Это позволило заработать ~275 млн рублей. Мы сделали верхней границей для оценки 280 млн.
К сожалению, в итоге только две команды из десяти прошли нижнюю границу, заработав, соответственно, ~91 и ~105 млн. К верхней границе не приблизился никто. И у четырёх команд алгоритм вообще не смог уложить без нарушений задачи в сетку (то есть, например, произвольно менял длительности, накладывал задачи друг на друга, давал одному работнику две задачи в один момент и так далее). Важной ошибкой команд, на мой взгляд, являлся тот факт, что никто не воспользовался возможностью запустить алгоритм на несколько минут и дать ему поработать. По условиям задания, можно было тянуть до 5 минут на одну оптимизацию, но по факту решения команд отрабатывали за единицы и десятки секунд.
На самом конкурсе, пока команды работали, я решил попробовать сделать быстрое (по времени написания) но эффективное решение. Сначала попробовал жадную сортировку + доведение до лучшего варианта методом имитации отжига. В качестве нового состояния я просто менял местами заказы целиком. Этот вариант работал пару минут и дал мне около ~200 млн дохода. К слову, команда-лидер использовала такой же подход, просто не докрутила число итераций и температуру.
Ну и потом я взял готовую либу по реализации классической генетики с особями и скрещиванием. Особью был массив с приоритетами заказов (которые конечно же нужно было аккуратно уложить чистым алгоритмом). Тип скрещивания: scattered. Всего 15 поколений по 20 особей, и это за минуту-полторы давало ~230-240 млн. Считаю, что для конкурса это самый лучший выбор: пишется одним человеком за день и даёт почти максимум, при этом легко настраивается на нужную длительность работы, легко параллелится.
Ну а потом уже дома я посидел и накодил свой вариант сложного жадного с плавающим окном перебора отсортированных заказов и плавающей же укладкой по работникам. Такая штука за две минуты зарабатывает ~281 млн. Но за три дня в условиях стресса я бы такое не сделал, скорее всего.
#dev
Если все таски в заказе выполнены, фирма получает сколько-то денег. У заказа есть дедлайн, за просрочку штраф (за каждый день просрочки), который вычитается из цены заказа. И ещё фирма тратит деньги за каждый день своей работы независимо от того, как загружены её сотрудники (то есть просто платит зарплаты по сути). Ещё важен учёт праздников и выходных.
Нужно заработать на определённом наборе заказов и работников как можно больше денег. Полный текст задачи и код программы проверки есть в репозитории. Эта задача является изменённым заказом, который мы с напарником решали в реальной жизни: оптимизация работы печатных станков для типографии. Правда, тогда и мы справились так себе, и заказчик в итоге сначала захотел всё вручную сам делать, а потом и вовсе похоронил проект при смене директора.
!!! Не читайте дальше, если хотите сначала попробовать решить самостоятельно, потому что я сейчас опишу эффективные подходы и результаты.
________________________________________
Так вот. Мы с другим экспертом Андреем сразу сели и написали разные варианты, чтобы задать шкалу, по которой будем оценивать решения команд. За пару часов я собрал примитивный жадный алгоритм, который сортировал заказы по прибыльности и укладывал в сетку кое-как, это дало нам нижнюю оценку. Мой алгоритм заработал ~75 млн виртуальных рублей, мы решили для оценки поставить нижней границей 40 млн. То есть всё, что ещё ниже, оценивалось в ноль баллов за качество оптимизации.
Затем Андрей закрылся дома на три дня и вышел на свет со сложным жадным алгоритмом, который очень хитро сортировал заказы и очень хитро укладывал их в сетку, попутно выбирая разные способы этой укладки в зависимости от конкретного заказа. Это позволило заработать ~275 млн рублей. Мы сделали верхней границей для оценки 280 млн.
К сожалению, в итоге только две команды из десяти прошли нижнюю границу, заработав, соответственно, ~91 и ~105 млн. К верхней границе не приблизился никто. И у четырёх команд алгоритм вообще не смог уложить без нарушений задачи в сетку (то есть, например, произвольно менял длительности, накладывал задачи друг на друга, давал одному работнику две задачи в один момент и так далее). Важной ошибкой команд, на мой взгляд, являлся тот факт, что никто не воспользовался возможностью запустить алгоритм на несколько минут и дать ему поработать. По условиям задания, можно было тянуть до 5 минут на одну оптимизацию, но по факту решения команд отрабатывали за единицы и десятки секунд.
На самом конкурсе, пока команды работали, я решил попробовать сделать быстрое (по времени написания) но эффективное решение. Сначала попробовал жадную сортировку + доведение до лучшего варианта методом имитации отжига. В качестве нового состояния я просто менял местами заказы целиком. Этот вариант работал пару минут и дал мне около ~200 млн дохода. К слову, команда-лидер использовала такой же подход, просто не докрутила число итераций и температуру.
Ну и потом я взял готовую либу по реализации классической генетики с особями и скрещиванием. Особью был массив с приоритетами заказов (которые конечно же нужно было аккуратно уложить чистым алгоритмом). Тип скрещивания: scattered. Всего 15 поколений по 20 особей, и это за минуту-полторы давало ~230-240 млн. Считаю, что для конкурса это самый лучший выбор: пишется одним человеком за день и даёт почти максимум, при этом легко настраивается на нужную длительность работы, легко параллелится.
Ну а потом уже дома я посидел и накодил свой вариант сложного жадного с плавающим окном перебора отсортированных заказов и плавающей же укладкой по работникам. Такая штука за две минуты зарабатывает ~281 млн. Но за три дня в условиях стресса я бы такое не сделал, скорее всего.
#dev
Вышел трейлер «Киллербота» по серии книг, о которой я вам рассказывал. Выглядит прямо очень многообещающе. Apple TV+ весьма неоднозначный стриминг, потому что часть вещей он сильно испоганил по сравнению с первоисточником (например, «Основание», о чём я тоже писал), а часть вещей вышли превосходными («Silo» очень хорош, хотя, говорят, что книги ещё на голову круче, у меня уже в очереди на прочтение).
В «Киллерботе», как в продукте современной западной писательницы, и так хватает повестки и порой странноватого юмора и странноватых же намёков (возьмём взаимоотношения главного героя с кораблём, например). Так что Apple TV+ не смогут сделать что-то сильно хуже за счёт woke-надстроек — в этом смысле современный роман устойчивее к издевательствам, чем классический труд Азимова полувековой давности. А всё остальное Apple делает хорошо: дорого, со вкусом, с хорошей постановкой.
Ждём выхода 16-го мая, в общем. #fiction
https://www.youtube.com/watch?v=vEioDeOiqEs
В «Киллерботе», как в продукте современной западной писательницы, и так хватает повестки и порой странноватого юмора и странноватых же намёков (возьмём взаимоотношения главного героя с кораблём, например). Так что Apple TV+ не смогут сделать что-то сильно хуже за счёт woke-надстроек — в этом смысле современный роман устойчивее к издевательствам, чем классический труд Азимова полувековой давности. А всё остальное Apple делает хорошо: дорого, со вкусом, с хорошей постановкой.
Ждём выхода 16-го мая, в общем. #fiction
https://www.youtube.com/watch?v=vEioDeOiqEs
YouTube
Murderbot — Official Trailer | Apple TV+
It's rogue. It's powerful. It would rather be watching TV.
Based on the award-winning, best-selling series by Martha Wells, Murderbot follows a rogue security unit as it searches for the meaning of life. Murderbot is now streaming on Apple TV+ https://…
Based on the award-winning, best-selling series by Martha Wells, Murderbot follows a rogue security unit as it searches for the meaning of life. Murderbot is now streaming on Apple TV+ https://…
Новый (седьмой) сезон «Чёрного зеркала» реабилитировал для меня сериал после откровенно проходных предыдущих двух. В своё время шестой сезон я досмотрел с трудом: из пяти серий три вообще мимо сериала. А вот в седьмом, разве что, чуть проваливается эпизод о съёмках кино, но и в нём есть любопытные моменты. Остальное очень хорошо, в духе сериала. И ещё куча мелких отсылок к предыдущим сезонам.
Наверное с точки зрения высказывания самая интересная серия — первая, обыгрывающая зависимость от корпораций. Кажется, убеждённым сторонникам капитализма и нынешней экономический модели человечества нужно побольше такого смотреть, чтобы мы в какой-то момент не оказались в мире, который там показан. Хотя, вполне возможно, что уже оказались.
По эмоциям очень сильная пятая, о мужчине, который вспоминал давние отношения. Проникновенно, грустно. И технологии, которые там показаны, уже у нас на носу. По крайней мере делать трёхмерную сцену из фотографии мы уже умеем.
Понравилась задумка в серии про девушку-кондитера. Посмотрел бы побольше такого. Можно целый сериал даже: как разные люди справляются с такими способностями. Причём, сериал можно сделать очень мрачный, под лозунгом «бойся своих желаний».
В серии о роевом интеллекте было приятно увидеть Капальди, но сюжетный ход я разгадал с первых минут. Слишком много читаю и смотрю фантастики. Нечто подобное было в одном из эпизодов «The Outer Limits» (к слову, «Чёрное зеркало» не впервые почти дословно цитирует его).
Ну и продолжение Каллистера — очень в тему. Не так много серий «Зеркала» было бы уместно продолжать, выбор считаю крайне удачным. Конечно, никаких хитрых сюжетных флипов и глубоких мыслей там нет, но во многом от этого даже проще после в целом тяжёлых предыдущих эпизодов.
Короче, либо там кому-то настучали по голове после низких оценок предыдущих сезонов, либо сменились шоураннеры, но вера в сериал восстановилась.
#fiction
Наверное с точки зрения высказывания самая интересная серия — первая, обыгрывающая зависимость от корпораций. Кажется, убеждённым сторонникам капитализма и нынешней экономический модели человечества нужно побольше такого смотреть, чтобы мы в какой-то момент не оказались в мире, который там показан. Хотя, вполне возможно, что уже оказались.
По эмоциям очень сильная пятая, о мужчине, который вспоминал давние отношения. Проникновенно, грустно. И технологии, которые там показаны, уже у нас на носу. По крайней мере делать трёхмерную сцену из фотографии мы уже умеем.
Понравилась задумка в серии про девушку-кондитера. Посмотрел бы побольше такого. Можно целый сериал даже: как разные люди справляются с такими способностями. Причём, сериал можно сделать очень мрачный, под лозунгом «бойся своих желаний».
В серии о роевом интеллекте было приятно увидеть Капальди, но сюжетный ход я разгадал с первых минут. Слишком много читаю и смотрю фантастики. Нечто подобное было в одном из эпизодов «The Outer Limits» (к слову, «Чёрное зеркало» не впервые почти дословно цитирует его).
Ну и продолжение Каллистера — очень в тему. Не так много серий «Зеркала» было бы уместно продолжать, выбор считаю крайне удачным. Конечно, никаких хитрых сюжетных флипов и глубоких мыслей там нет, но во многом от этого даже проще после в целом тяжёлых предыдущих эпизодов.
Короче, либо там кому-то настучали по голове после низких оценок предыдущих сезонов, либо сменились шоураннеры, но вера в сериал восстановилась.
#fiction
Мне очень нравится монолог детектива из фильма «Достать ножи: Стеклянная луковица». По сюжету эксцентричный миллиардер, «непонятый гений» Майлс Брон собирает своих друзей на личном острове на вечеринку, и закручивается дело. Детектив Бенуа Бланк, оказавшийся там же, проводит с этими мажорами несколько дней, и ближе к концу рассказывает им, как его осенило, и он нашёл ключ к делу.
Классический детективный сюжет, но сам монолог очень проникновенный, потому что Бланк эмоционально сокрушается, рассказывая о том, как у него в голове что-то не сходилось, как нечто постоянно не давало ему покоя. Приводит в пример различные мелочи: миллиардер выдумывал несуществующие слова, неверно применял другие слова, ошибался в фактах, не самостоятельно делал всякие крутые вещи, которыми хвастается, а то, что сделал или придумал он сам, оказалось неработоспособно.
И он приходит к такому выводу: Майлс Брон на самом деле идиот. Он глупый. Заработанные им деньги и миллиардная корпорация объясняются как-то ещё (в итоге сюжет даёт ответы на это), а чел просто тупой. И с помощью принятия этой гипотезы куча деталей встали на свои места.
Вот и в жизни можно применять. Если ты слишком долго не можешь объяснить поведение какого-то человека, попробуй предположить, что он тупой. Почти Бритва Хэнлона, но более персонализированная.
Бывший игрок в интеллектуальную игру несёт отборнейшую неадекватную ересь? Возможно, он просто тупой, а навык игры это единственное, что он в себе развивал.
Автор хороших текстов становится наглухо отбитым пропагандистом сомнительной политической позиции? Возможно, он просто тупой, а способность сочинять тексты не даёт умение адекватно видеть вещи вокруг.
Опытный специалист в какой-то сфере отрицает профессиональные подходы? Возможно, он просто тупой, а годы работы не сказались значимо на росте навыков.
Знаменитый владелец крупного сервиса придумывает неправдоподобные кринжовые оправдания своих косяков? Возможно,... хотя не, в этом случае обычно идёт игра на публику и вера в то, что тупые как раз зрители. Но тоже так себе.
И всё равно, в большом подмножестве случаев метод, кажется, работает. #life
Классический детективный сюжет, но сам монолог очень проникновенный, потому что Бланк эмоционально сокрушается, рассказывая о том, как у него в голове что-то не сходилось, как нечто постоянно не давало ему покоя. Приводит в пример различные мелочи: миллиардер выдумывал несуществующие слова, неверно применял другие слова, ошибался в фактах, не самостоятельно делал всякие крутые вещи, которыми хвастается, а то, что сделал или придумал он сам, оказалось неработоспособно.
И он приходит к такому выводу: Майлс Брон на самом деле идиот. Он глупый. Заработанные им деньги и миллиардная корпорация объясняются как-то ещё (в итоге сюжет даёт ответы на это), а чел просто тупой. И с помощью принятия этой гипотезы куча деталей встали на свои места.
Вот и в жизни можно применять. Если ты слишком долго не можешь объяснить поведение какого-то человека, попробуй предположить, что он тупой. Почти Бритва Хэнлона, но более персонализированная.
Бывший игрок в интеллектуальную игру несёт отборнейшую неадекватную ересь? Возможно, он просто тупой, а навык игры это единственное, что он в себе развивал.
Автор хороших текстов становится наглухо отбитым пропагандистом сомнительной политической позиции? Возможно, он просто тупой, а способность сочинять тексты не даёт умение адекватно видеть вещи вокруг.
Опытный специалист в какой-то сфере отрицает профессиональные подходы? Возможно, он просто тупой, а годы работы не сказались значимо на росте навыков.
Знаменитый владелец крупного сервиса придумывает неправдоподобные кринжовые оправдания своих косяков? Возможно,... хотя не, в этом случае обычно идёт игра на публику и вера в то, что тупые как раз зрители. Но тоже так себе.
И всё равно, в большом подмножестве случаев метод, кажется, работает. #life
Нейросеть очень не любит соблюдать DRY, поэтому её частенько нужно заставлять отдельной командой обернуть повторяющуюся логику в методы, вынести константы в конфиги итд.
Но вот еще забавная вещь. Я тут делаю софт для чтения данных по ModbusRTU, и кодом на питоне эмулирую устройство, чтобы читать его потом кодом на сишарпе. У устройства есть 16-битные регистры. Если нужно записать int32 или float, используются два последовательных регистра.
В общем, пишу в эмулятор, а при чтении какая-то чушь, все числа другие. Поменял порядок байт, всё равно чушь. Несколько часов отладки. Описываю нейросети проблему, она всякое пытается сделать, и нифига. В основном тоже байты местами меняет, то туда, то обратно. Нет результата.
Потом я вычитал сразу пару десятков регистров подряд и вижу, что они смещены на единицу. Проверил: и правда, в эмуляторе пишешь в регистр 2277, а при чтении это число в регистре 2278. Проверил внешней программой: ошибка именно в эмуляторе, читается правильно.
Лезу в гитхаб той питоновой библиотеки, которую нейросеть предложила. Нахожу старый закрытый issue с такой же жалобой, а там в ответ: "as intended due to historical reasons...".
Сетка даже предположить не могла, что кожаные мешки просто хрень сделали. Даже не смотрела в эту сторону, с её точки зрения библиотека должна была работать без ошибок. Так что пока нейронки не могут, так сказать, думать за пределами коробки, а мы можем.
Но когда-нибудь научатся, конечно.
#dev
Но вот еще забавная вещь. Я тут делаю софт для чтения данных по ModbusRTU, и кодом на питоне эмулирую устройство, чтобы читать его потом кодом на сишарпе. У устройства есть 16-битные регистры. Если нужно записать int32 или float, используются два последовательных регистра.
В общем, пишу в эмулятор, а при чтении какая-то чушь, все числа другие. Поменял порядок байт, всё равно чушь. Несколько часов отладки. Описываю нейросети проблему, она всякое пытается сделать, и нифига. В основном тоже байты местами меняет, то туда, то обратно. Нет результата.
Потом я вычитал сразу пару десятков регистров подряд и вижу, что они смещены на единицу. Проверил: и правда, в эмуляторе пишешь в регистр 2277, а при чтении это число в регистре 2278. Проверил внешней программой: ошибка именно в эмуляторе, читается правильно.
Лезу в гитхаб той питоновой библиотеки, которую нейросеть предложила. Нахожу старый закрытый issue с такой же жалобой, а там в ответ: "as intended due to historical reasons...".
Сетка даже предположить не могла, что кожаные мешки просто хрень сделали. Даже не смотрела в эту сторону, с её точки зрения библиотека должна была работать без ошибок. Так что пока нейронки не могут, так сказать, думать за пределами коробки, а мы можем.
Но когда-нибудь научатся, конечно.
#dev
Сегодня закрыли Skype после 22 лет работы, ушла эпоха.
Когда-то мне приходила в голову такая мысль: если подростком вы пошли в кино на фильм с взрослыми известными актёрами, то вероятнее всего в какой-то момент прочитаете новость о смерти каждого из них.
Вот и с сервисами — нашему поколению суждено читать новости о смерти того, чем мы пользовались в школе, университете, в более молодые годы. Я вот застал смерть Flash, ICQ (и QIP), ATI (видеокарты), мобильных веток Nokia и Siemens, Башорга и Лурка, НародРу, SonyEricsson, Motorola, WinAmp. Есть вещи, которые номинально существуют, но в любом значимом смысле из практического поля вышли: ЖЖ, Rambler, FlyBoard...
Интересно, что десктопный софт, похоже, крепче, чем интернет-сервисы. Помню в школе начинал изучать 3D max, тогда ещё принадлежавший фирме Discreet, и вот он до сих пор живее всех живых, правда уже под эгидой Autodesk. Даже Blender его не убил, что не перестаёт меня удивлять.
Или MS Office — всех нас переживёт, похоже. Microsoft в своё время сделали превосходную ставку, догадавшись оцифровать самую базовую офисную рутину. В 2025 году у нас везде ИИ и SPA с формами, но в бухгалтерию ты всё равно кидаешь docx-файл со вставленным сканом собственной подписи.
Погуглил: даже Dreamweaver существует и обновляется, помните такой? Для меня он всегда будет продуктом Macromedia. Да, я был там, Гэндальф, 3000 лет назад.
А эти ваши интернет-сервисы мрут, как мухи. Текстам в интернете каюк (и тексто-ориентированным соцсетям, как следствие). Фотки ещё держатся, но уже в основном на телефонах: никто не переживает от отсутствия вменяемой версии Инсты для десктопа. Видео... уверен, мы застанем ещё убийство Ютуба короткими вертикальными роликами. Возможно сайт по домену «Ютуб» будет открываться, но не такой, как сейчас. А дальше, думаю, когда смартфоны научатся посылать бессодержательный электрический импульс прямо в центр удовольствия, тогда уже и короткие видео пропадут.
Сколько из того, чем я пользуюсь сейчас каждый день, сохранится через 10, 20 лет? 50? Вот и посмотрим. Skype RIP, о тебе только хорошие воспоминания, хоть и недолгие.
#web
Когда-то мне приходила в голову такая мысль: если подростком вы пошли в кино на фильм с взрослыми известными актёрами, то вероятнее всего в какой-то момент прочитаете новость о смерти каждого из них.
Вот и с сервисами — нашему поколению суждено читать новости о смерти того, чем мы пользовались в школе, университете, в более молодые годы. Я вот застал смерть Flash, ICQ (и QIP), ATI (видеокарты), мобильных веток Nokia и Siemens, Башорга и Лурка, НародРу, SonyEricsson, Motorola, WinAmp. Есть вещи, которые номинально существуют, но в любом значимом смысле из практического поля вышли: ЖЖ, Rambler, FlyBoard...
Интересно, что десктопный софт, похоже, крепче, чем интернет-сервисы. Помню в школе начинал изучать 3D max, тогда ещё принадлежавший фирме Discreet, и вот он до сих пор живее всех живых, правда уже под эгидой Autodesk. Даже Blender его не убил, что не перестаёт меня удивлять.
Или MS Office — всех нас переживёт, похоже. Microsoft в своё время сделали превосходную ставку, догадавшись оцифровать самую базовую офисную рутину. В 2025 году у нас везде ИИ и SPA с формами, но в бухгалтерию ты всё равно кидаешь docx-файл со вставленным сканом собственной подписи.
Погуглил: даже Dreamweaver существует и обновляется, помните такой? Для меня он всегда будет продуктом Macromedia. Да, я был там, Гэндальф, 3000 лет назад.
А эти ваши интернет-сервисы мрут, как мухи. Текстам в интернете каюк (и тексто-ориентированным соцсетям, как следствие). Фотки ещё держатся, но уже в основном на телефонах: никто не переживает от отсутствия вменяемой версии Инсты для десктопа. Видео... уверен, мы застанем ещё убийство Ютуба короткими вертикальными роликами. Возможно сайт по домену «Ютуб» будет открываться, но не такой, как сейчас. А дальше, думаю, когда смартфоны научатся посылать бессодержательный электрический импульс прямо в центр удовольствия, тогда уже и короткие видео пропадут.
Сколько из того, чем я пользуюсь сейчас каждый день, сохранится через 10, 20 лет? 50? Вот и посмотрим. Skype RIP, о тебе только хорошие воспоминания, хоть и недолгие.
#web
В этом блоге я стараюсь побольше писать о технологиях, и в тему сегодняшнего праздника стоит упомянуть музей «1418 шагов к победе» (1418 дней продолжалась Великая Отечественная Война), который находится в Московской области.
Особенность музея в том, что он высокотехнологичный. Превосходный пример того, как нужно делать именно современный музей, пусть даже рассказывающий об истории.
1. Интерактивная полоса с фотографиями и именами воевавших, прямо на месте можно через поиск найти, например, своих родственников. Полоса идёт сквозь весь музей, движется, и ты понимаешь, что люди на ней, скорее всего, не повторяются на протяжении всех комнат.
2. Проекционные видеовставки на стекле в натуральную величину, например, из помещения полевой хирургии (конечно, не настоящие съёмки, а реконструкция). Помимо эффекта присутствия в помещении сам факт проекции на стекло делает людей похожих на привидения. Не знаю, закладывали ли авторы этот эффект, но лично мне он добавил чувство взгляда в прошлое и наблюдения за событиями, которые были давно, и людьми, которых уже нет.
3. Шикарные диорамы в натуральную величину, со звуком и экранами (имитация пространства за окном, например). Кстати, ещё очень атмосферные диорамы есть в музее «Пропавшие в кинохронике» у нас на Ленфильме. Музей о деятельности военных кинооператоров во Вторую Мировую, тоже настоятельно рекомендую.
4. Интерактивные карты с анимацией, возможностью перемещать время, смотреть, как менялась линия фронта. Меня впечатлила карта боев с Финляндией. Я помнил, что финны воевали на стороне нацистов, но вот так вот видеть глазами финский флаг рядом со свастикой на одной стороне — отрезвляюще.
5. И, стоит сказать, что «1418 шагов к победе» очень грамотно топологически выстроен. Я не слишком люблю музеи-лабиринты, где, например, можно что-то пропустить, или просмотреть не в том порядке. В этом же музее простая и понятная навигация, а, если у вас мало времени, то отдельные комнаты можно пропускать.
Особенность музея в том, что он высокотехнологичный. Превосходный пример того, как нужно делать именно современный музей, пусть даже рассказывающий об истории.
1. Интерактивная полоса с фотографиями и именами воевавших, прямо на месте можно через поиск найти, например, своих родственников. Полоса идёт сквозь весь музей, движется, и ты понимаешь, что люди на ней, скорее всего, не повторяются на протяжении всех комнат.
2. Проекционные видеовставки на стекле в натуральную величину, например, из помещения полевой хирургии (конечно, не настоящие съёмки, а реконструкция). Помимо эффекта присутствия в помещении сам факт проекции на стекло делает людей похожих на привидения. Не знаю, закладывали ли авторы этот эффект, но лично мне он добавил чувство взгляда в прошлое и наблюдения за событиями, которые были давно, и людьми, которых уже нет.
3. Шикарные диорамы в натуральную величину, со звуком и экранами (имитация пространства за окном, например). Кстати, ещё очень атмосферные диорамы есть в музее «Пропавшие в кинохронике» у нас на Ленфильме. Музей о деятельности военных кинооператоров во Вторую Мировую, тоже настоятельно рекомендую.
4. Интерактивные карты с анимацией, возможностью перемещать время, смотреть, как менялась линия фронта. Меня впечатлила карта боев с Финляндией. Я помнил, что финны воевали на стороне нацистов, но вот так вот видеть глазами финский флаг рядом со свастикой на одной стороне — отрезвляюще.
5. И, стоит сказать, что «1418 шагов к победе» очень грамотно топологически выстроен. Я не слишком люблю музеи-лабиринты, где, например, можно что-то пропустить, или просмотреть не в том порядке. В этом же музее простая и понятная навигация, а, если у вас мало времени, то отдельные комнаты можно пропускать.