Map of distributed data systems
https://martin.kleppmann.com/2017/03/15/map-distributed-data-systems.html
https://martin.kleppmann.com/2017/03/15/map-distributed-data-systems.html
😁9❤3🔥3👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤5👍3😎2
- Simple blockchain with smart contracts (JavaScript + Node.js): https://github.com/HowProgrammingWorks/Blockchain
- Compare and Swap Data Structures: https://github.com/HowProgrammingWorks/CAS
- Updated examples for Atomics: https://github.com/HowProgrammingWorks/Atomics
- JavaScript CRDT implementations: https://github.com/HowProgrammingWorks/CRDT
👉 Courses
- Async 2025: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2025.md
- Node.js 2025: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2025.md
- Patterns 2025: https://nodeua.com/Patterns-2025.html
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍1🔥1🤝1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7❤1🤣1
Do you use PWA?
Anonymous Poll
24%
No idea what is it
51%
No, but I know what is PWA
14%
Yes, but without offline mode
8%
Yes, offline + http sync
2%
Yes, offline + websocket
2%
Yes, offline + webrtc
❤3🔥2👍1🤯1😢1
Вночі було гучно, от я і написав приклад PWA, що створює один Websocket у service worker для багатьох вкладок, та вміє працювати в офлайні, пересилає повідомленнями між вкладками, та в онлайні, через сервер, може інсталюватися на мобільні та браузери. Трохи згодом я до нього прикручу indexedDB, CRDT, CAS та blockchain, які окремо вже зробив, і будє вам local-first https://github.com/HowProgrammingWorks/PWA Ну тут ще багато оптимізації та інтеграції
GitHub
GitHub - HowProgrammingWorks/PWA: Progressive Web Application
Progressive Web Application. Contribute to HowProgrammingWorks/PWA development by creating an account on GitHub.
🔥37❤9👍4🤯4🤝1
I'd like to use it in the near future: (multiselect)
Anonymous Poll
37%
PWA
20%
CRDT
9%
CAS containers
36%
indexedDB
17%
Origin private file system
30%
Blockchain
27%
JavaScript smart contracts
55%
Websocket
43%
WebRTC
❤4👍4🔥1🤯1🤝1
🚀 Все це разом складає інфраструктуру для local-first додатків:
1⃣ PWA (Progressive Web App)
Веб-додатки з UX, наближеним до нативних: офлайн-режим, встановлення, швидке завантаження. Вирішують проблеми поганого зв'язку та повільної мережі поєднуючи переваги вебу та нативних застосунків.
2⃣ CRDT (Conflict-Free Replicated Data Types)
Структури даних для автоматичного вирішення конфліктів у розподілених системах. Вирішують проблеми синхронізації, паралельного редагування та забезпечують роботу офлайн-застосунків без втрати або конфліктів даних.
3⃣ CAS Containers (Compare-And-Swap)
Атомарний механізм одночасного доступу, що зберігає записи бази даних із захистом за допомогою хешів або версій. Вирішує проблеми race conditions, конфліктів одночасних змін, гарантує консистентність та забезпечує оптимістичне управління паралельним доступом у розподілених БД.
4⃣ IndexedDB (browser built-in database)
DB з API для транзакційного зберігання структурованих даних на стороні клієнта в браузерах. Вирішує проблеми збереження даних офлайн, локальних запитів, кешування та побудови b-tree індексів.
5⃣ OPFS (Origin Private File System)
Захищена високопродуктивна файлова система, доступна лише веб-додаткам у межах одного домену (точніше одного origin). Вирішує проблеми зберігання великих файлів та швидких файлових операцій у вебі.
6⃣ Blockchain (без майнінгу)
Розподілений захищений журнал записів для децентралізованої бази даних та гарантованої історії. Вирішує проблем цілісності та незмінності даних, прозорості та довіри.
7⃣ JavaScript Smart Contracts
Бізнес-логіка, виконувана мовою JavaScript у децентралізованих середовищах. Вирішує проблеми автоматизації й довіри при зміні даних, автоматичного підтвердження домовленостей, безпечного виконання коду.
8⃣ WebSocket
Протокол для двостороннього обміну даними в реальному часі через одне TCP-з'єднання. Вирішує проблеми затримок, інтерактивні додатків, наближених до реального часу.
9⃣ WebRTC (Web Real-Time Communication)
Протокол для потокової комунікації та мультимедіа, передачі даних напряму між користувачами. Вирішує проблеми прямого зв’язку в реальному часі, низьких затримок та децентралізації без проміжних серверів.
🔟 Metaschema
Декларативна мова схем для моделювання, валідації й синхронізації даних. Вирішує проблеми невідповідності даних, еволюції та міграції схем, складності опису метаданих та спрощує роботу з комплексними структурами.
1⃣ PWA (Progressive Web App)
Веб-додатки з UX, наближеним до нативних: офлайн-режим, встановлення, швидке завантаження. Вирішують проблеми поганого зв'язку та повільної мережі поєднуючи переваги вебу та нативних застосунків.
2⃣ CRDT (Conflict-Free Replicated Data Types)
Структури даних для автоматичного вирішення конфліктів у розподілених системах. Вирішують проблеми синхронізації, паралельного редагування та забезпечують роботу офлайн-застосунків без втрати або конфліктів даних.
3⃣ CAS Containers (Compare-And-Swap)
Атомарний механізм одночасного доступу, що зберігає записи бази даних із захистом за допомогою хешів або версій. Вирішує проблеми race conditions, конфліктів одночасних змін, гарантує консистентність та забезпечує оптимістичне управління паралельним доступом у розподілених БД.
4⃣ IndexedDB (browser built-in database)
DB з API для транзакційного зберігання структурованих даних на стороні клієнта в браузерах. Вирішує проблеми збереження даних офлайн, локальних запитів, кешування та побудови b-tree індексів.
5⃣ OPFS (Origin Private File System)
Захищена високопродуктивна файлова система, доступна лише веб-додаткам у межах одного домену (точніше одного origin). Вирішує проблеми зберігання великих файлів та швидких файлових операцій у вебі.
6⃣ Blockchain (без майнінгу)
Розподілений захищений журнал записів для децентралізованої бази даних та гарантованої історії. Вирішує проблем цілісності та незмінності даних, прозорості та довіри.
7⃣ JavaScript Smart Contracts
Бізнес-логіка, виконувана мовою JavaScript у децентралізованих середовищах. Вирішує проблеми автоматизації й довіри при зміні даних, автоматичного підтвердження домовленостей, безпечного виконання коду.
8⃣ WebSocket
Протокол для двостороннього обміну даними в реальному часі через одне TCP-з'єднання. Вирішує проблеми затримок, інтерактивні додатків, наближених до реального часу.
9⃣ WebRTC (Web Real-Time Communication)
Протокол для потокової комунікації та мультимедіа, передачі даних напряму між користувачами. Вирішує проблеми прямого зв’язку в реальному часі, низьких затримок та децентралізації без проміжних серверів.
🔟 Metaschema
Декларативна мова схем для моделювання, валідації й синхронізації даних. Вирішує проблеми невідповідності даних, еволюції та міграції схем, складності опису метаданих та спрощує роботу з комплексними структурами.
❤23👍10🔥5⚡3
Вчора робив лайвкод з Cursor 1.3.9 (claude-4-sonet, claude-3.5-sonet, gpt-4.1, o3, gemini-2.5-pro)
для студентів курсу по патернам, ноді та асинхронності і показав, як потрібно підходити для постановки задачі для AI, сприймати його як виконавця, а не як магічну коробочку, яка працює за вас, я більше години писав ТЗ, а потім він дуже швидко все реалізував, але усі ідеї були у ТЗ, я дав йому приклади коду зі своїх попередніх розробок, опис задачі зайняв 71 рядок: https://github.com/metarhia/metautil/blob/gsid-ai/lib/TASKS.md Після цього з невеликим додатковим доопрацюванням у 10-15 хвилин він згенерував ось ці 43 рядки коду: https://github.com/metarhia/metautil/blob/gsid-ai/lib/gsid.js та багато додаткового коду для аналізу результату, звіт по продуктивності та оптимізації що я додав у кінець файлу TASKS md. Деякі речі я публікую тут, інші будуть доступні тільки студентам. Скоро запишу відео з порівнянням, що виходить, якщо сприймати AI як асистента, а що виходить, коли людина не розуміє задачі і не може керувати AI.
для студентів курсу по патернам, ноді та асинхронності і показав, як потрібно підходити для постановки задачі для AI, сприймати його як виконавця, а не як магічну коробочку, яка працює за вас, я більше години писав ТЗ, а потім він дуже швидко все реалізував, але усі ідеї були у ТЗ, я дав йому приклади коду зі своїх попередніх розробок, опис задачі зайняв 71 рядок: https://github.com/metarhia/metautil/blob/gsid-ai/lib/TASKS.md Після цього з невеликим додатковим доопрацюванням у 10-15 хвилин він згенерував ось ці 43 рядки коду: https://github.com/metarhia/metautil/blob/gsid-ai/lib/gsid.js та багато додаткового коду для аналізу результату, звіт по продуктивності та оптимізації що я додав у кінець файлу TASKS md. Деякі речі я публікую тут, інші будуть доступні тільки студентам. Скоро запишу відео з порівнянням, що виходить, якщо сприймати AI як асистента, а що виходить, коли людина не розуміє задачі і не може керувати AI.
GitHub
metautil/lib/TASKS.md at gsid-ai · metarhia/metautil
Metarhia utilities 🧰. Contribute to metarhia/metautil development by creating an account on GitHub.
👍23🔥4❤3💯1
🎫 Відкрив Community підписку на Patreon для щотижневих стрімів, семінарів, лайвкоду, Q&A сесій, усяких матеріалів, що я випускникам готую. Раніше вона була, але останні два роки я туди запрошував тільки усіх, хто на курси приходив та випускників, кожного тижня 2 години, ми вже це ведемо 5 років, там завжди цікаво. Тепер $10 на місяць: https://www.patreon.com/tshemsedinov/membership
❤8👍2🔥2🤝1
- Short prompt in vibe coding style
- Step-by-step chat with AI in vibe coding style
- Technical specification implementation
https://github.com/HowProgrammingWorks/CodeWithAI
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🔥4👍3
https://youtu.be/_S8zcKaj7Fk
CAS-контейнер это один из блоков, из которых мы соберем технологию для local-first (offline-first) разработки, вместе с CRDT и Websocket он обеспечит синхронизацию приложений между закладками браузера, между несколькими устройствами, между разными пользователями. Менторы курса Patterns делают пример фронтенда, я пишу бекенд и синхронизацию. Скоро мы объединим это вместе с PWA и web workers, OPFS и indexedDB как я писал тут https://www.tg-me.com/metarhia/1904 а позже реализуем транспорт при помощи WebRTC, а целостность состояния будет обеспечивать Blockchain. Конечно, их использование не обязательно, это просто блоки, из которых можно будет собрать свое решение. Бизнес-логику можно будет писать как сервисы или как смарт-контракты на выбор. Даже разработка API будет рациональной, 80% функциональности можно делать без серверного API даже вообще не разрабатывая сервера, на автоматической синхронизации базы данных, но можно и свое API реализовать. Поставьте ❤️ если вы уловили, что мы хотим сделать, 👍 если частично, но интересно, 🤷♂ если совсем сложно понять. Все эти технологические блоки совсем скоро позволят писать фронтенд не в стиле простыни, где визуальные компоненты содержат работу с API через fetch, а бизнес-логика размазана по событиям на кнопочках (как в делали ваши деды на Delphi), но позволит делать чистую архитектуру и изолировать слои. Ни кто, конечно, не запретит писать лапшу, но сделать простое и красивое решение будет в разы проще. Что мы покажем на примере проекта.
CAS-контейнер это один из блоков, из которых мы соберем технологию для local-first (offline-first) разработки, вместе с CRDT и Websocket он обеспечит синхронизацию приложений между закладками браузера, между несколькими устройствами, между разными пользователями. Менторы курса Patterns делают пример фронтенда, я пишу бекенд и синхронизацию. Скоро мы объединим это вместе с PWA и web workers, OPFS и indexedDB как я писал тут https://www.tg-me.com/metarhia/1904 а позже реализуем транспорт при помощи WebRTC, а целостность состояния будет обеспечивать Blockchain. Конечно, их использование не обязательно, это просто блоки, из которых можно будет собрать свое решение. Бизнес-логику можно будет писать как сервисы или как смарт-контракты на выбор. Даже разработка API будет рациональной, 80% функциональности можно делать без серверного API даже вообще не разрабатывая сервера, на автоматической синхронизации базы данных, но можно и свое API реализовать. Поставьте ❤️ если вы уловили, что мы хотим сделать, 👍 если частично, но интересно, 🤷♂ если совсем сложно понять. Все эти технологические блоки совсем скоро позволят писать фронтенд не в стиле простыни, где визуальные компоненты содержат работу с API через fetch, а бизнес-логика размазана по событиям на кнопочках (как в делали ваши деды на Delphi), но позволит делать чистую архитектуру и изолировать слои. Ни кто, конечно, не запретит писать лапшу, но сделать простое и красивое решение будет в разы проще. Что мы покажем на примере проекта.
YouTube
🧑💻 CAS в JavaScript: Compare and Swap контейнеры значений и записей со сравнением по версии и хешу
👉 Code examples: https://github.com/HowProgrammingWorks/CAS
👉 Курс «Асинхронное программирование»: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2025.md
👉 Курс Node.js: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS…
👉 Курс «Асинхронное программирование»: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2025.md
👉 Курс Node.js: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS…
👍33❤20🤷♂11🔥1
💡Just a fact: AI способен создавать 2.7 миллиона языков программирования в день
🤣34❤1🔥1💯1