Этихлид – Telegram
Этихлид
4.77K subscribers
152 photos
23 videos
129 links
Канал техлида с мыслями об AI, IT и спорте.

https://news.1rj.ru/str/etechlead/6 - содержание

https://news.1rj.ru/str/etechlead/8 - о канале

https://news.1rj.ru/str/+NgQZbosvypEyYWQ6 - чат канала, там отвечаю(т) быстрее :)

(без рекламы)
Download Telegram
"Пишем" игрушку при помощи AI 🎮

По мотивам поста Саши Басова решил попробовать сделать прототип такой игрушки с использованием современных AI-инструментов.

Получилось вот что: https://clever.pro/driver/ (работает только на десктопе).
⚠️ Конечно, это далеко не готовая игрушка, код там так себе, да и тестировалась только в Chrome.

❗️Но! На этот прототип ушло примерно 2 часа, за которые я своими руками написал хорошо если несколько строк кода и пофиксил пару багов. Все остальное - результат общения с нейронкой Claude Sonnet 3.5 в IDE Cursor.

Игровой код не писал уж лет 7 (был как-то опыт с libGDX и Unity), так что на текущий момент я как собака: всё понимаю, сказать написать не могу :)

Как это было

1️⃣ Сформулировал начальную идею как "I have an idea of the browser game: car is riding on a highway against the traffic and need to avoid other cars. Scoring is based on how many cars you avoided"
Получил код с прямоугольниками на HTML Canvas, управление какое-то кривоватое, код страшный 😱 Но в целом работает, даже с первого раза :)

2️⃣ Всплыл в памяти Phaser для браузерных игрушек, попросил переписать на нем. Код стал чище и понятнее, и в довесок нейронка сгенерила SVGшки для игровых объектов, которые были прям в виде XML в строках в коде самой игры.

3️⃣ Но такие вот динамически создаваемые SVG почему-то не рендерились. Очевидное решение - вынести их в отдельные файлы, но это было бы слишком просто :)
Тут включился яжпрограммист и следующие 40 минут я пытался скормить Phaser'у динамически генерируемые SVG то data-URLами в base64/urlencode, то просто строками, то через предзагрузку, то на ходу.
Пока не нашел issue на GitHub, где создатели фреймворка явно говорили, что сценарий генерируемых динамически SVG - это фу и вообще не тру.
Ладно, я с вами не согласен, но уговорили, вынес в отдельные файлы.

4️⃣ Попросил нейронку добавить эффект "пьяного водителя" (с обязательным ворчанием насчет того, что это небезопасно и вообще не повторяйте дома): заторможенная реакция на события управления и периодический увод машины в сторону. Был еще эксперимент с добавлением инерции, но управление оказалось крайне неудобным.

5️⃣ Дальше пошли мелкие итерации с разными новыми фичами:
* добавить функционал рестарта (сначала - html-кнопкой, потом - по нажатию на пробел)
* добавить уровни с постепенным ускорением игры
* сделать машины разных размеров (с перегенерацией SVGшек, это тоже сама нейронка сделала)
* добавить поведение к едущим навстречу машинам, чтобы они тоже рулили
* сделать разное количество очков в зависимости от размеров машин на встречке
* добавить степень опьянения в виде прогресс-бара
* добавить сбор бутылок и кофе на трассе, которые влияют на степень опьянения
* убрать бутылки, т.к. не придумал, зачем бы их кто-то стал собирать, усложняя себе игру :)
* сделать так, чтобы степень опьянения сама постоянно росла

6️⃣ Попросил в конце причесать код.

7️⃣ Возникла проблема с кешированием файлов игры на хостинге, решили добавлением версии к путям css- и js-файлов.



Процесс был итеративным - т.е. добавил фичу, запустил, поиграл, попросил что-то поменять.
Иногда вылазили какие-то баги и почти все я "исправлял", копируя стек ошибки из консоли браузера в чат Cursor'а и он уже сам их фиксил или добавлял логгинг для расширенной диагностики в код.

Да, можно было бы это всё руками написать, но пришлось бы изучать Phaser, копаться в его доках и на StackOverflow, и цена как первого решения, так и последующих итераций возросла бы в разы.

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

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

В общем, рекомендую :)

#ai #games #technical
5🔥4👏1
Пятница! Музыка для мурашек 🥁

Ну не писать же что-то серьёзное в пятницу, в самом деле.

У каждого ведь есть такая музыка, от которой начинают бегать мурашки и шерсть встаёт дыбом?

Мой вариант, знакомьтесь, Heilung - Alfadhirhaiti:
* https://www.youtube.com/watch?v=2wy-W-pYlds
* https://vk.com/video-69616364_456241923

Это, конечно, нужно не только слушать, но и смотреть, и завязка там довольно долгая.
Каждый раз что-то древнее, дикое и косматое просыпается внутри от этого действа.

Для справки
Творчество Heilung в целом основано на реконструкции духовных и культурных аспектов древних североевропейских племен, таких как германцы и скандинавы.
Название Alfadhirhaiti можно перевести как "Тот, кого зовут Всеотцом", что относится к Одину, а текст песни - это перечисление его имён, связанных с разными его качествами, на древнескандинавском языке.

А у вас есть музыка для мурашек? Поделитесь :)

#friday #offtop #music
🔥42
Спорт - это не инвестиция

Часто приходится слышать, что спорт - это инвестиция в собственное здоровье.
Однако в этом чувствуется какая-то необязательность: дескать, ну вот могу инвестировать, а могу и нет, как в случае с финансами.

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


Чтобы было легче это принять, важно понимать, что этот налог мы не куда-то вовне отдаём - мы его платим сами себе, и эти "средства" идут на:

❤️ улучшение инфраструктуры (сердечно-сосудистая система, опорно-двигательный аппарат)

🛡 обеспечение безопасности (укрепление иммунитета)

🧠 поддержку научных исследований (улучшение когнитивных функций и пластичности мозга)

⚡️ энергетику (улучшение обмена веществ, оптимизация массы тела)

👥 социальные программы (снижение уровня стресса и улучшение настроения)

🏦 резервный фонд (повышение выносливости, снижение риска хронических заболеваний)

🏋️‍♀️ модернизацию производственных мощностей (повышение мышечной силы и улучшение координации)


И как и многие другие налоги, этот имеет свойство расти со временем, это жиза, да :)
Скажем, 5% времени, отданного на спорт в 20 лет, будут эквивалентом 10% в 40 и т.д.

Способ его выплаты и распределение "средств" тоже будут меняться, но это уже отдельные темы, а мне пора в "налоговую" и за дозами эндорфина и дофамина 🚴‍♂️

#sport
🔥1861👍1
Сам себе AI-режиссёр

Прогресс в области AI-генерации видеоконтента идёт семимильными шагами. Качество растёт очень быстро, а стоимость падает ещё быстрее.
Сейчас это короткие ролики, как те, что приложены к посту, но прогресс даже с начала 2024го впечатляет.
Возможно, что через год-другой мы получим возможность создавать целые фильмы, описывая текстом то, что хотим увидеть.

Представляете, можно будет "снять" что-то по своему собственному сценарию; экранизировать любимые книги с учётом своего собственного видения; переснять то, что не понравилось в существующих экранизациях.

О да! Дайте мне посмотреть "Гиперион" Дэна Симмонса, "Посёлок" Кира Булычёва и второй сезон "Светлячка"!
И помогите развидеть кучу экранизаций фантастики и фэнтези последних нескольких лет :)

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

#ai #futurism
🔥54
Strava и KOM-хантинг

Люблю такие штуки, когда поверх реальности существует ещё какая-то виртуальная среда, которую мы не наблюдаем непосредственно.

Вот взять, к примеру, QR/AR-метки в городе, за которыми кроется рассказ о конкретном месте, фотки его 50 лет назад или его художественное представление в виртуальной реальности.
Или геокэшинг, когда реальный мир дополняется "кладами", которые можно искать по GPS, но они невидны для тех, кто о них не знает.

А ещё почти все дороги в мире, по которым мы ходим или ездим, покрыты сетью сегментов Strava.

Strava - это такая соц. сеть для спортсменов, куда народ выкладывает свои тренировки с треками, которые потом отображаются на карте.

А сегменты - это участки дорог, которые пользователи могут проезжать или пробегать и устанавливать на них рекорды.
Эти сегменты создаются самими пользователями и отображаются на общей карте.
Когда ты проходишь сегмент, Strava фиксирует твое время и сравнивает с другими, создавая таблицу лидеров и всех, кто когда-то был на этом сегменте. Так возникает "виртуальный слой" соревнований поверх реальных дорог, где каждый может попытаться стать самым быстрым на данном участке, ну или показать свой лучший результат.

В отличие от массовых соревнований, "брать" сегменты можно в любое время, и они рассчитаны на индивидуальное прохождение.
Можно считать это формой оффлайн-соревнований, когда рядом обычные не проводятся или до них сложно добраться, а сегменты - вот они, создавай и проходи в любом удобном месте :)

Сегменты для многих - это неслабый буст к тому, чтобы готовиться, улучшать персональные результаты и/или пытаться попасть в топ-10 лидеров на сегменте.
Есть даже такие специальные люди - КОМ-хантеры (KOM - king of the mountain), для которых сбор сегментов - отдельное спортивное хобби.

Так что если видите бегуна с языком на плече, хотя по виду он вроде ни с кем не соревнуется, или велосипедиста, который стоя на педалях несётся в гору - это может быть как раз такой человек :)

А к чему я это всё? Да вот взял сегодня очередной KOM, отобрал у себя же трехлетней давности, правда, но всё равно рад :)
Вообще хороший в этом году сезон получился - улучшил почти все свои показатели за все лет 5 занятий велом.
На этой ноте у нас окончательно наступает осень с холодом и дождями, и пора перебираться домой, в Zwift, тренить дальше :)



На картинках:
1. карта сегментов в Лондоне (если увеличивать зум, их там раз в десятки раз больше, и так по всему миру)
2. таблица лидеров на одном из сегментов Tour de France этого года
3. информация о сегменте оттуда же
4. рабочая трасса моих летних тренировок
5. :)

#sport
🔥5😱54🤩1
Про хороших технических менеджеров

Возникло тут обсуждение с вопросом насчет того, а что же это за зверь такой - хороший технический менеджер?
Чаще всего ответ технарей сводится к тому, чтобы "просто не мешал работать", на что всегда хочется ответить - "да у вас просто нормального менеджера не было", но мы тут не за этим :)
Такая точка зрения обычно основывается на том, что, дескать, менеджер, не прошедший через код, гит и литкод, не способен адекватно управлять разработчиками.

Попробую рассказать, какими, с т.з. разработчика, качествами должен обладать технический менеджер (который при этом не обязан быть технарём):

* отлично знать предметную область, обладать как знанием продукта, так и насмотренностью по рынку;

* осознавать границы применимости технологий;

* не принимать импульсивных решений и не быть их проводником - как тут не вспомнить "медленное мышление" по Канеману и нестареющую классику из "Фитиля";

* защищать команду от внешних потрясений и не быть самому белкой-истеричкой, попугаем-микроменеджером, чайка-менеджером и прочими нервными животными :)

* максимизировать полезное общение на единицу времени - ёмкие нечастые звонки, понятный и структурированный текст, полнота передаваемого контекста, внимательность к деталям;

* не навязывать технических решений - этим часто грешат бывшие технари, у каждого из которых свой уникальный набор бабаек-динозавров из его технической молодости. Куда лучше итеративно промптить людей на поиск подходящего решения;

* иметь цельное видение и уметь его передавать - куда приятнее работать над функционалом, когда понимаешь, какое место он занимает в системе, насколько важен и как связан с бизнесом и пользователями, и гораздо проще воспринимаются какие-то изменения в проекте;

* уметь принимать информированные решения с учетом того, что какие-то вещи могут выпасть из головы, не попасть в документацию, пропасть вместе с носителем знаний из проекта - и нужно собирать информацию из сильно разных источников;

* уметь принимать взвешенные решения - учитывая как внешние хотелки, так и мнения и возможности команды;

* осознавать свои ограничения и слушать и слышать людей - команда запросто может быть как опытнее, так и умнее, так и богаче;

* уметь действовать на нескольких уровнях абстракции - от обсуждения стратегических планов развития продукта до участия в отлове бага на проде;

* выстраивать процессы, создавать структуры, уметь их поддерживать и ломать адаптировать под ситуацию;

* иметь высокий эмоциональный интеллект и софт-скиллы;

* быть умным. В принципе, всё остальное можно было бы и не писать :)

* в любой непонятной ситуации - думать!

Фуф, эти, пожалуй, самые важные :)

Сразу всеми перечисленными качествами ни один из менеджеров, с кем довелось работать, увы, не обладал, но некоторые были весьма близки (и при этом лучший из них всё ещё не был технарём).

Но даже обладающий хотя бы 2/3 из этого списка уже будет настолько хорош, чтобы стать технарям другом, товарищем и sibling'ом :)
И уж точно никто не скажет, что менеджер мешает или вообще не нужен. Наоборот, без него будет сложно обойтись.
👍5🙈31👏1
Не-не, не то, чтобы я прям хотел, или это принятая практика, просто в бизнесе случается всякое, ну и уж очень попросили, в силу исключительности ситуации.

НЕ ПОВТОРЯТЬ! НЕЛЬЗЯ! ФУ!

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

Ооо, это была глубокая кроличья нора, но было весело :)
* перетрогал кучу всего: TypeScript/Angular/SASS, PHP/Laravel, Jenkins, Helm Charts, k8s/EKS, Cursor / Claude Sonnet;
* пришлось нарушить все установленные процессы и протоколы в силу лимитов по времени;
* поработал разработчиком, devops, тестировщиком, техписом;
* обошёл разломанный k8s-кластер для pre-prod окружений, который сам же и разрешил перестроить, т.к. проект давно уж не в активной фазе разработки;
* развернул систему на домашнем k3s, чтоб перестраховаться при тестировании.

По ходу радовался тому, что:
* код ребята пишут хороший :)
* всё по проекту можно найти в Slack/Git/Jira/Confluence - нет какого-то тайного знания, которое существует лишь в головах;
* все пайплайны для деплоя стабильны, нет ручных шагов;
* инфраструктура тоже вся в виде кода, и можно быстро её поднять при необходимости;
* как же хорош k8s, это прям инженерная вкуснота.

Потрачено:
* литр Pepsi;
* 3 мороженки;
* часов 5 времени.

А где мораль?
Придумаю, но пока что - просто так вот прошла пятница :)

#technical #work
👍4🔥2👏1👨‍💻1
Media is too big
VIEW IN TELEGRAM
Житие тогда у нас тяжкое было

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

Однако полная обратимость таких эффектов выглядит менее оптимистично. Ключевой компонент здесь — глубокая индивидуальная генная терапия, которая даже в теории кажется более отдалённой из-за:
* пробелов в наших знаниях: многие механизмы старения до сих пор не полностью изучены;
* вычислительной сложности: персонализированная терапия требует обработки огромных объёмов данных и сложных биоинформатических моделей.

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

❗️Т.е. может так получиться, что через несколько десятилетий мы сможем себя "зафиксировать" в том состоянии, в котором будем находиться на тот момент, и, если повезёт, немного "улучшить".

В этом свете цели, собственно, две:
* в принципе дожить :)
* сохранить себя в адекватном физическом, умственном и психическом состоянии.

Простая база в виде "сон, еда, тренировки" актуальна как никогда :)

#futurism #sport #ai
👍8🙏2😁1
High tech, simple life.

Пара дней прошли в раздумьях над предсказаниями Дарио Амодея, CEO Anthropic (компания, выпустившая Claude, конкурента ChatGPT).
Выжимки можно почитать на каналах, которые на этом специализируются, но вкратце - мы находимся на пороге невообразимого будущего, которое, по предсказаниям Дарио, настанет в течение следующих 5-10 лет и будет представлять собой результат ускоренного прогресса практически во всём. Как он говорит, это будет как "сжатый [в 10 раз] 21й век".

Я сам не настолько оптимистичен в прогнозах, но все равно успел отметиться в срачах дискуссиях со скептиками и критиками мнения Дарио. Подобная полемика обогащает всех причастных временами :)

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

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

Сидишь, смакуя усталость, на ступеньках крыльца с горячим чаем и особенно явно ощущаешь вот это вот "будущее уже наступило, просто оно ещё неравномерно распределено".

Да и повсеместно ли нужно его распределять?
Тут такое небо на закате.

P.S.
А ещё в деревне новая кошка. Тоже событие, как ни крути :)

#futurism #ai #life
6🔥6🆒1