Hacker News new | past | comments | ask | show | jobs | submit login

Mosh has this idea that you can keep typing and sending asynchronously even though you need the ACKs to find out what really happened, then when you get them you just redraw accordingly. Humans won't type too fast for too long, so eventually there will be time to catch up and let the user see what actually happened. The key is to distinguish client-side speculative outcomes from actual outcomes. Imagine that the text you're typing is made reverse-video, or a different color (subject to color blindness constraints) to indicate speculative (as-yet-unacknowledged) text.

That is, I think humans can be part of the async system and understand that what they're typing isn't committed yet.

Sometimes when I type I don't even look at the screen or the keyboard for a bit -- entire sentences even. Less so with code, naturally. When I do this I do have to eventually look at what I actually entered, because I might not have noticed some typo, say. I just did that for this entire paragraph. I want to believe that I'd handle speculation in the UI just fine.

You are describing classic branch-and-merge. “Here’s my branch that I created offline.”

“Sorry, there are merge conflicts, please resolve them before resubmitting,” or, “I resolved them without consulting you.”

Yes, but I'm saying that that can work very well for a visual, interactive application.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact