qbnk // Mini Apps, Development and Me @heyqbnk Channel on Telegram

qbnk // Mini Apps, Development and Me

@heyqbnk


Стример, разработчик, блогер. Улучшаю платформу Telegram Mini Apps, создаю исключительные продукты, выступаю на конференциях.

Лобби: t.me/heyqbnk_chat
Twitch: twitch.tv/qbnk

qbnk // Mini Apps, Development and Me (Russian)

Здравствуйте, дорогие читатели! Сегодня я хочу вам рассказать о канале с названием 'qbnk // Mini Apps, Development and Me'. Этот канал принадлежит стримеру, разработчику и блогеру по имени heyqbnk. Он специализируется на улучшении платформы Telegram Mini Apps, создании уникальных продуктов и выступлениях на конференциях. В его трансляциях на Twitch (twitch.tv/qbnk) вы сможете увидеть, как он работает над различными проектами, делится своими знаниями и опытом в области разработки. Не упустите возможность присоединиться к сообществу, где ценится творчество, профессионализм и стремление к совершенствованию. Подписывайтесь на канал и будьте в курсе всех новостей и событий от heyqbnk!

qbnk // Mini Apps, Development and Me

09 Jan, 10:34


Привет, бойцы!

Ищем Senior Full-Stack Developer в нашу уютную, небольшую команду специалистов в TON Studio. С требованиями можно ознакомиться на дашборде. Работы много, полностью удалённая, интересная. Зарплата хорошая, белая, выплачивается вовремя 😀

Мы разрабатываем Telegram Apps Center, создаем множество утилит для разработчиков и ещё много-много всего. Приходите!

qbnk // Mini Apps, Development and Me

08 Jan, 14:17


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

qbnk // Mini Apps, Development and Me

07 Jan, 13:38


⭐️ Что получаем?

Итак, superstruct практически ничего не весит, выводит вполне себе понятные ошибки, очень удобен при понимании функционального подхода, и хорошо типизирован. Он отлично подходит для крошечных проектов, в которых не хочется иметь библиотеку для валидации, которая будет весить половину проекта. Вероятно, плюсов там больше, чем я успел за достаточно короткое время откопать, но я обязательно поиспользую эту библиотеку и в других проектах.

Изменения в @telegram-apps

У нас есть собственная библиотека для валидации — @telegram-apps/transformers, которая весит меньше superstruct.

Раньше я считал, что Команде будет интересно забрать все наработки @telegram-apps под своё крыло и, зная то, что она не особо любит использование 3-rd party libraries, было решено, что ничего стороннего использовать не буду.

Спустя какое-то время пришло понимание, что этого можно не ждать. Ну и как следствие, superstruct будет той самой первой сторонней библиотекой, которая появится в @telegram-apps/bridge и @telegram-apps/sdk. Но это, вероятно, будет в новой мажорной версии.

qbnk // Mini Apps, Development and Me

07 Jan, 13:38


💡 superstruct: библиотека для трансформации и валидации данных

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

Для этих целей я всегда использовал либо yup, либо zod. В State of Frontend 2024 мы узнали, что наибольшей популярностью сейчас пользуются zod и joi, но я решил проверить — а есть ли что-то лучше?

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

Ввиду того, что для Платформера я писал лаунчер мини-приложений, который чем меньше весит, тем лучше, для меня было важным, чтобы внешние библиотеки точно так же ничего не весили. Думаю, что скорость загрузки здесь критична — объяснять необходимости нет. Таймлайн загрузки мы и без того увеличиваем за счет дополнительных запросов и вставку iframe, так еще и если скрипты долго будут грузиться, будет совсем плохо.

Спросив, что ChatGPT думает на тему минималистичных библиотек для валидации данных, я получил следующие библиотеки: zod, yup, ajv и superstruct. Первые две я знаю, а про оставшиеся ни разу не слышал. Посмотрев на ajv я понял, что от первых двух библиотек, эта, в контексте решения моих проблем, не особо отличается.

Но вот что зацепило моё внимание, так это superstruct. А знаете чем зацепило? Знакомым мне функциональным, оптимальным подходом. В первую очередь я обратил внимание на то, как происходят импорты из библиотеки. Вы не импортируете всё и вся как в zod — через импорт переменной z (да, там можно делать отдельные импорты, но на конечный результат это, к сожалению, не влияет), а импортируете только тот функционал, который вам нужен.

Автор библиотеки додумался разнести утилиты и валидаторы по разным функциям. Таким образом, используя функции для создания типов (object, string, number, etc.), вы не импортируете функции для валидации, создания экземпляров типов, и всего остального. Всё импортируется лишь по запросу, достаточно гранулярно. Этого же подхода я придерживался при написании SDK, потому что только тогда tree-shaking проявляет себя на все 100%.

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

Если исходить из того, что предоставляет bundlephobia, zod весит 14.8kb, yup 12.9kb, а superstruct всего лишь 3.4kb. Тут стоит упомянуть, что bundlephobia считает размер библиотек так, будто вы используете оттуда всё, что можете. То есть если библиотека поддерживает нормальный tree-shaking (что superstruct и делает), то размер может оказаться сильно меньше.

Вот как выглядит простейший пример использования библиотеки (взял прямо из документации):

import { is, object, number, string } from 'superstruct'

const User = object({
id: number(),
name: string()
})

const data: unknown = { ... }

if (is(data, User)) {
// TypeScript knows the shape of `data` here, so it is safe to access
// properties like `data.id` and `data.name`.
}


А вот как выглядит приведение типов:

import { coerce, number, string, create } from 'superstruct';

const Float = coerce(number(), string(), (value) => parseFloat(value));
const output = create(data, '3.14');
// 3.14


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

qbnk // Mini Apps, Development and Me

04 Jan, 10:21


🤔 Про одержимость стикерами

Не так давно Павел выставил пост на тему того, что стикеры — это важная часть Telegram, которую Команда собирается и далее более тщательно прорабатывать. Еще на TOKEN2049 Павел посвятил стикерам какие-то из слайдов своего выступления. Точно помню, что он вроде как хотел их как-то конвертировать в NFT и выплачивать долю от заработка на этом авторам стикер-паков. Для меня идея до сих пор непонятная, но сейчас не об этом.

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

Зато знаете, что используется? Эмодзи.

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

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

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

В общем, я удивлён, почему Команда фокусируется на стикерах, когда под боком лежит такой бриллиант как эмодзи ☹️

Хорошего отдыха! 👨‍💻

qbnk // Mini Apps, Development and Me

31 Dec, 16:35


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

Как уже принято говорить, это был не простой год. Сколько багов пришлось поправить, во скольких созвонах поучаствовать, на скольких стендапах рассказать чего делал вчера. Ноша наша нелегка (попивать смузи на шезлонге), но без нас пользователи никогда не смогут заказать свою туалетную бумагу на OZON, спросить в поисковике «кто такие квадроберы эти», и посмотреть, когда закрывается их любимый магазин японских сладостей.

В наступающем Новом Году призываю сомкнуть ряды, поднять щиты за коллег-работяг и плотно держаться под натиском пользователей типа «у меня не работает. Бл*ть, я жмав куда-то». Желаю вам, чаттерсы и подписота, лёгкой ноши, простых задач, поменьше багов и здоровья, физического и психического 💕

Отдыхайте, развлекайтесь, и увидимся в кибер-пространстве 👨‍💻🎄

qbnk // Mini Apps, Development and Me

30 Dec, 14:44


Трансляция запущена!

Показываю новый рюкзак, болтаем и работаем. Последний стрим в 2024-ом году

— Software and Game Development
— twitch.tv/qbnk

qbnk // Mini Apps, Development and Me

29 Dec, 15:20


Здравствуйте, Господа!

Пока в TON во всю идут какие-то разборки и сливы (до сих пор сижу ору), я провожу так мне необходимые дни отдыха в сопровождении тёплого камина, тихого леса и близких людей.

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

Так вот, помните, я когда писал про то, что писать плагины это просто? Тогда на трансляции я решил прокачать плагин для работы с изображениями, и как обычно, не успел его допилить, потому что как известно, голова на трансляции работает на 15%. Только вот этот плагин, как оказалось, мне и в работе нужен.

Плагин должен сделать следующее:
— Вернуть ссылку на загрузку изображения
— Вернуть размеры изображения
— Вернуть blur data URL (base64 data URL для показа, пока изображение грузится. Ничего не весит)
— Вернуть srcset, в котором будут указаны мной необходимые DPI. Должны возвращаться ссылки на resized-изображения относительно импортируемого

Тем не менее, в рамках работы над лаунчером для Платформера, я решил всё-таки добить эту идею, и доволен прямо как эскортница при виде старого богача.

Всё конфигурируется, работает как в serve (dev), так и build (production) режимах.

💬 Какой флоу решает плагин

1. У вас есть какая-то Figma, в ней есть изображения.
2. Вам нужно скачать изображение в x1, x2 и x3 размерах для dpi 1, 2 и 3 соответственно.
3. Все эти изображения нужно сжать.
4. На всех них надо сослаться в коде.

Используя плагин, всё ограничивается скачиваем, например, размера x3 и импортированием его в коде. Всё остальное плагин должен сделать сам.

💬 Как выглядит конфиг Vite

import { defineConfig } from 'vite';
import { imagePlugin } from './imagePlugin';

export default defineConfig({
plugins: [imagePlugin()]
});


💬 Как выглядит импорт в dev-режиме

import image from './image.png?process';
// query-параметр обязателен, иначе импорт
// пройдет мимо плагина

console.log(image);
// {
// "width": 176,
// "height": 176,
// "mime": "image/png",
// "blurDataURL": "data:image/png;base64,...",
// "src": "/__processed-images?path=D%3A%2Fplatformer%2Fsrc%2Fimage.png&initialScale=3&scale=1",
// "srcSet": "/__processed-images?path=D%3A%2Fplatformer%2Fsrc%2Fimage.png&initialScale=3&scale=1 1x, ..."
// }


Исходники плагина можно найти в Gist. Правьте как угодно и пользуйтесь на здоровье 🙂

До НГ ещё увидимся 😏

qbnk // Mini Apps, Development and Me

27 Dec, 17:41


Предлагаешь QA залить изменения в прод, несмотря на то, что там "пара некритичных багов"

qbnk // Mini Apps, Development and Me

24 Dec, 10:13


🥸 Про магазин стикеров

Кто-то писал, что в @sticker_bot можно покупать стикеры в виде NFT и потом.. Хз что с ними делать. Напоминаю, что в Telegram любой пользователь может создать стикерпак, после чего другие пользователи смогут его использовать. Можно ничего не покупать, а скопировать другой стикерпак, насколько мне известно, особой проблемы нет. Поэтому какой смысл идти в какое-то там приложение и бесплатный стикерпак покупать — доподлинно неизвестно.

Но от каталога со стикерами я бы не отказался. В Telegram, как известно, о discovery вообще ничего не слышали, поэтому приложение как решение такой проблемы — во 👍

👨‍💻 Про Platformer

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

Лаунчер проекта решили делать на Solid-е, а именно шаблоне из @telegram-apps/create-mini-app. Следить за развитием это лаунчера можно здесь. Там пока что WIP, но думаю что к НГ уже допинаю полностью рабочее состояние. Именно в этом лаунчере и будут запускаться мини-приложения из Платформера, а разработчики будут просто использовать ссылку вида https://platformer-hq.github.io/platformer-tg-launcher?app_id=123.

Backend готов на 90 процентов, остались доработки в связи с закрытым бета-тестированием, а именно ограничением доступа к проекту. Запустить MVP Closed Beta планируем в Q1 2025, а потом уже попробуем открытую бету. Закрытая бета нужна, чтобы протестировать идею, найти баги, посмотреть нагрузку и протечки. Сами понимаете, что ответственность у проекта колоссальная, поэтому к разработке и поддержке нужно подходить очень скрупулёзно.

Подписывайтесь, кстати: Platformer 😇

———

На этом у меня пока всё. По поводу стрима пока что не подскажу, работы и правда море, но перед НГ обязательно одну трансляцию запустим. Я тут неожиданно вспомнил, что забыл вам показать новый рюкзак 😀 Напомните обязательно на трансляции, если забуду. Может, прикупите себе такой же.

Тут недавно Павел делал пост, в котором уделил внимание стикерам как интегральной части Telegram. Так вот, у меня есть для вас опрос — согласны ли вы с ним и этой части надо уделять значимую часть внимания, или же это время стоит уделить каким-то другим вещам в Telegram?

qbnk // Mini Apps, Development and Me

24 Dec, 10:13


Привет. Решил выкроить немного времени, несмотря на то, что эта неделя будет тяжеловата. Работаем мы на 1 день меньше (до 26-ого включительно), а планов сделать за неё больше чем обычно, поэтому придётся хорошенько попотеть.

🥱 Про усталость

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

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

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

На самом деле, не посмотрев эти видео, я бы наверное и не понял, в чем именно проблема. Хотя честности ради, режим сна тоже надо налаживать.

😐 Про NFT-картинки

На дворе 2025-ый год, а кто-то до сих пор считает, что NFT-картинки — это классное финансовое вложение. Я имею ввиду буквально NFT-картинки, у которых нет никакого применения (utility), это просто картинки, которые люди хотят купить и перепродать. Помните те времена, когда их там покупали за какие-то баснословные деньги в надежде перепродать подороже? Этакая горячая картошка. Так вот, как будто бы, в мессенджере Telegram пользователи про этот пробив дна (а именно падение рынка в пол) ещё не слышали, и готовы пуститься во все тяжкие.

qbnk // Mini Apps, Development and Me

19 Dec, 12:52


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

qbnk // Mini Apps, Development and Me

17 Dec, 15:03


Трансляция запущена!

Telegram Mini Apps SDK for Telegram Bot API v8.0

— Software and Game Development
— twitch.tv/qbnk

qbnk // Mini Apps, Development and Me

17 Dec, 09:29


Привет. Сорян, что какое-то время не писал ничего — куча дел навалилось, давит как-то зимняя атмосфера, да и, впрочем, много чего другого.

В PoE 2 я наигрался (около 60 часов), дошёл до 3-го акта на хардкоре, забил, и вернулся к работе и своим придуманным обязанностям перед сообществом. Составил план работ на ближайшие месяца полтора, наверное, поэтому надо начинать разгребать. По этой причине сегодня вечерком запустим трансляцию и будет заниматься полезными делами.

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

Больше всего порадовал анонс The Witcher 4 на The Game Awards 2024. Серия ведьмака — моя самая любимая серия игр в этом жанре. Я играл вообще во все части, и все мне понравились, а особенно последняя — The Witcher 3. Мне очень нравятся геймплей, история, мир Ведьмака. А от концовки, несмотря на то, что она была вроде как положительная, я даже слезу пустил.

Пошёл я дальше работать. Хорошего рабочего дня и увидимся вечером! 👋

qbnk // Mini Apps, Development and Me

13 Dec, 16:11


Никакой цели у жизни нет

... зато есть смысл.

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

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

Но не стоит расстраиваться, потому что кроме цели у нас есть еще такое понятие как смысл.

Долго обсуждая то, чем же отличается цель от смысла, мы приводили всякие разные примеры, которые конкретного ответа не давали. Смысл жизни и цель жизни звучат как одно и то же, но что если немного обобщить и озвучить такие словосочетания как "цель живого" и "смысл живого"? Ответ на вопрос о разнице не приходит в голову?

У всего живого нет цели, оно просто появилось из-за каких-то событий. Но есть ли смысл в живом? Конечно же есть. Смысл живого заключается в участии этого живого в разнообразных природных процессах — трансформации одних химических элементов в другие, модификации окружающей среды, и так далее. Таким образом, смысл — это значение конкретной одной сущности относительно другой.

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

Таким образом, смысл — это сугубо субъективная и ненаучная метрика. Она не может быть объективной и не философской, всегда требуя 2 объекта, один их которых оценивается, а другой оценивает.

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

По этой причине, под эту уходящую неделю, хочу напомнить вам, что не стыдно не иметь цели, стыдно не иметь смысла.

Хороших выходных 👋

qbnk // Mini Apps, Development and Me

13 Dec, 10:36


Привет подписочники. Подискутировал тут со своей дамой на тему разницы между терминами "смысл" и "цель".

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

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

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

Пожуйте эту жвачку на досуге. Ответ с точки зрения программиста и результат нашей дискуссии с Ксю выложу чуть позже. Хорошего дня 👋

qbnk // Mini Apps, Development and Me

12 Dec, 13:57


Как выглядит продуктивный месяц. 736 коммитов..

qbnk // Mini Apps, Development and Me

09 Dec, 08:55


Выходные: результаты.

Да ладно, не всё так плохо. Выкатил в @telegram-apps/init-data-node обновление для работы с init data third party validation. В очередной раз поворчал на тему того, что Команда мало того, что не даёт свои библиотеки, с которыми можно работать и не реализовывать флоу, описанный в документации, так ещё и примеров в самой документации не даёт, на которых можно проверить свою реализацию библиотеки. В конечном итоге потратил 2 часа на то, чтобы реализовать достаточно базовый алгоритм, а всё потому, что не допёр, что подпись данных (signature) там в base64. Весело, в общем.

На днях еще катну такое же обновление в init-data-golang.

Хорошего начала недели! 👋

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

qbnk // Mini Apps, Development and Me

07 Dec, 13:42


Даже самому поиграть захотелось. Купил на всякий случай

qbnk // Mini Apps, Development and Me

05 Dec, 07:38


Музыкальные итоги 2024 года

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

Клянусь, я без понятия, откуда там взялась Инстасамка 🤣

qbnk // Mini Apps, Development and Me

01 Dec, 18:47


Сижу вот и в очередной немного грущу.

На выходных решил заняться обновлением SDK, а именно реализацией новых фич, представленных в Telegram Bot API v8.0. Fullscreen-режим уже завёз, и вот теперь сижу разбираюсь с safe area insets.

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

Объясню о чем именно речь. В v8.0 завезли следующие методы и события:

web_app_request_fullscreen + fullscreen_changed и fullscreen_failed
web_app_request_safe_area + safe_area_changed
web_app_request_content_safe_area + content_safe_area_changed

У меня при виде этих методов и событий сразу же возник вопрос — почему бы их просто не вписать в понятие viewport, которое уже и без того существует. То есть как будто бы условный флаг isFullscreen хорошо вписывается в сущность viewport, равно как и отступы (инсеты). В то время как к методу web_app_request_fullscreen претензий нет, он действительно уникальный, как и fullscreen_failed, остальные методы и события выглядят лишними.

Нельзя было считать, что viewport это что-то такое?

interface Insets {
top: number;
left: number;
right: number;
bottom: number;
}

interface Viewport {
height: number;
isExpanded: boolean;
isFullscreen: boolean;
stableHeight: number;
safeAreaInsets: Insets;
contentSafeAreaInsets: Insets;
width: number;
}


Зачем отдельные сущности-то городить? Поменялись инсеты, верните их в событии изменения вьюпорта — viewport_changed. Поменялся fullscreen-режим? Верните его во viewport_changed. Команда вроде как придерживается принципа "чем меньше работы, тем лучше", а тут решили жизнь себе усложнить. Но подозреваю, что как обычно, speed over quality.

Напомню — это чистое ИМХО. Я бы делал по-другому.

Сладких снов 😉

qbnk // Mini Apps, Development and Me

01 Dec, 11:06


Инновации в контексте UI/UX. Иллюзия выбора перешла на новый уровень

qbnk // Mini Apps, Development and Me

30 Nov, 10:19


Трансляция запущена!

Telegram Mini Apps SDK for Telegram Bot API v8.0

— Software and Game Development
— twitch.tv/qbnk

qbnk // Mini Apps, Development and Me

30 Nov, 09:22


— Борешься со скамерами и спамерами в @devs
— Банишь по паттерну “major airdrop”, потому что Павел прорекламировал это супер-классное приложение
— В это время @wallet:

Они мне даже дважды это сообщение прислали

qbnk // Mini Apps, Development and Me

29 Nov, 19:04


Решил попробовать GitHub CLI

qbnk // Mini Apps, Development and Me

29 Nov, 10:39


Привет!

Сегодня вечерком подключим трансляцию и поработаем над обновлениями Telegram Bot API v8, а точнее занесением их в SDK.

Ориентируемся на вечер, могу задержаться, потому что сегодня релиз. Допускаю микро-вероятность отмены, но если не сегодня, то завтра.

До встречи 👋

UPD: У меня high roll — стрима сегодня не будет, нагрузки навалили. Сегодня в офлайне поработаю над библиотекой, завтра запускаемся 👨‍💻

qbnk // Mini Apps, Development and Me

28 Nov, 09:20


Осторожно, маты

Пользователи стали репортить о том, что в Telegram Apps Center при открытии приложения им не засчитывается выполнение. При этом, конечно же, серия выполнений срывается и придется начинать сначала

Видео: недовольный пользователь врывается к разработчику домой, который каждый день ложится в 5 часов ночи из-за работы и сжатых сроков

Если что, всем всё восстановят 🥸

qbnk // Mini Apps, Development and Me

27 Nov, 07:17


Ловите выступление про мини-приложения в Минске!

Пожалуй, самое длинное и полное моё выступление. Где-то посередине я умудрился Инала Карданова назвать Иналом Карданом. @ikardanoff, прости меня 😘

https://t.me/tonbelarus/126

qbnk // Mini Apps, Development and Me

26 Nov, 19:00


Хоп-хэй, ла-ла-лэй, подписывайтесь!

Тут будет информация об обновлениях того самого древнего проекта, который мы с вами делали на трансляциях.

@platformer_hq

qbnk // Mini Apps, Development and Me

25 Nov, 20:02


🥪 fragment.com ввел KYC (Know Your Customer)

Всё это, судя по всему, подготовка к выходу на рынок США, что потенциально может и на курс TON повлиять.

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

https://t.me/d_code/20910

qbnk // Mini Apps, Development and Me

25 Nov, 14:09


🥺 State of Frontend 2024

Про State of Frontend 2024 написали уже все, кому не лень, поэтому напишу и я.

Жаль, что Solid.js пока что на горизонте (по крайней мере в этой статистике) не видно, но упоминания технологии есть.

💭 Примечательные пункты

— React использовали 69.9% респондентов и им понравилось. За ним следом идут Vue 44.8% и Svelte 25.8%

— В будущем больше всего хотят попробовать Svelte 43.6% и HTMX 36.4%

— Самым часто-используемым фреймворком остается Next.js со своими 52.9%, следом идут Astro 25.2% и Nuxt 26.5%. При этом Next.js имеет почти топ-1 по количеству респондентов, которым фреймворк не понравился — 13.8%. Кажется, что исходя из текущей статистики, у Nuxt все шансы стать более популярным исходя из того, что у многих нет мнения насчет технологии, при этом другие еще хотят её попробовать

— В мире валидации структур данных чемпионом является zod со своими 34.6%. Далее joi с 15%

— Для работы с датами чаще всего используют date-fns, day.js и moment

— Для state management-а чаще всего используют чистый React Context, затем Zustand, Redux и Pinia (впервые слышу)

— В работе с запросами явными лидерами являются axios, нативный fetch и TanStack Query. Все остальные сильно позади

— Для хостинга предпочитают Vercel, AWS и свой собственный сервер

— По классике, для CI/CD используют чаще всего GitHub Actions и GitLab CI

— Микро-фронтенд не особо популярен. 76% респондентов не использовали технологии из этой стези

— Из пакетных менеджеров пьедестал разделяют npm 56.6%, yarn 21.5% и pnpm 19.9%

TypeScript использовали и довольны почти все. 94% респондентов технология вполне устраивает. На Flow все клали болит с его 2.2%

Material UI все ещё достаточно популярен — 21.5%. Впереди него только shadcn/ui со своими 28.1%

— В CSS лидерами остаются чистый CSS 74.8%, SCSS 71.8%, Tailwind CSS 66.7%, CSS Modules 56.7% и Styled Components 42.9%

— Из IDE впереди планеты всей VS Code 75.1%. Далее IDE от JetBrains 17.8%

— Из провайдеров системы контроля версией явным лидером является GitHub 77.9%. Далее GitLab 15%

— Из инструментов для сборки титаном, монстром, и просто сыном маминой подруги является Vite! 82.4% использовали и понравилось, а вся остальная негативная или нейтральная статистика на минимуме. Рядом плачет Webpack со своими 44% лайков и 38.5% дизлайков

AI в разработке используется достаточно часто (75.8% использовали). Чаще всего ChatGPT (90%)

Вот такая вот статистика 🙂

qbnk // Mini Apps, Development and Me

18 Nov, 17:38


Вкратце о том, как Влад ночью релизит Telegram Apps Center

qbnk // Mini Apps, Development and Me

17 Nov, 11:59


Команда Telegram выложила официальный анонс этих обновлений, ловите:

http://telegram.org/blog/fullscreen-miniapps-and-more

qbnk // Mini Apps, Development and Me

15 Nov, 08:59


Очень занятные комментарии в посте Код Дурова про крайний пост Павла. Что-то даже немного грустно стало 🙁

https://t.me/d_code/20823

qbnk // Mini Apps, Development and Me

13 Nov, 14:08


Трансляция запущена!

Вы работать сегодня будете или нет?

— Software and Game Development
— twitch.tv/qbnk

qbnk // Mini Apps, Development and Me

13 Nov, 11:08


⭐️ Обновление init data в Telegram Mini Apps

Тем временем Команда Telegram добавила долгожданное поле photo_url (аватарка пользователя) в init data, отправляемый в мини-приложения.

Помню те времена, когда только погружался в Telegram Mini Apps и сходу задался вопросом, почему же это поле доступно только доверенным приложениям, когда в настройках профиля есть настройка, которая отвечает за доступ к этому полю.

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

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

▶️ Сегодня трансляция

Сегодня вечерком включаемся. Есть просьба — чуть позже проголосовать в опросе касательно того, чем хотите на нём заняться. До встречи! 👋

qbnk // Mini Apps, Development and Me

13 Nov, 08:15


Приходите, друзья из Беларуси! Это, наверное, будет моё самое длинное выступление

qbnk // Mini Apps, Development and Me

13 Nov, 08:15


Telegram Mini Apps: Обзорная Сессия в Минске

💡 23 ноября погрузитесь в мир Telegram Mini Apps с лучшим экспертом! Если вы хотите расширить свои знания о миниаппах и понять, как работают новейшие технологии, этот митап для вас!

Наш специальный гость – Влад Кибенко, евангелист мини-приложений и разработчик из TON Studio, автор подробной документации по Telegram Mini Apps и мастер с богатым опытом в разработке.

Влад расскажет
✔️ Что такое ТМА и как они устроены.
✔️ Технологии разработки.
✔️ Основные функциональные возможности Telegram Mini Apps: биометрия, подтверждение закрытия приложения, cloud storage и многое другое.
✔️ Как попасть в Telegram Apps Center.
✔️ Полезные ресурсы и утилиты: документация, GitHub, Mate.

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

🎤 Открытый микрофон
Во время митапа у вас будет возможность рассказать о своём проекте. Это отличный шанс для фаундеров привлечь внимание к своим проектам. Обязательная предварительная регистрация через личные сообщения @ahtlv

📅 Дата: Суббота, 23 ноября 2024 года
Время: 14:00
📍 Место: Минск, пр-т Машерова 9, К8 (ех. Корпус)

Приятным бонусом будут: крутой нетворкинг, угощения 🍕 и SBT от TON Society 🙏

🔗 Вход бесплатный по предварительной регистрации.

qbnk // Mini Apps, Development and Me

12 Nov, 19:34


Vite чудесен тем, что позволяет крутить-вертеть модулями как угодно, и в нашем случае достаточно перехватить импорт модуля, расширение которого заканчивается на .png (пока что ограничимся им). Для такого модуля необходимо определить, что должно вернуться. Для работы с изображениями будем использовать библиотеку sharp.

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

import image from './image.png?sharp'


В плагин попадет путь с query-параметром ?sharp. За счёт этого мы сможем понять, что плагин необходимо применить к этому импорту.

Итак, вот как выглядит конечная реализация плагина:

import { Plugin } from 'vite';
import sharp from 'sharp';

export function imagePlugin(): Plugin {
return {
// Задаем название плагина.
name: 'image',
// Говорим Vite, что этот плагин нужно запустить
// перед встроенными плагинами Vite.
enforce: 'pre',
// Пишем функцию, которая трансформирует результат
// импорта. Тут должен быть возвращен любой JavaScript
// код. В нашем случае еще необходимо в этом коде
// сделать экспорт объекта, описывающего изображение.
async transform(code, id) {
if (id.includes('.png?sharp')) {
// По умолчанию тут будет храниться ссылка для загрузки
// этого изображения. В результате она будет использована.
const [, resolved] = code.match(/^export default "(.+)"$/);

// Загружаем изображение, получаем информацию
// о нем и создаем blurDataURL.
const image = sharp(id.slice(0, id.indexOf('?')));
const meta = await image.metadata();
const blurBuffer = await image
.blur()
.resize(10)
.toBuffer();

// Не забываем экспортировать объект, который
// потом будем использовать в нашем коде приложения.
return `export default ${JSON.stringify({
src: resolved,
width: meta.width,
height: meta.height,
mime: 'image/png',
blurDataURL: `data:image/png;base64,${blurBuffer.toString('base64')}`,
})};`;
}

// Если путь модуля под паттерн не попал, возвращаем
// null. Тогда Vite ничего с этим кодом не сделает.
return null;
},
};
}


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

Тут остается проблема с тем, что TypeScript наших приколов не поймет, поэтому чтобы он понимал, что мы импортируем, просто создадим файл с декларациями sharp-image.d.ts с таким контентом:

declare module "*.png?sharp" {
interface ImageMeta {
src: string;
width: number;
height: number;
mime: 'image/png';
blurDataURL: string;
}
const meta: ImageMeta;
export default meta;
}


А теперь представьте, сколько всего ещё можно придумать?

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

При написании плагинов всё ограничивается сугубо вашей фантазией.

🥸 Заключение

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

Писать плагины не страшно и не сложно, а даже очень полезно.

На этом у меня всё. Спокойной ночи, подписота 👍

qbnk // Mini Apps, Development and Me

09 Nov, 12:41


🚩 Set User Emoji API

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

Эта фича хорошо показала себя во ВКонтакте и используется для виральности приложений.

🚩 File Downloads API

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

Метод принимает 2 аргумента — ссылку для скачивания и название файла.

У меня лично была необходимость в этом методе, когда мы реализовывали Digital Resistance. Собственно, Set User Emoji API нам там тоже очень нужен был. Из-за отсутствия этих API мы не смогли доставить пару прикольных фич.

🚩 Activity API

Ну и, собственно, последняя по порядку, но не по значения фича — Activity API.

Этот API ответственен за передачу информации об активном состоянии приложения. Мини-приложение будет получать 2 новых события: activated и deactivated. Смею предположить, что прилетать они будут в случае сокрытия и открытия приложения.

qbnk // Mini Apps, Development and Me

08 Nov, 18:37


Привет.

Сегодня выскочил пост с рекламой конкурса Красоты Кода от Сбербанка. Помните такой? В прошлом году я про него рассказывал.

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

Во-первых, у меня чуть глаза не выпали (в плохом смысле этого слова) от вот этих разлетающихся частиц по всему экрану. Зачем оно надо вообще? Нельзя простенький, приятный для глаза сайт сделать? Если при прочтении текста на странице возникает ощущение того, что этот текст есть CAPTCHA — это очень плохо. Странно, что вообще об этом надо говорить.

Во-вторых, я поорал с заданий, которые дали на этот год.

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

Вы описание задачи видели вообще? Там Декларация независимости США по объему даже половины описания задачи не занимает. Кто вообще будет это выполнять? А уж тем более, кто и как это проверять-то будет?

При прочтении информации о задаче, у меня возникло ощущение, что это тупо чье-то сообщение из чата. Что это за первый абзац вообще? Зачем эта дебильная предыстория с джуном и сеньором? Это всё нейронка писала что-ли? Господи, дайте обычное несложное задание, где разработчики могут показать красивый код или не называйте этот конкурс конкурсом красоты кода.

Позорище

qbnk // Mini Apps, Development and Me

04 Nov, 14:44


Трансляция запущена!

Впечатления от буткемпа и TON Gateway. Затем кодим

— Software and Game Development
— twitch.tv/qbnk

qbnk // Mini Apps, Development and Me

04 Nov, 10:30


Привет. Сегодня включаемся ориентировочно после 17:30-18:00!

qbnk // Mini Apps, Development and Me

02 Nov, 17:13


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

💬 Mass adoption в TON

В общем, я не совсем понимаю, почему подход к mass adoption'у TON-а именно такой, какой есть сейчас. Есть ощущение, что расчет идет именно на то, что кто-то придумает какие-нибудь прикольные мини-приложения, которые затянут пользователей, а уже затем через них как-то заонбордить пользователей в TON.

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

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

💡 Как я это вижу

Если говорить о том, как лично я вижу mass adoption TON, то не могу не упомянуть о том, что Telegram Mini Apps — это инструмент не только для онбординга пользователей в TON, но и для их удержания в самом Telegram. Я вижу светлое будущее Telegram и Telegram Mini Apps в частности, в большем фокусе на самой платформе, потому что ее потенциал ощутимо больше чем у аналогов — WeChat и VK Mini Apps. И всё это благодаря обширной интернациональной аудитории и доверия к создателю.

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

Здесь важно понимать, что в Telegram Mini Apps войти куда проще, чем в TON. Пользователю не нужно обладать специфичными техническими знаниями, да и в принципе нет необходимости в каком-либо погружении, достаточно иметь приложение Telegram, что мы берем за очевидную основу рассуждений. После погружения пользователей во что-то более понятное, вынудить пользователей погружаться в вещи посложнее наподобие TON.

А что если этот план не сработает? Вряд ли можно сказать, что такой план может не сработать, потому как у него нет конца. Но, как минимум, вы будете иметь крутую платформу, кучу новых пользователей и платежи в Telegram Stars.

Вот этот пост я хотел написать еще примерно полгода назад. Каждый раз радуюсь, когда в постах Павла есть хоть капелька новостей о Telegram Mini Apps, а тут даже целый пост, посвященный платформе.

Ave, Pavel!
👍

qbnk // Mini Apps, Development and Me

02 Nov, 16:29


🔜 Telegram is about to introduce 10 new features for Mini Apps, enabling developers to create dozens of new kinds of apps and games on Telegram.

📺 Full-Screen Mode
📱 Home Screen Shortcuts
✍️ Subscription Plans
📍 Geolocation Access (with permissions)
📱 Device Orientation Data
💤 Emoji Status Access
🎨 Media Sharing
🎁 Sending Gifts
💭 Expanded Messaging Limits
💰 Ad Monetization

▶️ The last two items are already live with the remaining features launching within 2-4 weeks. Get your Mini Apps ready! 🚀

qbnk // Mini Apps, Development and Me

02 Nov, 16:29


Услада для глаз.

Я забыл, что хотел ещё кое-что написать в предыдущем посте, но уже, пожалуй, отложу. Просто было кое-какое размышление по поводу TON и Telegram Mini Apps, которое Павел своими постами подтверждает

qbnk // Mini Apps, Development and Me

02 Nov, 13:29


Привет, работяги 👋

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

💬 TON Gateway

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

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

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

В прошлом же году конференция касалась тем, близких обычному пользователю — Telegram Mini Apps, например. В этот раз я увидел какие-то фичи в @wallet, некоторые из которых вызывают вопросы, но мне в целом большой разницы нет, потому что я им не пользуюсь из-за потенциального бонуса в виде блокировки доступа к средствам. Далее рассказали про Notcoin, Blum, Catizen и их успехи, о которых мы как будто бы уже и так давно знаем. А после пошли какие-то проекты, в которых понимают только крипто-энтузиасты TON. Получается, что обычному разработчику (мне, например) там особо делать нечего.

Мне правда очень сильно не хватило харизмы у выступающих. Я понимаю, что кто-то там непубличная личность, кто-то нервничал и так далее, а кто-то просто давал контент без энтузиазма, но разве же это оправдание для зрителя? Думаю, что нет. Буду тут даже немного критичным и скажу, что кому-то я бы на этих выступлениях микрофон в руки пока что не давал.

Не могу не выделить отличившихся харизмой на сцене подачи Инала @ikardanoff, Алены @alenka_web3 и CEO STON.fi (если я не напутал), которые хорошо держались и чувствовали себя в своей тарелке.

В общем, не сказать, что Gateway какой-то плохой, просто ждал другого.

💡 Планы на месяц

Пока есть очень важная задача, заниматься чем-то другим нельзя, но никто не запрещает строить планы.

В этот месяц хочется сделать следующее:
1⃣ Подготовиться к выступлению в Минске в конце ноября.
2⃣ Написать побольше гайдов для разработчиков на docs.telegram-mini-apps.com.
3⃣ Для @telegram-apps/sdk выкатить полезное обновление, которое снизит на меня нагрузку по предоставлению помощи разработчикам.

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

🥺 Заключение

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

Всё, ушел работать, хорошего дня 👋

qbnk // Mini Apps, Development and Me

31 Oct, 09:40


Сорян, задержался я с постом. Ждал фотографий с мероприятия, ждал, не дождался. Ловите фотографию меня на протяжении всего пребывания в Санкт-Петербурге.

👨‍💻 St. Petersburg Hackathon Bootcamp

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

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

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

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

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

В заключении скажу, что общий уровень проектов был, конечно, пониже чем на предыдущем аналогичном буткемпе (или это был IdeaTON?) в Санкт-Петербурге. Тем не менее, стоит отметить, что до предыдущей планки допрыгнуть будет совсем непросто.

Следующая остановка — выступление в Минске в конце ноября.

😟 Меня не будет на The Gateway

В целом, по заголовку уже понятно — к сожалению, меня не будет на The Gateway.

Мне пришлось покупать билеты с пересадкой через Москву, и вот, вчера, авиакомпания сообщает мне о том, что рейс из Москвы в Дубай перенесён во времени на 4 часа назад таким образом, что в этот момент я бы только летел в Москву. Других билетов в Москву из моего города в принципе нет, я никак не смогу попасть физически, чтобы успеть на перенесенный рейс. Там было ещё несколько альтернатив с еще одной пересадкой, но я от этого отказался. В итоге, пришлось отменять все билеты общей стоимость 110 000 рублей и думать над альтернативами. Из-за косяка авиакомпании, стоимость всех билетов будет возвращена.

Найдя билеты уже в другой аэропорт Дубая, я приступил к оформлению. При указании информации о загранпаспорте, появилось предупреждение о том, что мой загран истекает менее чем через 6 (4, если быть точнее) месяцев, а в некоторые страны с таким паспортом уже могут не пустить. Проверив информацию в интернете, выяснилось, что с таким заграном в страну не пустят.

И тут отмечу, что при оформлении билетов на сайте Аэрофлота, таких предупреждений не было, и я просто взял и оформил билеты на 110 тысяч рублей. Во второй же раз я начал оформлять билеты через Aviasales, откуда меня перекинуло на mego.travel. Получается, спасибо mego.travel, за то, что уберегли меня от траты около 140 000 (столько уже стоили билеты) рублей.

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

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

qbnk // Mini Apps, Development and Me

22 Oct, 14:33


Трансляция запущена!

Ревью питчинга проектов с хакатона, затем Пусть Говорят с Малаховым про Павла Дурова

— Software and Game Development
— twitch.tv/qbnk

qbnk // Mini Apps, Development and Me

22 Oct, 12:04


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

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

Ушел дальше работать, увидимся вечером!

qbnk // Mini Apps, Development and Me

21 Oct, 09:53


Привет!

Напоминаю, что буду выступать в эти выходные на буткемпе в Санкт-Петербурге. Регистрируйтесь и приходите послушать, пообщаться, посмотреть 😇

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

UPD: Отбой, работа навалилась 😟

qbnk // Mini Apps, Development and Me

20 Oct, 18:11


Нашел вот такой код на странице https://t.me/heyqbnk.

Кажется, моего опыта не хватает, чтобы понять здесь какие-то приемы. Может хватит вашего?

— Зачем в начале проверка if (true)?
— Зачем проверка if (iframeEl !== null) если она всегда false в данном случае?
— Зачем нужна запись формата !false && setTimeout(...)?
— Зачем в конце проверка if (protoUrl), если она всегда равна true, но не достигается из-за первого if (true)?

qbnk // Mini Apps, Development and Me

20 Oct, 15:21


Если бы оператор с Moscow Bootcamp Hackers League Hackathon снимал Олимпийские Игры

qbnk // Mini Apps, Development and Me

19 Oct, 08:56


Трансляция запущена!

Смотрим live Moscow Bootcamp Hackers League Hackathon, затем кодим

— Software and Game Development
— twitch.tv/qbnk

qbnk // Mini Apps, Development and Me

19 Oct, 07:38


Привет, бойцы.

Я вроде как выздоровел и чувствую себя стабильно, поэтому запустимся через полтора часа (в 12:00). Вместе посмотрим live-выступления спикеров на Moscow Bootcamp Hackers League Hackathon (серия тех мероприятий, где я выступать буду). Коллега будет рассказывать про Telegram Mini Apps, но также расскажут что-то интересное еще и другие спикеры.

После этого продолжим работу над крайним проектом. До встречи! 👋

qbnk // Mini Apps, Development and Me

17 Oct, 15:48


У вот этой (вроде моей) женщины сегодня День Рождения. Давайте поздравим 🥳

Я ей сказал «давай улыбнись типа тебе классно тут»

qbnk // Mini Apps, Development and Me

14 Oct, 17:08


IT-ответственным ЖД вокзала города Екатеринбург передаю пламенный привет

qbnk // Mini Apps, Development and Me

14 Oct, 10:04


Рубрика "Пишу из аэропорта"

Буткемп в Астане окончен, и мне есть чем поделиться.

Про Казахстан и Астану

В Казахстане я уже второй раз. Впервые в этой стране я побывал примерно полтора года назад с целью пересидеть какие-то непонятки с призывом (хотя у меня есть военник), но вместе с этим и оформить банковскую карту, которая принимается зарубежом. В этот же раз я приезжал на мероприятие, связанное с TON и Telegram Mini Apps, в качестве зрителя, и не на какой-нибудь край Казахстана, в город Петропавловск, а прямо в его сердце — Астану. Для тех, у кого такие же проблемы с географией как у меня: Астана — столица Казахстана.

Астана — чудесный город, ознозначно лучше Петропавловска 😀 Просто невозможно не заметить разницу в уровне развития, но и сравнивать, наверное, в принципе, большого смысла нет. По ощущениям, кроме того, что это политическая столица страны, кажется, что она также является и IT-столицей.

Чем мне Астана не понравилась, так это своим просто ужасным климатом, к которому местные уже наверняка привыкли. Держите забавное замечание: в YouTube Shorts мне попался мем, где казах смотрит на дождь из окна и говорит "Это разве дождь? Он же идет сверху-вниз". И знаете что? Я сразу же понял этот прикол. В Астане просто невероятно ветрено, а еще примерно так же влажно. Приехав в толстой кофте, ветровке, шапке и перчатках, я просто опух от жизни, а еще простудился под конец. В общем, худшее, что было в Астане — погода, но проблема тут, наверное, во мне и моей подготовке, нежели чем городе. Но такое, вообще, я вижу впервые, а приехал я сами знаете откуда. На моей родине -45 считается нормой. Короче, дубак, дождь, и лютый ветер сопровождали нас всё время пребывания.

Теперь давайте о положительных вещах.

Местные нормы

Если говорить о том, что полезного в этот раз я для себя узнал, то невозможно не упомянуть местные обычаи и особенности. Мне правда поравилось слушать про местные взаимоотношения и тонкости. Вот вам пару примеров:

— Если казах тянет вам 2 руки для рукопожатия, это значит, что он считает вас выше себя (или как-то так) и уважает. В ответ нужно обязательно выполнить рукопожатие 2 руками.
— Уменьшительно-ласкательное в Казахстане чаще воспринимается как уничижительная форма. Условно, нельзя обращаться к человеку "братишка", потому что этим вы его "уменьшаете", уничижаете. Нужно говорить "брат".
— Так и не понял, мем это или нет, но похоже на правду. Казахи часто сильно опаздывают и не приходят к назначенному времени. Местная легенда гласит, что опаздывают они на 1.5 часа.

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

Буткемпы — это про людей

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

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

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

Заключение

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

На этом у меня всё, сегодня весь день буду в поездке, и только поздней ночью дай Бог буду дома. Пошел работать, а вам желаю хорошего дня 👋

Казахстан крутой, казахи интересные. Однажды я снова сюда приеду. Алга Казахстан!

qbnk // Mini Apps, Development and Me

12 Oct, 06:26


Если захотите купить мак для работы (программирования) с 18 Гб оперативы — вспомните этот скрин.

Включены IDE, трансляция, браузер в пару вкладок и Telegram.

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

qbnk // Mini Apps, Development and Me

10 Oct, 13:05


Проездом в Екб. Хорошо устроился, через 5 часов вылет в Астану. Увидимся завтра! 👋

qbnk // Mini Apps, Development and Me

09 Oct, 14:45


Трансляция запущена!

Анбоксинг MacBook Pro 16' и затем работа (GoLang)

— Software and Game Development
— twitch.tv/qbnk

qbnk // Mini Apps, Development and Me

08 Oct, 15:10


Привет, бойцы.

Завтра крайняя трансляция перед отъездом в Казахстан. По плану следующее:
— Анбоксинг MacBook Pro 16'
— Разработка BB (Black Box, тот проект, что на Go)

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

Bye-bye! 👋

qbnk // Mini Apps, Development and Me

07 Oct, 09:25


Понедельник, настроение

qbnk // Mini Apps, Development and Me

06 Oct, 15:27


Трансляция запущена!

Implementing Add to Home Screen for Developers

— Software and Game Development
— twitch.tv/qbnk

qbnk // Mini Apps, Development and Me

01 Oct, 16:40


Не так давно я сказал себе, что не включу трансляцию и не напишу пост, пока не сделаю релиз [email protected], потому что тянется это "сегодня доделаю" уже достаточно долго. И вот, наконец, этот день настал.

Честно говоря, без понятия, сколько в итоге времени на это всё было потрачено, но знаю точно, что не менее 564 коммитов. Я уже перестал считать дни, но по ощущениям потрачено было месяца 2.

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

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

Хорошего вечера, Господа ☕️