Влад Кибенко // qbnk // Mini Apps, Development and Me
1.59K subscribers
682 photos
136 videos
5 files
584 links
Стример, разработчик, блогер. Улучшаю платформу Telegram Mini Apps, создаю исключительные продукты, выступаю на конференциях.

Лобби: t.me/heyqbnk_chat
Twitch: twitch.tv/qbnk
Download Telegram
4 недели спустя 🗓

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

Сейчас же мне до сих пор дико непривычно от того, что у меня нет начальника, который говорит, что надо делать. Зная, что ты можешь делать, что хочешь, ты делаешь почти ничего. Да, я работаю над Платформером, но не так плотно, как хотелось бы. Кроме него ещё можно много чего поделать по организации Telegram Mini Apps на GitHub (сегодня вот выкатил небольшое обновление, связанное с Telegram Bot API 9.1), поработать над Open Mini Apps, и ещё много чего другого. Ощущение такое, будто бы ты в каком-то вакууме, потерявшийся во времени, проигрывающий каждый день как день сурка.

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

———

Впервые за всё время жду контеста от Telegram по веб-разработке, чтобы принять в нём участие. Я уже как-то пытался выполнить контест по markdown в Telegram Web K, но тогда меня придавила работа. В этот раз хочется с полным погружением попробовать выполнить какое-либо задание. 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
🕊13❤10👍10🔥1
🥳 C праздником!

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

Незадолго до первого сентября, мы гуляли с ним по улице и делились воспоминаниями из университета. Так получилось, что с Ксю мы учились в одном университете, туда же поступает и её брат, и по этой причине нам есть чего общего рассказать. Мы делились советами касательно того, как выжить на первом курсе и на что стоит обратить внимание, чтобы сразу не вылететь, делились воспоминаниями и красочными моментами из наших времен, делились своего рода инсайтами. И, честно говоря, всё это прямо-таки греет душу, вызывая желание вернуться в ту атмосферу учёбы и "движухи" 🥲 Радостно понимать, что брат горит большим желанием во всё это влиться, и уже успел познакомиться со своими одногруппниками, в красках описывая их.

Сегодня "первый день" не только у него, но и у некоторых моих подписчиков, которые не только перешли в новый класс, но и на новую ступеньку в получении образования — университет. По этой причине хочу пожелать терпения, сил, побольше ярких воспоминаний и событий, и чтобы учёба в будущем принесла свои плоды! 🥳
Please open Telegram to view this post
VIEW IN TELEGRAM
❤20🎉6🫡6🤩1
🏖 Отдыхаю

Привет, господа!

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

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

Завтра я выложу пост о судьбе моих пакетов в @telegram-apps, после чего буду какое-то время отсутствовать. Сейчас я временно переключил фокус на работу над новой major-версией SDK, и хочу зарелизить очередную итерацию реализации приобретенных знаний и опыта.

До завтра!
Please open Telegram to view this post
VIEW IN TELEGRAM
2❤15🔥94👍1
✈️ Будущее моих пакетов в @telegram-apps

Пост состоит из 2 сообщений

Можно сказать, что на последней трансляции мы провели заключительное обсуждение, закрывающее один из вопросов, определяющих дальнейшую судьбу моих библиотек в @telegram-apps в ближайшем приближении.

В этом посте я хотел бы озвучить некоторые из пунктов грядущего major-обновления, а также сообщить о том, что будет с теми пакетами @telegram-apps, автором которых я являюсь.

➡️ Монады

Как показала практика поддержки кода SDK последних лет, описывать выбрасываемые ошибки при помощи JSDoc, а именно директивы @throws, оказалось не так уж просто, удобно, и полезно. Основная же проблема заключается в том, что описание ошибок в JSDoc необходимо постоянно поддерживать, что на практике оказывается просто невозможным.

По этой причине, код в новом major-обновлении будет использовать такие монады как Either (структура с 2 возможными значениями), Option (опциональное значение), TaskEither (асинхронный Either) и TaskOption (асинхронный Option) , но не спешите пугаться. Да, наверняка многие разработчики мало знакомы с концепцией монад и функциональным программированием в принципе, но в данном переходе нет абсолютно ничего сложного.

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

Таким образом, вы всё так же сможете пользоваться библиотеками в привычным виде, но при использовании fp-oriented функций (там они будут скорее всего с суффиксом "Fp"), вы получите бонус в виде типизированных ошибок в случае, если используете такую популярную библиотеку как fp-ts, либо же самостоятельно будете обрабатывать результаты вызовов (это делается достаточно просто и без библиотек). Монады, озвученные выше, были взяты именно из fp-ts.

Да, без мелкой поломки обратной совместимости не обойдётся и об этом будет сообщено отдельно.

☺️ Возвращение к истокам

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

За 3+ major-версии библиотеки я успел попробовать разные подходы, у каждого из которых своего плюсы, но в следующем подобном обновлении я хочу взять лучшее из всего того, что успел узнать. Вполне вероятно, что интерфейс использования библиотеки для конечного потребителя, то есть для вас, разработчиков, не изменится, но могут быть помечены как устаревшие компонентно-специфичные функции по типу showBackButton, showMainButton и прочие. Есть ощущение, что такие функции популярности не сыскали, поэтому с определенной долей вероятности будут вовсе удалены.

Я хочу уйти от подхода с такими функциями в пользу того, что мы использовали ещё при зарождении SDK — классов. Если в своём коде вы использовали такой код, то для вас, скорее всего, ничего не изменится:

import { backButton } from '@telegram-apps/sdk';

backButton.show();


К этим классам я добавлю множество полезностей, которые мы изобрели уже после того, как от них отказались. Тем не менее, стоит ждать анонса с обновлением, где в конечном итоге будет известно, как же мы пользуемся библиотекой. Я постараюсь сделать так, чтобы изменений было минимальное количество.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3❤‍🔥2💊1
🎁 tma.js: не смогли смириться с поражением? И куда вас это привело? Снова ко мне

Мы возвращаемся в @tma.js. Так уж получилось, что когда-то я перенёс все свои наработки из npm-организации @tma.js в @telegram-apps для консолидации усилий по развитию платформы Telegram Mini Apps. Сейчас уже сложно сказать почему, но тогда было убеждение, что в этой организации будут находиться только пакеты, имеющие непосредственное отношение лишь к самой платформе, но не к сторонним продуктам, которые тем или иным образом связаны с платформой.

Я всегда был приверженцем того, чтобы организация Telegram Mini Apps на GitHub была островком, посвященным сугубо технологии от Команды Telegram. Того же самого придерживаюсь и месторасположения своих наработок в контексте этой технологии — npm-организации. Так как npm-организация @telegram-apps принадлежит сторонней компании, я принял решение вернуться к alma mater придуманной мной SDK — npm-организации @tma.js. По этой причине major-обновление со всеми последними нововведениями будет произведено именно там, а мои библиотеки в @telegram-apps (порядка 90% библиотек) будут помечены как устаревшие и более поддерживаться не будут.

В начале 2026-ого, документация по библиотекам @telegram-apps будет удалена с сайта docs.telegram-mini-apps.com в пользу документации по @tma.js. Тем не менее, если кто-то не успеет или не захочет переходить на @tma.js, репозиторий с документацией по @telegram-apps всегда был, есть, и будет в открытом доступе.

Первый релиз будет в пользу @tma.js/bridge. Я не очень хочу выкатывать всё вместе, потому что переработка SDK однозначно займет достаточное количество времени, а вот bridge уже переписан. Выкатка, ориентировочно, будет в рамках наступающей недели.

———

На этом у меня всё. Хороших выходных, бойцы!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤3🔥3🤯1
👩‍💻 Major release: better-promises и error-kid

В рамках улучшения библиотек telegram-apps, я когда-то создал 2 библиотеки для создания классов ошибок, а также более гибких промисов. Долгое время они были без стабильной версии, и вот, совсем недавно, я зарелизил первые major-версии этих библиотек, немного переработав, исходя из опыта использования.

Подробнее о библиотеках можно почитать в документации npm:
— better-promises — предоставляет более гибкий, отменяемый promise;
— error-kid — предоставляет пару утилит для создания классов ошибок.

В error-kid я избавился от возвращения кортежей из errorClass и errorClassWithData, потому что это абсолютно не имеет под собой какого-либо преимущества. Теперь проверку значения на соответствие ошибке можно делать через статичный метод .is():
const TimeoutError = errorClass('TimeoutError', 'Timeout reached');
const someValue: unknown;

if (TimeoutError.is(someValue)) {
// ...
}


В better-promises я ушел от AbortablePromise и ManualPromise в пользу единого — BetterPromise. Он объединяет в себе качества и того и другого + включает некоторые новые, о них лучше почитать в документации.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍2👏21
👩‍💻 Major release: @tma.js/bridge и @tma.js/init-data-node

Первый пошёл!

Сегодня произошёл major release двух основных библиотек семейства tma.js — tma.js/bridge и tma.js/init-data-node. В свою очередь, telegram-apps/bridge и telegram-apps/init-data-node были отмечены как deprecated (устаревшие), и более поддерживаться не будут.

На очереди библиотека во главе стола — tma.js/sdk. Думаю, что в рамках 1-2 недель и она будет переписана, но учитывая то, что реальный отпуск вот уже на носу (начинается 18-ого сентября), релиз может быть немного позже. Хотя кто знает, может быть одним вечером прямо из Турции будет и выполнен тот самый релиз 😏

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

Оставляю полезные ссылки:
— tma.js/bridge: npm, полная документация, переход с telegram-apps
— tma.js/init-data-node: npm, полная документация, переход с telegram-apps

Напоминаю, что документация по библиотекам telegram-apps, а также исходный код, будут удалены сразу после наступления 2026-ого года, будучи замещёнными tma.js.

⚠️ Осторожно, GDPR: telegram-apps/analytics

Ко мне тут пришли с, судя по всему, достаточно старой проблемой относительно GDPR в библиотеке telegram-apps/analytics:
https://github.com/Telegram-Mini-Apps/analytics/issues/55

В случае, если вы используете эту библиотеку, или собираетесь её использовать, прошу ознакомиться с issue. На данный момент времени, отправляемые библиотекой данные, не соответствуют GDPR, поэтому учитывайте вытекающие риски. Могу ошибаться, но установка этой библиотеки обязательна в случае, если вы хотите попасть в Telegram Apps Center.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍22
Привет, бойцы!

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

Я хотел рассказать, чего же делал последние N дней. Скажем так, я просто безбожно играл в PoE 2. До этого суммарно у меня было около 30 часов, проведенных в этой игре, то есть совсем ничего, а вот сейчас уже около 140. В связи с голоданием в плане интересных игр, хорошим обновлением PoE, и желанием отдохнуть от разработки, я решил тряхнуть стариной, и... Тряхнул. В PoE мне не особо интересен softcore, поэтому я всё время играл на хардкоре, warrior (kittava). За все эти 140 часов я потерял порядка 10 персонажей, дошел до 4-ого акта, и был просто oneshot-нут боссом-обезьяной, который из тебя души испускает. Умер потому, что на миллиметр высунулся из безопасного круга. Дальше уже просто на softcore-е допрошел игру, чтобы узнать, какие ещё там боссы могут убить тебя с одного удара.

В общем, провёл время с удовольствием, а после этого вернулся к разработке, а именно переработке библиотек и переносу их в tma.js. Как можете заметить, bridge уже переписан, а сейчас я занимаюсь переписыванием SDK. Скажу так — я получаю от этого процесса огромное удовольствие потому, что знаю, что точно делаю что-то лучше. Как я уже утверждал в одном из последних постов, я решил взять лучшее не только из того, что узнал за последнее время, но и из всех версией этого самого SDK. Уже сейчас я вижу, что тот код, что пишу, куда более поддерживаемый, сильно легче тестируется, но, вероятно, будет весить капельку больше. Тем не менее, разница в плане размера, скорее всего, не будет столь заметной.

Примерно половина SDK уже переписана, за процессом можно следить в этой ветке:
https://github.com/Telegram-Mini-Apps/telegram-apps/tree/feature/tma-js-sdk

На этом всё, ждите постов/сторис/фоток из Турции!
220❤98🌚2
This media is not supported in your browser
VIEW IN TELEGRAM
1213
This media is not supported in your browser
VIEW IN TELEGRAM
😁22❤5🤷‍♂2
В перерывах от полезного времяпрепровождения, когда есть возможность посидеть за ноутом, обновил резюме и статус.

Ну что-ж, поехали (hh).
14🔥6
Вот так я развлекаюсь в последний день в Турции.

Есть много чего интересного рассказать, но сделаю это либо в отдельном посте, либо на трансляции. Сегодня будет непростая поездка в Екатеринбург, а в Тюмени буду только через пару дней. Там и увидимся
😁1463
🙂 Первый отпуск спустя 2 года

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

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

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

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

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

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

Ранее на трансляциях я говорил, что для меня в отпуске самое важное — это вкусно поесть. В этот же раз первые 3-4 дня я получал удовольствие от еды, но все остальные дни ел просто потому, что надо. Выходит, не в еде счастье? Сейчас для меня счастье в пейзажах и обстановке. Не помню точно, писал ли я на эту тему пост, либо же говорил на стримах, но мне одновременно нравится и подавляет масштаб. Видели Исаакиевский собор в Питере? Смотря на него, создаётся ощущение тотальной ничтожности из-за его масштабов, сложности и превосходства. Такие же впечатления у меня вызывает и бесконечный космос, звёзды. Если проецировать на Турцию, то мне просто невероятно понравились местные пейзажи, горы. Я и правда просто не мог оторвать глаз от гор, на которые выходил наш отель. Есть в этом что-то такое необъяснимое, которое так и манит, не отпуская. Тут обращу внимание на то, что ранее такого я за собой не наблюдал, и появилось это лишь с возрастом.

Для меня это не открытие, но я всегда любил животных. Мне всегда было интересно за ними наблюдать, пытаться представить, что происходит у них в голове. В этой поездке я наблюдал за местными голубями (вряд ли это прямо голуби, просто выглядели схоже) и точно так же, как и горы, чем-то они притягивали внимание. Это чувство тоже достаточно сложно передать, животные мне почему-то просто любопытны.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤13🔥8🥰3