kirjs_ru @kirjs_ru Channel on Telegram

kirjs_ru

@kirjs_ru


Стримлю про front-end, Open Source, Angular приходите ко мне на стрим :)

@kirjs | https://www.twitch.tv/kirjs

kirjs_ru (Russian)

Добро пожаловать на канал kirjs_ru! Если вы интересуетесь front-end разработкой, Open Source проектами или Angular, то это место для вас. Здесь вы сможете найти интересные стримы, посвященные тематике веб-разработки.

kirjs_ru - это канал, в котором вы сможете узнать много интересного о front-end разработке, участвовать в обсуждениях и задавать вопросы. Общайтесь с другими участниками, делитесь опытом и открывайте для себя новые технологии.

За стримами на канале следит @kirjs, который с радостью поделится своими знаниями и опытом с вами. Присоединяйтесь к нам на стримы и узнайте много интересного о веб-разработке.

Не упустите возможность быть в курсе последних тенденций в front-end разработке. Подписывайтесь на канал kirjs_ru и следите за обновлениями. Вместе мы сможем создавать удивительные вещи в мире веб-технологий!

kirjs_ru

19 Nov, 17:04


Angular 19 зарелизился 3 минуты назад, посмотрим на днях на стриме
https://www.youtube.com/watch?v=JvkX2_46gUY

Описание фичей можно почитать у @igor_katsuba

kirjs_ru

18 Nov, 16:42


После 8 лет в Firebase, сегодня мой первый день в Angular Core 🔥

Я использую Angular больше 10 лет, начиная с angularJS, организовывал митапы, делал кодлабы, и Пулл Реквесты, звал ребят из команды на стримы, и поработать в команде мне кажется логичным продолжением.

Отдельно мы обговорили стримы про Angular, которые теперь часть моей работы, их я постараюсь сделать более регулярными

Пока прохожу онбординг, и предвкушаю свою первую фичу.

kirjs_ru

16 Nov, 12:39


Я уже 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 (вроде

kirjs_ru

16 Nov, 12:39


где-то на стриме 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+, всякие другие причины
Есть еще много других причин, типа влияния на мир, стабильность, репутация и престиж, автономия и пр. которые лично мне либо менее важны, либо отсутствие которых мне не удалось пока прочувствовать на себе.

kirjs_ru

24 Oct, 13:53


https://x.com/WebStormIDE/status/1849447048828842234
Пишут что WebStorm теперь бесплатен для некоммерческой разработки

kirjs_ru

22 Oct, 16:36


https://x.com/rowancheung/status/1848743700702130474

Теперь роботы смогут управлять компьютером, надо протестировать на стриме.

Хоть и страшно капец

kirjs_ru

09 Oct, 14:16


Хочу посоветовать книжку про историю AI: Genius Makers: The Mavericks Who Brought AI to Google, Facebook, and the World

Особенно учитывая, что двое из героев книжки получили на днях Нобелевку в двух разных номинациях.

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

Лично для себя узнал со стороны о процессах, которые происходили в Гугле последние годы, разобрался, что за шум был с project Maven, и понял почему я в 2016/2017 годах ездил в Китай, и почему потом перестал.

Узнал о книге отсюда:
https://t.me/new_yorko_times/306

kirjs_ru

04 Oct, 18:28


Я активно юзаю голосовой режим в ChatGPT, и хотелось сразу его запускать с рабочего стола. Для Android Есть два варианта:

Долгое нажатие на ChatGPT -> Перетаскиваем Voice на рабочий стол (также можно и с фото сделать)
Использовать ChatGPT виджет

kirjs_ru

03 Oct, 17:55


https://openai.com/index/introducing-canvas/
Интересная новая штуковина, погляжу на днях на стриме

kirjs_ru

02 Oct, 12:37


Сегодня на внезапном стриме в 19:00 с Виталием Павленко (@vitalypavlenko):

Пишем React трекер привычек с AI-IDE Cursor.com

🎵 Разобьем на таски с помощью AI
🎵 Попросим AI накодить, посмотрим что получится
🎵 Попробуем голосовой ввод

📺 Посмотреть: twitch.tv/kirjs | youtu.be/NVnHvsuc5Fc
Шаблон: https://github.com/vpavlenko/web-2024-template

kirjs_ru

26 Sep, 15:56


Вчера попробовал новый Advanced Voice Mode в ChatGTP.

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

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

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

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

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

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

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

Жду когда уберут лимит на 30 минут.

kirjs_ru

25 Aug, 18:17


На внезапном стриме в 20:40 по мск Посмотрим c Денисом достаточно ли курсор умный, чтобы разобраться в кодовой базе Angular и починить какой-нибудь баг, или пока не готов?

👀 Посмотреть: twitch.tv/kirjs | youtu.be/GC160fgkKas

🗣 Пообщаться голосом: twitch.tv/kirjs

kirjs_ru

11 Jul, 15:54


Introducing @let in Angular https://blog.angular.dev/introducing-let-in-angular-686f9f383f0f

kirjs_ru

14 Jun, 14:16


Upd: Стрим про ноты будет в 8 вечера (через 2 часа и 15 минут), на картинке было неправильное время.

📺 Посмотреть: twitch.tv/kirjs | youtu.be/zVuvWDFTpOc

kirjs_ru

13 Jun, 17:14


В Пятницу вечером в 20:00 с Виталием Павленко (@vitalypavlenko):

🎵 Посмотрим сайт rawl.rocks
🎵 Поболтаем о музыкальной теории
🎵 Обсудим код, интересные технические решения

📺 Посмотреть: twitch.tv/kirjs | youtu.be/zVuvWDFTpOc

🎶 rawl.rocks

kirjs_ru

26 Apr, 16:57


На внезапном стриме в 20:00 по мск Сделаем сайт с аккордами на фреймвоке analogjs.org

👀 Посмотреть: twitch.tv/kirjs | youtu.be/oRr_GCSQwMY

🗣 Пообщаться голосом: twitch.tv/kirjs

kirjs_ru

19 Apr, 16:04


Минко на связи! приносите свои вопросы, у нас час
Можете спрашивать на русском, я переведу (или на Болгарском)
twitch.tv/kirjs | youtu.be/ZryO1zl4TEM

kirjs_ru

18 Apr, 17:10


В предверии нового релиза, завтра (в Пятницу, 19 Апреля) в 19:00 по Москве к нам на стрим придет Минко Гечев из команды Angular.

На стриме мы обсудим куда движется Angular и дальнейший планы. Приходите и задавайте свои вопросы.

⚠️ Стрим будет на английском

📺 Посмотреть: twitch.tv/kirjs | youtu.be/ZryO1zl4TEM
📚 angular.dev | twitter.com/mgechev

kirjs_ru

20 Mar, 18:29


На ng-conf объявили, что будут объединять Angular и wiz (внутре-гугловый фреймворк), посмотрим на днях на стриме что это значит.

https://twitter.com/sarah_edo/status/1770478763253379488?s=46&t=k9l-HypAj6tWJpDQhKBKCw

https://www.youtube.com/watch?v=nIBseTi6RVk&t=1s

kirjs_ru

29 Feb, 12:24


Появление React ребята из Facebook часто объясняют примерно вот так:

В далеком 2013 году в Facebook Chat часто появлялись фантомные сообщения: уведомление приходило, иконка загоралась, а самого сообщения не было.

Это было вызвано ужасным императивным кодом, а чтобы это починить и был придуман React.


У меня всегда были вопросы к этому объяснению. А вчера Adam Wolff причастный к разработке добавил деталей:

Да, React, был действительно создан для решения проблемы фантомных уведомлений, но эту проблему он в результате не решил, потому что проблема на самом деле была в кривых настройках DNS где-то в Индии, и когда DNS починили проблема ушла.

https://twitter.com/dmwlff/status/1762885255030259854?s=20

kirjs_ru

21 Dec, 16:40


Рекомендую ставить на репите, пока вы спите, и JavaScript мудрость впитается в ваш мозг.

kirjs_ru

20 Dec, 12:01


🎉 разбора срача Соера и Мурыча - последний пост

Вопрос 3.3


Почему это ловится?

async function example() {
try {
await new Promise((resolve, reject) => {
throw "Ho";
});
} catch (e) {
console.log("Error: ", e);
}
};
example();


Оценка понятности вопроса
🤖 ChatGPT: 100%
🤖 Bard: 100%,
🧑‍💻 Наша субъективная оценка: Мы поняли вопрос

Оценка ответа Соера на заданный вопрос
Соер не понял вопрос и продолжил отвечать на предыдущий

Факт чек (докапываемся по мелочам)
🤔 Мурыч использовал этот пример в противовес ответу Соера, который сказал, что Promise обрабатывает ошибку.
Мы не очень поняли, почему это контрпример, в данном случае Promise ловит ошибку и отправляет в reject, а await при распаковке если видит reject перевыбрасывает ошибку

kirjs_ru

20 Dec, 12:01


Вопрос 3.2

Почему код не будет срабатывать в catch

try {
setTimeout(() => { throw "Error"), 1)
} catch (e) {
console.log("Error: ", e);
}


или

try {
new Promise( (dores, doRej) => { throw "Ho"; } );
} catch (e) {
console.log("Error: ", e);
}


Оценка ответа Соера на заданный вопрос
Соер сказал, что код Promise выполнится вне try/catch.
На самом деле он выполняется синхронно внутри блока, но ловится Promise и перенаправляется в reject (Соер это позже поймет)

Оценка понятности вопроса
🤖ChatGPT: 100%
🤖Bard: 100%,
🧑‍💻Наша субъективная оценка: Мы поняли вопрос

Факт чек (докапываемся по мелочам)
Мурыч сказал, что callback переданный в Promise выполняется синхронно, так и есть

Что полезного мы узнаем в результате?
Если не распаковать Promise, exception не вылетит

kirjs_ru

20 Dec, 12:01


Вопрос 3

Каким образом организована обработка исключений exception в современном JavaScript

Как работает throw и try/catch

почему в если выбросить ошибку при создании промиса, она не ловится в try catch


Оценка понятности вопроса
🤖ChatGPT: 100%
🤖Bard: 100%,
🧑‍💻Наша субъективная оценка: Мы поняли вопрос

Оценка ответа Cоера на заданный вопрос
Соер сказал, что в блоке try вызывается throw и ловится в catch.
Это верный ответ, но можно было рассказать побольше.
Часть про Promise не была отвечена (но была обсуждена в следующем вопросе)

Факт чек (докапываемся по мелочам)

🤔 [косяк] Мурыч сказал, что "Throw это обычный Return (С особенностями)"

Это интересная аналогия, и у них есть общее свойство: они оба используют Completion Record на уровне спецификации.

При этом семантически и функционально они отличаются, мы пришли к тому, что они слишком разные, и это не очень точная или полезная аналогия
https://tc39.es/ecma262/#sec-completion-record-specification-type

kirjs_ru

20 Dec, 12:01


Вопрос 2

Что такое, согласно официальной спецификации, свойства для Object?

Существуют ли какие-либо существенные особенности в формировании свойств?

Если да то какие?


Оценка понятности вопроса
🤖ChatGPT: 10%
🤖Bard: 10%,
🧑‍💻Наша субъективная оценка: Вопрос был про свойства, а ответ ожидался про ключи, для нас это было неочевидно.

Оценка ответа соера на заданный вопрос
Соер сказал что свойство представлено объектом содержащим имя, значение + дескриптор. Что у объекта есть внутренние свойства ([[в квадратных скобках]]) и внешние.

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

https://tc39.es/ecma262/#sec-object-type
https://tc39.es/ecma262/#sec-property-attributes


Факт чек (докапываемся по мелочам)
🤔 [неточность] Соер сказал что в дескрипторе битовые поля, вероятно имел в виду булевы.

🤔 [непонятка] Мы не очень поняли, как Integer Index связан с BigInt и Atomics, которые Мурыч упомянул несколько раз?

🙀[косяк] Мурыч сказал: "В спецификации нету слова key ключ", поискал по слову "Key" и не нашел.
Если бы мурыч искал "key" (с маленькой буквы), или "property key", он бы его нашел
https://tc39.es/ecma262/#sec-object-type

🙀Мурыч так и не признал, что вопрос был про ключи.
Это как спросить про велосипед, а ожидать ответы о колесах


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

var theArr = [];

theArr[ (2 ** 32 - 1 ) ] = 1;

theArr.length; // 0

theArr[ (2 ** 32 - 2 ) ] = 1;

theArr.length; // 4294967295

https://tc39.es/ecma262/#sec-array-exotic-objects-defineownproperty-p-desc

kirjs_ru

20 Dec, 12:01


Вопрос 1

Опишите в общих чертах, чем являются заявленные официальной спецификацией типы:

ECMAScript Language Types
ECMAScript Specification Types


Обозначьте, каким образом заявленные в ECMAScript Language Types типы определяют
особенности поведения языка JavaScript?

Сопроводите свой ответ примером с использованием таких типов как null и undefined.


Оценка понятности вопроса
🤖ChatGPT: 0%
🤖Bard: 0%,
🧑‍💻Наша субъективная оценка: Для нас не очевидна связь вопроса с конкретным пограничным случаем который Мурыч ожидал услышать
Также не очень понятно, зачем было спрошено про "ECMAScript Specification Types", т.к. дальше это не обсуждалось

Оценка ответа Соера на заданный вопрос
Соер Перечислил типы и объяснил семантическую разницу между null и undefined.

Можно было бы ответить глубже и добавить нюансов и интересных примеров, но в целом ответ норм

Факт чек (докапываемся по мелочам)
🤔 [неточность] Соер сказал что var и undefined и null это литерал
Соер имел в виду лексему, а Мурыч не заметил эту ошибку

🤔 [неточность] Соер сказал что function это тип, технически функция это объект с internal slot [[call]] https://tc39.es/ecma262/#sec-terms-and-definitions-function

🤷 [непонятка] Соер сказал, что значение undefined не потеряется, мурыч сказал что потеряется
Тут они оба правы, но говорят о разных вещах. Переменная перезапишется, но undefined можно получить с помощью void 0, или globalThis.undefined

🤔 [неточность] kirjs сказал, что "use strict" не даст перезаписать переменную undefined
"use strict" запрещает только перезапись свойство undefined в globalThis, а как переменную его все равно можно определить. Eslint поможет так не делать.

Что полезного мы узнаем в результате?

🐇
Null быстрее чем undefined, потому что что он литерал, а undefined это свойство лежащее в globalThis.
Вот статья о том как React переписал все на null

🐇
В спеке описано, что битовые операции работают только на 32х битовых числах, поэтому пример ниже вернет неправильное значение

2 ** 50 /*1125899906842624 */ | 0  // 0 


Рекоммендация книги
Книга с драконом пр
о компиляторы
Compilers: Principles, Techniques, and Tools - Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman