Продолжаю наблюдать за синьорами в их естественной среде обитания (в надежде когда-то тоже стать большим и взрослым). Очередной пример различия в наших подходах:
Я, когда у меня не работает таск: наверное я что-то не так делаю, 2 часа изучают документацию, пробую по-разному, потом спрашиваю совета у коллег. Не исключено, что в результате у меня будут лапки.
Синьор, когда у него не работает: приносит ишью в разработку инструмента «тут ваш таск падает, вот логи, вот контекст; а давайте сделаем так, чтобы он падал пораньше? а не в самом конце, когда проработал два с лишним часа». (И ещё сразу прикладывает пулл-реквест с нужной доработкой, типа «посмотрите я тут начал делать» =)
Я, когда у меня не работает таск: наверное я что-то не так делаю, 2 часа изучают документацию, пробую по-разному, потом спрашиваю совета у коллег. Не исключено, что в результате у меня будут лапки.
Синьор, когда у него не работает: приносит ишью в разработку инструмента «тут ваш таск падает, вот логи, вот контекст; а давайте сделаем так, чтобы он падал пораньше? а не в самом конце, когда проработал два с лишним часа». (И ещё сразу прикладывает пулл-реквест с нужной доработкой, типа «посмотрите я тут начал делать» =)
🔥18
Нужен ли английский разработчикам?
Чтобы серьёзно обсудить этот вопрос в Moscow Python позвали двух филологов (Youtube, iTunes и Overcast)
Недавно столкнулся с кейсом «зачем нужен английский». Даже не для того, чтобы читать документацию или статьи в оригинале. Ещё на несколько уровней ниже:
Как. Называть. Переменные.
Разбираем с приятелем его код на Джанго для курсовой работы. Вроде всё работает, но собрано из разных частей. Надо понять КАК оно работает. Доходим до стандартной функции get_or_create — название вроде говорит само за себя. Спрашиваю его «что происходит в этом кусочке?», в ответ задумчивость.
И тут до меня доходит, что не все умеют читать на английском. Тогда я его прошу перевести название функции и он по очереди забивает в словарь get и потом create, чтобы понять предназначение функции, которой он воспользовался.
Без знания английского действительно тяжело даже просто писать и читать код.
Чтобы серьёзно обсудить этот вопрос в Moscow Python позвали двух филологов (Youtube, iTunes и Overcast)
Недавно столкнулся с кейсом «зачем нужен английский». Даже не для того, чтобы читать документацию или статьи в оригинале. Ещё на несколько уровней ниже:
Как. Называть. Переменные.
Разбираем с приятелем его код на Джанго для курсовой работы. Вроде всё работает, но собрано из разных частей. Надо понять КАК оно работает. Доходим до стандартной функции get_or_create — название вроде говорит само за себя. Спрашиваю его «что происходит в этом кусочке?», в ответ задумчивость.
И тут до меня доходит, что не все умеют читать на английском. Тогда я его прошу перевести название функции и он по очереди забивает в словарь get и потом create, чтобы понять предназначение функции, которой он воспользовался.
Без знания английского действительно тяжело даже просто писать и читать код.
YouTube
Moscow Python Podcast. Английский для разработчиков (level: all)
В гостях у Moscow Python Podcast Python руководитель команды методистов на курсе "Английский для разработчиков" от Яндекс Практикума Маруся Горина и Python разработчик Лариса Петрова. Обсудили с Марусей и Ларисой зачем разработчикам нужен английский.
Ведущие…
Ведущие…
👍6
послушал два подкаста на схожую тему — про профессиональный путь в дата-отрасли:
1. Валерий Бабушкин про технический путь
Кулстори из рабочих будней про командировки по колхозам и молокозаводам. Плотный график разных проектов с жёсткими сроками и требованиям по точности расчётов даёт +100 к опыту.
Помимо когнитивной нагрузки полезно уметь выдерживать и физическую. Например, шесть часов последовательных собесов в Фейсбук.
Про мэтчинг грейдов между компаниями: когда миддлы из Х5 или Яндекса идут синьорами-хедами в другие компании; или мега-синьор из вне тянет в Х5 только джуна.
Про общую оценку кадров в Х5: 10 профильных докладов на последнем Датафесте (видео от мая 2021) как итог работы Валерия директором по данным.
https://youtu.be/hfrNLA-cHqo
#подкаст #послушано
1. Валерий Бабушкин про технический путь
Кулстори из рабочих будней про командировки по колхозам и молокозаводам. Плотный график разных проектов с жёсткими сроками и требованиям по точности расчётов даёт +100 к опыту.
Помимо когнитивной нагрузки полезно уметь выдерживать и физическую. Например, шесть часов последовательных собесов в Фейсбук.
Про мэтчинг грейдов между компаниями: когда миддлы из Х5 или Яндекса идут синьорами-хедами в другие компании; или мега-синьор из вне тянет в Х5 только джуна.
Про общую оценку кадров в Х5: 10 профильных докладов на последнем Датафесте (видео от мая 2021) как итог работы Валерия директором по данным.
https://youtu.be/hfrNLA-cHqo
#подкаст #послушано
YouTube
Валерий Бабушкин: от карьеры в химометрике до директора по анализу данных | Подкаст | karpov.courses
Герой нашего первого эпизода — Валерий Бабушкин, ех-директор по моделированию и анализу в X5 Retail Group, сотрудник лондонского офиса Facebook*, Kaggle Competition Grandmaster и преподаватель машинного обучения в онлайн-школе karpov.courses
Поговорили о…
Поговорили о…
🔥1
2. Семён Осипов про работу и рост инженера данных
Надо брать ответственность самому, а не ждать пока «всё само́»: сначала чинишь код вокруг себя, потом переходишь на следующий уровень и уже чинишь процессы.
Про рост зарплаты: первым делом договариваешься с лидом о встрече через Х месяцев, потом приходишь на неё готовый с результатами своей работы с прошедший период. Повторить итерацию.
Получился хороший разговор с правильным подходом, как ведущие пошутили «за всё хорошее против всего плохого». Полезно.
iTunes, Overcast, Youtube
Канал Семёна про инжиниринг
#подкаст
Надо брать ответственность самому, а не ждать пока «всё само́»: сначала чинишь код вокруг себя, потом переходишь на следующий уровень и уже чинишь процессы.
Про рост зарплаты: первым делом договариваешься с лидом о встрече через Х месяцев, потом приходишь на неё готовый с результатами своей работы с прошедший период. Повторить итерацию.
Получился хороший разговор с правильным подходом, как ведущие пошутили «за всё хорошее против всего плохого». Полезно.
iTunes, Overcast, Youtube
Канал Семёна про инжиниринг
#подкаст
Apple Podcasts
Moscow Python Podcast. ML и DataOps (level: all)
Выпуск подкаста · Moscow Python: подкаст о Python на русском · 01.07.2022 · 54 мин.
🔥1
Spotify Engineering Culture
беглый поиск по каналу показал, что тут ещё не было ссылки на два коротких, но очень познавательных и наглядных видео про инженерную культуру в Спотифай — исправляюсь!
Часть 1 https://youtu.be/Yvfz4HGtoPc
Часть 2 https://youtu.be/vOt4BbWLWQw
много можно применять к работе и инженеров данных: у нас тоже есть команды, цели, релизы и гильдии. Да мы практически software engineers ^_^
==[=====>
Минимальная организационная единица — автономный сквад из 6 человек. Внутри сквада люди сами решают как делать, как взаимодействовать.
Офис утроен под сквады: рабочие места рядом + место для обсуждения со стенами-досками для письма.
Хотя сквады автономные и сами выбирают цели, они должны соотноситься с общей миссией компании, т.е. быть сонаправленными между собой. Приводят аналогию с джаз-группой.
«Как вы планируете спринты? Какой IDE используете?» — зависит от сквада — везде по-разному.
Когда одним инструментом начинают пользоваться много команд (и он хороший), то другим становиться проще тоже использовать именно его, а не выбирать другой. Так инструменты становиться стандартном де-факто.
Трайб — группа сквадов.
Горизонтально между собой отдельные специалисты из разных сквадов собираются в гильдии — например, бэкендеры или дизайнеры (или ИНЖЕНЕРЫ ДАННЫХ, хе-хе).
Релизы
Чем больше релиз, тем труднее его выкатить → больше боли → реже релизы → релизы всё больше → круг замыкается
Проще делать небольшие релизы и катить их чаще. Релиз должен быть повседневной рутиной, а не эпическим квестом.
Отдельные релизы для разных кусков приложения, чтобы не зависеть друг от друга и не синхронизировать выкатки.
Релиз-поезда — релизы по расписанию. Готовые куски отгружаются со следующим рейсом. Неготовые куски тоже выезжают, но не отображаются на проде (будут ждать наготове, когда доедут недостающие части со следующим релизом).
<====]==
Ещё по теме: тот беглый поиск в начале подсветил, что в когда-то давно я кидал ссылку подкаст с разработчицей из Спотифай, так что можно сравнить информацию из видео с отчётом из первых рук
https://news.1rj.ru/str/data_days/66
беглый поиск по каналу показал, что тут ещё не было ссылки на два коротких, но очень познавательных и наглядных видео про инженерную культуру в Спотифай — исправляюсь!
Часть 1 https://youtu.be/Yvfz4HGtoPc
Часть 2 https://youtu.be/vOt4BbWLWQw
много можно применять к работе и инженеров данных: у нас тоже есть команды, цели, релизы и гильдии. Да мы практически software engineers ^_^
==[=====>
Минимальная организационная единица — автономный сквад из 6 человек. Внутри сквада люди сами решают как делать, как взаимодействовать.
Офис утроен под сквады: рабочие места рядом + место для обсуждения со стенами-досками для письма.
Хотя сквады автономные и сами выбирают цели, они должны соотноситься с общей миссией компании, т.е. быть сонаправленными между собой. Приводят аналогию с джаз-группой.
«Как вы планируете спринты? Какой IDE используете?» — зависит от сквада — везде по-разному.
Когда одним инструментом начинают пользоваться много команд (и он хороший), то другим становиться проще тоже использовать именно его, а не выбирать другой. Так инструменты становиться стандартном де-факто.
Трайб — группа сквадов.
Горизонтально между собой отдельные специалисты из разных сквадов собираются в гильдии — например, бэкендеры или дизайнеры (или ИНЖЕНЕРЫ ДАННЫХ, хе-хе).
Релизы
Чем больше релиз, тем труднее его выкатить → больше боли → реже релизы → релизы всё больше → круг замыкается
Проще делать небольшие релизы и катить их чаще. Релиз должен быть повседневной рутиной, а не эпическим квестом.
Отдельные релизы для разных кусков приложения, чтобы не зависеть друг от друга и не синхронизировать выкатки.
Релиз-поезда — релизы по расписанию. Готовые куски отгружаются со следующим рейсом. Неготовые куски тоже выезжают, но не отображаются на проде (будут ждать наготове, когда доедут недостающие части со следующим релизом).
<====]==
Ещё по теме: тот беглый поиск в начале подсветил, что в когда-то давно я кидал ссылку подкаст с разработчицей из Спотифай, так что можно сравнить информацию из видео с отчётом из первых рук
https://news.1rj.ru/str/data_days/66
YouTube
Spotify Engineering Culture - Part 1 (aka the "Spotify Model")
This video is a snapshot of Spotify's approach to software enginering and people management in 2014. It has since come to be known as the "Spotify Model".
I put it on Vimeo originally, but that account has some issues so I put a copy here.
DISCLAIMER:…
I put it on Vimeo originally, but that account has some issues so I put a copy here.
DISCLAIMER:…
👍4🔥3
data будни
Spotify Engineering Culture беглый поиск по каналу показал, что тут ещё не было ссылки на два коротких, но очень познавательных и наглядных видео про инженерную культуру в Спотифай — исправляюсь! Часть 1 https://youtu.be/Yvfz4HGtoPc Часть 2 https://yout…
Выдрал кадр из ролика про культуру в Спотифай про «гильдии» внутри организационной структуры.
По своему опыту могу отметить, что крайне приятно чувствовать причастность одновременно к двум группам: и непосредственно к коллегам по общему бизнесу, и вместе с тем с товарищами из соседних DWH (там не только инженеры данных, но и партнёры по данным, а так же ребята из платформы и общие лиды).
Получается в два раза больше коллег, всяких активностей и чатиков с мемами!
А в «гильдии» всегда можно спросить совета или подсмотреть полезные практики из нашей сферы. Особенно радует количество синьоров в шаговой доступности (или на расстоянии одного сообщения в Слаке).
По своему опыту могу отметить, что крайне приятно чувствовать причастность одновременно к двум группам: и непосредственно к коллегам по общему бизнесу, и вместе с тем с товарищами из соседних DWH (там не только инженеры данных, но и партнёры по данным, а так же ребята из платформы и общие лиды).
Получается в два раза больше коллег, всяких активностей и чатиков с мемами!
А в «гильдии» всегда можно спросить совета или подсмотреть полезные практики из нашей сферы. Особенно радует количество синьоров в шаговой доступности (или на расстоянии одного сообщения в Слаке).
👍11
Юля собрала полезные советы для собирающихся в Яндекс
П.С.: подписывайтесь на Юлю — там весело (а не то что тут)
П.С.: подписывайтесь на Юлю — там весело (а не то что тут)
Forwarded from Кем ты хочешь стать, когда вырос
Самое вкусное это конечно V2: Советы, ссылки и всяческая польза.
Я на себя взяла смелость оформить в двух вариантах: вот этим постом, тут чуть сокращенно и следующим также в телеграфе. На вкус и цвет как говорится.
“…Как попасть в Яндекс
Всем доступный путь - это откликнуться на вакансию на официальном сайте Яндекса. Но вы сами понимаете, сколько людей туда откликается каждый день, поэтому шансы, что именно ваше резюме заметят и выделят - наверное не очень высокие.
Более реальный вариант - найти знакомого в Яндексе и попросить себя порекомендовать. Этот способ хотя бы сразу приведет к общению с рекрутером, а это уже половина успеха.
Еще один путь - участвовать в маркетинговых мероприятиях типа One Day Offer или Fast track - https://yandex.ru/jobs/hiring-events (ближайший). Все, кто сможет пройти входной контест, будет приглашен на собеседование.
Так же никто не отменял стажировки и различные школы (например, вот для бэкэнда), после которых тоже активно нанимают.
Как готовиться к собеседованиям
Лучший источник задач и решений - это литкод. Для Яндекса нужно прорешивать задачи уровня Easy и Medium.
Если у вас есть подписка - то обратите внимание на штатные подборки задач, если нет - то много классных сборников есть в сети (например).
Старайтесь минимизировать попытки сабмита задачи и учитесь дебажить код в уме - на собесе прогнать тесты вам никто не даст.
Также крайне рекомендую пройти специальный курс по алгоритмическим собеседованиям от Практикума. Это просто кладезь теории и лайфхаков, а в конце вам дадут задачки.
Обязательно изучите все, что написано вот тут.
Вы можете прорешать примерные задачи для собеседования в Яндекс, а потом посмотреть их решения.
Очень рекомендую тренировки по алгоритмам:
https://yandex.ru/yaintern/algorithm-training_1
и https://yandex.ru/yaintern/algorithm-training#schedule
решайте домашки, смотрите разборы.
Попробуйте решить контест для Weekend offer. Если получится - то там уже и до офера недалеко)
Важное
Об этом нигде не пишут, но я крайне рекомендую: изучите и напишите с нуля все популярные алгоритмы сортировки: quick sort, merge sort, heap sort. Они все пишутся за 20 (heap sort - 40) строчек кода на питоне и легко гуглятся. Изучите, какая сложность у этих алгоритмов: в лучшем случае, в худшем, в среднем. Для каких случаев какой алгоритм предпочтительней.
Напишите сортировку пузырьком. Найдите 3 способа ее улучшить. Убедитесь, что сложность все равно осталась квадратичной. Найдите кейс, когда пузырек будет работать быстрее, чем quick sort.
Несколько лайфхаков для алго-этапа от меня:
1. Пишите на том языке, на котором вам удобно, даже если он отличается от языка, на котором вам потом придется работать
2. Когда получите задачу, обязательно обсудите пограничные кейсы. А пустой массив проверять? А может прийти что-то, кроме массива? А числа отрицательные могут быть?
3. Когда приступите к реализации решения, накидайте в комментах тест-кейсы: обязятельно что-то простое позитивное, потом кейс посложнее, потом несколько пограничных кейсов. На этих тестах потом будете дебажить и искать ошибки.
4. Попробуйте заранее понять, в каких местах можно что-то упустить, как можно выйти за границы массива, например.
5. Называйте переменные осмысленно, но без фанатизма.
6. Все проговаривайте вслух, даже если не знаете, как решать. Тем более, если не знаете как решать. Накидывайте идеи, даже неудачные. Объясняйте, почему они неудачные.
7. Помните: алго-этапы проверяют не только знание структур и базовых техник. Они также проверяют софт-скиллы: как вы справляетесь с трудностями, как ведете себя в стрессовой ситуации, как коммуницируете с людьми. Ну и качество и красоту кода - тоже никто не отменял.
Напоследок
В Яндексе сейчас около 2000 открытых вакансий.”
#отдушидушевновдушу
Я на себя взяла смелость оформить в двух вариантах: вот этим постом, тут чуть сокращенно и следующим также в телеграфе. На вкус и цвет как говорится.
“…Как попасть в Яндекс
Всем доступный путь - это откликнуться на вакансию на официальном сайте Яндекса. Но вы сами понимаете, сколько людей туда откликается каждый день, поэтому шансы, что именно ваше резюме заметят и выделят - наверное не очень высокие.
Более реальный вариант - найти знакомого в Яндексе и попросить себя порекомендовать. Этот способ хотя бы сразу приведет к общению с рекрутером, а это уже половина успеха.
Еще один путь - участвовать в маркетинговых мероприятиях типа One Day Offer или Fast track - https://yandex.ru/jobs/hiring-events (ближайший). Все, кто сможет пройти входной контест, будет приглашен на собеседование.
Так же никто не отменял стажировки и различные школы (например, вот для бэкэнда), после которых тоже активно нанимают.
Как готовиться к собеседованиям
Лучший источник задач и решений - это литкод. Для Яндекса нужно прорешивать задачи уровня Easy и Medium.
Если у вас есть подписка - то обратите внимание на штатные подборки задач, если нет - то много классных сборников есть в сети (например).
Старайтесь минимизировать попытки сабмита задачи и учитесь дебажить код в уме - на собесе прогнать тесты вам никто не даст.
Также крайне рекомендую пройти специальный курс по алгоритмическим собеседованиям от Практикума. Это просто кладезь теории и лайфхаков, а в конце вам дадут задачки.
Обязательно изучите все, что написано вот тут.
Вы можете прорешать примерные задачи для собеседования в Яндекс, а потом посмотреть их решения.
Очень рекомендую тренировки по алгоритмам:
https://yandex.ru/yaintern/algorithm-training_1
и https://yandex.ru/yaintern/algorithm-training#schedule
решайте домашки, смотрите разборы.
Попробуйте решить контест для Weekend offer. Если получится - то там уже и до офера недалеко)
Важное
Об этом нигде не пишут, но я крайне рекомендую: изучите и напишите с нуля все популярные алгоритмы сортировки: quick sort, merge sort, heap sort. Они все пишутся за 20 (heap sort - 40) строчек кода на питоне и легко гуглятся. Изучите, какая сложность у этих алгоритмов: в лучшем случае, в худшем, в среднем. Для каких случаев какой алгоритм предпочтительней.
Напишите сортировку пузырьком. Найдите 3 способа ее улучшить. Убедитесь, что сложность все равно осталась квадратичной. Найдите кейс, когда пузырек будет работать быстрее, чем quick sort.
Несколько лайфхаков для алго-этапа от меня:
1. Пишите на том языке, на котором вам удобно, даже если он отличается от языка, на котором вам потом придется работать
2. Когда получите задачу, обязательно обсудите пограничные кейсы. А пустой массив проверять? А может прийти что-то, кроме массива? А числа отрицательные могут быть?
3. Когда приступите к реализации решения, накидайте в комментах тест-кейсы: обязятельно что-то простое позитивное, потом кейс посложнее, потом несколько пограничных кейсов. На этих тестах потом будете дебажить и искать ошибки.
4. Попробуйте заранее понять, в каких местах можно что-то упустить, как можно выйти за границы массива, например.
5. Называйте переменные осмысленно, но без фанатизма.
6. Все проговаривайте вслух, даже если не знаете, как решать. Тем более, если не знаете как решать. Накидывайте идеи, даже неудачные. Объясняйте, почему они неудачные.
7. Помните: алго-этапы проверяют не только знание структур и базовых техник. Они также проверяют софт-скиллы: как вы справляетесь с трудностями, как ведете себя в стрессовой ситуации, как коммуницируете с людьми. Ну и качество и красоту кода - тоже никто не отменял.
Напоследок
В Яндексе сейчас около 2000 открытых вакансий.”
#отдушидушевновдушу
Быстрые наймовые мероприятия Яндекса — офер за 1–2 дня
Хотите получить офер за 1–2 дня? Приходите на Fast Track, Weekend Offer, Week Offer от Яндекса. Минимум этапов, оперативные собеседования и быстрая обратная связь.
👍8💩2🔥1
Как минимум это интересно: GoogleDocs научились ходить в BigQuery
Вроде логичная интеграция: есть неограниченное хранилище и интерфейс к данным, к которому все привыкли; осталось только соединить одно с другим.
(если учесть, что BQ тарифицирует за чтение данных, то продакты Гугла должны быть довольны: проще читать данные → больше подключений → больше профит!)
https://support.google.com/docs/answer/9703000
Я попробовал по-быстрому зайти и открыть какой-то публичный датасет — например какие-то данные Википедии. Можно увидеть что к IP 68.39.174.238 приписано 12455 уникальный айди страниц.
Осталось получить от data steward ссылку на data catalog, чтобы проследить data lineage и узнать что за данные лежат в этом data source.
Вроде логичная интеграция: есть неограниченное хранилище и интерфейс к данным, к которому все привыкли; осталось только соединить одно с другим.
(если учесть, что BQ тарифицирует за чтение данных, то продакты Гугла должны быть довольны: проще читать данные → больше подключений → больше профит!)
https://support.google.com/docs/answer/9703000
Я попробовал по-быстрому зайти и открыть какой-то публичный датасет — например какие-то данные Википедии. Можно увидеть что к IP 68.39.174.238 приписано 12455 уникальный айди страниц.
Осталось получить от data steward ссылку на data catalog, чтобы проследить data lineage и узнать что за данные лежат в этом data source.
Google
Write & edit a query - Google Docs Editors Help
If you want to do more complicated analysis ( e.g., join data from more than one BigQuery table) you can write a custom query.
Important: To access BigQuery data in Google Sheets, you need access
Important: To access BigQuery data in Google Sheets, you need access
👍1
Reversed Orchestration
Ben Stancil в очередном выпуске свой рассылки рассуждает о недостатках текущего подхода к оркестрации как цепочек зависимых тасков, начиная от входных слоёв и заканчивая витринами.
https://benn.substack.com/p/down-with-the-dag
Одна из проблем — в увеличивающимся количестве графов, тасков и сущностей:
> In 2022, data engineers manage forests, not trees
В качестве демонстрации несовершенства подхода он предлагает попробовать спроектировать терминал аэропорта принципам как цепочку задач, выстраивая одну за другой последовательно. В аэропорт входят люди → вызываем сотрудников на стойку регистрации → 100 человек собирается у гейта → подкатываем самолёт и грузим багаж → все посажены → выруливаем самолёт на ВВП и т.д.
Очевидно, такая схема работать не будет на больших масштабах. И нельзя бесконечно добавлять рейсы в одни сутки. Чтобы спланировать загрузку такой сложной системы, нужен иной подход.
Автор предлагает подойти с другой стороны — проставить всем сущностями требования по свежести данных: например, по 4 часа на главные витрины , на промежуточные сущности 12, вспомогательные справочники и того меньше. И пускай там под капотом система сама решает когда какую сущность грузить.
Из преимуществ такого подхода — сглаживание пиков по нагрузке на вычислительные мощности. Система сама должна прикидывать когда что запускать, чтобы попасть в ожидаемые границы SLA по всем сущностям (а не просто все считать раз в N часов по крону).
(как инженер, который постоянно пытается подобрать расписание крона для очередного таска таким образом, чтобы сгладить пики на графике загрузки серверов, мне очень нравится картина, которую автор пытается нарисовать)
Ben Stancil в очередном выпуске свой рассылки рассуждает о недостатках текущего подхода к оркестрации как цепочек зависимых тасков, начиная от входных слоёв и заканчивая витринами.
https://benn.substack.com/p/down-with-the-dag
Одна из проблем — в увеличивающимся количестве графов, тасков и сущностей:
> In 2022, data engineers manage forests, not trees
В качестве демонстрации несовершенства подхода он предлагает попробовать спроектировать терминал аэропорта принципам как цепочку задач, выстраивая одну за другой последовательно. В аэропорт входят люди → вызываем сотрудников на стойку регистрации → 100 человек собирается у гейта → подкатываем самолёт и грузим багаж → все посажены → выруливаем самолёт на ВВП и т.д.
Очевидно, такая схема работать не будет на больших масштабах. И нельзя бесконечно добавлять рейсы в одни сутки. Чтобы спланировать загрузку такой сложной системы, нужен иной подход.
Автор предлагает подойти с другой стороны — проставить всем сущностями требования по свежести данных: например, по 4 часа на главные витрины , на промежуточные сущности 12, вспомогательные справочники и того меньше. И пускай там под капотом система сама решает когда какую сущность грузить.
Из преимуществ такого подхода — сглаживание пиков по нагрузке на вычислительные мощности. Система сама должна прикидывать когда что запускать, чтобы попасть в ожидаемые границы SLA по всем сущностям (а не просто все считать раз в N часов по крону).
(как инженер, который постоянно пытается подобрать расписание крона для очередного таска таким образом, чтобы сгладить пики на графике загрузки серверов, мне очень нравится картина, которую автор пытается нарисовать)
benn.substack
Down with the DAG
Reverse the ETL timeline.
👍1
data будни
Reversed Orchestration Ben Stancil в очередном выпуске свой рассылки рассуждает о недостатках текущего подхода к оркестрации как цепочек зависимых тасков, начиная от входных слоёв и заканчивая витринами. https://benn.substack.com/p/down-with-the-dag Одна…
И отдельно поворчу про манеру автора ставить ссылки. С одной стороны клёво, что их прям много, видно что он их собирал со всего интернета и аккуратно складывал в нужную папочку, чтобы вставить в релевантный абзац.
С другой: ставить ссылки на рандомные слова в предложение — моветон. В двух случаях это ссылки на статьи на Медиуме, потом ссылка на вырезку в ютубе или вообще Тикток. Страшно неудобно, особенно с мобилы.
Отдельно зашёл с компа и протыкал все ссылки. Мемчики с тиктоками оставил в авторском оригинале, а отдельно собрал ссылки на всякие статьи-заметки:
- Moving past Airflow: Why Dagster is the next-generation data orchestrator
- Why Not Airflow?
- The Unbundling of Airflow
- Airflow's Problem
- Data plane activation
- Either-or decisions
- The powder keg of the modern data stack
- The data OS
- Data Traffic Control with Apache Airflow
- (Re)Introducing Prefect: The Global Coordination Plane
С другой: ставить ссылки на рандомные слова в предложение — моветон. В двух случаях это ссылки на статьи на Медиуме, потом ссылка на вырезку в ютубе или вообще Тикток. Страшно неудобно, особенно с мобилы.
Отдельно зашёл с компа и протыкал все ссылки. Мемчики с тиктоками оставил в авторском оригинале, а отдельно собрал ссылки на всякие статьи-заметки:
- Moving past Airflow: Why Dagster is the next-generation data orchestrator
- Why Not Airflow?
- The Unbundling of Airflow
- Airflow's Problem
- Data plane activation
- Either-or decisions
- The powder keg of the modern data stack
- The data OS
- Data Traffic Control with Apache Airflow
- (Re)Introducing Prefect: The Global Coordination Plane
dagster.io
Dagster vs Airflow: Feature Comparison
Discover why Dagster outpaces Airflow with modern UX, modular pipeline design, asset tracking, and easier maintenance for growing teams.
👍5
data будни
Уровни аналитиков Женя Козлов описал опыт Яндекса по формализации грейдов для аналитиков. Написано очень чётко, можно использовать как шпаргалку для команд или личного развития. Понравилось чёткое разделение каждого грейда в разрезе подхода к задачам (мелко…
↑ год назад кидал ссылку на описание урвоней аналитиков в Яндексе
сейчас наткнулся на похожий материал про разработчиков в Авито, аккуратно оформленный в Гитхабе
https://github.com/avito-tech/playbook/blob/master/developer-profile.md
интересно почитать про разные уровни. Особенно интересно, что хард скиллы — это один из 8 блоков навыков, на которые смотрят при оценке инженера.
вот все:
- Экспертность.
- Инженерная культура.
- Ответственность за результат.
- Ориентация на бизнес.
- Agile Mindset.
- Коммуникация.
- Развитие себя и обучение других.
сейчас наткнулся на похожий материал про разработчиков в Авито, аккуратно оформленный в Гитхабе
https://github.com/avito-tech/playbook/blob/master/developer-profile.md
интересно почитать про разные уровни. Особенно интересно, что хард скиллы — это один из 8 блоков навыков, на которые смотрят при оценке инженера.
вот все:
- Экспертность.
- Инженерная культура.
- Ответственность за результат.
- Ориентация на бизнес.
- Agile Mindset.
- Коммуникация.
- Развитие себя и обучение других.
👍9
data будни
Послушать: советы по ML Ops из Moscow Python сами по себе МЛ-модели — это малая доля работы всего этого вашего машин-лёрнинга. До этого надо ещё собрать данные, их почистить и подготовить (ну вы знаете); обучить модель «на коленке», а потом переписать этот…
Послушать:
Про сложность работы с медицинскими данными
Сложность начинается с самого начала: тяжело даже начать, придумать архитектуру и определить основные сущности. Например, «запись к врачу», это ещё не сам «визит».
Каждая информационная система пытается разработать свою схему для передачи данных ( шутка про «Было 14 стандартов…»).
Масштаб: 10 толковых программистов могут поддерживать работу ит-системы крупной больницы.
Интересно, что небольшие страны проще цифровизировать — там просто меньше элементов в системе. В таких странах гораздо проще достичь 100% цифровизации всей системы здравоохранения (в т.ч. задать стандарт).
Слушать в iTunes и Overcast
Тг-канал подкаста https://news.1rj.ru/str/ctodaily/1564
⌘⌘⌘
Про ML Art
На тему генеративного искусства позвали поговорить Алексея Тихонова — (со-)автора кучи разных тематических проектов: Нейронная оборона, НейроСкрябин, бота-наблюдателя за животными в нацпарке и многих других. А ещё Алексей пишет в свой канал «Жалкие низкочастотники».
Я одним глазом слежу за темой (на уровне чтения заголовков новостей и статей) и мне было интересно узнать что там под капотом: как модели машинного обучения превращаются в строфы стихов, мелодию или группу пикселей новой картинки.
Слушать в iTunes и Overcast
Канал Алексея — @pathetic_low_freq
→ разметил посты про подкасты тэгом #подкаст (добавил #послушано)
Про сложность работы с медицинскими данными
Сложность начинается с самого начала: тяжело даже начать, придумать архитектуру и определить основные сущности. Например, «запись к врачу», это ещё не сам «визит».
Каждая информационная система пытается разработать свою схему для передачи данных ( шутка про «Было 14 стандартов…»).
Масштаб: 10 толковых программистов могут поддерживать работу ит-системы крупной больницы.
Интересно, что небольшие страны проще цифровизировать — там просто меньше элементов в системе. В таких странах гораздо проще достичь 100% цифровизации всей системы здравоохранения (в т.ч. задать стандарт).
Слушать в iTunes и Overcast
Тг-канал подкаста https://news.1rj.ru/str/ctodaily/1564
⌘⌘⌘
Про ML Art
На тему генеративного искусства позвали поговорить Алексея Тихонова — (со-)автора кучи разных тематических проектов: Нейронная оборона, НейроСкрябин, бота-наблюдателя за животными в нацпарке и многих других. А ещё Алексей пишет в свой канал «Жалкие низкочастотники».
Я одним глазом слежу за темой (на уровне чтения заголовков новостей и статей) и мне было интересно узнать что там под капотом: как модели машинного обучения превращаются в строфы стихов, мелодию или группу пикселей новой картинки.
Слушать в iTunes и Overcast
Канал Алексея — @pathetic_low_freq
→ разметил посты про подкасты тэгом #подкаст (добавил #послушано)
Apple Podcasts
Запуск завтра: Как происходит обмен медицинскими данными on Apple Podcasts
Show Запуск завтра, Ep Как происходит обмен медицинскими данными - 25 May 2022
👍5
Про отношения с источниками
Работа с источниками — это не только написать пайплайн, который забирает данные.
Иногда перед экстрактом надо доработать схему данных на источнике: например, добавить created_ts/updated_ts или проставлять флаг удаления вместо бесследного уничтожения строки.
И даже после того как пайплайн написан и поставлен на регулярный запуск тоже есть задачи: например, добиться, чтобы схема данных не менялась неожиданно. Для разработчиков на источнике тоже может быть новостью, что их данными теперь пользуется кто-то чужой, что эти данные больше не их единоличная собственность и теперь на них завязаны внешние процессы.
Колонки в схеме могут поменять название или даже содержимое, поставки могут неожиданно задержаться, а после восстановления окажется что данных за пропущенный период больше нет. Совсем.
Все эти кейсы надо обрабатывать и это тоже работа инженера данных. И решаются такие проблемы не через код, а через общение с людьми.
спасибо Семёну Осипову за поднятую тему дата-контрактов
https://news.1rj.ru/str/ohmydataengineer/245
Работа с источниками — это не только написать пайплайн, который забирает данные.
Иногда перед экстрактом надо доработать схему данных на источнике: например, добавить created_ts/updated_ts или проставлять флаг удаления вместо бесследного уничтожения строки.
И даже после того как пайплайн написан и поставлен на регулярный запуск тоже есть задачи: например, добиться, чтобы схема данных не менялась неожиданно. Для разработчиков на источнике тоже может быть новостью, что их данными теперь пользуется кто-то чужой, что эти данные больше не их единоличная собственность и теперь на них завязаны внешние процессы.
Колонки в схеме могут поменять название или даже содержимое, поставки могут неожиданно задержаться, а после восстановления окажется что данных за пропущенный период больше нет. Совсем.
Все эти кейсы надо обрабатывать и это тоже работа инженера данных. И решаются такие проблемы не через код, а через общение с людьми.
спасибо Семёну Осипову за поднятую тему дата-контрактов
https://news.1rj.ru/str/ohmydataengineer/245
Telegram
Труба данных
https://dataproducts.substack.com/p/the-rise-of-data-contracts
Сегодня будет горячая для меня тема: контракты данных. Начнем прямо с главного:
*Today, engineers have almost no incentive to take ownership of the data quality they produce outside operational…
Сегодня будет горячая для меня тема: контракты данных. Начнем прямо с главного:
*Today, engineers have almost no incentive to take ownership of the data quality they produce outside operational…
👍2
Данные как продукт
На прошлом Матемаркетинге был доклад типа «как научить всех SQL», чтобы разгрузить дата-инженеров от выгрузок а-ля select * from table в эксель.
Представьте ситуацию, когда все вокруг действительно знают SQL (и иногда даже лучше инженеров).
Добавьте к этому SQL-диалект, где можно задавать переменные и писать кастомные функции.
Плюс общедоступные запускаторы кастомных скриптов с низким порогов входа (всё настраивается через кубики в веб-админке).
И мы получаем глобальную песочницу, где стопицот аналитиков и менеджеров создали over 9000 выгрузок, таблиц и витрин, где потом сами считают нужные показатели с нужными разрезами к нужному часу.
Мы тут это называем «теневым» DWH.
И получается что тот самый «официальный» DWH, который делают инженеры данных совместно с бизнес-аналитикам — уже не единственная возможность получить доступ к тем самым данным и даже не является решением по умолчанию.
И теперь данные превращаются в продукт, пользователи — в клиентов, а команда DWH становится продакт-менеджерами посередине: нужно общаться с людьми, собирать требования, расставлять приоритеты в работе и «продавать» объекты в контуре DWH, приводя как аргументы их преимущества по сравнению с наколеночными сущностями. Заодно выясняя есть ли такие и нужно ли отдельно DWH в принципе =)
На прошлом Матемаркетинге был доклад типа «как научить всех SQL», чтобы разгрузить дата-инженеров от выгрузок а-ля select * from table в эксель.
Представьте ситуацию, когда все вокруг действительно знают SQL (и иногда даже лучше инженеров).
Добавьте к этому SQL-диалект, где можно задавать переменные и писать кастомные функции.
Плюс общедоступные запускаторы кастомных скриптов с низким порогов входа (всё настраивается через кубики в веб-админке).
И мы получаем глобальную песочницу, где стопицот аналитиков и менеджеров создали over 9000 выгрузок, таблиц и витрин, где потом сами считают нужные показатели с нужными разрезами к нужному часу.
Мы тут это называем «теневым» DWH.
И получается что тот самый «официальный» DWH, который делают инженеры данных совместно с бизнес-аналитикам — уже не единственная возможность получить доступ к тем самым данным и даже не является решением по умолчанию.
И теперь данные превращаются в продукт, пользователи — в клиентов, а команда DWH становится продакт-менеджерами посередине: нужно общаться с людьми, собирать требования, расставлять приоритеты в работе и «продавать» объекты в контуре DWH, приводя как аргументы их преимущества по сравнению с наколеночными сущностями. Заодно выясняя есть ли такие и нужно ли отдельно DWH в принципе =)
подкаст Data Heroes о релокейте и переезде в другую страну
Послушал два выпуска на схожие темы. Интересно, что они были записанных ещё весной, а до сих пор актуальны (тут мой внутренний мастер экстраполяций хочет сделать однозначный и долгосрочный прогноз).
Кажется, что рванули те, у кого были физические симптомы на окружающую действительность и/или те, кто уже давно обдумывал потенциальную поездку.
Уехавшие сталкиваются со сложностями во всём:
⁃ найти жильё по приемлемой цене
⁃ перевести рубли в местные деньги
⁃ привыкнуть к другому уровеню жизни и сервиса
Цены на жильё подскочили из-за возвросшего спроса (где-то звучат оценки типа в 3-5 раз).
Карты российских банков не принимают зарубежом, поэтому надо везти всё наличными, либо открывать промежуточную карту где-то в Армении или Турции, либо менять через крипту.
Жителям Москвы тяжело привыкать к тому, что нельзя заказать продукты с доставкой за 15 минут или ждать такси больше трёх минут.
Как приложение к подкасту: советы что не забыть и к чему быть готовым тем, кто ещё только обдумывает или уже собирается.
ссылки на подкаст-платформы в канале Left Join:
https://news.1rj.ru/str/leftjoin/617
https://news.1rj.ru/str/leftjoin/662
#послушано
Послушал два выпуска на схожие темы. Интересно, что они были записанных ещё весной, а до сих пор актуальны (тут мой внутренний мастер экстраполяций хочет сделать однозначный и долгосрочный прогноз).
Кажется, что рванули те, у кого были физические симптомы на окружающую действительность и/или те, кто уже давно обдумывал потенциальную поездку.
Уехавшие сталкиваются со сложностями во всём:
⁃ найти жильё по приемлемой цене
⁃ перевести рубли в местные деньги
⁃ привыкнуть к другому уровеню жизни и сервиса
Цены на жильё подскочили из-за возвросшего спроса (где-то звучат оценки типа в 3-5 раз).
Карты российских банков не принимают зарубежом, поэтому надо везти всё наличными, либо открывать промежуточную карту где-то в Армении или Турции, либо менять через крипту.
Жителям Москвы тяжело привыкать к тому, что нельзя заказать продукты с доставкой за 15 минут или ждать такси больше трёх минут.
Как приложение к подкасту: советы что не забыть и к чему быть готовым тем, кто ещё только обдумывает или уже собирается.
ссылки на подкаст-платформы в канале Left Join:
https://news.1rj.ru/str/leftjoin/617
https://news.1rj.ru/str/leftjoin/662
#послушано
Telegram
LEFT JOIN
🚀 Релокейт: куда валить и что делать? Ответим в третьем эпизоде DataHeroes 🦸🏻
Принять быстрое решение о релокейте в другую страну и переехать за считанные дни? ✈️ Добавим к этому последние события в мире, закрытые границы и заблокированные банковские счета…
Принять быстрое решение о релокейте в другую страну и переехать за считанные дни? ✈️ Добавим к этому последние события в мире, закрытые границы и заблокированные банковские счета…
👍3
Английский в вакууме не котируется
Когда искал первую работу, думал что могу просить больше просто за тот факт, что знаю английский. Типа как при покупке техники в магазине: набираешь разных опций и за каждую общая цена увеличивается на сколько-то.
Поработав какое-то время, понял, что за всё время никто меня так и не попросил поговорить по английски или прочитать что-то. Так это не работает.
Просто так складывается, что всё самое новое и интересное в отрасли сначала публикуется на английском. Если интересна отрасль, то идешь и изучаешь.
То есть я думал, что связь прямая:
английский → больше зарплата
А на самом деле она косвенная:
английский → изучаешь новое в первоисточниках → применяешь на практике → прокачиваешь навыки → больше зарплата
Тут важен именно последняя связка: больше навык → больше зп. Наверное, можно и без английского, но кажется это будет сложнее.
Когда искал первую работу, думал что могу просить больше просто за тот факт, что знаю английский. Типа как при покупке техники в магазине: набираешь разных опций и за каждую общая цена увеличивается на сколько-то.
Поработав какое-то время, понял, что за всё время никто меня так и не попросил поговорить по английски или прочитать что-то. Так это не работает.
Просто так складывается, что всё самое новое и интересное в отрасли сначала публикуется на английском. Если интересна отрасль, то идешь и изучаешь.
То есть я думал, что связь прямая:
английский → больше зарплата
А на самом деле она косвенная:
английский → изучаешь новое в первоисточниках → применяешь на практике → прокачиваешь навыки → больше зарплата
Тут важен именно последняя связка: больше навык → больше зп. Наверное, можно и без английского, но кажется это будет сложнее.
🔥11👍2
Есть ли смысл переезжать?
— Senior Software Vlogger
Посмотрел ёмкий ролик про релокацию айтишника в другую страну. Записал себе такие пункты:
https://www.youtube.com/watch?v=Xh5kzxvONtw
Это был «нулевой» урок из курса «Вы приняты», который Дима делает совместно с Фёдором Брощёвым и Марьяной Онысько (под видео в первом комменте есть промокод)
— Senior Software Vlogger
Посмотрел ёмкий ролик про релокацию айтишника в другую страну. Записал себе такие пункты:
• Для переезда нужно большая сумма: 5-10К $ • Снять жилье — как неместного попросят предоплату за 1-3 месяца • Экономить не получится — местные-то знают где что и как, а вы — пока нет • Две средних зарплаты — больше чем одна синьорская. Сколько членов вашей семьи будет работать? Если на текущем месте работают двое, а будет только один — это точно будет даунгрейд • Внимательно выбирать страну по набору критериев (учитывая их динамичность)https://www.youtube.com/watch?v=Xh5kzxvONtw
Это был «нулевой» урок из курса «Вы приняты», который Дима делает совместно с Фёдором Брощёвым и Марьяной Онысько (под видео в первом комменте есть промокод)
YouTube
Есть ли смысл переезжать?
Совместно с Федей Борщевым я запускаю курс о поиске работы за рубежом и подготовке к собеседованиям: https://education.borshev.com/relocate
Вы приняты3-недельный интенсив для программистов о поиске работы за рубежом. Составим шорт-лист компаний, где хочется…
Вы приняты3-недельный интенсив для программистов о поиске работы за рубежом. Составим шорт-лист компаний, где хочется…
👍3👎2
Каюты с муми-троллями
Покупал билеты на паром для семьи. При бронировании можно было выбрать простую каюту или каюту с рисунками с муми-троллями. Ну, думаю, сын оценит рисунки, будет как-то повеселее, тем более цена за каюты одинаковая.
По факту оказалось, что у кают и расположение похуже, и общее состояние можно описать как «пошарпанное». У нас, как клиентов, опыт использования обычной каюты оказался лучше, чем «особенной» — кажется, это не тот результат, на который рассчитывали.
Пока плыли, пришёл к тому что фичу с тематической каютой неправильно зарелизили в прод!
Допустим, на корабле обычных кают такого класса 1000, из них 10 с муми-троллями. При этом заполняемость парома не 100% (в непиковые дни по ощущениям ниже 50%), то есть «обычные» каюты вполне можно ротировать: заселять пассажиров в разные каюты при каждом рейсе.
Получается, что обычная каюта может пустовать один или даже несколько рейсов подряд. А муми-каюта выделятся для покупателей на этапе резервирования, поэтому такие каюты будут стабильно заняты при каждом рейсе. Выходит что износ у них будет выше, чем в среднем по больнице.
Это как «горячая нода» в распределённых системах, когда данные между узлами распределены неравномерно и общая эффективность системы снижается.
Правильнее было бы сделать цену на такую каюту выше обычной — возможно это снизило бы процент бронирований именно этих кают. А дополнительную выгоду направлять в фонд косметического ремонта.
А если идеологически нельзя наживаться на национальном достоянии, то впилить туда телик побольше и набор мультиков (тех самых!) — и чарджить экстра уже за технику, а не за мумиков.
Покупал билеты на паром для семьи. При бронировании можно было выбрать простую каюту или каюту с рисунками с муми-троллями. Ну, думаю, сын оценит рисунки, будет как-то повеселее, тем более цена за каюты одинаковая.
По факту оказалось, что у кают и расположение похуже, и общее состояние можно описать как «пошарпанное». У нас, как клиентов, опыт использования обычной каюты оказался лучше, чем «особенной» — кажется, это не тот результат, на который рассчитывали.
Пока плыли, пришёл к тому что фичу с тематической каютой неправильно зарелизили в прод!
Допустим, на корабле обычных кают такого класса 1000, из них 10 с муми-троллями. При этом заполняемость парома не 100% (в непиковые дни по ощущениям ниже 50%), то есть «обычные» каюты вполне можно ротировать: заселять пассажиров в разные каюты при каждом рейсе.
Получается, что обычная каюта может пустовать один или даже несколько рейсов подряд. А муми-каюта выделятся для покупателей на этапе резервирования, поэтому такие каюты будут стабильно заняты при каждом рейсе. Выходит что износ у них будет выше, чем в среднем по больнице.
Это как «горячая нода» в распределённых системах, когда данные между узлами распределены неравномерно и общая эффективность системы снижается.
Правильнее было бы сделать цену на такую каюту выше обычной — возможно это снизило бы процент бронирований именно этих кают. А дополнительную выгоду направлять в фонд косметического ремонта.
А если идеологически нельзя наживаться на национальном достоянии, то впилить туда телик побольше и набор мультиков (тех самых!) — и чарджить экстра уже за технику, а не за мумиков.
👍13🔥4
🥸 короткий и дельный совет от Игоря Мосягина — добавлять эмоджи в отладочные логи, чтобы было заметнее
это из доклада на конференции SmartData — там сегодня community day, можно посмотреть доклады бесплатно 👀
это из доклада на конференции SmartData — там сегодня community day, можно посмотреть доклады бесплатно 👀
👍8
Выпуск Data Coffee про собеседования
Три лида́ обсуджают как они проводят собеседования для инженеров данных:
⁃ Сколько по времени должно быть собеседование — нормально ли заканчивать их досрочно, если по кандидату точно «да» или точно «нет».
⁃ Сколько вообще может быть этапов у процесса найма.
⁃ Чем отличаются задачи для джунов, мидлов и синьоров. С какого-то уровня помимо основных инструментов (SQL+Python/Scala) требуется понимать и общую архитектуру (и альтернативные варианты с их плюсами и минусами).
⁃ Зачем сотруднику присоединятся к клубу собеседующих — прокачивает техническую насмотренность и помогает точнее сориентировать свой уровень относительно других.
⁃ И отдельно про навык проговаривания будущего решения на собеседованиях. Не меньше чем на само умение решать задачи собеседующие смотрят на умение снять требования, предусмотреть корнер-кейсы, согласовать решение и его имплементировать, итеративно сверяя направление с «заказчиком».
Слушать в iTunes и Overcast
Ещё ссылки в канале подкаста
Три лида́ обсуджают как они проводят собеседования для инженеров данных:
⁃ Сколько по времени должно быть собеседование — нормально ли заканчивать их досрочно, если по кандидату точно «да» или точно «нет».
⁃ Сколько вообще может быть этапов у процесса найма.
⁃ Чем отличаются задачи для джунов, мидлов и синьоров. С какого-то уровня помимо основных инструментов (SQL+Python/Scala) требуется понимать и общую архитектуру (и альтернативные варианты с их плюсами и минусами).
⁃ Зачем сотруднику присоединятся к клубу собеседующих — прокачивает техническую насмотренность и помогает точнее сориентировать свой уровень относительно других.
⁃ И отдельно про навык проговаривания будущего решения на собеседованиях. Не меньше чем на само умение решать задачи собеседующие смотрят на умение снять требования, предусмотреть корнер-кейсы, согласовать решение и его имплементировать, итеративно сверяя направление с «заказчиком».
Слушать в iTunes и Overcast
Ещё ссылки в канале подкаста
Apple Podcasts
54 (S2E12). Беседа про собеседования
Podcast Episode · Data Coffee · 06/25/2022 · 1h 13m
👍6