🦫 Человечество никогда не сможет вычислить число Busy Beaver для 748 🦫
Расскажу о факте о котором недавно узнал, он меня так поразил, что я до 6 утра разбирался что к чему: Busy Beaver для 748 — это существующее конечное целое число которое мы не сможем вычислить никогда. Оно невычислимо в рамках любой системы математических аксиом. Его нельзя вычислить принципиально - даже при неограниченных времени и памяти.
Что такое Busy Beaver от N
Числа Busy Beaver (BB) - это ключевые числа в теории информатики. Первоначально BB определяется для машин Тьюринга, но для простоты будем рассматривать программы на Python.
BB от N — это сколько шагов будет работать самый долгий скрипт на Python длиной до N символов из тех, что когда-либо остановятся. Например:
Можно понять, что число программ короче N символов конечно. Из тех что останавливаются, будет та которая работает дольше всех. Число шагов которая она работает и будет BB(N).
Математика опирается на систему аксиом
Для краткости эту систему называют ZFC. Мы предполагаем, что эти аксиомы не противоречат друг другу: нельзя из них вывести утверждение A и not A. Однако Гёдель показал, что ZFC не может доказать свою собственную непротиворичивоть. Этот факт мы используем далее.
Пишем программу для поиска противоречий
Оказывается 748 символов достаточно чтобы написать программу на Python которая будет искать противоречия в ZFC всеми возможными способами. Если она найдет противоречие, она остановится; в противном случае она будет работать бесконечно. Мы считаем, что ZFC последовательна, следовательно, программа никогда не должна остановиться.
Если бы мы знали BB(748), мы могли бы оспорить теорему Гёделя.
Мы бы запустили нашу 748 символьную программу по поиску противоречий и подождали BB(748) шагов. Если бы она не остановилась, то это бы значило что она не принадлежит к классу программ которые когда-то останавливаются. Иначе BB(748) было бы больше. А раз она не остановится никогда, тогда мы доказали что в нашей системе аксиом нет противоречий. Что мы принципиально не можем сделать.
И поэтому мы никогда не сможем узнать BB(748).
Wake up Neo
BB от 748 — это непознаваемое число. Мы даже никогда не сможем узнать верхнюю границу для него. Но это конечное целое число! WOW.
Расскажу о факте о котором недавно узнал, он меня так поразил, что я до 6 утра разбирался что к чему: Busy Beaver для 748 — это существующее конечное целое число которое мы не сможем вычислить никогда. Оно невычислимо в рамках любой системы математических аксиом. Его нельзя вычислить принципиально - даже при неограниченных времени и памяти.
Что такое Busy Beaver от N
Числа Busy Beaver (BB) - это ключевые числа в теории информатики. Первоначально BB определяется для машин Тьюринга, но для простоты будем рассматривать программы на Python.
BB от N — это сколько шагов будет работать самый долгий скрипт на Python длиной до N символов из тех, что когда-либо остановятся. Например:
#
for i in range(5): pass
Это программа проработает 5 шагов#
while True: pass
А эта
никогда не остановится, поэтому нам не подходит
Можно понять, что число программ короче N символов конечно. Из тех что останавливаются, будет та которая работает дольше всех. Число шагов которая она работает и будет BB(N).
Математика опирается на систему аксиом
Для краткости эту систему называют ZFC. Мы предполагаем, что эти аксиомы не противоречат друг другу: нельзя из них вывести утверждение A и not A. Однако Гёдель показал, что ZFC не может доказать свою собственную непротиворичивоть. Этот факт мы используем далее.
Пишем программу для поиска противоречий
Оказывается 748 символов достаточно чтобы написать программу на Python которая будет искать противоречия в ZFC всеми возможными способами. Если она найдет противоречие, она остановится; в противном случае она будет работать бесконечно. Мы считаем, что ZFC последовательна, следовательно, программа никогда не должна остановиться.
Если бы мы знали BB(748), мы могли бы оспорить теорему Гёделя.
Мы бы запустили нашу 748 символьную программу по поиску противоречий и подождали BB(748) шагов. Если бы она не остановилась, то это бы значило что она не принадлежит к классу программ которые когда-то останавливаются. Иначе BB(748) было бы больше. А раз она не остановится никогда, тогда мы доказали что в нашей системе аксиом нет противоречий. Что мы принципиально не можем сделать.
И поэтому мы никогда не сможем узнать BB(748).
Wake up Neo
BB от 748 — это непознаваемое число. Мы даже никогда не сможем узнать верхнюю границу для него. Но это конечное целое число! WOW.
🤔27🔥8👍6😱3❤2👏1
💀 Человечество вымрет через 9000 лет. Теорема о конце света. 💀
Расскажу элегантное математическое рассуждение о том, как предсказать конец света.
Сначала представим, что каждый человек имеет порядковый номер рождения от 1 до N, где N - это общее количество людей, которые когда-либо будут существовать.
Теперь воспользуемся общим принципом Коперника, который говорит, ваш момент рождения ничем не уникален. Вы одинаково вероятно могли иметь любой порядковый номер рождения в истории человечества, как и любой другой человек. Из этого имеем, что порядковый номер вашего рождения равномерно распределён между 1 и N.
А это значит, что с вероятностью 95% ваш порядковый номер рождения X лежит в интервале 0.05 * N < X < N. Отсюда получаем оценку на N < X / 0.05 с вероятностью 95%.
С начала существования человечества к текущему моменту родилось порядка 60 млрд. человек. Это и будет ваш порядковый номер X. Поэтому получаем, оценку на общее число людей в будущем N ≤ 1200 млрд. людей.
Считая, что население стабилизируется на числе 10 млдр., можно прикинуть что таким образом нам остается не больше 9000 лет. Важно помнить, что это вероятностная оценка, а не точное предсказание.
Да, для Адама с Евой и последних живущих перед апокалипсисом эта оценка сработает плохо, но большинства остальных людей она будет потрясающе хороша.
Такой супер простой и красивый метод предсказания будущего. Если всё рассуждение кажется магией, то можно углубиться в вики.
@lovesyik
Расскажу элегантное математическое рассуждение о том, как предсказать конец света.
Сначала представим, что каждый человек имеет порядковый номер рождения от 1 до N, где N - это общее количество людей, которые когда-либо будут существовать.
Теперь воспользуемся общим принципом Коперника, который говорит, ваш момент рождения ничем не уникален. Вы одинаково вероятно могли иметь любой порядковый номер рождения в истории человечества, как и любой другой человек. Из этого имеем, что порядковый номер вашего рождения равномерно распределён между 1 и N.
А это значит, что с вероятностью 95% ваш порядковый номер рождения X лежит в интервале 0.05 * N < X < N. Отсюда получаем оценку на N < X / 0.05 с вероятностью 95%.
С начала существования человечества к текущему моменту родилось порядка 60 млрд. человек. Это и будет ваш порядковый номер X. Поэтому получаем, оценку на общее число людей в будущем N ≤ 1200 млрд. людей.
Считая, что население стабилизируется на числе 10 млдр., можно прикинуть что таким образом нам остается не больше 9000 лет. Важно помнить, что это вероятностная оценка, а не точное предсказание.
Да, для Адама с Евой и последних живущих перед апокалипсисом эта оценка сработает плохо, но большинства остальных людей она будет потрясающе хороша.
Такой супер простой и красивый метод предсказания будущего. Если всё рассуждение кажется магией, то можно углубиться в вики.
@lovesyik
😱17❤13🔥10🤣9👍2🤔1
Как я использовал время за ноутом в 2023 году
71% -- Работал над Wunderfund. Это основной мой фокус.
5% -- Делал какой-то новый интересный сайд проект.
2% -- Играл в шахматы.
2% -- Смотрел фильмы/сериалы. Офис & Друзья 🤍
1% -- Созванивался с друзьями. Всегда большая радость.
По приложениям:
40% времени я программировал разные штуки в vscode.
Такой вот год.
* Трекаю время с помощью классного Timing app приложения.
71% -- Работал над Wunderfund. Это основной мой фокус.
5% -- Делал какой-то новый интересный сайд проект.
2% -- Играл в шахматы.
2% -- Смотрел фильмы/сериалы. Офис & Друзья 🤍
1% -- Созванивался с друзьями. Всегда большая радость.
По приложениям:
40% времени я программировал разные штуки в vscode.
Такой вот год.
* Трекаю время с помощью классного Timing app приложения.
❤36🔥9👍3
🔋 Измеритель мыслетоплива 🔋
TLDR: Сделал измеритель как в течение дня меняется уровень когнитивной энергии и остроты ума. С помощью простых шахматных задачек. Попробуйте здесь.
# Энергия меняется в течение дня и зависит от многих факторов
Думаю замечали, как умственная энергия сильно колеблется в течение дня. Иногда вы чувствуете себя полным энергии и готовы к вызовам, а иногда вы чувствуете себя уставшим и не можете сосредоточиться.
Есть множество советов как влиять на энергию: высыпаться, правильно питаться, заниматься спортом, медитировать и т.д. Но перед тем как что-то пробовать и проводить эксперименты, хорошо бы научиться измерять это "мыслетопливо". Я загуглил ментальные тесты, но ничего интересного не нашел.
# Шахматы как индикатор когнитивной бордрости
Я сам часто играю в шахматы и заметил, что уровень моей игры сильно меняется в течении дня и зависит от того насколько я в тонусе. Из этого и пришла идея. Текущий рейтинг в шахматах может быть хорошим индикатором остроты ума.
Поэтому я решил сделать веб-приложение, которое будет измерять ментальную бодрость в течение дня с помощью шахматных задачек.
# Измеритель остроты ума
Что я сделал:
- Скачал датасет 3M шахматных задачек с сайта lichess.
- Из них выбрал все с хорошим рейтингом от пользователей и те которые решаются в 1-3 хода.
- Написал бэкенд который по вашему текущему рейтингу присылает следующую задачку.
- Вы решаете или не решаете задачку, и в зависимости от этого ваш рейтинг меняется.
- История рейтинга сохраняется локально, так что вы можете отслеживать как он меняется в течение дня и что на него влияет.
- Чем больше вы решаете задачек, тем точнее будет оценка рейтинга. Разумно остановиться на точности +- 50 пунктов.
- Фронт я написал на Vuejs и думаю, что получилось приятно и динамично.
# Не важно как хороши вы в шахматах
Задачки подстраиваются под ваш уровень. Ваше абсолютное значения рейтинга не важно, интересно смотреть как он меняется и от чего это зависит.
Пробуйте и делитесь впечатлениями.
TLDR: Сделал измеритель как в течение дня меняется уровень когнитивной энергии и остроты ума. С помощью простых шахматных задачек. Попробуйте здесь.
# Энергия меняется в течение дня и зависит от многих факторов
Думаю замечали, как умственная энергия сильно колеблется в течение дня. Иногда вы чувствуете себя полным энергии и готовы к вызовам, а иногда вы чувствуете себя уставшим и не можете сосредоточиться.
Есть множество советов как влиять на энергию: высыпаться, правильно питаться, заниматься спортом, медитировать и т.д. Но перед тем как что-то пробовать и проводить эксперименты, хорошо бы научиться измерять это "мыслетопливо". Я загуглил ментальные тесты, но ничего интересного не нашел.
# Шахматы как индикатор когнитивной бордрости
Я сам часто играю в шахматы и заметил, что уровень моей игры сильно меняется в течении дня и зависит от того насколько я в тонусе. Из этого и пришла идея. Текущий рейтинг в шахматах может быть хорошим индикатором остроты ума.
Поэтому я решил сделать веб-приложение, которое будет измерять ментальную бодрость в течение дня с помощью шахматных задачек.
# Измеритель остроты ума
Что я сделал:
- Скачал датасет 3M шахматных задачек с сайта lichess.
- Из них выбрал все с хорошим рейтингом от пользователей и те которые решаются в 1-3 хода.
- Написал бэкенд который по вашему текущему рейтингу присылает следующую задачку.
- Вы решаете или не решаете задачку, и в зависимости от этого ваш рейтинг меняется.
- История рейтинга сохраняется локально, так что вы можете отслеживать как он меняется в течение дня и что на него влияет.
- Чем больше вы решаете задачек, тем точнее будет оценка рейтинга. Разумно остановиться на точности +- 50 пунктов.
- Фронт я написал на Vuejs и думаю, что получилось приятно и динамично.
# Не важно как хороши вы в шахматах
Задачки подстраиваются под ваш уровень. Ваше абсолютное значения рейтинга не важно, интересно смотреть как он меняется и от чего это зависит.
Пробуйте и делитесь впечатлениями.
🔥22👍7❤2😱2
✍️ Небольшое обновление Chess Brain Scorer из предыдущего поста ✍️
* Починил подсчёт рейтинга. При решение большого числа задач рейтинг считался неправильно и улетал в небеса. Удивительно, но баг в js библиотеке glicko2, которой уже 8 лет. Чтобы пофиксить пришлось самому написать оценку волатильности рейтинга.
* Добавил комментарии к истории, чтобы можно было что-то отмечать про своё состояние.
Check it out 😎
* Починил подсчёт рейтинга. При решение большого числа задач рейтинг считался неправильно и улетал в небеса. Удивительно, но баг в js библиотеке glicko2, которой уже 8 лет. Чтобы пофиксить пришлось самому написать оценку волатильности рейтинга.
* Добавил комментарии к истории, чтобы можно было что-то отмечать про своё состояние.
Check it out 😎
🔥14👍2❤1
Ого. Гугл выложил свои LLM модели в опенсорс которые сильно бьют llama2 на всех бенчмарках.
Выложены мелкие версии сетей: 2B и 7B параметров.
Прогресс в открытых моделях всё ещё идёт благодаря щедрости нескольких больших корпораций.
https://blog.google/technology/developers/gemma-open-models/
Выложены мелкие версии сетей: 2B и 7B параметров.
Прогресс в открытых моделях всё ещё идёт благодаря щедрости нескольких больших корпораций.
https://blog.google/technology/developers/gemma-open-models/
🔥25😱4👏2❤1👍1
Всех с 3.14 - днём Пи!
Сейчас получил большое удовольствие от новой попытки Мэта Паркера организовать вычисление Пи с помощью машины из очень плохих вычислителей - из пары сотен людей с ручками и листочками. Офигенно как они устроили конвейер вычислений и верификации результатов. Мощь!
https://youtu.be/LIg-6glbLkU
Сейчас получил большое удовольствие от новой попытки Мэта Паркера организовать вычисление Пи с помощью машины из очень плохих вычислителей - из пары сотен людей с ручками и листочками. Офигенно как они устроили конвейер вычислений и верификации результатов. Мощь!
https://youtu.be/LIg-6glbLkU
YouTube
The biggest hand calculation in a century! [Pi Day 2024]
Please note down the new value of pi: 3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223176
If you'd like to sign up to hear about future ridiculous maths projects that…
If you'd like to sign up to hear about future ridiculous maths projects that…
👍14🔥7❤4
Claude-opus на русском умнее chatgpt-4!
Есть классная чатбот арена, где пользователи оценивают, какая из двух языковых моделей ответила на их вопрос лучше. На основе предпочтений пользователей формируются рейтинги умности этих моделей.
Сейчас это самый объективный рейтинг. Часто его смотрю.
Сегодня я посмотрел на датасет сравнений и обнаружил, что создатели платформы ещё и сохраняют и язык запросов! А это значит, что можно выбрать только запросы на русском и заного пересчитать скрипты для вычисления рейтингов. Что я собственно и сделал - см. картинку выше.
На русском языке claude-opus выигрывает у gpt-4 c вероятностью ~58%.
Заметный перевес!
@lovesyuk
Есть классная чатбот арена, где пользователи оценивают, какая из двух языковых моделей ответила на их вопрос лучше. На основе предпочтений пользователей формируются рейтинги умности этих моделей.
Сейчас это самый объективный рейтинг. Часто его смотрю.
Сегодня я посмотрел на датасет сравнений и обнаружил, что создатели платформы ещё и сохраняют и язык запросов! А это значит, что можно выбрать только запросы на русском и заного пересчитать скрипты для вычисления рейтингов. Что я собственно и сделал - см. картинку выше.
На русском языке claude-opus выигрывает у gpt-4 c вероятностью ~58%.
Заметный перевес!
@lovesyuk
❤19🔥8👍6
🎱 Задачка по битовой магии 🎱
Выше упрощенная версия кода который считает приблизительное значение некоторой стандартной математической функции. Из действий тут только умножение + сложение + преобразование типов. А результат получается супер нетривиальный!
Вчера я потратил значительное время чтобы полностью понять как это работает эта магия. Расскажу о ней в следующем посте.
А пока два вопроса:
- Что это за функция?
- Как и почему работает этот магический код?
@lovesyuk
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
👍6❤3😱1
🔮 Как считать экспоненту с помощью умножения и сложения 🔮
Выше упрощенная версия кода, который считает приблизительное значение экспоненты, который я недавно встретил на GitHub.
Я был супер удивлен, что тут умножение + сложение + преобразование типов, и всё — экспонента подсчитана.
В моей голове экспонента всегда была нетривиальной операцией, на которую требуется много тактов. Как же так, давайте разбираться.
Целые и дробные числа хранятся в битах по-разному
Числа в формате int хранятся ожидаемым образом, например, для числа 123:
Числа в формате float хранятся в виде маски битов:
s — 1 бит знака. Определяет, положительное число или отрицательное.
e — 8 битов экспоненты. Показывают степень двойки.
m — 23 бита мантиссы. Хранят дробную часть числа.
Само число = (-1)^{s} * 2^{e} * 1.{m}
Например для нашего числа 123:
Проверяем: 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, чтобы мы могли записывать как большие числа, так и очень маленькие. Мы учитываем этот сдвиг, добавляя
P. P. S. Для тех кто всё понял: почему умножение на 2^32 в коде происходит в float, а не в int и что происходит с мантиссой в этом случае?
@lovesyuk
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 mmmmmmmmmmmmmmmmmmmmmmms — 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
🔥33❤6🤔4👍1
🎓 Alma Mater Folder 🎓
Ребята-физтехи организовались и сделали папку классных телеграм каналов. В которой я тоже есть 😏.
Много ребят C-уровня: фаундер Skyeng, CEO Epic Growth, VP в Osome, CPO в Яндекс.Лавке, etc.
Рекомендую заценить! Кучу интересного: много мейкеров (кто пилит свои проекты), датасаенс конечно же, истории про создание настольных игр и многое другое на что можно залипнуть.
Чек ит аут
Ребята-физтехи организовались и сделали папку классных телеграм каналов. В которой я тоже есть 😏.
Много ребят C-уровня: фаундер Skyeng, CEO Epic Growth, VP в Osome, CPO в Яндекс.Лавке, etc.
Рекомендую заценить! Кучу интересного: много мейкеров (кто пилит свои проекты), датасаенс конечно же, истории про создание настольных игр и многое другое на что можно залипнуть.
Чек ит аут
❤13🔥4👏1
🌟 200 тыс. шуток, вебсокеты и Gemini: История одного обновления 🌟
Многие тут помнят, что в свободное время я делаю юмористическую игру для друзей PunchMe. Устроено всё так: собираетесь с друзьями в игровой комнате, каждому дают по началу шутки которую надо смешно закончить, потом все хихикают и голосуют у кого веселей вышло.
Делал первую версию чтобы играть с друзьями, но проект стал достаточно популярным и игроки уже написали порядка 200k панчлайнов.
Так вот, хочу рассказать о гигантском обновлении PunchMe
Чистый новый интерфейс
Прекрасный новый минималистичный UX/UI дизайн сделал Илья. Оживили и сверстали фронт Вова с командой на VueJs + Tailwind.
Можно играть со своими иностранными друзьями
Добавил поддержку английского в интерфейсе + есть англоязычный пакет вопросов. Работает даже озвучка.
Панчетрон ещё смешнее
AI бот, который играет с вами, теперь на голову смешнее предыдущей версии. Основной буст произошёл от перехода с gpt4 на gemini, который прекрасен на русском и, на удивление, не сдерживает себя в политкорректности. Иногда даже краснею за него.
Новый пакет: вопросы с никами
Часто с друзьями играли, когда в заходах для шуток (сетапах) были имена друзей. Очень весело. Хардкодил раньше этот режим вручную, теперь добавил эту функциональность при создании комнаты.
Всё работает быстрее на вебсокетах и асинхронно
Бек и фронт перевёл с rest-api на вебсокеты. Переписал весь код на асинхронный (flask → fastapi). Всё стало работать бодрее.
Бекэнд теперь организован
Перешёл с sqlite на mongo, который очень удобно поднимать с помощью докера. Сам бекенд и сборка фронта теперь тоже живут в своих контейнерах. Прокачал тут свой докер скилл.
Пробуйте с друзьями 🎉️️️️
Многие тут помнят, что в свободное время я делаю юмористическую игру для друзей PunchMe. Устроено всё так: собираетесь с друзьями в игровой комнате, каждому дают по началу шутки которую надо смешно закончить, потом все хихикают и голосуют у кого веселей вышло.
Делал первую версию чтобы играть с друзьями, но проект стал достаточно популярным и игроки уже написали порядка 200k панчлайнов.
Так вот, хочу рассказать о гигантском обновлении PunchMe
Чистый новый интерфейс
Прекрасный новый минималистичный UX/UI дизайн сделал Илья. Оживили и сверстали фронт Вова с командой на VueJs + Tailwind.
Можно играть со своими иностранными друзьями
Добавил поддержку английского в интерфейсе + есть англоязычный пакет вопросов. Работает даже озвучка.
Панчетрон ещё смешнее
AI бот, который играет с вами, теперь на голову смешнее предыдущей версии. Основной буст произошёл от перехода с gpt4 на gemini, который прекрасен на русском и, на удивление, не сдерживает себя в политкорректности. Иногда даже краснею за него.
Новый пакет: вопросы с никами
Часто с друзьями играли, когда в заходах для шуток (сетапах) были имена друзей. Очень весело. Хардкодил раньше этот режим вручную, теперь добавил эту функциональность при создании комнаты.
Всё работает быстрее на вебсокетах и асинхронно
Бек и фронт перевёл с rest-api на вебсокеты. Переписал весь код на асинхронный (flask → fastapi). Всё стало работать бодрее.
Бекэнд теперь организован
Перешёл с sqlite на mongo, который очень удобно поднимать с помощью докера. Сам бекенд и сборка фронта теперь тоже живут в своих контейнерах. Прокачал тут свой докер скилл.
Пробуйте с друзьями 🎉️️️️
🔥43👍6❤4👏2
📐 π² ≈ g. Не случайно! 📐
π² примерно равно g. Их можно сокращать при расчётах, удобно. Такое помнят все, кто хотел "постигнуть физики мир трудный".
Забавное совпадение... Или нет!
Оказывается одно из первых определений метра было такое: 1 метр - это длина маятника L, у которого период полуколебания равен 1 секунде. π√(L/g) = 1 sec
Поэтому когда-то π² = g было даже строгим равенством 🤯
***
- g — ускорение свободного падения, 9.81 м/с², π² = 9.86
- от этого определения отказались: оказалось, что в разных точках Земли g меняется, и эталон метра “плыл” к экватору.
Математик заходит в бар, заказывает π² пива. Бармен-физик наливает ему g.
π² примерно равно g. Их можно сокращать при расчётах, удобно. Такое помнят все, кто хотел "постигнуть физики мир трудный".
Забавное совпадение... Или нет!
Оказывается одно из первых определений метра было такое: 1 метр - это длина маятника L, у которого период полуколебания равен 1 секунде. π√(L/g) = 1 sec
Поэтому когда-то π² = g было даже строгим равенством 🤯
***
- g — ускорение свободного падения, 9.81 м/с², π² = 9.86
- от этого определения отказались: оказалось, что в разных точках Земли g меняется, и эталон метра “плыл” к экватору.
🔥39😢21❤16👍12😱12🤣9🤔5
🤯 Парсинг телеграма с рекурсивным твистом в конце 🤯
У меня появилась идея проекта на выходных: запарсить каналы, которые связаны с IT & ML. Найти тысячу каналов, запарсить с каждого посты и потом отранжировать все посты по интересности.
Какие посты мне интересны?
- Когда автор рассказывает о своём личном опыте, а не пересказывает новости.
- Посты мейкеров, то есть людей, которые что-то создают.
- Посты, которые рассказывают про успехи и провалы.
Технические детали парсинга и скоринга я опущу
Но для истории важно, что посты по моим критериям оцениваю, конечно же, с помощью API от OpenAI.
А теперь твист
После этого я начал анализировать результаты, и в топ-10 постов по интересности мне попался пост о том как человек в выходные запарсил IT-каналы и прикрутил ML от OpenAI, чтобы найти похожие интересные. Тут я выпал 😱😱😱.
P. S. Теперь осознав что произойдёт дальше, добавлю:
У меня появилась идея проекта на выходных: запарсить каналы, которые связаны с IT & ML. Найти тысячу каналов, запарсить с каждого посты и потом отранжировать все посты по интересности.
Какие посты мне интересны?
- Когда автор рассказывает о своём личном опыте, а не пересказывает новости.
- Посты мейкеров, то есть людей, которые что-то создают.
- Посты, которые рассказывают про успехи и провалы.
Технические детали парсинга и скоринга я опущу
Но для истории важно, что посты по моим критериям оцениваю, конечно же, с помощью API от OpenAI.
А теперь твист
После этого я начал анализировать результаты, и в топ-10 постов по интересности мне попался пост о том как человек в выходные запарсил IT-каналы и прикрутил ML от OpenAI, чтобы найти похожие интересные. Тут я выпал 😱😱😱.
P. S. Теперь осознав что произойдёт дальше, добавлю:
Поздравляю друг из будущего, ты нашёл этот пост с помощью парсинга и скоринга интересных тебе постов. Не останавливай цепочку. Напиши об этом.
🔥49🤣28❤15😱6👍4
💖️️ Готовы пожертвовать всем ради любимого дела? 💀
Недавно перечитывал книгу моего любимого автора Дерека Сиверса Your music and people. Книга про то как стать успешным музыкантом. Но многие идеи из книги супер универсальны и полезны, чем бы вы не занимались.
Дерек любит радикализировать мысли, чтобы пошатнуть мир читателя и сподвигнуть действовать. Так меня зацепила одна короткая глава, которую я решил перевести для вас.
***
Выдающихся результатов не добиться без выдающихся действий
Не получится пробиться, действуя как все.
- Выдающийся талант требует титанических усилий — тренировок, как у олимпийских атлетов.
- Выдающийся успех требует предельной концентрации — отказа от развлечений и досуга.
- Выдающаяся слава требует грандиозных амбиций — готовности быть в центре внимания и выдерживать колоссальное давление.
Нельзя делать то же, что и все остальные. Нельзя смотреть 63 часа всеми любимого сериала. Нельзя заводить двух собак, которые требуют вашего присутствия дома. Это для обычных людей, которые хотят обычной жизни. Это не для вас.
В музыкальном бизнесе нет места нормальности. Чем неистовее, тем лучше. Обычные люди будут считать вас сумасшедшим. Но ваши собратья по достижениям с радостью примут вас в свой эксклюзивный клуб.
Пока вы не тренируетесь, где-то тренируется кто-то другой. И когда вы встретитесь, он победит.
Посвятите себя делу целиком. Find you love and let it kill you.
Недавно перечитывал книгу моего любимого автора Дерека Сиверса Your music and people. Книга про то как стать успешным музыкантом. Но многие идеи из книги супер универсальны и полезны, чем бы вы не занимались.
Дерек любит радикализировать мысли, чтобы пошатнуть мир читателя и сподвигнуть действовать. Так меня зацепила одна короткая глава, которую я решил перевести для вас.
***
Выдающихся результатов не добиться без выдающихся действий
Не получится пробиться, действуя как все.
- Выдающийся талант требует титанических усилий — тренировок, как у олимпийских атлетов.
- Выдающийся успех требует предельной концентрации — отказа от развлечений и досуга.
- Выдающаяся слава требует грандиозных амбиций — готовности быть в центре внимания и выдерживать колоссальное давление.
Нельзя делать то же, что и все остальные. Нельзя смотреть 63 часа всеми любимого сериала. Нельзя заводить двух собак, которые требуют вашего присутствия дома. Это для обычных людей, которые хотят обычной жизни. Это не для вас.
В музыкальном бизнесе нет места нормальности. Чем неистовее, тем лучше. Обычные люди будут считать вас сумасшедшим. Но ваши собратья по достижениям с радостью примут вас в свой эксклюзивный клуб.
Пока вы не тренируетесь, где-то тренируется кто-то другой. И когда вы встретитесь, он победит.
Посвятите себя делу целиком. Find you love and let it kill you.
🔥42❤11👍7🤔5😱4
Вчера у меня случились сразу три классных штуки!
🥳 Получил ключи от квартиры
Что интересного узнал: Иметь хорошего риэлтора на своей стороне - потрясающе полезно. Он и по стоимости сторгуется и контрагента тщательно проверит и крабом с Камчатки угостит. Пишите, поделюсь контактом.
♟️ Достиг рейтинга 2300 на lichess
Последний месяц чувствовал, что играю в эту силу и вчера получилось это подтвердить.
Динамика по времени получилась такая:
* 2000 - февраль 2019
* 2200 - май 2021
* (большая просадка в 2022)
* 2300 - январь 2025
Что помогло: решение в фоне самой простой тактики в 2-3 хода. Рекомендую всем решать самую простейшую тактику, начиная просто с задач со взятия фигуры в один ход.
🎶 Возвращение укулеле
Отправил его на склад со всеми вещами из квартиры в 2022 году. Вчера вернул его!
Что интересного узнал: Удивительно, но через почти 3 года вернулась идеально настроенной.
Такой хороший день 😇️️️️️️
🥳 Получил ключи от квартиры
Что интересного узнал: Иметь хорошего риэлтора на своей стороне - потрясающе полезно. Он и по стоимости сторгуется и контрагента тщательно проверит и крабом с Камчатки угостит. Пишите, поделюсь контактом.
♟️ Достиг рейтинга 2300 на lichess
Последний месяц чувствовал, что играю в эту силу и вчера получилось это подтвердить.
Динамика по времени получилась такая:
* 2000 - февраль 2019
* 2200 - май 2021
* (большая просадка в 2022)
* 2300 - январь 2025
Что помогло: решение в фоне самой простой тактики в 2-3 хода. Рекомендую всем решать самую простейшую тактику, начиная просто с задач со взятия фигуры в один ход.
🎶 Возвращение укулеле
Отправил его на склад со всеми вещами из квартиры в 2022 году. Вчера вернул его!
Что интересного узнал: Удивительно, но через почти 3 года вернулась идеально настроенной.
Такой хороший день 😇️️️️️️
❤47🔥34
This media is not supported in your browser
VIEW IN TELEGRAM
Записал видео про нейросеть которую я обучил предсказывать ходы людей в шахматах.
Зацените какая классная итерактивная визуализация получилась.
Зацените какая классная итерактивная визуализация получилась.
🔥55❤20👏9👍3😱3🤔1