
🔥 1
#vim
#java
#hover #balloon with type definition ftplugin/java.vim, with #coc
highlight CocTypePopup ctermfg=White ctermbg=22 guifg=#ffffff guibg=#005f00
function! CocTypeBalloonExpr() abort
try
let l:docs = CocAction('getHover', {
\ 'bufnr': v:beval_bufnr,
\ 'line': v:beval_lnum,
\ 'col': v:beval_col
\ })
catch
return ''
endtry
for l:line in split(join(l:docs, "\n"), "\n")
let l:line = trim(l:line)
call popup_beval(l:line, {
\ 'maxwidth': 200,
\ 'padding': [0, 1, 0, 1],
\ 'border': [0, 0, 0, 0],
\ 'highlight': 'CocTypePopup',
\ 'wrap': 1
\ })
return ''
endfor
return ''
endfunction
if !has('nvim')
setl balloonevalterm
setl balloonexpr=CocTypeBalloonExpr()
endif
#shell
#productivity
#love my mg alias - clickable #grep in #kitty - opens file and line in Vim:
# Grep, click to link - open in Vim, exact line
mg() {
kitty +kitten hyperlinked_grep --smart-case -C 9 "$@"
}
-C 9 is the context - to have a few lines before and after.
For this, also you need to have in ~/.config/kitty/open-actions.conf:
protocol file
fragment_matches [0-9]+
action launch --type=overlay -- vim +$FRAGMENT -- $FILE_PATH
Make #tree clickable, tested in #kitty
Replace to #eza
eza --tree --hyperlink
With this .config/kitty/open-actions.conf
protocol file
ext cpp,cc,cxx,c++,hpp,hh,hxx,h++,c,h,java
fragment_matches [0-9]+
action launch --type=os-window -- vim +$FRAGMENT -- $FILE_PATH
protocol file
ext cpp,cc,cxx,c++,hpp,hh,hxx,h++,c,h,java
action launch --type=os-window -- vim -- $FILE_PATH
protocol file
mime text/*
fragment_matches [0-9]+
action launch --type=overlay -- vim +$FRAGMENT -- $FILE_PATH
protocol file
mime text/*
action launch --type=overlay -- vim -- $FILE_PATH
protocol file
mime image/*
action launch --type=overlay kitten icat --hold -- $FILE_PATH

My another #userstyle: for #gemini, before and after
https://gitlab.com/vitaly-zdanevich-styles/gemini


https://addons.mozilla.org/en-US/firefox/addon/highlightthis/
#love this #extension - #highlight predefined list of words, on predefined URLs.










Wow, about #telegram bots: you can bypass 50 MB response limit - by hosting their bot software. AWS Lambda is not possible here - it wants persistent polling.
And it simplify the architecture - less nodes in the network chain - when Telegram server and your bot software on the same machine.
#gemini about why not #lambda:
To understand why, you have to look at how Telegram's protocols work beneath the surface.
When you use the standard public API (api.telegram.org), your bot makes simple, stateless HTTP requests. However, Telegram's core servers do not speak HTTP; they communicate using a custom, highly encrypted, and stateful protocol called MTProto.
The public api.telegram.org server acts as a translator. It maintains persistent MTProto connections to Telegram's core network on your behalf so you do not have to.
When you run the Local Bot API Server, you are moving that translator to your own machine. Consequently, your local server must now handle the MTProto protocol.
Here is why that requires a persistent connection and a continuously running server:
1. Stateful Cryptographic Handshakes: Establishing an MTProto connection is expensive. It requires complex cryptographic handshakes to generate session keys. If you try to run the local server in an ephemeral environment (like spinning it up in AWS Lambda only when you want to send a file), it would have to negotiate a brand new MTProto session from scratch every single time.
2. Latency and Rate Limiting: Performing that handshake on every request adds massive latency. More importantly, repeatedly opening and closing MTProto connections to Telegram's core servers will look like a DDoS attack or a malfunctioning client. Telegram's automated systems will likely rate-limit or temporarily ban your bot's IP address for connection spam.
3. Local Database State: The Local Bot API Server maintains a local database on the disk to track file IDs, update sequence numbers, and session states. It expects to hold locks on these files and manage them continuously in the background.
While your bot's code can be executed ephemerally (e.g., waking up only when a webhook is received), the Local Bot API Server it communicates with is designed exclusively as a long-running daemon that holds a persistent MTProto TCP connection to Telegram.
My yet another project: @wikipedia_unofficial_bot
Built with #llm #gpt 5.5 xhigh
https://github.com/vitaly-zdanevich/bot_telegram_wikipedia
👍 1
In #batumi, to buy a coffee, sometimes we talk in three #languages:
#kartuli
#english
#russian
❤ 1
#28мая2026 (чт) 21:00–01:00 — айтишная посиделка в Still Young Bar 🍻
#без_оплаты🎤 Доклад:
«Мой второй Telegram bot: возвращает аудио с поиска по YouTube, с комментариями»
Разберём, как устроен Telegram-бот, который:
— ищет видео на YouTube
— достаёт аудио
— видит комментарии к видео
— и вообще как это всё собиралось 👀
👨💻 Ведущий:
Vitaly Zdanevich — @vitaly_zdanevich
🔗 Ссылка на проект:
https://gitlab.com/vitaly-zdanevich/bot_telegram_youtube
🤔 Хочешь тоже выступить со своим мини-докладом, проектом или идеей?
У нас всё неформально: большой экран, айтишники, разговоры и пивас.
Докладчику — 🍺 в подарок.
➡️ Расписание
🍻 21:00 — сбор
🧑🏫 21:30–23:00 — доклад и обсуждение
🕺 После — разговоры о высоком / нетворкинг / караоке до последнего айтишника
📍 Still Young Bar
ул. Генерала Мазниашвили, 48
⏰ 21:00 — до последнего айтиш
💬 Все вопросы — можно в личку: @AMVavilov
❤ 1
Another #llm victory: repack of the official #evernote client https://github.com/vitaly-zdanevich/evernote-linux-repackage