Сова пишет… @sergeysova Channel on Telegram

Сова пишет…

@sergeysova


Frontend Senior Fullstack Backend Lead и прочие слова.
Изучаю самые современные технологии.
Обучаю frontend-разработчиков как стать сильнее.

Написать по коллаборациям и сотрудничеству: @sergeysova_assistant

Сова пишет… (Russian)

Добро пожаловать в мир Совы! На канале "Сова пишет…" вы найдете увлекательные материалы о Frontend Senior Fullstack Backend Lead и многие другие слова. Здесь вы сможете погрузиться в мир современных технологий, изучать новинки и делиться своим опытом. Основной целью канала является обучение frontend-разработчиков и помощь им стать еще сильнее в своем деле. Если вы хотите узнать больше о коллаборациях и возможностях сотрудничества, обращайтесь к ассистенту канала по ссылке @sergeysova_assistant. Присоединяйтесь к нам, ведь вместе мы сможем достичь больших высот в мире программирования!

Сова пишет…

06 Jan, 10:53


Раньше, я всем советовал Spark Mail App.

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

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

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

Есть например, SuperHuman, так он только Google и Outlook поддерживает, еще и ТОЛЬКО по подписке, что кринж.

У меня 5 email'ов от разных провайдеров, мне не подходит пользоваться web-приложениями КАЖДОГО провайдера.

Apple Mail не имеет даже малую часть кастомизации Spark.

Эх, это было лучшее приложение, но его убили((
Какие альтернативы?

Сова пишет…

31 Dec, 17:11


Всех с наступающим и наступившим!

Сова пишет…

24 Dec, 11:51


Я участвую в программном комитете Podlodka React Crew!

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

https://docs.google.com/forms/d/e/1FAIpQLSdkD0nx4U0IEoQbVnS6_FmRVJfpbiWCYsTbLkexZShTKVscJw/viewform

Кстати, среди проголосовавших до 17:00 по МСК 26 декабря ребята разыграют билет на новый сезон!

Сова пишет…

21 Dec, 15:06


Две игры вышли в 2024 году:
STALKER Heart of Chornobyl — 153GB
Sons of the Forest — 9GB

Графоний и оптимизации сами сравнить можете.
Сталкер на днях получил крупный патч размером 120GB.

Сова пишет…

18 Dec, 10:15


Раз уж и сюда засунули Wrapped 2024

Что у вас?

Сова пишет…

17 Dec, 17:28


Ну действительно NEW MERGE EXPERIENCE

Сова пишет…

13 Dec, 14:42


В nodejs завозят поддержку SQLite

https://nodejs.org/api/sqlite.html

Сова пишет…

10 Dec, 11:17


Готовьте ваши крипто кошельки
За ними пришел Гугл

https://blog.google/technology/research/google-willow-quantum-chip/

Сова пишет…

09 Dec, 16:31


difftastic

Это тулза для сравнения исходников через AST-деревья, вместо построчного и посимвольного.

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

Да, в git есть разные режимы сравнения, как и в VSCode/WebStorm, но они также не учитывают семантику языка.
difftastic исправляет этот недочет.
Его также можно настроить для использования по умолчанию.

Пока что главный минус — отсутствие плагина для VSCode/WebStorm. Но как минимум стоит попробовать его, чтобы понять разницу.


brew install difftastic



# ~/.gitconfig
[alias]
dl = -c diff.external=difft log -p --ext-diff
ds = -c diff.external=difft show --ext-diff
dft = -c diff.external=difft diff
[difftool]
prompt = false
[difftool "difftastic"]
cmd = difft "$MERGED" "$LOCAL" "abcdef1" "100644" "$REMOTE" "abcdef2" "100644"
[pager]
difftool = true
[diff]
external = difft
tool = difftastic

Сова пишет…

05 Dec, 16:46


OpenAI зафигачили новую нишу Pro клиентов за $200 в месяц

Как скоро самые мощные модели у конкурентов будут стоить >$100?

Сова пишет…

04 Dec, 09:53


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

С 2022 года провел 60+ часов консультаций, не очень много, по разным причинам, но это всегда интересное времяпровождение для меня.

Из интересного по моим логам:

Построение структуры фронтенд проектов.
Обсжудаем цели продукта, особенности команды, скопившееся легаси, технический стек, наличие свободного ресурса и исходя из этого строим план модернизации.
Иногда это введение инструментов контроля качества кода, иногда новые практики в команде, чаще настройка CI/CD, реже изменение архитектуры и дата-флоу.

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

React, Effector, FSD, Atomic-Router, Next.js
Конечно же, в основном приходят с вопросами по моему основному стеку. Как реализовать сложную задумку, какой архитектурный подход может лучше сработать, какие практики стоит рассмотреть, да и вообще взгляд на решение со стороны.
Я не часто использую Next.js, но приходится в нем разбираться, иногда запрашивая у клиента время на исследование.

Менторинг, личное развитие, управление временем.
Кроме технических штук, за 12+ лет работы в коммерции, пришлось перепробовать кучу разных практик по управлению своим временем, а также временем команды. Это тоже опыт, который можно из меня вытащить на консультациях.
Построить трек из списка навыков, необходимых современному разработчику, проверить собственные скиллы (я регулярно нанимаю людей в разные компании, могу поднатаскать), найти слабые места и придумать как их прокачать.

Может у вас есть задачи для меня, которые я еще не делал?
Или что-то из списка выше откликается?

В любом случае, приходите @sovasergey

Сова пишет…

03 Dec, 19:15


Astro 5 + Vite 6

Из самого интересного:

Content Layer
Позволяет динамически грузить данные для страничек из любых источников. Например из notion или вообще через fetch() откуда угодно. Что круто, так это кеширование.
Когда я трогал beta версию, можно было руками перезапустить выгрузку данных, а потом быстро рендерить уже загруженную инфу.

Server Islands
Пререндерим всё статическое в .html, а динамику из бд можем грузить и рендерить на сервере. Причем только для небольших частей интерфейса.
Нормально реализованные идеи Next.js, без привязки к React!

astro:env
Ну и самая ожидаемая мной фича — безопасное извлечение переменных и секретов.
Описываем все переменные в виде zod-схемы, а затем импортируем из astro:env/server или astro:env/client.
Секреты доступны только на сервере из astro:env/server, а вот переменные окружения доступны в любом окружении при импорте из astro:env/client.

Очень рекомендую почитать релиз ноутс и официальный гайд по Env vars.

SVG Components
В экспериментальном режиме Astro поддерживает импорт SVG как компонентов Astro.
Но не спешите грустить, есть разные варианты взаимодействия. Можно как инлайнить, так и бандлить SVG в спрайты.

Сова пишет…

02 Dec, 15:44


React-hooks не отделяют логику от UI

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

Почему? Возьмём useEffect. Этот хук будет вызываться дважды в strict mode, потому что он связан с жизненным циклом компонента. И это не баг, а фича React, спорная конечно, но в результате, любая бизнес-логика внутри такого хука становится заложником жизненного цикла React.

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

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

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

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

Используйте инструменты по назначению!

Сова пишет…

24 Nov, 10:47


В ноябре 2021 я купил предзаказ.
Атмосфера крайне приятная, персонажей озвучили, прокачали удобство.

Легенда. И баги на старте прям как в первой трилогии.

Сова пишет…

07 Nov, 16:27


Сначала люди в интернетах пишут, что Ruby умер и вообще только легаси на нем.

А потом вижу проект этого года на Ruby on Rails и всё еще радуюсь, как приятно на нем было писать.

https://github.com/maybe-finance/maybe

Сова пишет…

30 Oct, 15:22


Открыты две вакансии в BigMotion.ai
- Full-stack developer (middle)
- Backend Developer (middle/senior)

О нас
BigMotion.ai — проект в сфере AI-cоздания видео.

Наши продукты:
- Auto Short Generator
- AI Actors

Недавно к команде присоединился Head of UA с опытом развития сервиса от 0 до $5M ARR.

Обязанности
- Проектирование и разработка микросервисов на AWS Lambda
- Работа с высоконагрузочными системами (тысячи пользователей)
- Разработка новых продуктов (wrappers: text2img, img2video).
- Участие в развитии существующих продуктов компании

Технический стек
- AWS Lambda
- TypeScript
- Node.js
- Serverless
- Supabase
- Cloudflare
- Effector
- Монорепозиторий

Условия
Формат: Full-time или part-time с переходом на full-time
Зарплата: $2,500-4,500/месяц

Требования
- Опыт разработки на TypeScript/Node.js
- Знание AWS Lambda и serverless архитектуры
- Опыт работы с высоконагрузочными системами
- Умение проектировать микросервисную архитектуру

Если вас заинтересовало, делитесь своими резюме/ссылками на Linkedin с @andykozik

Сова пишет…

28 Oct, 13:16


Что меня смущает в Solid, так это излишняя непрозрачность.

Пример с classList лишь один из многих. Чтобы прочитать значение сигнала, надо вызывать как функцию. К тому же нужно юзать control-flow операторы.

Очень невнятно выглядят ошибки иной раз, но…

Stunning Absolutely Ideal Framework на эффекторе должен поддерживать react, svelte и solid из коробки, #ящитаю

Сова пишет…

25 Oct, 22:11


Слушайте, если искать замену React, так это новый Svelte

https://svelte.dev/blog/svelte-5-is-alive

Сова пишет…

25 Oct, 08:00


Решение оказалось настолько тупым в своей прямолинейности, что мне не сразу пришло в голову:


rm -rf pnpm-lock.yaml node_modules
pnpm install

Я в восторге!

P.S.
Продолжаю смотреть ViteConf, к тому же там еще NextConf подъехал.
Пока что очень мало интересных докладов, которые не пересказывают доку или блог.

Сова пишет…

22 Oct, 14:23


Сейчас потратил 8+ часов на sandpack в комплекте с codemirror, пробовал monaco-editor и это всё в astro, в браузерном окружении.
Бьюсь уже которую неделю, но codemirror отказывается подсвечивать синтаксис кода. Просто cm-line и никаких токенов, просто строка и ничего больше.

Причем, codemirror в обычном Vite SPA приложении тоже не завелся. Какой же костыльный редактор. Я даже его без оберток подключал, нифига не работает. Как его вообще хоть кому-то удается завести?

Попробовал также аналог от stackblitz TutorialKit(WebContainers API), но там нет готовых реюзабельных компонентов.
Не хочу вручную верстать Editor, Terminal, Navigator и FileTree.

Может есть хорошие embed-песочницы с поддержкой npm-пакетов?

Сова пишет…

21 Oct, 20:00


Снова настолько же стабильно как прошлый раз с AppRouter?

А его уже стабилизировали?

Сова пишет…

19 Oct, 14:22


Интересно, что

Сова пишет…

18 Oct, 13:46


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

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

Меня этот момент позабавил, потому что дома тоже есть такой "кек":
Сережа упомянул AI
день прожит не зря))

P.S.
Вместо React-библиотек, Бен использует нативный <dialog> подключаясь к его событиям.

А еще, при использовании настоящих когнитивных моделей, в Хроме можно будет не качать 30МБ+ для работы поиска, а использовать встроенный AI.
Хоть и Gemini Nano, но уже хорошо

Сова пишет…

18 Oct, 13:36


Всем привет!
Потихоньку смотрю доклады с ViteConf, там 12 часов контента, не могу так много залпом.

The Future of the Web is Local First • Ben Holmes

Бен показал как используя SQLite в браузере, вместе с Drizzle и Astro делать local-first веб-приложения.

Пакет sqlocal — это по сути билд SQLite3 под WASM, позволяет выполнять запросы к БД в памяти браузера.
Удобно, что есть адаптер для Drizzle, а значит ORM можно использовать в браузере.

Хранение .sqlite файла в системе пользователя сделано через StorageManager .getDirectory(). Юзер разрешает доступ приложению в определенную директорию на своем диске, откуда код может читать и писать.


const root = await navigator.storage.getDirectory();
const handle = await root.getFileHandle("db.sqlite");
const writable = await handle.createWritable();


Поддержка есть во всех зеленых браузерах уже больше года.

Сова пишет…

09 Oct, 12:20


Создавать красивые штуки Vercel конечно умеет

Сова пишет…

09 Oct, 12:15


Пока я смотрю записи докладов ViteConf, записался на Next.js Conf.

https://nextjs.org/conf

Сова пишет…

01 Oct, 13:55


В ближайшую пятницу 4 октября будет ViteConf.
Я буду слушать и всем советую взять онлайн билет.

Уверен, что покажут что-то интересное, особенно, если вы не следите за beta версиями и обсуждениями в репозиториях Vite.

Сова пишет…

27 Sep, 09:45


Открыл картинки гугл…

Google полностью ушел из качественного UX?

Сова пишет…

27 Sep, 08:55


Cloudflare присоединяется к OpenNext
Astro умеет в SSR с серверными экшенами

В чем смысл Next.js?
Все равно, сложные приложения на нем делать больно

Сова пишет…

25 Sep, 07:50


Тем временем, Winamp открыл исходники своей легендарной версии под Windows.

Написано на плюсах, можно скомпилить себе или портировать на Rust

https://github.com/WinampDesktop/winamp

Сова пишет…

24 Sep, 14:47


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

https://t.me/crossjoin/361

Давайте повангуем в комментариях: с какой версии Go приблизится к Rust, по сложности синтаксиса и количеству фич?

Я думаю, где-то к 1.70, Go уже не будет "простым" языком, а чисто типа Rust, только с GC и компилится побыстрее.

Поэтому прямо сегодня выбираю для себя язык сегодняшнего и будущего дня — Zig(нет).

Сова пишет…

24 Sep, 11:25


Github теперь отображает префиксы, вроде test: или feature: в названии коммита в виде лейблов!

Сова пишет…

20 Sep, 11:32


У кого есть инвайт в Deadlock?

Сова пишет…

18 Sep, 16:40


Я обычно пользуюсь tig, но тут по советам из комментов решил попробовать lazygit.

Открываю софтину, а там you rock

🗿

Сова пишет…

17 Sep, 10:36


Вот непонятно, есть ли смысл отказываться от Rectangle app.

Сова пишет…

14 Sep, 12:41


К слову, про новую «думающую» модель

Сова пишет…

12 Sep, 18:49


Что на счет новых моделей? Тестируем?

Сова пишет…

09 Sep, 22:18


Кто-то уже пользовался GitHub Models?

Сова пишет…

08 Sep, 09:02


Рассматривал логи с лендинга frontend.vision и заметил странный Yandex Browser

А также скрипт, которого в коде лендинга нет

Сова пишет…

07 Sep, 21:59


Ждем?