Últimas Postagens de LOVESYUK (@lovesyuk) no Telegram

Postagens do Canal LOVESYUK

LOVESYUK
Пишу тут о том что интересно. А интересно мне про IT, нейросети, стартапы и много ещё чего.

Обо мне: основатель двух IT компаний. Люблю писать код и обучать ML модели. Делаю мини-проекты и рассказываю о них тут.

with 💙 from @mr_vvv
2,731 Inscritos
55 Fotos
5 Vídeos
Última Atualização 05.03.2025 14:31

O conteúdo mais recente compartilhado por LOVESYUK no Telegram

LOVESYUK

15 Feb, 19:32

922

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

Зацените какая классная итерактивная визуализация получилась.
LOVESYUK

16 Jan, 09:12

1,820

Вчера у меня случились сразу три классных штуки!

🥳 Получил ключи от квартиры

Что интересного узнал: Иметь хорошего риэлтора на своей стороне - потрясающе полезно. Он и по стоимости сторгуется и контрагента тщательно проверит и крабом с Камчатки угостит. Пишите, поделюсь контактом.

♟️ Достиг рейтинга 2300 на lichess

Последний месяц чувствовал, что играю в эту силу и вчера получилось это подтвердить.
Динамика по времени получилась такая:

* 2000 - февраль 2019
* 2200 - май 2021
* (большая просадка в 2022)
* 2300 - январь 2025

Что помогло: решение в фоне самой простой тактики в 2-3 хода. Рекомендую всем решать самую простейшую тактику, начиная просто с задач со взятия фигуры в один ход.

🎶 Возвращение укулеле

Отправил его на склад со всеми вещами из квартиры в 2022 году. Вчера вернул его!

Что интересного узнал: Удивительно, но через почти 3 года вернулась идеально настроенной.

Такой хороший день 😇️️️️️️
LOVESYUK

08 Jan, 03:20

2,054

Воу! Выиграл у 2700. Нельзя таким не поделиться 😎
LOVESYUK

30 Dec, 20:23

2,704

💖️Готовы пожертвовать всем ради любимого дела? 💀

Недавно перечитывал книгу моего любимого автора Дерека Сиверса Your music and people. Книга про то как стать успешным музыкантом. Но многие идеи из книги супер универсальны и полезны, чем бы вы не занимались.

Дерек любит радикализировать мысли, чтобы пошатнуть мир читателя и сподвигнуть действовать. Так меня зацепила одна короткая глава, которую я решил перевести для вас.

***

Выдающихся результатов не добиться без выдающихся действий

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

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

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

Пока вы не тренируетесь, где-то тренируется кто-то другой. И когда вы встретитесь, он победит.

Посвятите себя делу целиком.  Find you love and let it kill you.
LOVESYUK

06 Jul, 18:43

4,200

🌟 200 тыс. шуток, вебсокеты и Gemini: История одного обновления 🌟

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

Делал первую версию чтобы играть с друзьями, но проект стал достаточно популярным и игроки уже написали порядка 200k панчлайнов.

Так вот, хочу рассказать о гигантском обновлении PunchMe

Чистый новый интерфейс

Прекрасный новый минималистичный UX/UI дизайн сделал Илья. Оживили и сверстали фронт Вова с командой на VueJs + Tailwind.

Можно играть со своими иностранными друзьями

Добавил поддержку английского в интерфейсе + есть англоязычный пакет вопросов. Работает даже озвучка.

Панчетрон ещё смешнее

AI бот, который играет с вами, теперь на голову смешнее предыдущей версии. Основной буст произошёл от перехода с gpt4 на gemini, который прекрасен на русском и, на удивление, не сдерживает себя в политкорректности. Иногда даже краснею за него.

Новый пакет: вопросы с никами

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

Всё работает быстрее на вебсокетах и асинхронно

Бек и фронт перевёл с rest-api на вебсокеты. Переписал весь код на асинхронный (flask → fastapi). Всё стало работать бодрее.

Бекэнд теперь организован

Перешёл с sqlite на mongo, который очень удобно поднимать с помощью докера. Сам бекенд и сборка фронта теперь тоже живут в своих контейнерах. Прокачал тут свой докер скилл.

Пробуйте с друзьями 🎉️️️️
LOVESYUK

28 Jun, 18:31

3,719

🎓 Alma Mater Folder 🎓

Ребята-физтехи организовались и сделали папку классных телеграм каналов. В которой я тоже есть 😏.
Много ребят C-уровня: фаундер Skyeng, CEO Epic Growth, VP в Osome, CPO в Яндекс.Лавке, etc.

Рекомендую заценить! Кучу интересного: много мейкеров (кто пилит свои проекты), датасаенс конечно же, истории про создание настольных игр и многое другое на что можно залипнуть.

Чек ит аут
LOVESYUK

01 Jun, 16:18

3,836

🔮 Как считать экспоненту с помощью умножения и сложения 🔮


const int L = 1 << 23; // == 2^23
const float a = L / std::log(2);
const float b = L * 127;

float fastExp(float x) {
x = a * x + b;
return std::bit_cast<float>((int)x);
}


Выше упрощенная версия кода, который считает приблизительное значение экспоненты, который я недавно встретил на GitHub.

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

Целые и дробные числа хранятся в битах по-разному

Числа в формате int хранятся ожидаемым образом, например, для числа 123:
123: int = 0000000000000000000000000 1111011

Числа в формате float хранятся в виде маски битов:
s eeeeeeee mmmmmmmmmmmmmmmmmmmmmmm

s — 1 бит знака. Определяет, положительное число или отрицательное.
e — 8 битов экспоненты. Показывают степень двойки.
m — 23 бита мантиссы. Хранят дробную часть числа.

Само число = (-1)^{s} * 2^{e} * 1.{m}

Например для нашего числа 123:

123: float = 0 00000110 11101100000000000000000

e = 00000110b = 6
m = 0.1110110b = 0.921875

Проверяем: 2^{e} x 1.{m} = 2^6 x 1.921875 = 123. Сходится!

Переводить представления из int в float и обратно несложно, и процессор умеет делать это очень эффективно.

Чтобы понять суть алгоритма, вместо e^{x} будем считать 2^{x}

Считаем быстро 2^{x} если x - int

Заметим, что если мы знаем двоичное представление x, то если мы его засунем в биты экспоненты float, то задача уже решена (e = x, m = 0). Это ключевое наблюдение для понимания алгоритма!

В int представлении все биты числа x у нас хранятся в правом конце числа. Чтобы сдвинуть их в область экспоненты, мы умножим наш int x на 2^23. Тем самым просто допишем 23 нуля справа.

В этих двух идеях и есть вся суть. Как перейти от 2^{x} к e^{х} в других деталях можно разобраться самому или заглянуть в оригинальную статью.

Cчитать экспоненту в десятичной системе мы (человеки) тоже можем с помощью одного умножения (wow!)

Например, чтобы оценить exp(36) мы можем переписать

exp(36) = 10^{36 * log10(e)} = 10^{15.634} ~ 10^16

Эта неожиданная похожесть алгоритмов, получается из-за того что научная запись чисел вроде 5.34e7 очень похожа на то, как хранятся float в компьютере.

P. S. На самом деле степень двойки в экспоненте float сдвинута на 127, чтобы мы могли записывать как большие числа, так и очень маленькие. Мы учитываем этот сдвиг, добавляя b = L * 127. Я убрал его, чтобы он не отвлекал от основной идеи.

P. P. S. Для тех кто всё понял: почему умножение на 2^32 в коде происходит в float, а не в int и что происходит с мантиссой в этом случае?

@lovesyuk
LOVESYUK

26 May, 13:03

3,082

🎱 Задачка по битовой магии 🎱


const int L = 1 << 23; // == 2^23
const float a = L / std::log(2);
const float b = L * 127;

float fast_math_function(float x) {
x = a * x + b;
return std::bit_cast<float>((int)x);
}


Выше упрощенная версия кода который считает приблизительное значение некоторой стандартной математической функции. Из действий тут только умножение + сложение + преобразование типов. А результат получается супер нетривиальный!

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

А пока два вопроса:
- Что это за функция?
- Как и почему работает этот магический код?

@lovesyuk
LOVESYUK

19 Mar, 12:23

4,102

Claude-opus на русском умнее chatgpt-4!

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

Сейчас это самый объективный рейтинг. Часто его смотрю.

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

На русском языке claude-opus выигрывает у gpt-4 c вероятностью ~58%.
Заметный перевес!

@lovesyuk
LOVESYUK

14 Mar, 16:09

3,735

Всех с 3.14 - днём Пи!

Сейчас получил большое удовольствие от новой попытки Мэта Паркера организовать вычисление Пи с помощью машины из очень плохих вычислителей - из пары сотен людей с ручками и листочками. Офигенно как они устроили конвейер вычислений и верификации результатов. Мощь!

https://youtu.be/LIg-6glbLkU