In gamedev, "optimistic updates" are called "client-side prediction," and are a standard part of multiplayer games. IMO it's somewhat risky to apply the technique to web-apps, since each network request typically corresponds to some important operation, and optimistically updating the UI is lying to the user about whether that operation completed successfully. IMO a good approach is to update the UI immediately but s…
How's Linear so fast? A technical breakdown
41–50 of 250 posts
Re: How's Linear so fast? A technical breakdown
#42Whole blog post is basically: Make a mutation in the clientside, assume it worked, and save in the background.
1. user clicks a button and closes the tab thinking transaction is done and it's important that transaction is done
2. conflict resolution is difficult or impossible in future client wake up
Re: How's Linear so fast? A technical breakdown
#43Whole blog post is basically: Make a mutation in the clientside, assume it worked, and save in the background.
Indeed. I have to say, I hate this. Suppose you are in a meeting, you update something and you see the result, but the rest of the team does not. Ok, a couple of hundred ms does not play into this but if the update does not make it through? And yes, it happens.
Strange that we can be so be polar opposites on this. You hate it, I would never write an app in any other way, ever again.
Re: How's Linear so fast? A technical breakdown
#44Earlier quoted context omitted.
For native apps this is less of an issue since they have access to persistent storage but with browsers there's no guaranteed persistence.
There's guaranteed persistence, but there's no guarantee that the host will be up anytime soon. E.g.: I might leave a final reply with all the details on an issue before going on vacation (or maybe I don't work the next day but my colleagues abroad do!). I see that it's properly posted and close the laptop. The reply with be delayed by days or weeks, but the UI indicated that it had been properly saved.
There's not. Browsers can delete "persistent" storage at any time.
https://developer.mozilla.org/en-US/docs/Web/API/Storage_API...
Re: How's Linear so fast? A technical breakdown
#45Earlier quoted context omitted.
Don't you have the same problems with basic CRUD apps? Also you need to handle the sad path for every single request instead of having the sync engine do it all in one place.
Correct but the feedback is usually more immediate. Save a change to your issue and it fails - You will get an error toast and probably stay on the form. In the local first world you might have navigated away already and created 3 more issues of which 2 more failed because of schema drift or other conflicts. And you might have edited one that was deleted. And now you need to figure out what exactly to tell the user -…
Re: How's Linear so fast? A technical breakdown
#46Re: How's Linear so fast? A technical breakdown
#47Linear is the best web app I have ever seen, period. It is also the best bug-tracker I've ever used. I use it, and pay for it (gladly). It's worth it. I am genuinely impressed with their engineering and design — I aspire to attain these levels, though I lack not only the skills, but also several zeroes in my bank account, I think. Still, it's worth looking at what they do and try to get there! Big props and kudos to…
I was thoroughly unimpressed. "This is it?" - "It's a tracker"
I feel comfortable saying this because in the weeks after, actually using it is the aha experience. Linear nailed the UX of working where people already work. Which again is really funny because the best part of Linear is how well it works outside of Linear.
(disclaimer: I actually now use their UI a lot. It's a helpful dashboard. But it suffers from every other hard-problem of information dense task-based dashboards.)
Re: How's Linear so fast? A technical breakdown
#48I’ve never thought of Linear as particularly fast.
Re: How's Linear so fast? A technical breakdown
#49Re: How's Linear so fast? A technical breakdown
#50In gamedev, "optimistic updates" are called "client-side prediction," and are a standard part of multiplayer games. IMO it's somewhat risky to apply the technique to web-apps, since each network request typically corresponds to some important operation, and optimistically updating the UI is lying to the user about whether that operation completed successfully. IMO a good approach is to update the UI immediately but s…