https://x.com/WebStormIDE/status/1849447048828842234
Пишут что WebStorm теперь бесплатен для некоммерческой разработки
Пишут что WebStorm теперь бесплатен для некоммерческой разработки
🔥26😁5👍4🎉4
Я уже 8 лет в Firebase (как по мне, на 6 лет больше, чем надо было).
И призадумался, по каким принципам я выбираю где работать, и как мое отношение поменялось за последнее время.
Ниже расскажу, расскажу, каким мотивации были у меня за мою карьеру, и что для меня сейчас.
1. Платили бы деньги, остальное пофигу
По такому принципу я нашёл свою первую работу, точнее мне нашли родители, и я остался. Я только закончил универ, и не знал чем хочу заниматься. Родители помогли мне попасть в небольшое НКО, которое рассылало врачей в разные страны во время катастроф. Я насраивал компьютеры и чинил принтеры, было скучновато, но зато оставалось свободное время, на курсэру и фриланс.
Через два года я понимал себя немного лучше, и искал работу по следующему принципу:
2. Инструменты и умения
Всё своё детство я использовал язык JavaScript, который долгое время считался ненастоящим языком для всякой фигни. Не зная других языков не знал, я делал на нём сложные и интересные штуки. Со временем JS стал использоваться для разработки сложных приложений, а у меня к тому времени уже было 15 минут лет опыта.
Я подумал, что было бы интересно именно этим заниматься для работы, разослал свое резюме и меня позвали работать финансовым консультантом и перевезли в Нью Йорк. Там я проработал 2 года (и не выучил примерно ничего про финансы)
3. Культура
Через пару лет новизна пропала, а я прочел книгу Ласло Бока "Work Rules!", про культуру Google.
В моей компании в целом было норм, было много умных и талантливых людей, но в Гугле как будто люди верили, что работа может быть в кайф.
20%е проекты, культура доверия, Googlegeist, аналитика для всего, и возможность вздремнуть. Это еще до ништяков вроде бесплатной еды, игровых комнат и мемов.
Пройдя все раунды интервью, свою первую команду, я выбирал по принципу инструментов. Все кроме одной предложенное мне команды использовали технологии, который не были релевантны вне Гугла и не были мне интересны. И только в Doubleclick использовали Angular (да еще и второй), который тогда был на хайпе и был мне интересен, туда и пошёл.
Проработав там год, я понял, что реклама ещё скучнее чем финансы, и мне захотелось убежать. Я понял, что хочу работать над чем-то, что мне близко.
4. Продукт/домен
Во время длинной поездки в кафе на лифте, я увидел, что Firebase ищет программиста. Я очень любил и много использовал их базу данных и мне захотелось туда, а еще они использовали Angular.
Вот чего я не знал, что когда google купил Firebase, он добавил туда несколько продуктов для маркетинга, на которые мне было совершенно плевать, и разумееся именно этими продуктами занималась моя новое команда в Нью Йорке.
Это меня расстроило, но я начал искать возможности поработать над продуктами которые нравились мне. Через какое-то время мы с менеджером смогли выбить мне небольшую фичу в хостинге (интересном мне продукте) в качестве теста,
Я быстро и хорошо всё сделал, и через какое-то время стал владельцем всего хостинга. Дальше к нам перенесли все остальные продукты для разработчиков.
За те 8 лет, что я был на этой работе, я призадумывался о новых для меня мотивациях
5. Задачи и сам процесс
Бывает, что просто нравится заниматься чем-то конкретным, а за это и деньги платят, сидишь себе в потоке, получаешь удовольствие.
Я это особо не учитываю, потому что в целом мне обычно норм на всех работах.
6. Люди
Такую мотивацию я подслушал у Ильи, с которым мы несколько лет назад развели крутой движ по организации митапов. Это было супер весело, и я до сих пор вспоминаю этот период с теплотой (привет Рома).
В какой-то момент он поделился, что ему вообще плевать над чем работать, и с какими технологиями, главное - с кем.
Это заставило меня призадуматься. Я никогда не жаловался не людей вокруг меня, почти все были умны, адекватны, а многие поталантливее меня.
При этом очень редко случалась синергия, как с тем же Ильей, когда ты вроде собирался обсудить одну идею, а к концу разговора придумал еще 5, и загорелся всеми.
Вообще хочу, но найти таких людей очень сложно.
7. Сложные задачи / Жесть
Как-то @chicoxyzzy (вроде
И призадумался, по каким принципам я выбираю где работать, и как мое отношение поменялось за последнее время.
Ниже расскажу, расскажу, каким мотивации были у меня за мою карьеру, и что для меня сейчас.
1. Платили бы деньги, остальное пофигу
По такому принципу я нашёл свою первую работу, точнее мне нашли родители, и я остался. Я только закончил универ, и не знал чем хочу заниматься. Родители помогли мне попасть в небольшое НКО, которое рассылало врачей в разные страны во время катастроф. Я насраивал компьютеры и чинил принтеры, было скучновато, но зато оставалось свободное время, на курсэру и фриланс.
Через два года я понимал себя немного лучше, и искал работу по следующему принципу:
2. Инструменты и умения
Всё своё детство я использовал язык JavaScript, который долгое время считался ненастоящим языком для всякой фигни. Не зная других языков не знал, я делал на нём сложные и интересные штуки. Со временем JS стал использоваться для разработки сложных приложений, а у меня к тому времени уже было 15 минут лет опыта.
Я подумал, что было бы интересно именно этим заниматься для работы, разослал свое резюме и меня позвали работать финансовым консультантом и перевезли в Нью Йорк. Там я проработал 2 года (и не выучил примерно ничего про финансы)
3. Культура
Через пару лет новизна пропала, а я прочел книгу Ласло Бока "Work Rules!", про культуру Google.
В моей компании в целом было норм, было много умных и талантливых людей, но в Гугле как будто люди верили, что работа может быть в кайф.
20%е проекты, культура доверия, Googlegeist, аналитика для всего, и возможность вздремнуть. Это еще до ништяков вроде бесплатной еды, игровых комнат и мемов.
Пройдя все раунды интервью, свою первую команду, я выбирал по принципу инструментов. Все кроме одной предложенное мне команды использовали технологии, который не были релевантны вне Гугла и не были мне интересны. И только в Doubleclick использовали Angular (да еще и второй), который тогда был на хайпе и был мне интересен, туда и пошёл.
Проработав там год, я понял, что реклама ещё скучнее чем финансы, и мне захотелось убежать. Я понял, что хочу работать над чем-то, что мне близко.
4. Продукт/домен
Во время длинной поездки в кафе на лифте, я увидел, что Firebase ищет программиста. Я очень любил и много использовал их базу данных и мне захотелось туда, а еще они использовали Angular.
Вот чего я не знал, что когда google купил Firebase, он добавил туда несколько продуктов для маркетинга, на которые мне было совершенно плевать, и разумееся именно этими продуктами занималась моя новое команда в Нью Йорке.
Это меня расстроило, но я начал искать возможности поработать над продуктами которые нравились мне. Через какое-то время мы с менеджером смогли выбить мне небольшую фичу в хостинге (интересном мне продукте) в качестве теста,
Я быстро и хорошо всё сделал, и через какое-то время стал владельцем всего хостинга. Дальше к нам перенесли все остальные продукты для разработчиков.
За те 8 лет, что я был на этой работе, я призадумывался о новых для меня мотивациях
5. Задачи и сам процесс
Бывает, что просто нравится заниматься чем-то конкретным, а за это и деньги платят, сидишь себе в потоке, получаешь удовольствие.
Я это особо не учитываю, потому что в целом мне обычно норм на всех работах.
6. Люди
Такую мотивацию я подслушал у Ильи, с которым мы несколько лет назад развели крутой движ по организации митапов. Это было супер весело, и я до сих пор вспоминаю этот период с теплотой (привет Рома).
В какой-то момент он поделился, что ему вообще плевать над чем работать, и с какими технологиями, главное - с кем.
Это заставило меня призадуматься. Я никогда не жаловался не людей вокруг меня, почти все были умны, адекватны, а многие поталантливее меня.
При этом очень редко случалась синергия, как с тем же Ильей, когда ты вроде собирался обсудить одну идею, а к концу разговора придумал еще 5, и загорелся всеми.
Вообще хочу, но найти таких людей очень сложно.
7. Сложные задачи / Жесть
Как-то @chicoxyzzy (вроде
❤11👍2
где-то на стриме https://www.youtube.com/watch?v=BqwTOc8roR4, но не уверен) рассказывал как он искал свою первую работу, и история была такая, что он искал только самую сложную и интересную жесть, и в результате попал в какое-то низкоуровневое программирование.
Это со мной очень сильно срезанировало, у меня вызывает огромное уважение такой подход: именно супер сложные и редкие задачи могут дать уникальный опыт и помочь стать ценным специалистом в узкой области. К тому же это сильно веселее, чем делать то же, что и все.
Не знаю, хватит ли мне смелости искать работу по такому принципу, было бы круто, если бы я задумался о таком в начале карьеры. Но не буду говорить "никогда".
Серёжа продолжает работать над сложными низкоуровневыми вещами, и даж был приглашенным экспертом в TC39.
8. Идеальное совпадение
Это когда твоим стремлением предпочтением и умениям находится какой-то идеальное место, где именно ты можешь сделать лучше всех.
Мне кажется, что это часто вытекает из предыдущего пункта.
Например Алексей Козятинский (https://www.linkedin.com/in/alexey-kozy), который работал в Chrome Dev Tools в Google, а после ушел в Netflix интегрировать те же самые Dev Tools, мне кажется было бы очень сложно найти более релевантного кандидата.
Или Anthony Levandowski, который начал свою карьеру с того, что пытался научить мотоцикл ездить сам в 2003, потом создал отдел самоуправляемых машин в Гугле, и в 2016 году был куплен Убером, и стал там делать то же самое. Закончилось правда не оч хорошо, но
9. Работа на себя
В случае, когда есть умения, или идеи, которые можно продать напрямую, можно работать на себя, мне пока не оч ясен путь туда, но я регулярно задумываюсь об этом.
10+, всякие другие причины
Есть еще много других причин, типа влияния на мир, стабильность, репутация и престиж, автономия и пр. которые лично мне либо менее важны, либо отсутствие которых мне не удалось пока прочувствовать на себе.
Это со мной очень сильно срезанировало, у меня вызывает огромное уважение такой подход: именно супер сложные и редкие задачи могут дать уникальный опыт и помочь стать ценным специалистом в узкой области. К тому же это сильно веселее, чем делать то же, что и все.
Не знаю, хватит ли мне смелости искать работу по такому принципу, было бы круто, если бы я задумался о таком в начале карьеры. Но не буду говорить "никогда".
Серёжа продолжает работать над сложными низкоуровневыми вещами, и даж был приглашенным экспертом в TC39.
8. Идеальное совпадение
Это когда твоим стремлением предпочтением и умениям находится какой-то идеальное место, где именно ты можешь сделать лучше всех.
Мне кажется, что это часто вытекает из предыдущего пункта.
Например Алексей Козятинский (https://www.linkedin.com/in/alexey-kozy), который работал в Chrome Dev Tools в Google, а после ушел в Netflix интегрировать те же самые Dev Tools, мне кажется было бы очень сложно найти более релевантного кандидата.
Или Anthony Levandowski, который начал свою карьеру с того, что пытался научить мотоцикл ездить сам в 2003, потом создал отдел самоуправляемых машин в Гугле, и в 2016 году был куплен Убером, и стал там делать то же самое. Закончилось правда не оч хорошо, но
9. Работа на себя
В случае, когда есть умения, или идеи, которые можно продать напрямую, можно работать на себя, мне пока не оч ясен путь туда, но я регулярно задумываюсь об этом.
10+, всякие другие причины
Есть еще много других причин, типа влияния на мир, стабильность, репутация и престиж, автономия и пр. которые лично мне либо менее важны, либо отсутствие которых мне не удалось пока прочувствовать на себе.
YouTube
WebWorkers, Atomics, ShareArrayBuffers с @chicoxyzzy
👷♂️Разберемся что такое (и зачем) COOP/COEP
👷♂️Потыкаем Atomics и SharedArrayBuffer
👷♂️создадим фунции для работы с LocalStorage из WebWorker с возможностью синхронного вызова
👷♂️Напишем свою либу (если успеем)
👷♂️Потыкаем Atomics и SharedArrayBuffer
👷♂️создадим фунции для работы с LocalStorage из WebWorker с возможностью синхронного вызова
👷♂️Напишем свою либу (если успеем)
🔥17❤5
После 8 лет в Firebase, сегодня мой первый день в Angular Core 🔥
Я использую Angular больше 10 лет, начиная с angularJS, организовывал митапы, делал кодлабы, и Пулл Реквесты, звал ребят из команды на стримы, и поработать в команде мне кажется логичным продолжением.
Отдельно мы обговорили стримы про Angular, которые теперь часть моей работы, их я постараюсь сделать более регулярными
Пока прохожу онбординг, и предвкушаю свою первую фичу.
Я использую Angular больше 10 лет, начиная с angularJS, организовывал митапы, делал кодлабы, и Пулл Реквесты, звал ребят из команды на стримы, и поработать в команде мне кажется логичным продолжением.
Отдельно мы обговорили стримы про Angular, которые теперь часть моей работы, их я постараюсь сделать более регулярными
Пока прохожу онбординг, и предвкушаю свою первую фичу.
YouTube
PR to Angular
Share your videos with friends, family, and the world
🔥122👍14❤9🎉2
Angular 19 зарелизился 3 минуты назад, посмотрим на днях на стриме
https://www.youtube.com/watch?v=JvkX2_46gUY
Описание фичей можно почитать у @igor_katsuba
https://www.youtube.com/watch?v=JvkX2_46gUY
Описание фичей можно почитать у @igor_katsuba
YouTube
Angular v19 Developer Event
Join the Angular team as we unveil the latest features for Angular v19.
You can expect news about the future of hydration, developer experience improvements, updated APIs and more.
Chapters:
0:00 - Intro
1:22 - The future of Angular
3:18 - How Angular…
You can expect news about the future of hydration, developer experience improvements, updated APIs and more.
Chapters:
0:00 - Intro
1:22 - The future of Angular
3:18 - How Angular…
👍18❤6🔥6
Я сегодня выдумал несложные тест для LLM моделей на умение писать код, и игрался с ним все утро.
Мне всегда было сложно оценить, насколько мощна та или иная LLM модель, т.к. большинство задач были либо слишком простые и решались всеми, либо слишком сложными, и не решались никем.
В результате я прошу модель написать код, который разбивает слова (и предложения) по слогам, так чтобы пройти 15 тестов из таблицы внизу. И вот все утро я пробую разные варианты, и смотрю, у кого сколько из 15 получается.
Тесты закинул в комменты, потом добавлю еще кейсов.
Результаты получились такие:
upd: по совету @vitalypavlenko попробовал Claude sonnet (claude-3-5-sonnet-20241022) в курсоре с агентами - мгновенно выдал результат 14/15, потом сразу 15/15
✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅
Claude sonnet (claude-3-5-sonnet) в курсоре с агентами - Мгновенно выдал результат 13/15, потом 14/15, потом 15/15
✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅
Вчера я потратил с ним час, и он еле добрался до 14/15
Gemini 2.0 flash - Мгновенно выдал результат 13/15
Самый короткий и простой код
✅✅✅✅✅✅✅✅✅✅✅✅✅⛔⛔
ChatGTP O1 - Думал 4:32, результат 13/15
✅✅✅✅✅✅✅✅✅✅✅✅✅⛔⛔
Claude sonnet - Мгновенно выдал результат 4/15
✅✅✅✅⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔
Но пожаловался, что нагрузка велика, поэтому он выдает плохие ответы
ChatGPT 4O в курсоре выдал 4/15, запустил тесты, переделал, запустил тесты, завис, переделал, и попал в странный цикл, где он ничего не менял, но постоянно запускал тесты
✅✅✅✅⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔
Но пожаловался, что нагрузка велика, поэтому он выдает плохие ответы
Мне всегда было сложно оценить, насколько мощна та или иная LLM модель, т.к. большинство задач были либо слишком простые и решались всеми, либо слишком сложными, и не решались никем.
В результате я прошу модель написать код, который разбивает слова (и предложения) по слогам, так чтобы пройти 15 тестов из таблицы внизу. И вот все утро я пробую разные варианты, и смотрю, у кого сколько из 15 получается.
Тесты закинул в комменты, потом добавлю еще кейсов.
Результаты получились такие:
upd: по совету @vitalypavlenko попробовал Claude sonnet (claude-3-5-sonnet-20241022) в курсоре с агентами - мгновенно выдал результат 14/15, потом сразу 15/15
✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅
Claude sonnet (claude-3-5-sonnet) в курсоре с агентами - Мгновенно выдал результат 13/15, потом 14/15, потом 15/15
✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅
Вчера я потратил с ним час, и он еле добрался до 14/15
Gemini 2.0 flash - Мгновенно выдал результат 13/15
Самый короткий и простой код
✅✅✅✅✅✅✅✅✅✅✅✅✅⛔⛔
ChatGTP O1 - Думал 4:32, результат 13/15
✅✅✅✅✅✅✅✅✅✅✅✅✅⛔⛔
Claude sonnet - Мгновенно выдал результат 4/15
✅✅✅✅⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔
Но пожаловался, что нагрузка велика, поэтому он выдает плохие ответы
ChatGPT 4O в курсоре выдал 4/15, запустил тесты, переделал, запустил тесты, завис, переделал, и попал в странный цикл, где он ничего не менял, но постоянно запускал тесты
✅✅✅✅⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔
Но пожаловался, что нагрузка велика, поэтому он выдает плохие ответы
| Word | Hyphenation
|-------------------------|-----------
| мама | ма-ма
| страна | стра-на
| мама, папа | ма-ма, па-па
| ёлка | ёл-ка
| стрст | стрст
| рукавом? | ру-ка-вом?
| тропинку | тро-пин-ку
| завесила. | за-ве-си-ла.
| грустно | груст-но
| собеседование | со-бе-се-до-ва-ни-е
| инфраструктура | ин-фра-струк-ту-ра
| восстановление | вос-ста-нов-ле-ни-е |
👍9🔥4❤2
Сегодня на внезапном стриме вспоминаю как стримить.
https://www.twitch.tv/kirjs
https://www.youtube.com/watch?v=spk5_xI1J34
https://www.twitch.tv/kirjs
https://www.youtube.com/watch?v=spk5_xI1J34
Twitch
kirjs - Twitch
Пилим Open Source, Смотрим интересные либы и зовем их авторов. Front-end и Angular.(Еще отвечаю на вопросы по Firebase)
👏8👀8🔥2❤🔥1
Сегодня на внезапном стриме напишем свой deep signal.
https://www.youtube.com/watch?v=PFUCdYWI9aY
https://www.twitch.tv/kirjs
https://www.youtube.com/watch?v=PFUCdYWI9aY
https://www.twitch.tv/kirjs
YouTube
LiveCoding: Напишем свой DeepSignal
🔥7👍3
https://github.com/dlight-js/dlight
Скинули либу с интересным подходом к рендерингу.
Было бы интересно поковырять на стриме, как работает реактивность, и как они перехватывают создание строк
Скинули либу с интересным подходом к рендерингу.
Было бы интересно поковырять на стриме, как работает реактивность, и как они перехватывают создание строк
🔥16
На внезапном стриме в 20:10 по мск (это прямо сейчас) Попробуем написать свои сигналы, и разберемся, как они устроены внутри
👀 Посмотреть: twitch.tv/kirjs | youtu.be/IvPOWJuVpZ0
👀 Посмотреть: twitch.tv/kirjs | youtu.be/IvPOWJuVpZ0
👍5🌚1
На внезапном стриме прямо сейчас попробуем написать свои сигналы, и разберемся, как они устроены внутри, сегодня добавим эффекты и untracked
👀 Посмотреть: twitch.tv/kirjs | youtu.be/Qpqn8eSWBQQ
🗣 Пообщаться голосом: twitch.tv/kirjs
👀 Посмотреть: twitch.tv/kirjs | youtu.be/Qpqn8eSWBQQ
🗣 Пообщаться голосом: twitch.tv/kirjs
👍7
Forwarded from Denis Chernov
осваиваю работу с генерацией изображений. Пока сделал вот такие обои. Как вам?
👍21🔥9👎5🏆1🍓1🦄1
На внезапном стриме (через 5 минут) в 20:35 по мск Продолжим писать свои сигналы, и разберемся, как они устроены внутри, сегодня допилим эффекты и добавим untracked и может быть batch
👀 Посмотреть: twitch.tv/kirjs | youtu.be/NgzzAYg3XGM
👀 Посмотреть: twitch.tv/kirjs | youtu.be/NgzzAYg3XGM
🔥3👍2
Команда Angular выкатила 2 RFC для Ресурсов:
Архетиктурный - https://github.com/angular/angular/discussions/60120
API - https://github.com/angular/angular/discussions/60121
Есть много интересных идей, о будущем получения данных в Ангуларе, посмотрим на стриме завтра.
Также шлите там свои мысли в комментах :)
Архетиктурный - https://github.com/angular/angular/discussions/60120
API - https://github.com/angular/angular/discussions/60121
Есть много интересных идей, о будущем получения данных в Ангуларе, посмотрим на стриме завтра.
Также шлите там свои мысли в комментах :)
GitHub
[Complete] Resource RFC 1: Architecture · angular angular · Discussion #60120
Welcome to the Resource RFC! This RFC is split into two parts. The first (this discussion) covers the choice of resource as the async primitive for Angular, and the potential benefits and consequen...
🔥10👍3
На внезапном раннем стриме в 18:30 по мск Посмотрим Resource/HttpResource, и планы у Angular на получение данных в целом.
⭐ Почитаем оба RFC
⭐ Запустим и попробуем использовать
⭐ Ответим на ваши вопросы
⭐ Может напишем короткую статью
👀 Посмотреть: twitch.tv/kirjs | youtu.be/ZUMtlRl5HlI
⭐ Почитаем оба RFC
⭐ Запустим и попробуем использовать
⭐ Ответим на ваши вопросы
⭐ Может напишем короткую статью
👀 Посмотреть: twitch.tv/kirjs | youtu.be/ZUMtlRl5HlI
👍1
Посмотрел на стриме ресурсы, в частности httpResource
Создал StackBlitz в котором можно с ним поиграться.
Если вкратце, то он берет сигнал с
Згружает данные и предоставляет статус, значение (сначала undefined) и всякие другие полезные штуки
При изменении зависимостей,
Под капотом используется HttpClient, так что все интерсепторы должны работать.
Пока может быть использован только для чтения.
Из приятного, по умолчанию автоматически использует JSON и возвращает распаршеный результат. Но можно использовать
Создал StackBlitz в котором можно с ним поиграться.
Если вкратце, то он берет сигнал с
HTTP
ссылкой:readonly catId = signal()
readonly cats = httpResource<Array<Cat>>(
() => `https://cataas.com/cat/${this.catId()}`
);
Згружает данные и предоставляет статус, значение (сначала undefined) и всякие другие полезные штуки
cat.isLoading()
cat.hasData() // Сужает тип
cat.value() // Значение, изначально undefined, потом кот
При изменении зависимостей,
catId.set('3')
, ресурс автоматически перезапустится, и обновит данные, также можно сделать это и вручную (cats.reload()
).Под капотом используется HttpClient, так что все интерсепторы должны работать.
Пока может быть использован только для чтения.
Из приятного, по умолчанию автоматически использует JSON и возвращает распаршеный результат. Но можно использовать
httpResource.text(/**/)
, httpResource.blob
или httpResource.arrayBufferYouTube
Новый Resource, HttpResource и все его RFC
🔥10👍6❤1
Через 20 минут, должна быть сессия "What's new in Angular" на Google I/O. Я буду там отвечать на вопросы и модерировать чат, приходите поздороваться:
https://www.youtube.com/live/XASRYAR7S5w
https://www.youtube.com/live/XASRYAR7S5w
YouTube
Web Stage - Day 2 (Google I/O 2025)
*Session 1: What's new in web UI (10:00 AM - 11:00 AM, PT)*
Prepare to be dazzled by a symphony of fluidity, dynamism, and expressive power as we unveil the next generation of web UI. It’s a world where user experiences transcend the ordinary and developers…
Prepare to be dazzled by a symphony of fluidity, dynamism, and expressive power as we unveil the next generation of web UI. It’s a world where user experiences transcend the ordinary and developers…
🔥18👍10