Комментарии (86)
I was fresh at university, around 2001, and our mathematics professor introduced us to Python with NumPy/SciPy as an alternative to the commercial math tools. There aren't many events that changed my career as much as that. Being exposed only to compiled languages before that, it
Комментарии (136)
Other personality changes are subtler but still unsettling, like when models start sucking up to users or making up facts.My understanding is that the former (sucking up) is a personality trait, substantially influenced by the desire to facilitate engagement. The latter (making
Automerge 3.0 🔥 Горячее
Automerge — это движок синхронизации данных с приоритетом локальной работы, упрощающий создание коллаборативных приложений. Выпущена версия 3.0.
Главное обновление — резкое снижение потребления памяти. Ранее хранение полной истории документов могло приводить к гигабайтам в ОЗУ. В 3.0 память сокращена более чем в 10 раз (иногда значительно больше), что делает Automerge применимым в куда большем числе сценариев.
Также упразднены избыточные API, особенно при работе со строками.
Если вы уже используете Automerge, обновляйтесь: формат файлов тот же, API почти полностью обратно совместим. Подробности — в руководстве по миграции. Если вы ещё не пробовали, сейчас хорошее время — производительность и надежность сильно выросли.
Чтобы узнать, как достигнуты улучшения, читайте далее.
-
Улучшенное использование памяти
- Automerge хранит каждое изменение для офлайн-работы, конфликтов и истории; это требует большого объёма метаданных.
- Раньше: сжатый колоночный формат «на диске», но при загрузке в память — несжатый вид, из-за чего ОЗУ раздувалось.
- Теперь: сжатое представление используется и во время выполнения, давая огромную экономию. Пример: вставка «Моби Дика» — было ~700 МБ в v2, стало ~1,3 МБ в v3.
- Меньше памяти — стабильнее нагруженные сервера синхронизации.
- Для документов с длинной историей существенно ускорена загрузка (пример: с «не загрузилось за 17 часов» до 9 секунд).
-
Упрощение API
- Два типа строк: «коллаборативные» (сливают правки) и «неколлаборативные».
- В 1.0: обычные строки для неколлаборативных, класс Text — для коллаборативных.
- В 2.0 (namespace next): сделали коллаборативный текст по умолчанию — строки для него, RawString для неколлаборативного.
- В 3.0: закрепили новый подход — удалён Text, API next стал дефолтным; RawString переименован в ImmutableString.
-
Попробовать
- Automerge 3.0 используется по умолчанию в последних
@automerge/automerge-repoи@automerge/react(версия2.1.0). - Новичкам — туториал. Существующим кодовым базам — руководство по миграции; если зависите от
@automerge/automerge-repo, выполнитеnpm update @automerge/automerge. - Проблемы — создавайте issue; вопросы — в Discord.
- Automerge 3.0 используется по умолчанию в последних
Комментарии (29)
- Обсуждение вокруг Automerge 3.0: многие впечатлены скачком производительности и «local‑first» подходом к CRDT; сравнивают с Yjs, ElectricSQL, Convex, Zero и интересуются бенчмарками.
- Ключевой апгрейд: сжатое представление данных теперь используется на рантайме — память и время загрузки резко снижены (пример: «Моби Дик»: ~700 МБ → ~1,3 МБ в v3).
- Вопросы по применимости: когда выбирать Automerge/Yjs (совместное редактирование, rich text) vs ElectricSQL (сервер — источник истины, синхронизация приложения). Также интерес к настройкам для «одиночной» кросс‑девайс синхронизации.
- Технические вопросы: структура полурешётки, тип регистра карт (MV-Register vs LWW), поддержка перемещений в деревьях, permissioned-блоки в документе, интеграция с TipTap/ProseMirror, терминальные UI, C/Rust API и состояние C-обёртки.
- Ответы/подсказки: TipTap можно использовать, обернув схему атрибутами Automerge; undo/redo меняется соответствующим образом; ссылки на конфликты в доках; перемещения в деревьях прототипировались (Клепманн), но, похоже, ещё не в основном релизе.
- Практические интересы: какие железо/серверные ресурсы нужны для синка и сколько чтений/записей выдержит; запрос бенчмарков против Yjs и рекомендации по альтернативам (jsonjoy для перформанса).
- Сообщество делится опытом кастомных CRDT, типобезопасностью, бизнес‑правилами и тем, как это вписать в Automerge; часть аудитории всё ещё ищет простое объяснение, «что именно делает» инструмент.
Комментарии (33)
I find it incredible that we all now have access to an SGI-level machine at home, thanks to Nvidia. This reminds me of a previous thread on HN: https://news.ycombinator.com/item?id=39945487 I remember getting an Indigo2 Max Impact that had been in a fire (smoke damage) and restor
Комментарии (25)
See https://fabacademy.org/ for the version of the MIT HTMAA class open to all. It's run by Neil Gershenfeld.Also, the class documentation itself is not where the "cool" stuff is, it's in all the student documentation. Here is a list of all the students in this past years FabAcad
Tokens are getting more expensive 🔥 Горячее 💬 Длинная дискуссия
—
Комментарии (253)
From the article:> consumers hate metered billing. they'd rather overpay for unlimited than get surprised by a bill.Yes and no.Take Amazon. You think your costs are known and WHAMMO surprise bill. Why do you get a surprise bill? Because you cannot say 'Turn shit off at X money pe
If you're remote, ramble 🔥 Горячее 💬 Длинная дискуссия
—
Комментарии (454)
Let me share a personal story. Back in 2014 when I was working at Cloudflare on DDoS mitigation I collaborated a lot with a collage - James (Jog). I asked him loads of questions, from "how to login to a server", via "what is anycast" to "tell me how you mitigated this one, give m
Комментарии (36)
Huh - literally every trick in the toolbox (pun intended) is used to integrate the running System with the host OS.An actual Quadra ROM, but a System Enabler (and a Helper application). For Toolbox UI services, it does everything from patch the Toolbox (e.g. to prevent windows fr
Комментарии (102)
This is epic: :)From : https://github.com/ioccc-src/winner/blob/master/2024/kurdyuk...This code draws the current moon phase to the console. So if you’re a lycanthrope, you can monitor the phase of the moon.#include <time.h> #include <stdio.h> a,b=44,x, y,z;main() {!a ?a=2551443,
Комментарии (112)
Whenever I start to feel like a real programmer making games and webapps and AI-enhanced ETL pipelines, I inevitably come across the blog post of a C++ expert and reminded that I am basically playing with legos and play-doh. I had to do a UML thing for the first time in years for