The file contains more or less two sections. There is a plain block of JSON near the top of the file which is the slide data. You can read, grep, or point a harness at it. The app itself is in a base64 blob that loads through a small shim which deflates in the browser with DecompressionStream, which keeps the package small and so that we don't need to fetch any external files at runtime. File System Access API is used for JSON writeback into the same file, which falls back to a plian download and all updates are ECDSA signed.
I started with reveal.js which served as a base, and incorporated GSAP/Flip to handle the animation. Then I added charting with echarts, but due to a number of issues with size and how the worked, I ended up re-implementing both.
What I'm most pleased about is how seamless the CRDT works. The blind relay is a small file that runs on Cloudflare Durable Objects, and all it sees are the encrypted data from the clients. Collab is off until we turn it on in the app (by starting a session by sharing by invite file), and then some sets of keys are generated. Access is handled by user key, and you can have read-only users, and also revoke live collab access by user as well.
Hopefully simpler formats like this will become the norm and the old ones can die.
It might not have reached legal generic status but just about any working professional will understand what you mean if you refer to "making a powerpoint deck" even if you don't use the actual Microslop product.
When I was playing with this, I immediately thought of TiddlyWikis, which I've always been fond of, but they never took for me. However, an easily editable presentation -- that's a use case I can understand.
I couldn't see how there was a CDRT when I'm just working with a single file. I was trying to figure out where the server was. So -- this is just on for everyone? Are you concerned that your Cloudflare account will be hammered with this?
All of it just runs out of a folder on disk and can either be deployed locally or on a server behind a login. I intend to open source it, but I'm not quite proud enough yet of some of the implementation aspects to do so. Hope to do it this summer though!
Cloudflare Durable Objects are pretty cheap and I'm using it like a very basic pub/sub with each deck having it's own DO. I did some calculations and it should be well within my spend limits.
It may be annoying if two users are working at the same time in the same project.
Again, very cool project! :)
Can I click upgrade and get the JSON slide deck data exported into a v2 shell?
I am personally using kimi k3 to create a mobile friendly set of games, starting from math like linear algebra to quantum physics - neurodivergent friendly, completely local state, served from github pages - to get someone interested in the field. This needs an economic incentive to exist without LLMs, because of so much different expertise needed, and time.
if anyone's interested in the games let me know - i plan to play it myself, improve it, remove bugs etc before publishing on HN.
My M1 Mac froze in the end (had to hard-reboot), but that was so much fun! I guess there’s a reason Figma uses WASM and a custom renderer, though I guess your implementation should work fine for most cases (i.e. not when all of HN are trying to edit everything simultaneously :^)
Two notes:
1. It would be nice if another person changing something unrelated to what I’m doing didn’t reset the focus for me.
2. WAY too llm-y copy both on the landing page and the example deck. Your HN submission text is way easier and more pleasant to read.
And huge kudos for releasing this as FOSS!
1. Yes, that's a good point that somebody else raised also. It went pass testing as I was only testing with 1 or 2 other people at once. Will fix this tonight.
2. Yeah, agreed and fair point. But I don't write well and I don't have time between day job and being a dad. Will try to fix this gradually.
2. Absolutely fair point, and it’s okay – the demo speaks for itself :-) Although if you wrote that submission text yourself, you do write pretty well! But obviously no pressure here.
I don't think WP is the right place for this. It is supposed to be a tertiary source, not a place to promote concepts you want to see established.
[0]: https://mdwiki.info
[0] https://www.ilograph.com/demo/intelligentDocumentProcessing....
One note: The home page says "Nothing phones home," but the Bento files I've examined include a cloudflareinsights.com beacon.
Will keep chipping away at this and update as I learn more.
Because while cool this is clearly heavily vibe coded.
Bento works with a predefined schema, so you cant use any HTML library (Such as Mermaid.js) if you need it in your presentation.
But then again, often you dont need it.
Just created a presentation with Bento... I do think Reveal.js gives you more raw power. But I like bentos single html page design, and you can easily edit it manually. You cant do that with Reveal.js
Great work! I hope to see more and more apps like this in the spirit of "Toss it all into context"
For people clicking on a link to some slides that someone shared, it seems like starting out in viewing mode with a prominent edit button might be better than starting out in edit mode?
Also, swiping left to get back to the first slide puts me back in the editor (I went too far), and then hitting slideshow puts me back where I started so I have to swipe left again.
The swipe left on first slide is a feature though, its to help mobile users get back to the editor easily.
Maybe display speaker notes by default if the screen is in portrait mode?
I'll have a think on this tonight and I'm sure we can do a tablet speaker notes mode.
- Even works well on mobile.
- Embedding images and videos also works flawlessly.
This is the best feature.
I would love to do more by hand, but I look after a tech team inside a renewables firm, so I don't have much time between job and my preschooler.
Google is really shitting the bed in all the way that matters on GenAI and being an ex employee of Cloud I am not in the least surprised about it, just really sad.
Base64 is paired with compression to keep the size small so you can share it easily. The original version was around 1.3MB and maybe we can have a switch to output without compression. The source that generates it is all in Github.
Maybe I'm thinking too far ahead but I'm hoping maybe I can cover the (future?) compute costs by charging for the heavy duty ML that would have to be run non-locally but IDK. This isn't critical yet but would love to hear your musings.