Маверик печатает …
79 subscribers
27 photos
1 video
1 file
53 links
Download Telegram
Продуктивизация ML решений часть 4️⃣

Когда садился писать серию этих заметок, думал что уложусь в 4 части. Но вчера дописывал блок про наблюдаемость сервиса и понял что нужна ещё одна часть. Она будет про деплой сервиса: немного про docker, чуть чуть про docker-compose и про health checks внутри Kubernetes.

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

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

Логическим развитием было бы накатить Grafana для построения дэшбордов с метриками. Логи собирать отдельно в БД и потом анализировать. Ну и можно что нибудь с трейсами придумать для полноты картины.

Кароче говоря, заметка здоровая, наверное не самая простая, но точно одна из самых полезных !

Энжой ✌️💫

Ссылка на заметку: https://mvrck.space/posts/ml-best-practices-p4-observability/

P.S.: Make ML services observable again 🎉

#blogpost
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2🔥1🍾1
Channel name was changed to «Маверик Канал»
Продуктивизация ML решений часть последняя 🎉

Последняя заметка про хорошие практики при разработке продуктовых ML сервисов. В ней про то, как использовать docker контейнеры, для чего нужен docker-compose и немного про kubernetes health-checks.

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

Ссылка на заметку: https://mvrck.space/posts/ml-best-practices-p5-containers/

P.S.: Осталось привести весь код в порядок и выложить в гит. Но про это напишу отдельный пост в канал ✌️🌎

#blogpost
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥3
Серия про продуктивизацию ML решений закончена !

Ура, только что дописал код и положил в гит🎉 Это моя первая серия технических заметоки и она наконец то готова !! В нее получилось вложить целую кучу рабочего опыта. Хотя я и не подозревал что она получится такой здоровой, когда начина писать🤔

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

Если у тебя есть какой-то фидбек по заметкам, я написал какую-то чушь или ты хочешь поделить своим гигантским опытом МЛщика —> пиши комент или hit me up in DMs 🙈✌️

Что же есть в серии:
1. Мотивация для применения практик
2. Контроль качества кода
3. Разработка сервисной части
4. Наблюдаемость сервиса
5. Контенеризация сервсиа

Весь код находится здесь: https://github.com/mvrck96/ml-service-in-production

P.S.: Мне понравилось в такой форме делиться своими знаниями. Хотя я понимаю, что мне ещё много чего не хватает. Но как писал Ваня Замесин у себя в блоге: В мире 99% знания создаётся такими же людьми, как ты и я. И в целом я с ним согласен !

P.P.S.: Ну а теперь можно пописать и не технические текстики ☺️

#blogpost
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🐳2
Маверик печатает … pinned «Серия про продуктивизацию ML решений закончена ! Ура, только что дописал код и положил в гит🎉 Это моя первая серия технических заметоки и она наконец то готова !! В нее получилось вложить целую кучу рабочего опыта. Хотя я и не подозревал что она получится…»
Плейлист v3

Давно не обновлял свой плейлист с электроникой. Собрал все самые клевые треки за 4 месяца. Если честно, эта подборка мне нравится больше всех !

Отдельно выделю 3 трека (не хотите слушать весь плейлист, послушайте эти три - они точно понравятся):
💥 Friends - Solomun —> какая-то чистая энергия от дядюшки Solomun'a
🌚 A Sad & A Long Lonely Day - Vian Pelez —> давно я не слышал такого меланхолично-грустного трека
👨‍💻 The Feeling - Massano —> кажется что ты главный герой фильма про хакеров

В этот раз получилось довольно много музыки от Teho. Я думаю про его страну можно не говорить, и так понятно что это 🇫🇷🤭

У этого плейлиста есть две интересные детали, первая - он самый длинный из всех что были. А вторая - мне его помогали собирать ! Помогала собирать Полина, у которой есть несколько крутых плейлистов на ЯМ, чек зем аут, как грится ✌️👻

Неизменная ссылка:
https://music.yandex.ru/users/o.maverick/playlists/1003

#sounds
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2🐳1
Фронтенд для data сервиса

Иногда надо намутить UI для своего ML сервиса. Чтобы закончить демку, показать заказчику решение или просто для внутреннего командного исполльзования. Если ты умеешь в фронтенд, то все довольно просто. Но что делать, если HTML, CSS, JS для тебя просто девять букв ⁉️😕

Выход есть, можно использовать готовые пайтон фреймворки. В заметке рассказал про Streamlit. Про его альтернативы, базовые элементы, продвинутые фичи, как соединить с ML бекендом и как все вместе поднять в контейнерах, чтобы оно работало.

Фреймворк понравился, код пишется быстро, внутренняя логика довольно простая, документация отличная 💯 Хотя есть свои ограничения, про которые надо помнить.

Прочитать заметку можно в блоге 📝
https://mvrck.space/posts/ui-for-ml-service/

А код найти в гите 👩‍💻
https://github.com/mvrck96/ml-service-frontend

P.S.: Шаг за шагом движемся к созданию готового продукта из ML алгоритмов 🐎🆒

#blogpost
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍2🐳1
Плохой день

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

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

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

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

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

P.S.: А после того, как понял почему день был плохим, сделать все, чтобы такие дни повторялись как можно реже ✌️☀️

#insight
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🐳1
Триатлон S03E01

На прошлых выходных открыл сезон. Гонка была формата спринт (400+20+5), проходила в Лужниках. Погода не подвела, а организация была, как всегда, на высоте. Мне вообще нравится формат сити триатлона. Когда никуда не надо ехать, а можно проснуться и через час проверять велик в транзитке.

Плавание проходило в закрытом бассейне. Не могу сказать что понравилось плыть 8 бассейнов, какими то зигзагами. Велоэтап проходил по набережной в 5 кругов. Бег тоже по набережной, но в 2 круга. Вообще, условия почти идеальные чтобы бахнуть личник на спринте.

Фан фэкт, за последние пол года, я нормально тренировался один месяц в Бишкеке. Не плавал я 3 месяца и это сразу стало видно. Темп на плавании увеличился на 30 сек на 100 метров. Велик я тоже не крутил 3 месяца. Но перфоманс на велоэтапе упал не сильно, можно списать на другие факторы (было достаточно холодно и ветрено).

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

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

P.S.: Если хочешь попробовать триатлон, но вся эта затея кажется сложной, попробуй короткий сити-триатлон. Например серия гонок Гром или старт в Крыласком отличные варианты для начала !

#sport #health
🔥4
Безопасность docker образов 👩‍💻

Недавно на работе появилось новое развлечение (таск с приоритетом asap) - сканирование докер образов для поиска уязвимостей. Уязвимости ищутся в списке CVE, это по сути база данных со всеми известными уязвимостями информационной безопасности. И конечно же в каждом нашем пайтон образе было 190+ проблем с уровнями от critical до low. Надо было что-то сделать, чтобы пропали уязвимости уровня high и critical.

Смотрю как собирается базовый образ самого свежего пайтона в докере. Собирается он на основе debian 11. В этом релизе сохраняется большая часть критичных уязвимостей. Выходит что пайтон образами пользоваться не выйдет. Пум-пум, какие вариантики есть ещё 😵‍💫

Есть образы с тэгом alpine. Это легкие, очень минималистичные сборки, в которых больше внимания уделяется безопасности. Пытаюсь собрать свое код, построенный на вычислениях, на таком образе. Иии, ничего не выходит 🧐 Потому что альпайн хорош для простого пайтон скриптинга, но как только тебе понадобится выполнить более сложный код с пакетами типа scipy, numpy или cvxpy, скорее всего сделать это не получится. Система просто не предназначена для этого.

Остается один вариант - брать голый ubuntu образ и собирать его под свои требования. Процесс собственно не очень сложный, особенно если пользуешься ubuntu как основной операционкой. Рецепт прост - последний релиз, полный апгрейд системных пакетов, установка нужного пайтона 👨‍💻 А дальше все как обычно.

Собрал, пушу в репозиторий, жду пока прокатится пайплайн. Открываю лог, а уязвимостей не найдено. Вообще ни одной ! Салют, фанфары, коллеги спрашивают как собрать такой же образ, я открываю шампанское 🎆🪩🎉🥂

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

P.S.: Мне эта история нравится с технической точки зрения. Типа, как можно пожонглировать технологиями так, чтобы твое решение стало более безопасно и более расширяемо🤹 Наверное надо написать заметку в блог про это

#insight #dev
🔥6🤔3
Как реагировать на критические события

Хотел я вчера прервать сорокодневное молчание постом про 6 недель Стамбула, но решил перенести этот пост. Сегодня хочу подумать о том как человек реагирует на важные события, которые напрямую его касаются. Что делать и чего делать не стоит.

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

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

Реакция не должна строиться на фундаменте общего инфополя и всеобщей паники ! Действия должны строиться на основе твоих убеждений и стремлений. Эти штуки обычно не меняются в критические моменты.

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

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

Техническая рекомендация - при оценке рисков, всегда искать первоисточник любой информации. Нет первоисточника/не можешь найти, верифицируй информацию в нескольких местах, которым можешь доверять (быстрый старт в OSINT).

В общем как то так и прошел вчерашний день 😕 Начавшись с нумерологии, через анализ рисков и закончен был немудреными osint практиками.

Have plan, stay informed, stay safe ✌️🌏

P.S.: Пост про 6 недель Стамбула уже пишу !

#insight
Please open Telegram to view this post
VIEW IN TELEGRAM
3
6 недель Стамбула

После четырех месяцев в Бишкеке я прилетел в Стамбул. Первая мысль была такая, я наконец то в мегаполисе ! То, чего очень не хватало - биг сити лайф, много людей, все куда-то бегут, до тебя нет никакого дела, а в воздухе висит атмосфера легкой спешки. Которая с грохотом рушится если посмотреть на ближайшее кафе, где локалы пью чай литрам и много курят.

Я жил в европейской части города, визуальна она похожа на что-то среднее между Прагой и черногорским Котором. Плотная застройка, невысокие разноцветные дома. В такой архитектре приятно гулять, чувствуешь себя соразмерным постройкам вокруг. Через каждые сто метров есть корнершоп, пекарня или висит флаг Турции. Приятное ощущение нейборхуда, которого не было в Бишкеке и которое очень редко попадается в Москве.

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

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

Уровень жизни тут достижим как и в любом другом мегаполисе. Можно найти все что понадобится и ещё немножко. Общественный транспорт работает идеально. Все привычные сервисы типа доставки или такси работают. Прайс на продукты, аренду и услуги московский. Удивлением были цены на алкоголь, они процентов на 30 выше чем я привык, что вино в супермаркете, что гинесс в баре.

Мысли последних дней были такие. Стамбул это очень интересный город с какой-то бесконечной историей, чтобы понять который нужно гораздо больше времени, чем потратил я. Город, в котором европейские лайфстайл смешивается с восточным пониманием жизни, а сверху присыпан легкой атмосферой киношности или сказочности. Много думал про историю российской эмиграции. И про то, что иметь всякие бытовые радости (+15 зимой, возможность купить новую модель беговых кроссовок или наличие икеи/декатлона) это приятно.

✈️

#travel
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62❤‍🔥1🔥1💯1
Безопасность докер контейнеров №2 🐳

Продолжают появляться знания про безопасность докера. В прошлой заметке писал про CVE уязвимости, которые находятся в базовых пайтон образах. Сегодня пишу про безопасность самого запускаемого контейнера.

Если сильно упрощать, то докер контейнер это своего рода виртуальная операционная система, изолированная от системы в которой контейнер запускается. Как и у любой ОС, в докер контейнере тоже есть пользователи, группы пользователей и разные права доступа к системе.

По умолчанию, контейнер запускается с root правами. Эти права позволяют контролировать все процессы запущенные в контейнере и иметь полный доступ ко всем файлам системы. С одной стороны это удобно, не надо думать над тем, как создавать файлы. Но с другой стороны это не очень безопасно, и вот почему.

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

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

RUN addgroup --gid $GROUP_ID user && \
adduser --disabled-password --gecos '' --uid $USER_ID --gid $GROUP_ID user
USER user

В аргументы GROUP_ID и USER_ID надо передать номера группы и пользователя.

Ещё хорошо бы убрать у системных исполняемых файлов возможность исполнения от имени владельца. Декодинг такой - находим все файлы с нужными разрешениями и убираем возможности установки битов доступа:

RUN find / -perm /6000 -type f -exec chmod a-s {} \; || true

Это все конечно выглядит не очень просто и понятно для человека, который не использует линукс. Но заботать базовые навыки сисадмина очень полезно, даже если ты занимаешься ML, а тем более разработкой. Эти навыки позволят писать более безопасные и тонко настраиваемые решения ✌🏻👨‍💻

#dev
👍41
Персональные данные и личная безопасность 🥷🏻

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

Причиной для написания поста стала статья в NY Times о том, как компании, аффилированные с российским гос сектором, научились анализировать зашифрованный трафик месенджеров. Нет, у них пока нет прямого доступа к чату, но понимать что именно (текст, картинки, голосовые сообщения или видоски) и кому ты отправляешь они уже могут. Очевидно, что если эти технологии есть у гос сектора, то ими могут пользоваться все правоохранительные структуры.

Казалось бы, новость конечно плохая, но не ужасная. Давай разовьем идею и подумаем, что же именно государство может о тебе понять, исходя из твоих данных. Начать надо с того, что в РФ есть СОРМ - система оперативно-розыскных мероприятий. Это комплекс софта и железок, которые собирают весь телефонный и интернет трафик. На хабре был хороший пост про то, как это работает.

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

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

Прочитаем ещё немного новостей и поймем что у ФСБ скоро будет доступ к базам данных аггрегаторов такси. А это опять же твои передвижения и способы их оплаты. Косвенно можно понять как часто и в каких барах ты тусуешься, куда ездишь на массаж и когда возвращаешься домой после ужина с родителями.

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

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

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

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

Несмотря на всю мерзость и гадость сложившихся условий с ними можно и нужно бороться. Делать все, что бы твои данные принадлежали именно тебе, а не всем гос структурам страны. Тогда ты, как единица гражданского общества, будешь менее уязвим и более свободен. Расскажу как это можно сделать в следующих постах ✌🏻🌎

Stay anonymous, stay free, stay safe !

#security
👍5👏1🤔1🐳1🍾1
Масштабирование продукта 📈

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

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

Меня немного удивила история с покупкой железок. Я был уверен, что сейчас никто ничего не покупает, за исключением больших игроков и компаний специализирующихся на облачных вычислениях. Хотя, я думаю, что тут можно просто прикинуть нагрузки и посчитать сколько выйдет покупка + месячное содержание своего железа и аренда подходящих ресурсов. И выбрать более дешевый вариант.

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

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

P.S.: И если с сервисами типа AWS, GCP, Azure примерно понятно что делать при росте нагрузок. То как быть со своими железками - не очень. Покупка своих ресурсов требует точного и долгосрочного планирования, которое кажется редко достижимым в стартап среде

#startup #dev
👍3🔥1
Как создавать продукт ?

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

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

К сожалению, у меня нет профессиональных навыков в этой области. Поэтому, я стараюсь брать знания во всех подходящих источниках, например startupschool.org, gopractice.ru, блог Вани Замесина и релевантные каналы в ТГ. Про классику типа Lean Startup, From zero to one, The Startup: owners manual я молчу.

Один из таких каналов, про стартапы и управление продуктом - Надежда и опора продуктового подхода. Он довольно камерный, с интересными постами, кароче говоря он мне нравится. Его ведет Надежда и в эту субботу, 12 августа, она будет читать лекцию "Как создавать продукты". В адженде заявлены классные темы, в которые мне хочется погрузиться глубже. Бонусом она будет разбирать некоторые кейсы !

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

Ниже сам анонс мероприятия:

Лекция «Как создавать продукты»

💡 С чего начать, когда есть много разных идей?
🔍 Как проводить исследования и тестировать гипотезы?
🚀 Как создавать продукт без страха провала?

🕓 12 августа, в 16:00 (мск), онлайн.

Инвайт ссылка:
https://t.iss.one/+u5Db6Yrnzw8yMDky

P.S.: Как можно заметить, я пока ищу ответ на вопрос из заголовка 🤭
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🤔2❤‍🔥1🔥1
Спроси маму

Дочитал книгу Роба Фитцпатрика - Спроси маму. Небольшая и очень интересная книга о том, как проверять свои бизнес идеи. Мне её рекомендовали знакомые продакты. А ещё, когда то давно, ее рекомендовали менторы из ФРИИ в своем стартап-акселераторе.

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

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

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

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

#book
👍4🤔1
10 перелетов за 12 месяцев

За последний год у меня было 10 перелетов. Это гораздо больше чем в прошлые года. И как то само собой вышло, что под конец, у меня появились некоторые правила, которые помогли мне экономить время и летать с большим комфортом.

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

Количество багажа. Если вещей совсем мало, а поездка короткая, достаточно будет обычно рюкзака. Если же поездка чуть длиннее, то я беру маленький чемодан и рюкзак. А если надо срочно релоцироваться в другую страну, то возьму большой чемодан вместе с маленьким и не забуду рюкзак. За этот год ни одна авиакомпания не просила доплатить за второе место ручной клади.

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

Если я лечу с чемоданом в ручной клади, то скорее всего в нем будут лежать кроксы ! Кроксы надеваются после сдачи багажа и снимаются, зачастую, уже в отеле. Я не буду говорить что это самая удобная обувь в мире. Просто скажу, что полеты в кроксах на порядок удобнее полетов в любой другой обуви.

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

✈️

#travel
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥4🔥2👍1🐳1
Логи сервиса 👩‍💻

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

Оказалось, что мой сервис не логировал входящие запросы. Строчка о том, что запрос пришел была. Но строки с полным текстом запроса не было ! В сервисе, который отправлял запросы, было всего 4 лог лайна на весь код 🤯 Так что из него достать тоже ничего не получалось.

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

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

В стандартной библиотеке питона есть модуль logging, но честно говоря, он мне не очень нравится. Очень нравится мне пакет loguru, который позволяет в 3 строки сделать удобный логер с нужным форматом, несколькими уровнями серьезности и разноцветными (!!!) сообщениями.

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

from loguru import logger

logger.remove()
logger.add(sys.stdout, serialize=False, format=LOG_FORMAT)

Если по какой-то причине вам надо сохранять логи локально, то можно очень просто настроить компрессию и ротацию логов в файле, для этого:

logger.add("local.log", rotation="1 week", compression="tar.gz")

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

P.S.: А если хочешь больше узнать про наблюдаемость сервисов, вот подходящая заметка

#dev
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥1🤔1🐳1
Build Public 🛠

Предыстория. Месяц назад начал проходить курс по ML System Design. Основная цель курса, это научиться строить сложные системы, которые решают проблемы пользователей с помощью машинного обучения. Вишенка курса - проект, который надо делать в командах, а в конце будет защита перед лекторами и другими командами.

Вместе с этим, прикоснулся к движухе indie hacking. В ней очень популярна идея build public. Это когда ты делаешь свой проект и параллельно рассказываешь про свои удачи/проблемы/достижения. Кто-то делает лайв кодинг на стриме, кто-то пишет апдейты в твитере. Форма тут не важна, важно что ты погружаешь аудиторию в текущее состояние проекта. Эта идея кажется мне очень крутой. Крутой, потому, что ты делишься опытом, потому что можешь получить фидбек от более экспертных людей по своим решениям или проблемам. А еще потому, что это мотивирует тебя не забивать на свое детище, даже если все идет не по плану.

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

Мы стараемся работать асинхронно и в аджайл стиле. По классике, каждый рабочий отрезок команды строится по схеме PDCA. Именно в следствии этой схемы существует: планирование + работа с бэклогом, дейли митинги для уточнение состояния, ретро + демо в конце спринта и четкие итоги встреч/экшен планы.

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

В нашем случае эта схема мутировала в следующее: мы работаем по недельным спринтам, у нас нет дейли, но есть демо. Демо совмещено с планированием и проводится раз в спринт. Планирование крупными мазками, на уровне фичей или эпиков. Более детальное формирование требований происходит асинхронно в гугл доках. Очень помогают коментарии. Если кому-то, что-то не понятно разговариваем тет-а-тет и делаем так, чтобы стало понятно.

Какие технологии мы используем ? База это чат в тележке. Таск трекер - trello, удобно смотреть кто чем занят. Архитектуру обсуждаем в miro, в ней же брейнштормим. Собираем требования и описываем фичи в гугл доках (помним про комменты). Созвоны в гуглмит. Код, понятное дело, держим в гите, где каждый ковыряет свои фичи в отдельных ветках.

Мне очень интересно работать над этим проектом ! Хочется писать про это часто, потому что нахожу очень (!!!) много нового для себя. Нового, в построении процессов, менеджменте, разработке, архитектуре и технологиях. Следуя идеи buld public всю эту кучу новой информации буду делить на связные блоки и постить сюда.

Stay tuned✌️Build public, build open 🌎

P.S.: Fast forward сейчас состояние такое - выкатили пре-альфа версию в паблик. Смотрим как работает, собираем баги и набиваем шишки

#buildpublic #dev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🐳6