<div dir="ltr">For me the future is async functions (the present actually). I asked a question about possible support for async streams / observables here: <a href="https://esdiscuss.org/topic/stream-async-await">https://esdiscuss.org/topic/stream-async-await</a> and I realized that my use case was much better served by just using async functions to process each input value in the stream.<div><br></div><div>I think using async functions is much more powerful than "observables", since it allows you to easily branch the stream off into multiple outputs etc. Using Promise.all etc. is also trivial to use where desired, etc.</div><div><br></div><div>Furthermore, async functions allow while/for loops that include other async function calls, and this looks like programming with regular functions, so it's trivial to set up asynchronous iteration, and/or infinite event processing, etc., even without the new "async iteration" proposal.</div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, 7 Nov 2017 at 17:25 Michael Lewis <<a href="mailto:mike@lew42.com">mike@lew42.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>The email wasn't about my kids, and you don't have to read it (duh).  If your time is so valuable, maybe you shouldn't be picking fights with rambling parents.<br></div><div><br></div><div>Where is the list of approved topics?<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Nov 7, 2017 at 5:44 AM, Bob Myers <span dir="ltr"><<a href="mailto:rtm@gol.com" target="_blank">rtm@gol.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I'm confused. You don't have time to read "The General Theory of Reactivity", yet (1) you have time to write this long, rambling email about your kids, and (2) expect people on this mailing list to spend their valuable time reading it?<div><br></div><div>Please stay on topic for the list.</div><div><br></div><div>Bob</div></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="m_-2313737646890169119h5">On Tue, Nov 7, 2017 at 4:48 PM, Michael Lewis <span dir="ltr"><<a href="mailto:mike@lew42.com" target="_blank">mike@lew42.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="m_-2313737646890169119h5"><div dir="ltr"><div>Good morning JavaScript world,</div><div><br></div><div>Maybe I'll start my mornings with a cup of coffee, and a discussion prompt.  We'll see how long it lasts.  It's 4:39am.  I live in Aurora, Illinois, about an hour outside of Chicago.  My kids will wake up in an hour or two, so I don't have long, and should be working on my framework anyway.</div><div><br></div><div><b>So much asynchrony</b></div>There are callbacks, promises, async/await.  We have streams in node.js.  There are libraries like RxJS for Observables (that are basically streams?).<div><br></div><div>What's the end game?  What will our children's children be learning in 100 years?  Let's reduce these pieces, distilling them into their simplest components.</div><div><br></div><div><a href="https://esdiscuss.org/topic/promises-vs-streams" target="_blank">This</a> is an interesting thread (from es-discuss) regarding asynchrony, which references Kris Kowal's <a href="https://github.com/kriskowal/gtor/" target="_blank">General Theory of Reactivity</a>, which is too long for me to dig into at this point in my life.</div><div><br></div><div>The disappointing part, is that this community (who has mastered asynchrony) doesn't feel like there are any shortcomings, and so we continue onward without fixing the mess.</div><div><br></div><div>Oh, and generators?  I don't fully understand these things.  Do they work with promises?  Can you use a generator to process a stream?  How do generators work with or compare to async/await?  Who knows...</div><div><br></div><div>I think it's safe to say that asynchrony is a confusing mess.  <b>But it shouldn't be.   </b>The concept of "do it now" or "do it later" is as easy as 123.</div><div><br></div><div>Recently, I read through Jake Archibald's <a href="https://developers.google.com/web/fundamentals/primers/promises" target="_blank">JavaScript Promises: an Introduction</a>.  I really enjoy Jake Archibald's writing.  He makes JavaScript less boring.  But wow, understanding promises in their full depth is really complicated.  Sure, a simple promise is more or less a callback, easy peasy.  But once you start composing parallel and series tasks, add error handling, and try to understand the control flow - it's a lot.</div><div><br></div><div>I feel like Promises could automatically <b>render a diagram </b>when using them.  In Jake's very practical example (request a list of chapters, load all chapters in parallel, then append them to the page in order) there's a lot going on, to say the least.  Wouldn't it be nice to see a diagram of these tasks?  A timeline maybe?</div><div><br></div><div>Imagine debugging a complex sequence of async actions.  And you have no idea which piece is failing.  Using the console to log values, and trying to step through the code with the debugger are two of your basic approaches.  But honestly, neither of these really <i>show </i>you what's going on.</div><div><br></div><div>Chrome Dev Tools has an awesome timeline GUI.  I've spent an hour here or there tinkering with it, but can't make sense of a lot of it.  There are 100's if not 1000's of very generic blocks that show up on the timeline, that don't clearly identify what they are.  And I don't believe there's any way to visualize promises on this timeline.</div><div><div><br></div><div><b>The problem with Promises</b></div><div>I want to create a file system framework for node.  I'd like to make watching the files for changes a default feature.  The problem with promises, is that you can't re-resolve them.</div><div><br></div><div>So I'm basically left with streams, or plain old callbacks.  Or trying to recreate the promises every time they resolve...</div><div><br></div><div>What's the end game?  100 years from now?</div><div><br></div><div>Frankly, this is the most important question.  I feel like if we take a step back, and try to solve these problems for the long term, we'd be better off.</div></div><div><br></div><div>And so, it's 5:15.  Well done, Michael.  Well done.</div><div><br></div><div><b>The Future</b></div><div>If anyone has made it this far, I'm going to tell you a quick summary of my plan:</div><div><ol><li>make an ultra-simple web framework (almost done?)</li><li>use that framework to make a CMS to kill WordPress</li><li>turn that CMS into a web OS that does everything a real OS can do, only better</li><li>turn that web OS into a real, bare metal OS</li><li>make lots of amazing (useful) software (like photoshop, blender, after effects, CAD, etc)</li></ol><div>Software development is sluggish.  Most software is painful to use.  Windows, Photoshop/Illustrator, many websites...  Open source software doesn't get the funding/momentum it needs to really kill these proprietary alternatives.  We need to change that.  I'm going to change that.</div></div><div><br></div><div>Stay tuned.</div></div>
<br></div></div>_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
<br></blockquote></div><br></div>
</blockquote></div><br></div>
_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
</blockquote></div>