Arslan's Insights – Telegram
Arslan's Insights
1.82K subscribers
66 photos
16 videos
53 links
Я Арслан. В этом канале делюсь своими интересными наблюдениями в мире технологий и не только.

Наблюдения не только технические, но и социальные. Стараюсь писать коротко.

Мой контакт: @arslanurt
Download Telegram
Ползучая [р]эволюция в мобильной разработке.

Мне сегодня показали чудесный пост: https://www.reddit.com/r/Kotlin/comments/11pph1p/kotlin_multiplatform_app_with_shared_ui_for/

Почему я считаю его чудесным?

Короткий исторический экскурс в то как весь мир пишет код мобильных приложений. Есть несколько путей:

1. webview и поехал. Это js, браузер и тд и тп. Сильно не нативно (жесты работают как правило плохо, выглядит чужеродно для платформы), тормоза из-за архитектуры браузера (когда-нибудь напишу отдельно в чем проблема). Единственное (из известных мне) хорошо работающее приложение - это youtube для телевизоров на кастомном и облегченном webview, которое называется cobalt, но в телевизоре управление пультом, тач там не работает.

2. Берешь и нанимаешь две команды мобильных разработчиков под android и ios, дважды имплементируешь все фичи. Потенциально пробуешь еще использовать фреймворки kotlin multiplatform или реализуешь ядро на C++ и делаешь биндинги, чтобы хоть что-то пошарить. В этом пункте наиболее хорошие приложения получаются, так как используют всю мощь платформ и нативный UI. Но дорого, платишь x1.5-x2.5 сил.

3. Flutter. Может быть есть еще что-то похожее на flutter, но сильно более маргинальное, даже нет смысла про это думать. Идея заключается в том, что нативные возможности платформы в основном не используются, приложение от платформы получает canvas и на нем рисует элементы интерфейса самостоятельно через игровой 2d движок Skia под капотом. Звучит не плохо, но чтобы так делать, нужно выучить отдельный язык и его экосистему - dart, а это дополнительный барьер.

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

И вот о чем пост с reddit и почему это круто.

Появилась экспериментальная поддержка схемы для kotlin, аналогичной flutter, для ios в https://github.com/JetBrains/compose-multiplatform, JetBrains красавцы. То есть мобильный разработчик под android постепенно сможет (скрестим пальцы) писать сразу под две платформы на одном языке.

Нативное приложение под ios так не получится, конечно, из-за того что там по прежнему под капотом canvas + Skia. Но работать будет весьма прилично.

Пожелаю удачи JetBrains, в этом месте много денег для компании, но путь тернистый.
👍9
ChatGPT может заменить программиста?

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

Вот я сам пробовал (лучшая из генераций): https://codeforces.com/contest/1771/submission/184887492

А вот еще примеры с просторов: https://www.youtube.com/watch?v=tqimFIpYlMA

Но есть и огненный пример решения довольно сложной задачи: https://codeforces.com/blog/entry/109815, но нюанс в том, что человек знал как решить задачу и сильно помогал.

Почему на это интересно обратить внимание?

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

Качественные датасеты - редкость, но в этом случае такой есть, а настоящего прорыва в генерации решений нет. Поэтому в ближайшие годы я не ожидаю, что нейросети помогут избавиться от программистов, хаха! Да и потом тоже не ожидаю, но я уверен, что появится (уже появляется!) большое количество инструментов, помогающих программисту.
👍8🔥2
Пропустите без очереди, мне нужно!

Еще мысли, которые обрели четкость по итогам чтения книжки Чалдини.

Почему нужно объяснять другим свои просьбы?

До прочтения книжки я не сильно задумывался об этом. Нужно объяснять, чтобы люди понимали почему я прошу, да и все. Так я думал. Я просто всегда так делал (ну почти).

Я как-то общался с человеком, на которого жаловались, что он очень медленно делает одну из задач, которую у него попросили. Он сказал, что не понимает какой смысл в этом, что это какое-то перекладывание из пустого в порожнее. Я объяснил, после чего он сказал, что жаль, что ему не объяснили раньше, потому что действительно это важно. Потом он пошел и быстро задачу доделал.

Хоба, а есть исследование!

Langer, Blank, & Charnowitz, 1978

Девушка пыталась пролезть к копировальному аппарату без очереди, по разному прося, чтобы ее пропустили.
1. «Простите, у меня 5 страниц. Могу я воспользоваться ксероксом, потому что я спешу?» - 94% согласились.
2. «Простите, у меня 5 страниц. Могу я воспользоваться ксероксом без очереди?» - 60% согласились.
3. «Простите, у меня 5 страниц. Могу я воспользоваться ксероксом, потому что мне нужно сделать несколько копий?» - Поразительно, что 93% согласились, хотя ведь тут нет настоящего объяснения.

Оказалось, что люди очень любят объяснения и очень не любят делать что-то просто так.

Конечно же это не работает автоматически во многих более сложных ситуациях. Я твердо уверен, что нужно давать настоящие объяснения, а не просто пытаться манипулировать. Как минимум для того, чтобы взаимодействие было комфортнее для всех участников, а как максимум, чтобы еще и проще.
🔥9👍3🤔3
Alpaca уничтожит OpenAI?

(кликбейт)

Ребята из Стенфорда взяли готовую модельку LLaMA 7B (маленькая моделька от социальной сети в метавселенной), попросили у text-davinci-003 (GPT-3.5 большая моделька под капотом у ChatGPT, доступная по api) сгенерировать датасет для обучения ChatGPT-like модели (несколько сложнее, но не важно), дообучились на нем и получили лишь не сильно отстающее качество.

Стоило это < 600$

А ведь взяли самую маленькую LLaMA, даже не 13B или 33B. А что будет если взять 65B? И дообучились-то не с помощью GPT-4.

Бизнес-модель, которую пытается сделать OpenAI, под угрозой. Оказывается кто угодно, кто может найти в интернете запретрейненую модель и еще запустить чужую крутую ChatGPT-like модель, может делать почти такую же крутую модель, но на много порядков дешевле.

В любом случае видимо ждем в скором времени обновление пользовательского соглашения на использование OpenAI api с дополнительными запретами.

https://crfm.stanford.edu/2023/03/13/alpaca.html
🔥6🤔3😱2
Удалось оплатить GPT-4!

Казахскую карту принимает, но не из РФ, оплачивать нужно тоже через VPN или за границей.

На скриншоте видно, что необходимо помнить, что GPT-4 является лишь хорошо обученным продолжателем текста и может очень убедительно нести бред (от противного доказывает, вот это да!). Поэтому нужно внимательно перепроверять то, что она выдает, в том числе следя за «рассуждениями».

При этом по всей видимости GPT-4 умеет хорошо суммаризовать информационную составляющую. Я давно хотел разобраться с тем как работает Nanite (это система, которая позволяет рендерить очень большое количество очень детализированных 3d моделей на консьюмерском железе, что ранее было невозможно в realtime) в Unreal Engine 5 под капотом (какие там алгоритмы и структуры данных). Начал разбираться в ChatGPT over GPT-4, очень здорово работают доуточнения.

Буду проводить эксперимент: разобраться с Nanite только спрашивая GPT-4, а в поиск пойду только в конце для перепроверки. Что получается буду писать в канал. Узнавать про Nanite вам не обязательно, я про это тоже сюда напишу.
👍6👌32
ChatGPT прилег.

Что круто - публично репортят статус происходящего. Мне это очень понравилось, редко такое увидишь. Надо нам тоже начать это делать.

Что не круто - ребята более 2 часов искали причину. В 99 случаях из 100 такое происходит из-за недостатка графиков, алертов и логов. Непонятно почему нельзя просто сразу все это сделать, зачем лежать по долгу несколько раз =) Подожду публичный постмортем.
💅7
Искал медь, а нашел золото.

Оказывается openai публично рассказывает про все свои инциденты, не только про большие. Например, в марте до сегодняшней даты (23.03) у них было 17 инцидентов. В феврале 18.

Интересно, что root cause они часто ищут долго (часами).

На часть инцидентов они пишут публичный постмортем.

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

Например, 15 марта они переезжали на новый redis кластер. В процессе переезда у них была и выкатка на тестовый кластер, и канареечное (частичное) переключение, и они даже какое-то время писали в два кластера одновременно.

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

Из другого инцидента, который случился 16 марта, мы видим, что они используют выкатку новых фичей флагами (новый функционал выкатывается в отключенном состоянии, а затем отдельно включается флагом). Флаги катят плавно 1% -> 50% -> 100%. Это очень хорошая практика. Однако все равно случилась поломка и, к сожалению, не описывают от чего.

Если хочется еще почитать, то вот ссылка: https://status.openai.com/history
👍19🔥7
Мем про то, чем теперь занято очень много моих знакомых в абсолютно разных компаниях.
😁15
Arslan's Insights
Мем про то, чем теперь занято очень много моих знакомых в абсолютно разных компаниях.
Собственно поэтому мои последние несколько постов про это, но следующие несколько напишу про другое.
🤔2
Nanite (p.1)

Обещал разобраться в алгоритмах под капотом. Сначала введение и пару слов о том что это такое и почему мне вообще это интересно.

Unreal Engine - игровой движок, чтобы делать игры. А еще на нем начинают делать графику для сериалов и фильмов. Код на C++, прикольная бизнес-модель (не платишь им вообще ничего, если не зарабатываешь больше миллиона долларов), алгоритмы и структуры данных. Поэтому я за новостями про этот движок поглядываю, хотя это и далекая от меня сфера.

Nanite - новая система в этом движке, презентованная в версии 5 и получившая еще улучшения в 5.1 и 5.2. Чуваки накодили код, который позволяет в реальном времени рендерить много миллионов полигонов на современном консьюмерском оборудовании.

Во-первых это просто круто, cmn.

А во-вторых это потенциально game changer game идустрии. Раньше художнику требовалось тратить много времени на уменьшение полигональности моделей. Кхм, пока еще все равно требуется это делать, так как нужна поддержка старого железа, но в будущем постепенно можно будет обойтись без этого.

На прикрепленных видео видно как Nanite не просто удешевляет разработку, но и меняет UX.

LOD - Level of detail. На первом видео демонстрация того, что для многих объектов делается несколько 3d моделей с разной степенью детализации. Это нужно для оптимизации перфа. Чем дальше игрок от объекта, тем менее детализированная моделька используется.

На втором и третьем видео видно как работает "переключение между LOD" и Nanite. Что и где - угадать не сложно.

To be continued…
🔥11👍1
— Гибридный режим? Как часто нужно ходить в офис?
— Каждый день не обязательно ходить. 2 дня в неделю можно из дома поработать, а 5 из офиса.
😁30🫡17🤡10🗿21🍾1🎃1
This media is not supported in your browser
VIEW IN TELEGRAM
Забавный факт, что лабиринт без циклов - это конструкция, состоящая из двух полностью независимых запчастей. Если задуматься, то это очевидно, конечно, но я почему-то никогда не задумывался.
👍13🤔11
Потыкал в Kandinsky 2.1 от Сбера.

Не могу не поделиться этой генерацией!
😁16
Jesse, we need to produce more balenciaga.

Нейроблогинг набирает обороты. “Harry Potter by Balenciaga” поймал ультрахайп и теперь похожие видосы клепают все подряд.

Моя микроподборка:
1. Breaking bad by Balenciaga - https://youtu.be/ZUVMKuY6QvU
2. Мстители готовят еду - https://youtu.be/fVxNhBk8P8U
3. Герои DC в виде кукол барби - https://youtu.be/YQvWYPNaUL0

Если хочется такого поштырить еще побольше, то можно воспользоваться поиском в YouTube.

Я и сам своего рода нейроблоггер, хехе, моя генерация в Шедевруме (приложение с лентой генераций от моих дорогих коллег) с хлебным апокалипсисом набрала уже более 200 лайков - https://shedevrum.ai/post/5f8bbcf9b1f70af
👀5🔥1
Feedback sandwich

Недавно услышал про такую технику донесения негативного фидбека. В чем она заключается?
1. Позитив.
2. Негатив.
3. Снова позитив.

Например:
1. Очень хорошо, что ты проявляешь инициативу.
2. Но ты плохо структурируешь код, а на замечания об этом реагируешь токсично.
3. При этом твой код работает корректно и покрыт достаточным количеством тестов.

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

Я, конечно, считаю, что негативный фидбек доносить очень важно. При этом важно доносить его конструктивно. Не просто говорить как делать не надо, но и говорить как делать надо.

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

Моя суммаризация пейперов выглядит так, что пользоваться таким фреймворков вполне ок, но нужно:
1. Уделять больше внимания негативной части, потому что именно она нужна в этот раз. Легко скатиться к тому, чтобы позитива было много, а негатива совсем мало, но это смысла не имеет.
2. Не забывать доносить позитивный фидбек отдельно от негативного, когда он есть! Без этого фреймворк не работает, потому что слушающий быстро запоминает, что позитив - это лишь булки вокруг негатива.
3. Быть конструктивным, внимательно выслушать ответ и обдумать его.

И, главное, не забывать, что и говорящий и слушающий - взрослые люди. Так просто получилось, что говорящий оценивает работу слушающего, а не наоборот. Вероятнее всего так получилось из-за того, что у говорящего больше опыта в профессии, но и даже это не факт. Поэтому оценивать нужно действия, а не человека, при этом оценку необходимо подкреплять доказательствами, чтобы она была объективной.
👍16👌6
buck2 VS bazel

C++ в диком мире opensource - несчастен. Зоопарк систем сборки, у всех систем какой-то косяк (а то и несколько) есть.

По моему мнению наиболее продвинутая opensource система сборки - bazel. В ней даже можно делать некоторое подобие менеджмента зависимостей. Огромный плюс в виде возможности сделать замкнутую сборку. Но bazel не шибко быстро работает. Много кода на java. Старт программ на java - не самая сильная сторона этого языка, а систему сборки нужно стартовать в процессе работы постоянно.

Я когда-то давно тыкал в buck - систему сборки от фейсбука. Система тоже написана на java, работала по перфу примерно так же как bazel, но из коробки нельзя было разумным способом использовать protobuf.

protobuf - невероятно популярный формат. Неудобно использовать == система проигрывает. А в bazel использовать протобуф можно достаточно удобно.

И вот вышел buck2 - переписанный buck на rust

И снова неудобно замкнуто использовать protobuf. Снова проигрыш, несмотря на то, что buck2 стартует быстрее, чем bazel. Очень жаль.

Под замкнутостью я имею в виду возможность положить protobuf в свой репозиторий исходниками и вставить его в процесс сборки своего кода.

Причем достоверно известно, что такая интеграция внутри фейсбука есть.

Вот, например, они ее используют: https://github.com/facebook/buck2/blob/main/proto_defs.bzl#L36

Но нам не дают, ибо fbsource - это alias на две директории вверх во вне указанного репозитория.
👍5
Доступность публикаций

Интересное наблюдение. Публикации по Computer Science существенно более открытые, чем по многим другим научным областям. Это замечаешь очень быстро, когда начинаешь чаще заходить в google scholar. Если ищешь что-то нетехническое, то практически сразу натыкаешься на paywall.

Научные статьи должны быть открытыми, а все, кто это отрицает, вредят человечеству!
👍231