Всё, что вы слышите

Мне нравится идея, которую я почерпнул из одного из постов Йоши Баха, что все, что мы слышим, автоматически исполняется нашим мозгом, как будто это собственные мысли, даже когда мы не обращаем на это внимания. И что это уязвимость безопасности, которая открывает ворота для всевозможных манипуляций. Я часто возвращаюсь к этой мысли, поэтому решил изложить ее на “бумаге”. Краткое изложение моих мыслей по этой теме. У нас есть эта лазейка, которую можно использовать множеством способов — от небольших словесных оскорблений или манипуляций до полномасштабных пропагандистских атак. Самая коварная часть в том, что это может проникнуть под вашу кожу, даже если вы не обращаете на это внимания. Возможно, это даже более заразно, когда вы не обращаете внимания, так как ваша защита ослаблена. Вы можете сопротивляться определенным идеям, когда слышите их один, два, десять раз, но после сотни повторений они в конечном итоге прорвутся, если только в вас нет чего-то, что делает эти идеи для вас совершенно неприемлемыми. ...

16 октября 2024 г. · 3 минуты · Anton Golubtsov

Рекомендательная система на основе HNSW и экспоненциальных скользящих средних

Введение Я читал оригинальную статью о “Hierarchical Navigable Small Worlds (HNSW)” https://arxiv.org/abs/1603.09320, которая оказалась гораздо легче для понимания, чем все те видео на YouTube, которые я пытался посмотреть, и статьи, которые читал. HNSW — это вероятностная структура данных для поиска соседей в многомерном пространстве. Одно из практических применений HNSW — это поиск семантически близких объектов. Прочтение этой статьи и некоторые другие активности заставили меня задуматься, смогу ли я быстро реализовать рекомендательную систему, которая объединяет три вещи: HNSW, скользящие средние и случайность. ...

11 октября 2024 г. · 7 минут · Anton Golubtsov

Скользящие средние

Меня заинтересовало использование усреднённых векторных эмбеддингов для целей рекомендаций, и затем я задумался, а не попробовать ли вместо усреднения использовать другие метрики, такие как медиана или верхние процентили, чтобы сфокусироваться на более частых сценариях и уменьшить влияние выбросов. А затем возник вопрос: если представить, что вы хотите использовать это в продакшене, как можно вычислить усреднённые эмбеддинги для миллионов пользователей с мгновенными обновлениями и без пакетной обработки данных оффлайн? Поэтому я написал несколько тестов для следующих случаев: ...

9 октября 2024 г. · 3 минуты · Anton Golubtsov

Хаотично-добрый

Несколько дней назад менеджер из соседней команды спросил меня, почему в разделе «Чем я занимаюсь» моего рабочего профиля указано «Chaotic Good» (Хаотично-добрый). Этот вопрос не выходит у меня из головы, поэтому нужно записать свои мысли, чтобы освободиться. Если коротко, это просто глупый мем из нескольких лет назад, который я решил использовать как рабочий девиз вместо «глупости и смелости», поскольку почувствовал, что новый лучше отражает ту работу, которую я выполнял в то время. ...

7 октября 2024 г. · 3 минуты · Anton Golubtsov

Классическая Заправка для Салата

Ингредиенты У меня нет понятия, сколько именно ингредиентов вам понадобится, все измерения приблизительны. Бальзамический уксус или любая кислая субстанция. Попробуйте сок лайма — у него приятный аромат. 1–2 ст. ложки. Наверное. Оливковое масло или любое другое масло, попробуйте арахисовое. 3–6 ст. ложек. Кто знает, сколько точно. Горчица. Это стабилизатор, чтобы сохранить эмульсию. Немного. Соль. Щепотка? Перец. Немного. Процесс Смешайте все ингредиенты и перемешивайте минуту, пока не образуется эмульсия. ...

3 октября 2024 г. · 1 минута · Anton Golubtsov

Алгоритмы шардинга (разделения) данных

Я раньше работал рядом с невероятно умными людьми, которые ежедневно занимались такими вещами, как шардинг данных. У них я многому научился по этой теме. Позже я перешёл на другую роль, где эти знания не требовались, и со временем они забылись. Здесь я пытаюсь восстановить для себя эти давно забытые знания. Введение Шардинг — это процесс назначения элемента конкретному шарду (разделу) — меньшему фрагменту данных из большой базы данных или другого сервиса. Основная идея заключается в том, что мы можем распределить данные или сервис по нескольким местоположениям, обрабатывать большие объёмы данных, справляться с большим количеством запросов, а с репликацией мы можем масштабироваться ещё больше и повысить отказоустойчивость системы. Однако нам нужно иметь чёткие правила, как назначать разделы (шарды), чтобы корректно перенаправлять запросы в нужное место. ...

30 сентября 2024 г. · 5 минут · Anton Golubtsov

Вопрос на собеседовании: библиотека парсинга логов

Один из вопросов, которые я часто задаю на собеседованиях, - это разработка библиотеки обработки логов: Вам нужно написать библиотеку для обработки логов в следующем формате: метка_времени<TAB>сообщение Библиотека будет передана другой команде для дальнейшей поддержки и улучшений, поэтому поддерживаемость и расширяемость являются самыми важными требованиями. Библиотека должна поддерживать следующие операции “из коробки”: фильтрация подсчет гистограммы Первоначальная версия также включала некоторые языковые и фоновые особенности, которые я никогда не включаю в свою оценку, потому что считаю, что они ставят кандидата в положение, когда ему нужно угадать мои ожидания. ...

29 сентября 2024 г. · 4 минуты · Anton Golubtsov

Вопрос на собеседовании: Оптимизация затрат на чтение с диска

Один из вопросов, который я действительно люблю задавать во время кодовых собеседований, звучит так: Дан непрерывный поток слов, словарь на диске и стоимость чтения с диска, создайте потоковый процессор, который возвращает true, когда слово существует в словаре, при этом минимизируя затраты на чтение с диска. Пример: Словарь: {Собака, Кошка, Птица, Лев, ...} Входные данные: [Собака, Кошка, Агхд, ...] Выходные данные: [True, True, False, ...] Выходные данные true, true, false, потому что “собака” и “кошка” существуют в словаре слов, а “Агхд” не считается словом. ...

24 сентября 2024 г. · 3 минуты · Anton Golubtsov

Написание пользовательских историй и требований

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

18 сентября 2024 г. · 4 минуты · Anton Golubtsov

Высокотехнологичные Энергетические (Внимание) Вампиры

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

15 сентября 2024 г. · 2 минуты · Anton Golubtsov