4 ms·
The common abstraction is a shared log. I'm boiling down my current side project ( http://www.adama-lang.org/ http://www.adama-lang.org/ ) into reusable compone
by mathgladiator 5y ago
The common abstraction is a shared log. I'm boiling down my current side project ( http://www.adama-lang.org/ http://www.adama-lang.org/ ) into reusable components.
I'm also looking at WebAssembly as the way of doing work ( http://www.adama-lang.org/blog/micro-monoliths http://www.adama-lang.org/blog/micro-monoliths ) versus generic operations.
Something interesting to consider is how important is offline use these days? If we get to an online-99.9% world, then the solution feels ... simple.
- ithkuil 5y agoNot long ago for work I was forced to use office365. It has collaborative editing feature that at the surface looks equivalent to Google docs, but in practice it's not: it wasn't reliable, I lost some edits a few times and even when it worked it was slow and sluggish (I knew that because I could see another person's shared screen in zoom), and it actually co-editing a file definitely felt a different experience. The relevant bit your comment is: while most people indeed testified that the experience was not as good as Google docs, it wasn't that terrible to most of the people. Turns out that it really depends how well you're connected. Being connected 99.9% sucks more if that 0.1% is a crappy connection that drops packets occasionally as opposed to just saying "I'm online most of the time, I don't care if I need to edit the doc that rare 0.1% of the time when my connection is broken for good)
- cyanydeez 5y agoreal time collab is a figment of coders. real business processes are async in nature. what people really want is a easy way to open someone elses work, review it or add to it, and move on without all the emailing, chatting, while important, tend to be wlso a aync need thats note mvp to the process
- ithkuil 5y agoYeah whatever, I'm not a product guy and I do not pretend to have any clue about what people really want. My point of my anecdote was that "connected" is not a boolean property.
- aabbcc1241 5y agoBut you'd want to allow the client query a snapshot before doing a full sync on the shared log.
- mathgladiator 5y agoAbsolutely, this is a key reason why I strongly believe what goes in the log matters. If the log is a list of commands, then you have two representations to contend with: the differential/patch form and then the aggregated state. An area that I'm playing around with is a log reducer which transforms a region within a log into a single item. For instance, if the log entries are just JSON (without arrays) then json merge (RFC 7396) is an example reducer. See http://www.adama-lang.org/blog/json-on-the-brain http://www.adama-lang.org/blog/json-on-the-brain for more detail.
- aabbcc1241 5y agoInteresting approach to reduce or even eliminate the workload of left folding the logs
- BiteCode_dev 5y agoOffline first is a majors selection criteria for me. First, it's just faster. Offline apps are an order of magnitude faster and the speed is stable. Secondly, data is way easier to backup. I don't trust any provider with important data. Your account can be banned, or you could be locked out. There are outage, data corruption, human errors from people you share data with... Then there is the no internet part. Internet at home can go off for many reasons, you may be abroad, in a plane, in a tunnel, in the country side. Or internet could be slow, unreliable, behind an agressive proxy, etc. That's why i use thunderbird and not a web mail, dynalist and not the competition, mp3 and not spotify... That's why i keep osmand next to waze and torrents next to netflix. Last week internet went down in accounting. They took the day off, because they used office 365. Great for them, not so much for the work to be done.