<div dir="ltr">Great!<div><br></div><div>If you wanted to try to add local prediction for up- and down-arrow, <a href="https://github.com/keithw/mosh/blob/master/src/frontend/terminaloverlay.cc#L824-L836">https://github.com/keithw/mosh/blob/master/src/frontend/terminaloverlay.cc#L824-L836</a> would be the place to do it.</div><div><br></div><div>I don&#39;t think we have that high a probability of successfully predicting these locally very often, though, but maybe in a lowbandwidth mosh it&#39;s worth it just to move the cursor so the user can see that they&#39;ve done something?</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Apr 27, 2015 at 8:44 PM, Robert Redelmeier <span dir="ltr">&lt;<a href="mailto:redelm@sbcglobal.net" target="_blank">redelm@sbcglobal.net</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">  Success!  (Thanks for the tip about debian/control).<br>
<br>
-b lowbandwith has the delays I suggested.  --predict=[DEFAULT]<br>
and sightly better --predict=experimental  give that neat underlining<br>
that disappears and fixes itself when wrong (like vim k for scroll up).<br>
<br>
Horizontal cursor &lt;- and -&gt; work fine, without delays (or at least<br>
working on the buffer).  But vertical scrolling has maddening delays<br>
and slow visual feedback.  Hard to correctly position cursor.<br>
<br>
-- Robert<br>
<br>
<br>
On 1657-0700 Tue 21 Apr, Keith Winstein wrote in part:<br>
<div class="HOEnZb"><div class="h5">&gt; Can you give a try to the lowbandwidth branch with the<br>
&gt; --predict=experimental command-line option? You might find that<br>
&gt; to be more to your liking.<br>
&gt;<br>
&gt; We could flush out on certain characters -- that would be reasonable (but<br>
&gt; not currently implemented).<br>
&gt;<br>
&gt; Cheers,<br>
&gt; Keith<br>
&gt;<br>
&gt; On Tue, Apr 21, 2015 at 4:49 PM, Robert Redelmeier &lt;<a href="mailto:redelm@sbcglobal.net">redelm@sbcglobal.net</a>&gt;<br>
&gt; wrote:<br>
&gt;<br>
&gt; &gt; On 0022-0700 Tue 21 Apr, Keith Winstein wrote in part:<br>
&gt; &gt; &gt; Hello Robert, Thanks for your email!<br>
&gt; &gt;<br>
&gt; &gt; And thank you in turn for your prompt and detailed reply.<br>
&gt; &gt;<br>
&gt; &gt; &gt; We do this to a degree,<br>
&gt; &gt; &gt; but with the goal of _reducing_ latency -- please see Figure<br>
&gt; &gt; &gt; 3 of the Mosh paper ( <a href="https://mosh.mit.edu/mosh-paper.pdf" target="_blank">https://mosh.mit.edu/mosh-paper.pdf</a>).<br>
&gt; &gt;<br>
&gt; &gt; Fascinating!  This 8ms is far too fast for human input, could<br>
&gt; &gt; it be something like ACK &amp; echo packet combining, or combining<br>
&gt; &gt; from terminal local [cut&#39;n&#39;]paste?<br>
&gt; &gt;<br>
&gt; &gt; &gt; With the constants tuned differently, we end up reducing the<br>
&gt; &gt; &gt; packets sent as you suggest. This is in the &quot;lowbandwidth&quot;<br>
&gt; &gt; &gt; branch in the Git repository.  &gt; &gt; Cheers, &gt; Keith<br>
&gt; &gt;<br>
&gt; &gt; I had a peek, thanks, but could not see how this would work<br>
&gt; &gt; differently from termios.c_cc(VTIME)=5 beyond ^C handling.  I tried<br>
&gt; &gt; this dumb delay, and the added latency on top of a slow connection<br>
&gt; &gt; was very irksome.  But I found I could reduce the irritation greatly<br>
&gt; &gt; by forcing the buffer out early when a command char was received.<br>
&gt; &gt; Could the special handling for ^C be expanded to all ^char plus<br>
&gt; &gt; duplicated chars (many pgms use hjkl for cursor movement)?<br>
&gt; &gt;<br>
&gt; &gt; Latency during straight typing is far less annoying unless chars<br>
&gt; &gt; are lost.  Of course this system generates lots of false flushes.<br>
&gt; &gt; But who cares?  Even `bookkeepers` sent as 4 packets is much better<br>
&gt; &gt; than 11, especially considering the &quot;ACK-echo-ACK&quot; multiplication.<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; &gt; On Mon, Apr 20, 2015 at 6:00 PM, Robert Redelmeier &lt;<a href="mailto:redelm@sbcglobal.net">redelm@sbcglobal.net</a><br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; wrote:<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;  First, thanks y&#39;all for your work on mosh!<br>
&gt; &gt; &gt; &gt; Second, a suggestion for your consideration (_NOT_ a vile &quot;feature<br>
&gt; &gt; &gt; &gt; request&quot;):<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; Have you considered allowing send buffers to fill a bit before<br>
&gt; &gt; &gt; &gt; sending?  Not sending ASAP, but often sending more than one char<br>
&gt; &gt; &gt; &gt; per packet?  Of course this increases latency, but reduces packet<br>
&gt; &gt; &gt; &gt; count _tremendously_ and data usage likewise since the payload is<br>
&gt; &gt; &gt; &gt; tiny compared to overhead (incl ACK)..<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; Not sure how this would interact with SSP, but I hacked ssh to do<br>
&gt; &gt; &gt; &gt; this 10+ years ago.  To minimize the latency when it would most<br>
&gt; &gt; &gt; &gt; annoy, the buffer was released if a command was received or when<br>
&gt; &gt; &gt; &gt; typing stopped for 300-600ms.  Commands were considered to be any<br>
&gt; &gt; &gt; &gt; control-char or any duplicated char (likely to be cursor movement).<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; Of course, latency is sometimes noticeable but that is the price<br>
&gt; &gt; &gt; &gt; of reduced transmission data.  Most of the time, I&#39;m typing blind<br>
&gt; &gt; &gt; &gt; anyways -- I&#39;m not going to focus on the screen unless needed.<br>
&gt; &gt; &gt; &gt; Sometimes the reductions were as large as 70%, more often 50%.<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; -- Robert in Houston<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; _______________________________________________<br>
&gt; &gt; &gt; &gt; mosh-devel mailing list<br>
&gt; &gt; &gt; &gt; <a href="mailto:mosh-devel@mit.edu">mosh-devel@mit.edu</a><br>
&gt; &gt; &gt; &gt; <a href="http://mailman.mit.edu/mailman/listinfo/mosh-devel" target="_blank">http://mailman.mit.edu/mailman/listinfo/mosh-devel</a><br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt;<br>
</div></div></blockquote></div><br></div>