home.social

#yjs — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #yjs, aggregated by home.social.

fetched live
  1. Все тесты зелёные, а байты разные: как я проверяю порты бинарных форматов

    У меня было полторы сотни кросс-языковых фикстур, все тесты зелёные, и я был уверен, что мой Go-порт Yjs байт-в-байт совместим с оригиналом. Потом сравнил байты напрямую с канонической реализацией, и они разъехались: семантика сходится идеально, а на проводе документ толще. Юнит-тесты, roundtrip и даже конвергенц-тесты систематически пропускают баги совместимости, когда портируешь чужой бинарный формат на другой язык. Рабочий метод один: генерировать фикстуры из канона и требовать в CI побайтового совпадения в обе стороны. Разбираю конвейер и три реальных бага из трёх своих портов (Yjs, Loro, Willow): документ в 12 раз толще канона, big-endian остров, который молча портил бы все float’ы при обмене, и дыра, через которую 9-байтный апдейт заказывал make() на 67 ТБ. Метод обобщается на любой «порт формата X на язык Y», CRDT тут просто материал.

    habr.com/ru/articles/1049858/

    #CRDT #Yjs #Loro #Go #тестовые_векторы #фикстуры #wire_format #conformance_testing #байтсовместимость #сериализация

  2. Все тесты зелёные, а байты разные: как я проверяю порты бинарных форматов

    У меня было полторы сотни кросс-языковых фикстур, все тесты зелёные, и я был уверен, что мой Go-порт Yjs байт-в-байт совместим с оригиналом. Потом сравнил байты напрямую с канонической реализацией, и они разъехались: семантика сходится идеально, а на проводе документ толще. Юнит-тесты, roundtrip и даже конвергенц-тесты систематически пропускают баги совместимости, когда портируешь чужой бинарный формат на другой язык. Рабочий метод один: генерировать фикстуры из канона и требовать в CI побайтового совпадения в обе стороны. Разбираю конвейер и три реальных бага из трёх своих портов (Yjs, Loro, Willow): документ в 12 раз толще канона, big-endian остров, который молча портил бы все float’ы при обмене, и дыра, через которую 9-байтный апдейт заказывал make() на 67 ТБ. Метод обобщается на любой «порт формата X на язык Y», CRDT тут просто материал.

    habr.com/ru/articles/1049858/

    #CRDT #Yjs #Loro #Go #тестовые_векторы #фикстуры #wire_format #conformance_testing #байтсовместимость #сериализация

  3. Все тесты зелёные, а байты разные: как я проверяю порты бинарных форматов

    У меня было полторы сотни кросс-языковых фикстур, все тесты зелёные, и я был уверен, что мой Go-порт Yjs байт-в-байт совместим с оригиналом. Потом сравнил байты напрямую с канонической реализацией, и они разъехались: семантика сходится идеально, а на проводе документ толще. Юнит-тесты, roundtrip и даже конвергенц-тесты систематически пропускают баги совместимости, когда портируешь чужой бинарный формат на другой язык. Рабочий метод один: генерировать фикстуры из канона и требовать в CI побайтового совпадения в обе стороны. Разбираю конвейер и три реальных бага из трёх своих портов (Yjs, Loro, Willow): документ в 12 раз толще канона, big-endian остров, который молча портил бы все float’ы при обмене, и дыра, через которую 9-байтный апдейт заказывал make() на 67 ТБ. Метод обобщается на любой «порт формата X на язык Y», CRDT тут просто материал.

    habr.com/ru/articles/1049858/

    #CRDT #Yjs #Loro #Go #тестовые_векторы #фикстуры #wire_format #conformance_testing #байтсовместимость #сериализация

  4. 🎭🤦‍♂️ "Lies I was Told About Collaborative Editing" Part 2: Why we don’t use #Yjs - because apparently, when it comes to offline editing, Yjs is about as useful as a chocolate teapot 🍫☕. Brace yourselves for groundbreaking revelations that #algorithms might not be perfect 👀.
    moment.dev/blog/lies-i-was-tol #LiesAboutCollaborativeEditing #OfflineEditing #ChocolateTeapot #GroundbreakingRevelations #HackerNews #ngated

  5. 🎭🤦‍♂️ "Lies I was Told About Collaborative Editing" Part 2: Why we don’t use #Yjs - because apparently, when it comes to offline editing, Yjs is about as useful as a chocolate teapot 🍫☕. Brace yourselves for groundbreaking revelations that #algorithms might not be perfect 👀.
    moment.dev/blog/lies-i-was-tol #LiesAboutCollaborativeEditing #OfflineEditing #ChocolateTeapot #GroundbreakingRevelations #HackerNews #ngated

  6. 🎭🤦‍♂️ "Lies I was Told About Collaborative Editing" Part 2: Why we don’t use #Yjs - because apparently, when it comes to offline editing, Yjs is about as useful as a chocolate teapot 🍫☕. Brace yourselves for groundbreaking revelations that #algorithms might not be perfect 👀.
    moment.dev/blog/lies-i-was-tol #LiesAboutCollaborativeEditing #OfflineEditing #ChocolateTeapot #GroundbreakingRevelations #HackerNews #ngated

  7. 🎭🤦‍♂️ "Lies I was Told About Collaborative Editing" Part 2: Why we don’t use #Yjs - because apparently, when it comes to offline editing, Yjs is about as useful as a chocolate teapot 🍫☕. Brace yourselves for groundbreaking revelations that #algorithms might not be perfect 👀.
    moment.dev/blog/lies-i-was-tol #LiesAboutCollaborativeEditing #OfflineEditing #ChocolateTeapot #GroundbreakingRevelations #HackerNews #ngated

  8. Секреты работы онлайн-редакторов: что происходит при совместном редактировании? Yjs, CRDT, и другие магические слова

    Представьте: вы и коллега в разных уголках планеты, но курсоры ваши встречаются в документа онлайн редактора. Вы одновременно вставляете слова в одну и ту же позицию или удаляете фрагмент текста, который ваш коллега в этот момент редактирует. Казалось бы, результат должен превратиться в хаос, но всё складывается в единую, логичную версию текста — несмотря на расстояния, задержки и одновременные правки. При этом вы даже не ждете, пока ваши изменения согласуются с общим состоянием на сервере. Просто редактируете документ и можете быть уверены в том, что ваши изменения применятся. На деле за этим волшебством часто скрываются CRDT — структуры данных, делающие возможной децентрализованную синхронизацию. Я сам столкнулся с этим, когда работал над онлайн-совместным редактором: CRDT и библиотека Yjs буквально спасли мой проект от хаоса и сделали синхронизацию прозрачной. Меня зовут Никита Лыкосов, я занимаюсь фронтенд-разработкой в

    habr.com/ru/companies/doubleta

    #GCounter #CRDT #Yjs #wysiwyg #wysiwygредактор #коллаборатиныйредактор #колллаборативные_редакторы_текста

  9. Секреты работы онлайн-редакторов: что происходит при совместном редактировании? Yjs, CRDT, и другие магические слова

    Представьте: вы и коллега в разных уголках планеты, но курсоры ваши встречаются в документа онлайн редактора. Вы одновременно вставляете слова в одну и ту же позицию или удаляете фрагмент текста, который ваш коллега в этот момент редактирует. Казалось бы, результат должен превратиться в хаос, но всё складывается в единую, логичную версию текста — несмотря на расстояния, задержки и одновременные правки. При этом вы даже не ждете, пока ваши изменения согласуются с общим состоянием на сервере. Просто редактируете документ и можете быть уверены в том, что ваши изменения применятся. На деле за этим волшебством часто скрываются CRDT — структуры данных, делающие возможной децентрализованную синхронизацию. Я сам столкнулся с этим, когда работал над онлайн-совместным редактором: CRDT и библиотека Yjs буквально спасли мой проект от хаоса и сделали синхронизацию прозрачной. Меня зовут Никита Лыкосов, я занимаюсь фронтенд-разработкой в

    habr.com/ru/companies/doubleta

    #GCounter #CRDT #Yjs #wysiwyg #wysiwygредактор #коллаборатиныйредактор #колллаборативные_редакторы_текста

  10. Секреты работы онлайн-редакторов: что происходит при совместном редактировании? Yjs, CRDT, и другие магические слова

    Представьте: вы и коллега в разных уголках планеты, но курсоры ваши встречаются в документа онлайн редактора. Вы одновременно вставляете слова в одну и ту же позицию или удаляете фрагмент текста, который ваш коллега в этот момент редактирует. Казалось бы, результат должен превратиться в хаос, но всё складывается в единую, логичную версию текста — несмотря на расстояния, задержки и одновременные правки. При этом вы даже не ждете, пока ваши изменения согласуются с общим состоянием на сервере. Просто редактируете документ и можете быть уверены в том, что ваши изменения применятся. На деле за этим волшебством часто скрываются CRDT — структуры данных, делающие возможной децентрализованную синхронизацию. Я сам столкнулся с этим, когда работал над онлайн-совместным редактором: CRDT и библиотека Yjs буквально спасли мой проект от хаоса и сделали синхронизацию прозрачной. Меня зовут Никита Лыкосов, я занимаюсь фронтенд-разработкой в

    habr.com/ru/companies/doubleta

    #GCounter #CRDT #Yjs #wysiwyg #wysiwygредактор #коллаборатиныйредактор #колллаборативные_редакторы_текста

  11. Docs: Real-time collaborative note-taking system, with off-line mode.

    Built on top of #Django #NextJS #Yjs (CRDTs) #MinIO #BlockNoteJS. Easy to self-host, MIT license. Joint effort of the French and German governments.

    docs.numerique.gouv.fr/

    github.com/suitenumerique/docs

    /via @alexlunaview

    #FreeSoftware #OpenSource #Olé

  12. Docs: Real-time collaborative note-taking system, with off-line mode.

    Built on top of #Django #NextJS #Yjs (CRDTs) #MinIO #BlockNoteJS. Easy to self-host, MIT license. Joint effort of the French and German governments.

    docs.numerique.gouv.fr/

    github.com/suitenumerique/docs

    /via @alexlunaview

    #FreeSoftware #OpenSource #Olé

  13. Docs: Real-time collaborative note-taking system, with off-line mode.

    Built on top of #Django #NextJS #Yjs (CRDTs) #MinIO #BlockNoteJS. Easy to self-host, MIT license. Joint effort of the French and German governments.

    docs.numerique.gouv.fr/

    github.com/suitenumerique/docs

    /via @alexlunaview

    #FreeSoftware #OpenSource #Olé

  14. Docs: Real-time collaborative note-taking system, with off-line mode.

    Built on top of #Django #NextJS #Yjs (CRDTs) #MinIO #BlockNoteJS. Easy to self-host, MIT license. Joint effort of the French and German governments.

    docs.numerique.gouv.fr/

    github.com/suitenumerique/docs

    /via @alexlunaview

    #FreeSoftware #OpenSource #Olé

  15. Docs: Real-time collaborative note-taking system, with off-line mode.

    Built on top of #Django #NextJS #Yjs (CRDTs) #MinIO #BlockNoteJS. Easy to self-host, MIT license. Joint effort of the French and German governments.

    docs.numerique.gouv.fr/

    github.com/suitenumerique/docs

    /via @alexlunaview

    #FreeSoftware #OpenSource #Olé

  16. WebRTC debugging.

    I spent hours debugging and now need to share the solution with the world.

    Tried to establish a #WebRTC-based #p2p connection (using #yjs and y-webrtc) in a LAN behind NAT, but ICE failed. Neither STUN nor TURN seemed to help, nor did a local #Coturn or local signaling server.

    The solution was to force TURN through TCP, i.e. using something like this as TURN id:

    turn:ADDR:PORT?transport=tcp

    Kudos for the final hint and other debugging pointers:

    github.com/feross/simple-peer/

  17. WebRTC debugging.

    I spent hours debugging and now need to share the solution with the world.

    Tried to establish a -based connection (using and y-webrtc) in a LAN behind NAT, but ICE failed. Neither STUN nor TURN seemed to help, nor did a local or local signaling server.

    The solution was to force TURN through TCP, i.e. using something like this as TURN id:

    turn:ADDR:PORT?transport=tcp

    Kudos for the final hint and other debugging pointers:

    github.com/feross/simple-peer/

  18. WebRTC debugging.

    I spent hours debugging and now need to share the solution with the world.

    Tried to establish a #WebRTC-based #p2p connection (using #yjs and y-webrtc) in a LAN behind NAT, but ICE failed. Neither STUN nor TURN seemed to help, nor did a local #Coturn or local signaling server.

    The solution was to force TURN through TCP, i.e. using something like this as TURN id:

    turn:ADDR:PORT?transport=tcp

    Kudos for the final hint and other debugging pointers:

    github.com/feross/simple-peer/

  19. WebRTC debugging.

    I spent hours debugging and now need to share the solution with the world.

    Tried to establish a #WebRTC-based #p2p connection (using #yjs and y-webrtc) in a LAN behind NAT, but ICE failed. Neither STUN nor TURN seemed to help, nor did a local #Coturn or local signaling server.

    The solution was to force TURN through TCP, i.e. using something like this as TURN id:

    turn:ADDR:PORT?transport=tcp

    Kudos for the final hint and other debugging pointers:

    github.com/feross/simple-peer/

  20. WebRTC debugging.

    I spent hours debugging and now need to share the solution with the world.

    Tried to establish a #WebRTC-based #p2p connection (using #yjs and y-webrtc) in a LAN behind NAT, but ICE failed. Neither STUN nor TURN seemed to help, nor did a local #Coturn or local signaling server.

    The solution was to force TURN through TCP, i.e. using something like this as TURN id:

    turn:ADDR:PORT?transport=tcp

    Kudos for the final hint and other debugging pointers:

    github.com/feross/simple-peer/

  21. 🚀🪄⛧ Sigil Séance Against Space Billionaires
    Institute collaboration with Lucile Olympe Haute

    📄 Full paper from the Radical Futures conference is now available: sigil-seance.diagram.institute

    TLDR: We made a collaborative web-app to launch curses at space billionaires using chaos magick sigils. A dangerous but necessary measure to take as protection ritual for the Earth.

    #radicalfutures24 #yjs #p5js

  22. 🚀🪄⛧ Sigil Séance Against Space Billionaires
    Institute collaboration with Lucile Olympe Haute

    📄 Full paper from the Radical Futures conference is now available: sigil-seance.diagram.institute

    TLDR: We made a collaborative web-app to launch curses at space billionaires using chaos magick sigils. A dangerous but necessary measure to take as protection ritual for the Earth.

    #radicalfutures24 #yjs #p5js

  23. 🚀🪄⛧ Sigil Séance Against Space Billionaires
    Institute collaboration with Lucile Olympe Haute

    📄 Full paper from the Radical Futures conference is now available: sigil-seance.diagram.institute

    TLDR: We made a collaborative web-app to launch curses at space billionaires using chaos magick sigils. A dangerous but necessary measure to take as protection ritual for the Earth.

    #radicalfutures24 #yjs #p5js

  24. 🚀🪄⛧ Sigil Séance Against Space Billionaires
    Institute collaboration with Lucile Olympe Haute

    📄 Full paper from the Radical Futures conference is now available: sigil-seance.diagram.institute

    TLDR: We made a collaborative web-app to launch curses at space billionaires using chaos magick sigils. A dangerous but necessary measure to take as protection ritual for the Earth.

    #radicalfutures24 #yjs #p5js

  25. I am blown away by the advances in open source around collaborative editing. Projects like Yjs are game changers. blog.kevinjahns.de/are-crdts-s

    #Yjs #OpenSource #JavaScript

  26. I am blown away by the advances in open source around collaborative editing. Projects like Yjs are game changers. blog.kevinjahns.de/are-crdts-s

    #Yjs #OpenSource #JavaScript

  27. I am blown away by the advances in open source around collaborative editing. Projects like Yjs are game changers. blog.kevinjahns.de/are-crdts-s

    #Yjs #OpenSource #JavaScript

  28. I am blown away by the advances in open source around collaborative editing. Projects like Yjs are game changers. blog.kevinjahns.de/are-crdts-s

    #Yjs #OpenSource #JavaScript

  29. 🔗 Check out valtio-yjs, the bridge between valtio and Yjs! 🌉💡 Simplify your usage of Yjs with valtio's easy-to-use proxy state library for #ReactJS and #VanillaJS. With valtio-yjs, a valtio proxied object can be used just like a regular JavaScript object, making collaboration with Yjs seamless. Find it here: github.com/dai-shi/valtio-yjs #JavaScript #TypeScript #Collaboration #ProxyStateLibrary #valtiojs #CRDT #Yjs

  30. 📦 Discover Yjs, an impressive collaborative editing framework! 🤝📝 Yjs enables real-time collaboration on shared documents and data structures across multiple users. Whether you're building a collaborative text editor or a collaborative whiteboard, Yjs has got you covered! 🚀🔧

    Check it out on GitHub: github.com/yjs/yjs

    #CollaborativeEditing #RealTimeCollaboration #OpenSource #yjs #CRDT #webdev

  31. 📦 Discover Yjs, an impressive collaborative editing framework! 🤝📝 Yjs enables real-time collaboration on shared documents and data structures across multiple users. Whether you're building a collaborative text editor or a collaborative whiteboard, Yjs has got you covered! 🚀🔧

    Check it out on GitHub: github.com/yjs/yjs

    #CollaborativeEditing #RealTimeCollaboration #OpenSource #yjs #CRDT #webdev

  32. 📦 Discover Yjs, an impressive collaborative editing framework! 🤝📝 Yjs enables real-time collaboration on shared documents and data structures across multiple users. Whether you're building a collaborative text editor or a collaborative whiteboard, Yjs has got you covered! 🚀🔧

    Check it out on GitHub: github.com/yjs/yjs

    #CollaborativeEditing #RealTimeCollaboration #OpenSource #yjs #CRDT #webdev

  33. 📦 Discover Yjs, an impressive collaborative editing framework! 🤝📝 Yjs enables real-time collaboration on shared documents and data structures across multiple users. Whether you're building a collaborative text editor or a collaborative whiteboard, Yjs has got you covered! 🚀🔧

    Check it out on GitHub: github.com/yjs/yjs

    #CollaborativeEditing #RealTimeCollaboration #OpenSource #yjs #CRDT #webdev

  34. 📦 Discover Yjs, an impressive collaborative editing framework! 🤝📝 Yjs enables real-time collaboration on shared documents and data structures across multiple users. Whether you're building a collaborative text editor or a collaborative whiteboard, Yjs has got you covered! 🚀🔧

    Check it out on GitHub: github.com/yjs/yjs

    #CollaborativeEditing #RealTimeCollaboration #OpenSource #yjs #CRDT #webdev

  35. frustrated because SyncedStore (syncedstore.org/docs/) (a layer of reactivity on top of Y.js) breaks basic JavaScript semantics and things break in weird ways: nulo.ar/SyncedStore.html (and more that i haven't documented there)

    #crdt #yjs #javascript

  36. frustrated because SyncedStore (syncedstore.org/docs/) (a layer of reactivity on top of Y.js) breaks basic JavaScript semantics and things break in weird ways: nulo.ar/SyncedStore.html (and more that i haven't documented there)

    #crdt #yjs #javascript

  37. frustrated because SyncedStore (syncedstore.org/docs/) (a layer of reactivity on top of Y.js) breaks basic JavaScript semantics and things break in weird ways: nulo.ar/SyncedStore.html (and more that i haven't documented there)

    #crdt #yjs #javascript

  38. frustrated because SyncedStore (syncedstore.org/docs/) (a layer of reactivity on top of Y.js) breaks basic JavaScript semantics and things break in weird ways: nulo.ar/SyncedStore.html (and more that i haven't documented there)

    #crdt #yjs #javascript

  39. Makes me wonder if a similar approach of leveraging #yjs doc and #automerge would work in case of github.com/nimmen/crdt-sqlite which is a vaguely similar sort of thing, for sqlite (at least one big difference being that the kinds of CRDTs supported by yjs are far more powerful). I imagine the wasm compilation mode might not be workable / attractive to build this way.

  40. Makes me wonder if a similar approach of leveraging doc and would work in case of github.com/nimmen/crdt-sqlite which is a vaguely similar sort of thing, for sqlite (at least one big difference being that the kinds of CRDTs supported by yjs are far more powerful). I imagine the wasm compilation mode might not be workable / attractive to build this way.

  41. Makes me wonder if a similar approach of leveraging #yjs doc and #automerge would work in case of github.com/nimmen/crdt-sqlite which is a vaguely similar sort of thing, for sqlite (at least one big difference being that the kinds of CRDTs supported by yjs are far more powerful). I imagine the wasm compilation mode might not be workable / attractive to build this way.

  42. Makes me wonder if a similar approach of leveraging #yjs doc and #automerge would work in case of github.com/nimmen/crdt-sqlite which is a vaguely similar sort of thing, for sqlite (at least one big difference being that the kinds of CRDTs supported by yjs are far more powerful). I imagine the wasm compilation mode might not be workable / attractive to build this way.

  43. Makes me wonder if a similar approach of leveraging #yjs doc and #automerge would work in case of github.com/nimmen/crdt-sqlite which is a vaguely similar sort of thing, for sqlite (at least one big difference being that the kinds of CRDTs supported by yjs are far more powerful). I imagine the wasm compilation mode might not be workable / attractive to build this way.

  44. pg_crdt from #supabase integrates #yjs and #automerge in a Postgres extension to implement #crdt based syncing at the DB level.
    Indirectly, the fact you have the flexibility to stick extensions like this in a Supabase application and it works at all cleanly with the pre-existing Realtime feature is a pretty good sign re: its design as far as flexibility.

    supabase.com/blog/postgres-crd

  45. pg_crdt from integrates and in a Postgres extension to implement based syncing at the DB level.
    Indirectly, the fact you have the flexibility to stick extensions like this in a Supabase application and it works at all cleanly with the pre-existing Realtime feature is a pretty good sign re: its design as far as flexibility.

    supabase.com/blog/postgres-crdt

  46. pg_crdt from #supabase integrates #yjs and #automerge in a Postgres extension to implement #crdt based syncing at the DB level.
    Indirectly, the fact you have the flexibility to stick extensions like this in a Supabase application and it works at all cleanly with the pre-existing Realtime feature is a pretty good sign re: its design as far as flexibility.

    supabase.com/blog/postgres-crd

  47. pg_crdt from #supabase integrates #yjs and #automerge in a Postgres extension to implement #crdt based syncing at the DB level.
    Indirectly, the fact you have the flexibility to stick extensions like this in a Supabase application and it works at all cleanly with the pre-existing Realtime feature is a pretty good sign re: its design as far as flexibility.

    supabase.com/blog/postgres-crd

  48. pg_crdt from #supabase integrates #yjs and #automerge in a Postgres extension to implement #crdt based syncing at the DB level.
    Indirectly, the fact you have the flexibility to stick extensions like this in a Supabase application and it works at all cleanly with the pre-existing Realtime feature is a pretty good sign re: its design as far as flexibility.

    supabase.com/blog/postgres-crd

  49. @Anarcat @zacchiro @douardda @olasd

    Collaboration experience improved quite a bit within the last two years in #Nextcloud Text. I think it's definitely worth another try for Tor meetings. And maybe even #Collectives would be something worth trying there 😉

    The sync delay is still higher than with Etherpad, but it's actively being worked on. With this improvement (probably to be released with Nextcloud 26) it will be close to the Etherpad experience: github.com/nextcloud/text/pull #yjs

  50. @Anarcat @zacchiro @douardda @olasd

    Collaboration experience improved quite a bit within the last two years in #Nextcloud Text. I think it's definitely worth another try for Tor meetings. And maybe even #Collectives would be something worth trying there 😉

    The sync delay is still higher than with Etherpad, but it's actively being worked on. With this improvement (probably to be released with Nextcloud 26) it will be close to the Etherpad experience: github.com/nextcloud/text/pull #yjs

  51. @Anarcat @zacchiro @douardda @olasd

    Collaboration experience improved quite a bit within the last two years in #Nextcloud Text. I think it's definitely worth another try for Tor meetings. And maybe even #Collectives would be something worth trying there 😉

    The sync delay is still higher than with Etherpad, but it's actively being worked on. With this improvement (probably to be released with Nextcloud 26) it will be close to the Etherpad experience: github.com/nextcloud/text/pull #yjs

  52. @Anarcat @zacchiro @douardda @olasd

    Collaboration experience improved quite a bit within the last two years in #Nextcloud Text. I think it's definitely worth another try for Tor meetings. And maybe even #Collectives would be something worth trying there 😉

    The sync delay is still higher than with Etherpad, but it's actively being worked on. With this improvement (probably to be released with Nextcloud 26) it will be close to the Etherpad experience: github.com/nextcloud/text/pull #yjs

  53. [[Silver Bullet]], a backlink enabled #opensource #ToolsForThought app silverbullet.md/

    #TypeScript, #React, uses #CodeMirror as editing interface, #Markdown native, supports Jekyll-style front matter for custom attributes.

    Experimental “Google Doc style” real time collab using #Yjs and a central #WebSocket server.

    via @walkah

  54. [[Silver Bullet]], a backlink enabled #opensource #ToolsForThought app silverbullet.md/

    #TypeScript, #React, uses #CodeMirror as editing interface, #Markdown native, supports Jekyll-style front matter for custom attributes.

    Experimental “Google Doc style” real time collab using #Yjs and a central #WebSocket server.

    via @walkah

  55. [[Silver Bullet]], a backlink enabled #opensource #ToolsForThought app silverbullet.md/

    #TypeScript, #React, uses #CodeMirror as editing interface, #Markdown native, supports Jekyll-style front matter for custom attributes.

    Experimental “Google Doc style” real time collab using #Yjs and a central #WebSocket server.

    via @walkah