ch
Feedback
Loskir's

Loskir's

前往频道在 Telegram

Пишу про айти, технологии и не только Лайв канал: @LoskirsLive Я: @Loskir

显示更多
1 752
订阅者
无数据24 小时
-27
-530
帖子存档
Чат я фигею (бесплатно даже)
+2
Чат я фигею (бесплатно даже)

Дело в полиции закрыли через несколько дней со статусом что-то типа «расследование не ведется», но я большего и не ожидал. Через пару месяцев прислали письмо (бумажное) со словами «Мы нашли похожий велик, это не ваш? Он находится в велохранилище, проверьте на сайте». На сайте я ничего не нашел но так и забил, ибо перед получением выплаты я подписал бумажку для страховой, в которой было написано «если ваш велик когда-то найдут, он будет наш». Так что это теперь не моя проблема

🚳 О том, как у меня велик украли Вообще история произошла еще полгода назад, но только дошли руки написать пост. TLDR: нельзя сказать что это было подстроено, но риски определенно были просчитаны. Начну с предыстории. Когда я переехал в Амстердам, я купил себе электровелик. Это удобно и главное практично — я живу немножко на отшибе, и до работы мне примерно 12км в одну сторону. На обычном велике было бы немного утомительно, а на электрическом — самое то. Почти сразу же я купил себе страховку от кражи, просто на всякий случай и потому что многие советовали. Велик стоил €1760, страховка на год обошлась в €86 (5% от цены велика). Главное условие — чтобы велик в момент кражи был пристегнут к неподвижной опоре специальным сертифицированным замком. То есть если просто бросишь велик где-то, где его закинут в грузовичок и уедут — не сработает, а в остальном в принципе условий нет. Теперь к самой истории. В ноябре мне нужно было очень рано утром быть в аэропорту. Мой вылет был около семи утра, то есть приехать туда надо было в районе пяти. В такое время поезда еще не ходили, автобусы от моего дома не ходили, парковка на станции тоже была закрыта. Единственным способом добраться до аэропорта было сесть на велик, доехать до станции и сесть там на автобус. Почему-то я решил, что это хорошая идея, вместо того чтобы просто заказать такси. Я встал в четыре утра, сел на велик, доехал до станции, оставил велик там (на обычной наземной парковке, потому что охраняемая подземная была закрыта плюс я спешил) и успешно сел на автобус. Этой станцией была Bijlmer ArenA, расположенная в одном из самых «недружелюбных» районов города. Я краем мозга понимал, что это не самая умная затея, поэтому лишний раз убедился, что велосипед пристегнут как надо. Когда я вернулся из поездки через пять дней, велика и след простыл! Пришлось ехать домой на автобусе, благо вернулся я в нормальное время. Чисто теоретически моя страховка включает в себя помощь на дороге и могла бы покрыть стоимость такси до дома, но тогда я как-то не додумался. Пока ехал домой, подал онлайн заявление в полицию (просто формочка на их портале с логином через местные госуслуги, вообще на изи). Не то чтобы я рассчитывал на то что велик найдут, просто для страхового случая нужен был номер заявления в полицию. Собственно вскоре подал заявку и в страховую, где мне сначала сказали подождать две недели как "cooldown period", потом немного прикопались а точно ли мой замок был как надо сертифицирован, а потом успешно выплатили €1759 прямо точь-в-точь как в чеке. И даже потом вернули еще €62 сверху, потому что я заплатил за целый год, а пользовался страховкой в итоге всего три месяца с небольшим! В общем, я почти тут же заказал себе новый велик, другой модели но за примерно те же деньги. Так что страховка работает, рекомендую! Qover, если что.

🐧 Я попробовал Линукс Коллега на работе так разрекламировал CachyOS+Niri, что я после 5+ лет на макоси решил тоже поставить.
🐧 Я попробовал Линукс Коллега на работе так разрекламировал CachyOS+Niri, что я после 5+ лет на макоси решил тоже поставить. Первым делом после запуска установил Claude Code. И после этого ни один конфиг-файл руками я не менял. Серьезно, это просто настолько другой опыт по сравнению с моими прошлыми попытками в линукс. «Скачай программку», «настрой кейбинд», «добавь русскую раскладку», «почему вот эта программа рендерится как говно». Очень круто, когда есть first-party доступ ко всей системе через консольные команды или текстовые файлики. До этой авантюры я толком и не знал, что такое wayland, AUR, desktop-файлы и еще куча других линуксовых концептов. И я уверен, что мне не понравилось бы для этого курить arch wiki, лол. Но с Клодом гораздо проще во всём этом разобраться, хоть он и не всегда делает как надо. Так что серьезно, если вы откладывали линукс в долгий ящик, сейчас — лучшее время, чтобы попробовать. А тем временем я продолжу документировать свой путь, есть чем поделиться.

☕ У меня есть 3д-принтер, который лежал в запечатанной коробке с момента переезда. Чтобы его наконец достать, мне понадобился очень веский повод. Этим поводом стала пачка кофейных зёрен. https://loskir.notion.site/coffee-3d-print

🎄 Итоги 2025 Не буду тратить силы на подбор эпитетов. Нормальный год, не идеальный, но и не катастрофический. Главное событие года — переезд в Амстердам. До этого я почти два года жил в уютной нидерландской глуши (городок на 100к человек), и Амстердам оказался очень нужным глотком свежего воздуха. После переезда мой уровень жизни вырос, наверное, по всем параметрам. Просторная квартира вместо тесной комнатки, более удобный комьют на работу, обилие прикольных мест (относительное, конечно), более активная социальная жизнь. Это как такое мета-достижение, которое разблокировало мне рост в других сферах. Всё ещё работаю в небольшом стартапчике под названием Teero. За год команда выросла вдвое, мы перестали помещаться в маленьком уголке в коворкинге и перебрались в новый офис в центре Амстердама. Правда, такими темпами как будто скоро придется менять офис еще раз. Прикольно работать в небольшой команде с высоким темпом разработки и большой ответственностью. Приятно видеть, как твои фичи выезжают на прод и приносят пользу юзерам. Почувствовал, как моя продуктивность подросла за год, не в последнюю очередь благодаря эйай. Особое место в моём сердечке занимают комьюнити-ивенты. В этом году я побывал в 🇷🇸 Сербии на Вастрик Кэмпе, в 🇹🇷 Турции на Вастрик Флоте, съездил на 🇵🇹 Мадейру с Alumni on Tour. На таких ивентах получается ощущать себя частью целого, а не быть сам по себе. И для меня это действительно ценно. Кроме этого, пару раз побывал в 🇧🇪 Бельгии и 🇩🇪 Германии, съездил к друзьям в 🇩🇰 Копенгаген. Я вырвался из студенческого пузыря в большой город с кучей интересных людей. Благодаря комьюнити выпускников Вышки и Вастрик Клубу я познакомился с десятками новых людей, с некоторыми из которых я теперь общаюсь регулярно. Мои закладки в Google Maps наполнились десятками клёвых мест: кофейни, кафешки, магазинчики, просто места для досуга. Со временем многие из них стали по-настоящему любимыми. Очень круто видеть, как выстраивается подобная «комфортная» рутина, особенно после долгих страданий типа «такое себе конечно, но лучше все равно нет». Я начинаю чувствовать себя «своим» в Амстердаме. Начал ходить в спортзал и играть в настольный теннис. Регулярность наладить не получилось, но всё равно здорово, что получилось начать то, что откладывал уже несколько лет. Продолжил неспешно учить голландский, добрался примерно до A2. А ещё наконец пошёл учиться водить машину! Загадывать на 2026 не буду, всё равно случится что-то непредсказуемое. В общем, с наступающим!

Сука вы не представляете какой ебанутый процесс покупки домена в БУТАНЕ БЛЯДЬ

🎼 На выходных мне опять не сиделось на месте Я выкачал все свои скробблы на last.fm с помощью вот этой тулзы и загрузил их в
🎼 На выходных мне опять не сиделось на месте Я выкачал все свои скробблы на last.fm с помощью вот этой тулзы и загрузил их в питон. Получилось почти 50к скробблов с 2021 по 2025 год (да, по меркам ластфм-а я еще ньюфаг) Запихнул все скробблы в pandas dataframe, начал играться с графиками. Научился строить интерактивные графики/дашборды с помощью Plotly и Dash. И на самом деле я немного офигел, что в питоне можно делать интерактивные графики с селекторами и слайдерами! Самый прикольный график который у меня получился — это график треков, которые я слушал на репите. Я сгруппировал скробблы по трекам, взял скользящее среднее за неделю и отфильтровал только те, которые я слушал минимум пять раз в день. Как видите, в душу мне треки западают часто. И прикольно, что можно навести мышкой на трек и мысленно провалиться в тот период, когда он играл у меня в наушниках 24/7. Но ни один трек не западал мне так же сильно, как tanger — strangers once again. В конце декабря я слушал его в среднем 30 раз в день (!)

Есть у меня один проект, который я не трогал с 2021 года. Написан на vue2. На сервере установлена нода, внимание, v13 (отдельно забавляет, что нечетная версия, то есть она была актуальной буквально полгода и даже LTS не становилась). И вот понадобилось мне поменять там буквально две строчки. Меняю, коммичу, запускаю сборку — валится с полотном каких-то ошибок. Смотрю на ошибки — вебпаку (разумеется, древнейшему) не нравится новомодный синтаксис (nullish coalescense ??). Смотрю на node.green, он появился в node v14, окей, nvm install v14. Всё равно падает. Думаю «ну ладно, видимо за это отвечает какой-то из лоадеров, а вот его мне уже точно не вперлось обновлять». Решаю посмотреть поглубже, а из-за чего все-таки возникает ошибка. Смотрю и вижу, что версии зависимостей более новые, чем указано в package.json. Ага, какой-то умник не удосужился закоммитить локфайл в репу, и всё поехало. Решаю запинить версии всех зависимостей — меняю "^1.0.0" на "1.0.0". Не помогает — падает не из-за коренных зависимостей, а из-за под-зависимостей. Решаю установить эти зависимости явно с припиненной версией — не помогает, устанавливается две версии пакета: старая и новая. Смотрю доку на package.json, вижу там фичу под названием overrides, решаю заюзать. По какой-то неведомой причине всё равно ставится новая. Я в замешательстве, подумываю убить проект с концами и залить бензином. Вдруг краем глазом замечаю файлик yarn.lock. Вздыхаю, откатываю все изменения, включаю ноду v13, ставлю зависимости yarn-ом v1.22.22, и проект билдится без единой ошибки. Эта эпопея стоила мне часов пять.

🧠 LLM — настоящая находка для аутистов! У нас недалеко от офиса есть итальянская сэндвичная вот с таким меню (на 1 картинке)
+3
🧠 LLM — настоящая находка для аутистов! У нас недалеко от офиса есть итальянская сэндвичная вот с таким меню (на 1 картинке). И мне резко захотелось как-то его структурировать, потому что в таком списке глаза как-то сразу путаются (попробуйте найти все сэндвичи с sun-dried tomatoes) Раньше я бы залип на пару часов или вообще бы отказался от идеи ибо лень оцифровывать данные, а теперь буквально за 15 минут и 5 промптов в клод получил всё что душе угодно и даже больше!

🚲 Вот так выглядит лестница, ведущая на подземную велопарковку в моём амстердамском офисе. Слева — щётки, которые помогают с
🚲 Вот так выглядит лестница, ведущая на подземную велопарковку в моём амстердамском офисе. Слева — щётки, которые помогают спускать велосипед (они создают дополнительное трение, чтобы велосипед не вырывался из рук). Справа — мини-конвейер, который активируется, когда колесо нажимает на пластину в нижней части. Нужно приноровиться зажимать и отпускать тормоза в правильной последовательности, зато потом велосипед поднимается автоматически

Я купил себе Nintendo Switch (OLED)! И не простой свич, а чипованный! Пока что в полном восторге. Умельцы понаписали столько
+1
Я купил себе Nintendo Switch (OLED)! И не простой свич, а чипованный! Пока что в полном восторге. Умельцы понаписали столько занятного хоумбрюшного софта, что разобраться в этом сложновато. Похоже на моддинг-культуру в Андроиде, только всё по-другому блин! Но самое удивительное — это то, что кастомный софт на свиче (где для взлома нужно буквально сверлить плату и подпаиваться к нужным контактам, а Нинтенде это настолько не нравится, что они норовят забанить тебе консоль) оказался банально удобнее, чем на стимдеке с его steamos на базе арча, открытым загрузчиком и всеми другими плюшками. Да, стоит упомянуть, что железо в свиче на 4 года старше, чем в стимдеке, и оперативки всего 4гб вместо 16гб, но пока что для меня это не вызвало никаких проблем. Может быть, через пару месяцев я буду дико гореть от лагов и скорости загрузки, посмотрим. Брал на авито новую за 25т₽ с копейками, всем советую. В Нидерландах такое достать крайне сложно, так что удачно я съездил в Россию :D

🎨 Автоматизируем вёрстку по макету с помощью нейронок Вёрстка по дизайну из Figma — довольно механическая работа, которую хочется отдать машине. Самый очевидный подход — сделать скриншот и скормить его нейронке, но результаты обычно так себе: творчески интерпретирует размеры и выдаёт то, что лишь издали смахивает на макет. Недавно нашёл гораздо более стабильный подход, который даёт практически идеальный результат. Шаг 1: Экспортируем код из Figma. Вместо скриншотов использую плагин Figma to Code. Бесплатный, опенсорсный, без регистрации и смс, поддерживает Dev Mode. Генерит код алгоритмически, сохраняет много мета-инфы (слои, переменные). Поддерживает html+css, Flutter и SwiftUI, но сейчас сфокусируемся на JSX+Tailwind. Шаг 2: Скармливаем его нейронке (Cursor / Copilot / Claude Code / etc) с дополнительными инструкциями. Тут уже можно накидывать по вкусу и в зависимости от традиций в проекте. Я добавляю примерно такие: - Выноси SVG в отдельные файлы, импортируй либо через <img>, либо как React-компонент - Используй кастомные значения из tailwind-конфига - Убирай лишние обёртки, не добавляй элементов там, где они не нужны - Убирай избыточные классы (например, цвет текста можно повесить один раз на весь контейнер, а не на каждый абзац внутри) - Переиспользуй существующие компоненты из дизайн-системы (кнопки, инпуты) Шаг 3 (опционально): Адаптивная вёрстка. Для responsive дизайна можно попробовать скормить нейронке сразу несколько вариантов для разных размеров экрана и попросить объединить их в один компонент с правильными breakpoints. Срабатывает не так чётко, но тоже может быть полезно. В результате получается почти идеальное соответствие макету с первого раза — остаётся только добавить интерактивности. Главный кайф в том, что нейронка работает не с картинкой, а с уже структурированным кодом. Не нужно угадывать размеры и цвета — всё уже есть в исходнике.

Понял что мне слишком впадлу обновлять расширение руками раз в несколько дней, поэтому навайбкодил скриптик, который скачивает последнюю версию и проделывает нужные шаги автоматически, остается только импортировать полученный файл в курсор https://gist.github.com/Loskir/7541f26c8df183bf7c07acc86c3e5397

Hover-эффекты без дёрганий Запилил для своей кастомной темы Firefox разворачиваемый по ховеру сайдбар с вкладками. Хочу рассказать про небольшую UX-хитрость — дополнительные хитбоксы. В общих чертах сайдбар работает так: курсор находится в определенной области, сайдбар разворачивается, курсор ушёл — сворачивается. Но прикол в том, что эту область необязательно ограничивать видимыми элементами — можно добавить невидимые зоны (в реалиях кастомизации firefox — через псевдоэлементы ::before и ::after, в обычном вебе — можно и отдельными элементами). В видео показываю две таких области. Первая — статическая, она страхует курсор от попадания в промежуток между элементами (без неё было так, что сайдбар начинал разворачиваться, но на полпути слегка дёргался). Вторая — динамическая, она создаёт «буферную зону» справа от сайдбара, чтобы от малейшего выхода курсора за границы. Простой приём, но взаимодействие становится гораздо приятнее!

Ловите гайд, как использовать tsgo в Cursor 1. Заходим на страничку расширения, переходим на вкладку Version History. Смотрим
Ловите гайд, как использовать tsgo в Cursor 1. Заходим на страничку расширения, переходим на вкладку Version History. Смотрим там последнюю версию (они выпускают новую каждый день) 2. Переходим по ссылке https://marketplace.visualstudio.com/_apis/public/gallery/publishers/TypeScriptTeam/vsextensions/native-preview/[версия]/vspackage?targetPlatform=darwin-arm64 (поменяйте платформу при необходимости, по формату [linux/win32/darwin]-[arm64/x64], тут подробнее) 3. Скачанный .vsix файл переименовываем в .zip, распаковываем 4. Внутри находим файл extension/package.json, меняем в нем поддерживаемую версию в engines.vscode 5. Папку extension сжимаем в .zip, переименовываем в .vsix (не всё содержимое оригинального пакета, а только вложенную папку) 6. В курсоре открываем Command Palette, выбираем пункт "Extensions: Install from VSIX", выбираем extension.vsix 7. Включаем tsgo через Command Palette, пункт "TypeScript (Native Preview): Enable (Experimental)"

Как вы знаете, несколько месяцев назад команда Typescript публично анонсировала переписывание компилятора с собственно Typescript на Go. Обещали ускорение в 10 раз, что в принципе звучит реально, учитывая, что текущий компилятор однопоточный. Вся разработка ведется публично в репозитории typescript-go, доступны экспериментальные сборки. Полную feature parity обещают к концу года. Раньше он мне казался слишком сырым для реального использования, но на самом деле немалое количество фич уже поддержано. Решил протестировать его в нашей продакшен монорепе, в частности для подсказок в IDE (для сборки пока что всё-таки ещё сыроват, в частности из-за отсутствия поддержки target-ов отличных от esnext). Обычный тайпскрипт там просто задыхается, ответов от LSP можно ждать секунд по 10. Завести было подозрительно легко: всего лишь поставить расширение и включить нативный режим. Я думаю, никого не удивлю, если скажу, что стало быстрее. Прямо конкретно быстрее. Подсказки появляются раньше, чем успеваешь дописать название переменной. Раньше так было только в небольших проектах, а теперь и в огромной монорепе на 350к строк кода. Каких-то критичных регрессий не заметил, разве что переименование переменных пока не завезли, кажется. Но главный минус в том, что я не смог завести нативный режим в курсоре. Дело в том, что курсор (и другие форки vscode) по лицензии не могут использовать Visual Studio Marketplace, и вместо этого они тянут расширения из сторонних источников, например open-vsx. И расширения туда нужно публиковать отдельно, и разумеется Typescript этого не сделал. Но это только полбеды: я кое-как сумел стянуть .vsix файл расширения из стора, и оказалось, что оно поддерживает только новые версии vscode, а актуальная версия курсора построена на базе v1.96.2, релизнутой в ноябре прошлого года. Пришлось запускать сам vscode. И хоть я попробовал и Copilot, и Supermaven, всё равно они даже близко не стоят с качеством подсказок в курсоре. И получилась такая неприятная дилемма: либо молниеносный LSP в обычном vscode, либо гениальные AI-подсказки в медленном курсоре. День покодил по-старинке и понял — без нейросетей уже не то. Жду, когда курсор обновится и можно будет получить всё и сразу. Вот тогда заживём.

Автодополнение по Tab в Cursor — одна из тех фич, без которых потом не можешь работать. Главная магия не в дописывании нового кода, а в предложении изменений прямо в существующем. Начинаешь менять название переменной — Cursor подсвечивает все места, где её нужно поменять. Рефакторишь условие — получаешь предложение переписать весь блок. Всё это без промптов, просто работаешь как обычно, а IDE угадывает твои намерения. В опенсорсных аналогах такого не встречал ни разу. А для меня это прям киллер-фича — хотелось найти что-то подобное, но обязательно локальное, чтобы кодить хоть в бункере без интернета. Несколько месяцев назад Zed выкатил свою версию под названием Edit Prediction. Но самое вкусное — они выложили в опенсорс модельку, которую для этого используют. Зафайнтюненная Qwen2.5-Coder-7B, полностью открытая и доступная для экспериментов. Правда, есть нюанс — в самом редакторе модельку можно использовать только через их облако (ну конечно же, платно). Покопавшись в интернете, наткнулся на проект zed-zeta-server. Автор проекта зареверсил протокол и создал элегантное решение: локальный сервер, который притворяется облаком Zed, перехватывает запросы и перенаправляет их в твою локальную LLM. А сам Zed нужно просто настроить на использование локального URL вместо облачного — и, как ни странно, для этого они оставили специальную env-переменную! В общем, я с энтузиазмом первооткрывателя всё это поднял. Завелось почти без проблем, но вот производительность неприятно удивила. Оказалось, даже на моём M4 Max модель выдаёт всего 60 токенов в секунду, что при типичной длине предсказания в 300 токенов превращается в медитативные 5 секунд на каждую правку. (Почему 300 токенов? Для предсказания изменений модель получает кусок кода в радиусе 5-10 строк от курсора и должна вывести его целиком с изменениями. Даже если менять ничего не надо — всё равно 300 токенов на выход) Короче, мечта о локальном Edit Prediction пока разбилась о суровую реальность. Но чуваку-реверсеру — огромный респект, по комментариям в коде прям чувствуется, как он кайфовал от исследования протокола. Может, через пару поколений железа или нейронок это взлетит. А пока остаётся философски выбирать: платить за облачную магию или смириться с тем, что будущее пока не наступило.