Work & Beer Balance
1.53K subscribers
117 photos
5 videos
4 files
188 links
Авторский канал @Akiyamka
Поддержать автора можно здесь:
buymeacoffee.com/cherrytea
Download Telegram
Совершенно случайно обнаружил совместимый с vite апи сборщик на расте

https://www.farmfe.org/
🔥5🤯4👍1
Раньше общаясь в интернете с незнакомцами я думал что я просто не умею выражать свою мысль, поэтому все что может быть понято не правильно понималось именно так. А с близкими такой проблемы нету ну потому это же близкие, они хорошо нас знают.

Однако LLM понимает все что я ей пишу даже в весьма двусмысленных ситуациях не зная меня.

Может люди просто не хотят понимать, а не не могут, и предельно точные формулировки нужны не столько для того чтобы тебя поняли, сколько для того чтобы у той стороны не было шанса исказить смысл сказанного.
👍15💯32🙏1
Т.е. можно просто взять и запустить докер имедж локально но на мощностях удаленного сервера?

https://dev.to/bobbyiliev/getting-started-with-docker-offload-8ek
1🤯1
Когда я во сне разобрал часы я увидел там некую визуальную абстракцию того что мы называем часовым механизмом. Там было много маленьких вращающихся шестереночек соединенных случайным образом. Это ведь похоже на то как галлюцинирует AI. У меня не было достаточного опыта в ковырянии часов, и я довольствуюсь таким приблизительным образом. Так же и качество модели зависит о качества датасета. А чем он отличается от опыта?

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

А что будет если дать AI возможность формировать свой собственный опыт?
Ну не знаю, может его подключить к массиву датчиков для наблюдении за планетой? Может даже в невидимом нам спектре. Или вовсе за космосом. Что если в конце концов люди станут обогащаться опытом который получил AI, его представлениями и абстракциями, определениями и новыми словами.
🤔6💊2🔥1😱1
Кто-то додумался хранить картинки в dns записях. И даже сделал весь необходимый тулинг.

Сохраню на случай если буду играть в Цикаду 3301 в 2029ом
(а я то думал после лефтпада npm на эти грабли не наступит)
😁11🤔1
В книге об армейских обычаях, "неуставных" правилах и традициях выпуска годов тае 60-х девятнадцатого века прочитал о поговорках, некоторые, а силу упортебимости и сейчас, запомнились.
Среди них была и поговорка "Так, сказал бедняк", произносимая старшим офицером, когда подразделение получало задание, не обеспеченное материальными ресурсами. Младшим офицерам традицией предписывалось хором отвечать начальству "и хером расколол полено", после чего начиналось обсуждение операции. В случае если старший командир в чине подполковника или выше, отвечать вслух категорически не следовало.

Возьмем на вооружение
😁10
Сегодня я узнал что .catch без колбэка - ничего не словит.
(ранее я всегда туда передавал колбэк, и не знал что будет если так не делать, из-за чего не сразу опознал в коде место ошибки);

На примерах:

Cледующий код все равно выбросит ошибку
const promise = new Promise((_, reject) => {
setTimeout(() => reject('Catch me if you can'))
})

promise.catch()

Поэтому чтобы заглушить ошибку нужно как минимум передать в catch колбэк
const promise = new Promise((_, reject) => {
setTimeout(() => reject('Catch me if you can'))
})

promise.catch(() => void 0)


Думаю это было сделано для того чтобы можно было делать условный catch
const promise = new Promise((_, reject) => {
setTimeout(() => reject('Catch me if you can'))
})

promise.catch(wantToCatch ? () => void 0 : void 0)


(если вы не знаете что такое`void 0` - это тоже самое что длинное undefined. В прод коде мне так "почему-то" не разрешают писать, так что отрываюсь на своих читателях : )
👍10
Поговорим о необычных девайсах, слышали про laptop dock?

Последнее время я очень пристально слежу за рынком Mini PC. (присматриваю себе домашний веб сервер для своих проектов)
И удивительное дело - в коробочки размером с роутер (а то и меньше) запихивают внушительные мощности,
Конкуренция бешеная, beelink, minisforum, gmktec предлагают на выбор варианты от $100 до $2000.
Па паре вариантов есть у Lenovo, Nvidia, Corsair

Ну вот например Ryzen R7 (4.7GHz) 24GB RAM, 500GB за $299. Ноутбук за 300$ - это будет какой-нибудь chromойбук с 8GB RAM, 64 GB SSD и телепающимся всем.

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

И я подумал - блин дайте мне скелет ноута в котором есть только батарейка, клавиатура тачпад да монитор, порт по которому все это можно подключить к внешнему пк (в первую очередь к микро пк) и получится бесконечно обновляемый на любую хрень девайс.

Конечно остается челедж как случайного размера коробочку, пусть и маленькую, к нему прицепить...
Кстати, в него можно было б подключить и мой смартфон, (который едва ли уступает типичному офисному ноуту).
А если у вас уже есть steam deck... на него же можно деалбут поставить!

Вообщем я пошел мучить интернет и внезапно (для меня) такой девайс есть
- nexdock-xl
- uperfect-x
- EVICIV
72👍1🔥1
Что не так с этим кодом?
const data = await (id ? getData(id) : {})


В парадигме JavaScript все хорошо, а вот для Typescript тут есть подляна - мы потеряли вывод возвращаемого типа из getData, отвалились подсказки, и хуже того дальше оно "растекается по коду" превращая все в тип `{}`с чем пересекается.

К сожалению typescript на такое не ругается, и найти это место бывает сложно, так что лучше иметь ввиду и фолбечиться на null или undefined.

Живой пример

#typescript
👍9
Я был уверен что это случится, но не думал что так скоро. Согласно утечкам AMD скоро презентует новый класс устройств - дискретный NPU. Ждём-с
🔥4👍2
США запретили в Китай продавать мощные железки, так что они начали делать свои.

Теперь у них даже своя китайская NVidia есть - называется Lisuan.

Запомните это название, они уже выпустили свой аналог RTX 4060, только с 24 GB DDR6 памяти. Цена пока не известна, но что то мне подсказывает, что с субсидиями государства она должна быть ощутимо дешевле конкурентов на внутреннем рынке
👍6
Прислали мне скидку на новую версию смартфона но просят его не покупать.

Как будто в альтернативную вселенную попал.

Вот что действительно возвращает веру в человечество, а не красивые иконки в приложениях
👍158😁3👎1
Дешборда антропика би лайк 🙈
Пока все встраивают AI в свои инструменты wallaby решил сделать новые инструменты чтобы было проще дебажить сгенерированный говнокод.

По ссылочке есть видео и больше информации
https://wallabyjs.com/blog/diagrams.html
👍8
Наконец-то в Linux появился реально классный графический редактор которого так не хватало!
Он только только вышел, а уже очень меня радует.

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

С горой документации, и видео туториалами.

и все это FOSS, , и судя по родмапу это они только начали.

(Заставка сделана в нем через минуту после установки)

https://pixieditor.net/download/
🔥8👍42
В Typescript что вышел пять дней назад (5.9) завезли фичу - разворачивающихся подсказок с типами
https://devblogs.microsoft.com/typescript/wp-content/uploads/sites/11/2025/06/expandable-quick-info-1.mp4

Что еще там:

- import defer - импорт модулей которые будут инициализированы лениво

- --module node20 - флаг с которым можно рекваерить (require) esm модули

- кэширование которое значительно улучило перф ts-a при работе с такими либами как как Zod и tRPC

- fileOrDirectoryExistsUsingSource - убирает лишние обертки над функциями из анализа улучшая время старта tsserver на 11%

Брейкинг Ченжи в lib.d.ts:

- ArrayBuffer это больше не супертип для всех TypedArray
Миграция выглядит вот так:

 let data = new Uint8Array([0, 1, 2, 3, 4]);
- someFunc(data)
+ someFunc(data.buffer)
👍91🔥1
Мне всегда было интересно а что там будет если превысить MAX_SAFE_INTEGER.
Понятно что ничего хорошего, но все же, что именно?

const x = Number.MAX_SAFE_INTEGER + 1;
const y = Number.MAX_SAFE_INTEGER + 2;
console.log(x === y); // true

// YES. BUT

const a = Number.MAX_SAFE_INTEGER + 111
const b = Number.MAX_SAFE_INTEGER + 112
console.log(a === b) // false

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

Сначала JS перестает "видеть" разницу между числами которая 2 и меньше. И чем дальше тем точность больше будет "загрубляться"

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

Немного душноты для тех кому интересна техническая часть
Это связано с тем, как IEEE 754 представляет числа. После MAX_SAFE_INTEGER шаг между представимыми числами становится 2, затем 4, затем 8 и т.д. +1 и +2 попадают в один "слот", а +111 и +112 — в разные.

Мантисса: 52 бита + 1 скрытый бит = 53 значащих бита, и при превышении 2^53 младший бит мантиссы представляет 2 единицы, не 1
🔥5👍2
Только что у узнал что у fedora есть atomic версия - это иммутабельная система где все графические приложения устанавливаются только через flatpack, а cli и либы через Toolbx/Distrobox

Почему это круто и почему я сейчас же это попробую:

Я часто что-то билжу у себя локально. Ну например - вчера я собирал демку для моего ESP32 устройства в новом для себя фреймворке Espressif IDF.
Для того чтобы она собралась надо поставить зависимости в систему. МНОГО зависимостей.
sudo dnf install flex bison gperf cmake ninja-build ccache libffi-devel openssl-devel dfu-util libusb1-devel

В последствии я вероятно перелезу на что-то еще, а весь этот хлам так и останется в системе.

А на прошлой неделе я собирал кастом прошивку на мой принтер - и там была аналогичная ситуация.

В итоге:
🔻 Cистема обрастает хламом который нужен одному конкретному проекту
🔻 Вероятность словить конфликты зависимостей каждый раз возрастает
🔻 dnf обрастает кучей лишних репозиториев которые замедляют обновление.

Я думаю вы теперь понимаете почему что-то во мне каждый раз кричит о том что это все не правильно, и все равно что зависимости каждого js проекта ставить с флагом --global

Как я пытался это решать:

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

🔸 Dev Containers
В целом это тоже самое что первый пункт но без минуса - теперь можно работать внутри него.
Цена - нормально поддерживается только в vscode (в zed вроде тоже можно но я не осилил), и писать конфиг dev контейнера на практике оказалось ничуть не проще, а порой даже сложнее чем докер файл

🔸 Devbox
Решение на базе Nix. Иногда это работает, особенно в популярными экосистемами такими как у rust, go, js или python. Что-то более редкое, различные репы на C++ / C или Zig оказалось запускать в этом окружении
Во многом оно просто работает только в том случае, если до вас кто-то уже отстрадал и потом еще обновляет и поддерживает результат своих страданий.
Самому менеджить никс и создавать в нем пакеты оказалось в 10 раз сложнее чем дев контйенеры! К тому же изоляция не "настоящая" и ограниченна переменными окружения - C пакеты с makefile клали на них большой болт

🧩А вот что предлагает atomic.

🔹 GUI приложения → Flatpak
flatpak install org.mozilla.firefox
flatpak install com.visualstudio.code


🔹 CLI инструменты → Toolbx/Distrobox
# Создание изолированного контейнера
toolbox create my-container

# Работа внутри контейнера
toolbox enter my-container

# Внутри контейнера - обычная Fedora!
sudo dnf install nodejs python3-pip docker vim
pip install poetry
npm install -g typescript
code .

# Выходим из контейнера и удаляем когда не нужен вместе со всеми зависимостями
exit
toolbox rm my-container


🔹 Системные компоненты → rpm-ostree layering
# Только для критичных системных пакетов
rpm-ostree install zsh fish

# Требует перезагрузки!
systemctl reboot

rpm-ostree layering работает похоже на git - можно легко откатиться на любой состояние системы с снова вернуться к нему (полезно например для определения что вызвало баг)
Кроме того любой системный пакет можно восстановить на "родное состояние"
# Заменить системный пакет на другую версию
rpm-ostree override replace /path/to/custom-kernel.rpm

# Откатить замену
rpm-ostree override reset kernel
9👍2🔥2