[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xsl-list
Subject:    [xsl] Re: Thoughts about the "Asynchronous XSLT"
From:       "Dimitre Novatchev dnovatchev () gmail ! com" <xsl-list-service () lists ! mulberrytech ! co
Date:       2020-08-01 17:41:52
Message-ID: 20200801134115.47573 () lists ! mulberrytech ! com
[Download RAW message or body]

>  Thanks for the suggestion, I will certainly look into this.

Thank you Dr. Kay.

For anyone interested to learn about Reactive Extensions, here are a few
resources:

RxJS in Action, https://www.manning.com/books/rxjs-in-action


   - *.NET Reactive Extensions Fundamentals 1.0*, Pluralsight course by Dan
   Sullivan,
   https://www.pluralsight.com/library/courses/reactive-extensions/table-of-contents

   - *Asynchronous Programming in JavaScript (with Rx.js Observables)*,
   Pluralsight course by by Jafar Husain,
   https://www.pluralsight.com/library/courses/asynchronous-javascript-rxjs-observables/table-of-contents

   - *RxJS in Angular: Reactive Development*, a  Pluralsight course  by
   Deborah Kurata,
   https://www.pluralsight.com/library/courses/rxjs-angular-reactive-development/table-of-contents


 --
Cheers,
Dimitre Novatchev


On Sat, Aug 1, 2020 at 12:43 AM Michael Kay <mike@saxonica.com> wrote:

> Thanks for the suggestion, I will certainly look into this.
>
> My  instinct to use promises was because we're primarily interested in
> retrieving external resources, which is inevitably done by calling out to
> Javascript APIs, and most of those APIs these days manage the asynchrony
> using JavaScript promises.
>
> Michael Kay
> Saxonica
>
> On 1 Aug 2020, at 04:08, Dimitre Novatchev <dnovatchev@gmail.com> wrote:
>
> First of all, congratulations to the Balisage organizers for organizing
> this conference even in the current situation.
>
> I read Dr. Kay's paper "Asynchronous XSLT" from the proceedings of
> Balisage-2020:
> https://www.balisage.net/Proceedings/vol25/html/Kay01/BalisageVol25-Kay01.html
>
>
> While the described new feature (promises) is impressive and will be a
> step in the right direction, people who have used both promises and
> reactive extensions (RxJs in particular, a Javascript implementation of
> Reactive Extensions:  http://reactivex.io
> <http://reactivex.io/languages.html> ) point out certain advantages of
> using Rx observables over promises:
>
>    - Promises produce only one event; Observables produce a stream of
>    events.
>    - Promises are not lazy; Observables do not fire even after being
>    created, they start emitting the event stream only upon subscription.
>    - Working with nested and interdependent promises can be cumbersome
>    and unwieldy; Much easier and structured when expressed and handled with
>    observables.
>    - Promises, once started, cannot be cancelled; Observables were
>    designed having cancellation in mind.
>    - Shall we mention multicasting ...
>
> Here is a brief video that shows this in running code:
> https://egghead.io/lessons/rxjs-rxjs-observables-vs-promises
>
> The reason for my message is that it is still not too late to make an
> informed design decision that takes into consideration the established best
> approach towards implementing the handling of asynchrony in almost all
> major programming languages, and, to have a written evidence that this
> problem had at least been raised and (hopefully) discussed.
>
> To quote http://reactivex.io/languages.html , Rx has been implemented in
> these languages, platforms and frameworks:
> Languages
>
>    - Java: RxJava <https://github.com/ReactiveX/RxJava>
>    - JavaScript: RxJS <https://github.com/ReactiveX/rxjs>
>    - C#: Rx.NET <https://github.com/Reactive-Extensions/Rx.NET>
>    - C#(Unity): UniRx <https://github.com/neuecc/UniRx>
>    - Scala: RxScala <https://github.com/ReactiveX/RxScala>
>    - Clojure: RxClojure <https://github.com/ReactiveX/RxClojure>
>    - C++: RxCpp <https://github.com/Reactive-Extensions/RxCpp>
>    - Lua: RxLua <https://github.com/bjornbytes/RxLua>
>    - Ruby: Rx.rb <https://github.com/Reactive-Extensions/Rx.rb>
>    - Python: RxPY <https://github.com/ReactiveX/RxPY>
>    - Go: RxGo <https://github.com/ReactiveX/RxGo>
>    - Groovy: RxGroovy <https://github.com/ReactiveX/RxGroovy>
>    - JRuby: RxJRuby <https://github.com/ReactiveX/RxJRuby>
>    - Kotlin: RxKotlin <https://github.com/ReactiveX/RxKotlin>
>    - Swift: RxSwift <https://github.com/kzaher/RxSwift>
>    - PHP: RxPHP <https://github.com/ReactiveX/RxPHP>
>    - Elixir: reaxive <https://github.com/alfert/reaxive>
>    - Dart: RxDart <https://github.com/ReactiveX/rxdart>
>
> ReactiveX for platforms and frameworks
>
>    - RxNetty <https://github.com/ReactiveX/RxNetty>
>    - RxAndroid <https://github.com/ReactiveX/RxAndroid>
>    - RxCocoa <https://github.com/kzaher/RxSwift>
>
> .
> Why don't we make XSLT part of this large family, where all developers
> already know, use and understand the functions and operators, and will be
> able with minimum effort to also use the same in XPath/XSLT?
>
> Or is this really challenging because of existing inherent problems in
> XSLT?
>
> --
> Cheers,
> Dimitre Novatchev
> ---------------------------------------
> Truly great madness cannot be achieved without significant intelligence.
> ---------------------------------------
> To invent, you need a good imagination and a pile of junk
> -------------------------------------
> Never fight an inanimate object
> -------------------------------------
> To avoid situations in which you might make mistakes may be the
> biggest mistake of all
> ------------------------------------
> Quality means doing it right when no one is looking.
> -------------------------------------
> You've achieved success in your field when you don't know whether what
> you're doing is work or play
> -------------------------------------
> To achieve the impossible dream, try going to sleep.
> -------------------------------------
> Facts do not cease to exist because they are ignored.
> -------------------------------------
> Typing monkeys will write all Shakespeare's works in 200yrs.Will they
> write all patents, too? :)
> -------------------------------------
> Sanity is madness put to good use.
> -------------------------------------
> I finally figured out the only reason to be alive is to enjoy it.
>
>
>
>

-- 
Cheers,
Dimitre Novatchev
---------------------------------------
Truly great madness cannot be achieved without significant intelligence.
---------------------------------------
To invent, you need a good imagination and a pile of junk
-------------------------------------
Never fight an inanimate object
-------------------------------------
To avoid situations in which you might make mistakes may be the
biggest mistake of all
------------------------------------
Quality means doing it right when no one is looking.
-------------------------------------
You've achieved success in your field when you don't know whether what
you're doing is work or play
-------------------------------------
To achieve the impossible dream, try going to sleep.
-------------------------------------
Facts do not cease to exist because they are ignored.
-------------------------------------
Typing monkeys will write all Shakespeare's works in 200yrs.Will they write
all patents, too? :)
-------------------------------------
Sanity is madness put to good use.
-------------------------------------
I finally figured out the only reason to be alive is to enjoy it.
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/651070
or by email: xsl-list-unsub@lists.mulberrytech.com
--~--
[Attachment #3 (text/html)]

<div dir="ltr"><div dir="ltr">&gt;  

Thanks for the suggestion, I will certainly look into this.<div><br></div><div>Thank \
you Dr. Kay.</div><div><br></div><div>For anyone interested to learn about Reactive \
Extensions, here are a few resources:</div><div><br></div><div>RxJS in Action,  <a \
href="https://www.manning.com/books/rxjs-in-action">https://www.manning.com/books/rxjs-in-action</a></div><div><br></div><div><ul><li><b>.NET \
Reactive Extensions Fundamentals 1.0</b>, Pluralsight course by Dan Sullivan,  <a \
href="https://www.pluralsight.com/library/courses/reactive-extensions/table-of-content \
s">https://www.pluralsight.com/library/courses/reactive-extensions/table-of-contents</a><br><br></li><li><b>Asynchronous \
Programming in JavaScript (with Rx.js Observables)</b>, 

Pluralsight course by

by Jafar Husain,  <a \
href="https://www.pluralsight.com/library/courses/asynchronous-javascript-rxjs-observa \
bles/table-of-contents">https://www.pluralsight.com/library/courses/asynchronous-javascript-rxjs-observables/table-of-contents</a><br><br></li><li><b>RxJS \
in Angular: Reactive Development</b>, a  

Pluralsight course   by Deborah Kurata,  <a \
href="https://www.pluralsight.com/library/courses/rxjs-angular-reactive-development/ta \
ble-of-contents">https://www.pluralsight.com/library/courses/rxjs-angular-reactive-development/table-of-contents</a></li></ul></div><div> \
</div><div>  -- <br><div dir="ltr"><div>Cheers,</div><div>Dimitre \
Novatchev</div></div></div></div><div><br></div><br><div class="gmail_quote"><div \
dir="ltr" class="gmail_attr">On Sat, Aug 1, 2020 at 12:43 AM Michael Kay &lt;<a \
href="mailto:mike@saxonica.com">mike@saxonica.com</a>&gt; wrote:<br></div><blockquote \
class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid \
rgb(204,204,204);padding-left:1ex"><div style="overflow-wrap: break-word;">Thanks for \
the suggestion, I will certainly look into this.<div><br></div><div>My   instinct to \
use promises was because we&#39;re primarily interested in retrieving external \
resources, which is inevitably done by calling out to Javascript APIs, and most of \
those APIs these days manage the asynchrony using JavaScript \
promises.</div><div><br></div><div>Michael \
Kay</div><div>Saxonica<br><div><br><blockquote type="cite"><div>On 1 Aug 2020, at \
04:08, Dimitre Novatchev &lt;<a href="mailto:dnovatchev@gmail.com" \
target="_blank">dnovatchev@gmail.com</a>&gt; wrote:</div><br><div><div \
dir="ltr"><div>First of all, congratulations to the Balisage organizers for \
organizing this conference even in the current situation.</div><div><br></div>I read \
Dr. Kay&#39;s paper &quot;Asynchronous XSLT&quot; from the proceedings of \
Balisage-2020:  

<a href="https://www.balisage.net/Proceedings/vol25/html/Kay01/BalisageVol25-Kay01.html" \
target="_blank">https://www.balisage.net/Proceedings/vol25/html/Kay01/BalisageVol25-Kay01.html</a> \
<div><br></div><div>While the described new feature (promises) is impressive and will \
be a step in the right direction, people who have used both promises and reactive \
extensions (RxJs in particular, a Javascript implementation of Reactive Extensions:  

<a href="http://reactivex.io/languages.html" target="_blank">http://reactivex.io</a>  \
) point out certain advantages of using Rx observables over \
promises:</div><div><ul><li>Promises produce only one event; Observables produce a \
stream of events.</li><li>Promises are not lazy; Observables do not fire even after \
being created, they start emitting the event stream only upon \
subscription.</li><li>Working with nested and interdependent promises can be \
cumbersome and unwieldy; Much easier and structured when expressed and handled with \
observables.</li><li>Promises, once started, cannot be cancelled; Observables were \
designed having cancellation in mind.</li><li>Shall we mention multicasting \
...</li></ul><div>Here is a brief video that shows this in running code:  <a \
href="https://egghead.io/lessons/rxjs-rxjs-observables-vs-promises" \
target="_blank">https://egghead.io/lessons/rxjs-rxjs-observables-vs-promises</a></div><div><br></div><div>The \
reason for my message is that it is still not too late to make an informed design \
decision that takes into consideration the established best approach towards \
implementing the handling of asynchrony  in almost all major programming languages, \
and, to have a written evidence that this problem had at least been raised and \
(hopefully) discussed.</div><div><br></div><div>To quote  <a \
href="http://reactivex.io/languages.html" \
target="_blank">http://reactivex.io/languages.html</a>  , Rx has been implemented in \
these languages, platforms and frameworks:</div><h2 \
id="gmail-m_-5470171943895216589gmail-languages" \
style="box-sizing:border-box;font-family:&quot;Source Sans \
Pro&quot;,Helvetica,sans-serif;font-weight:500;line-height:1.1;color:rgb(51,51,51);margin-top:22px;margin-bottom:11px;font-size:28px">Languages</h2><ul \
style="box-sizing:border-box;margin-top:0px;margin-bottom:11px;color:rgb(51,51,51);font-family:&quot;Source \
Sans Pro&quot;,Helvetica,sans-serif;font-size:16px"><li \
style="box-sizing:border-box">Java:  <a href="https://github.com/ReactiveX/RxJava" \
style="box-sizing:border-box;background:transparent;color:rgb(60,113,196);text-decoration-line:none" \
target="_blank">RxJava</a></li><li style="box-sizing:border-box">JavaScript:  <a \
href="https://github.com/ReactiveX/rxjs" \
style="box-sizing:border-box;background:transparent;color:rgb(60,113,196);text-decoration-line:none" \
target="_blank">RxJS</a></li><li style="box-sizing:border-box">C#:  <a \
href="https://github.com/Reactive-Extensions/Rx.NET" \
style="box-sizing:border-box;background:transparent;color:rgb(60,113,196);text-decoration-line:none" \
target="_blank">Rx.NET</a></li><li style="box-sizing:border-box">C#(Unity):  <a \
href="https://github.com/neuecc/UniRx" \
style="box-sizing:border-box;background:transparent;color:rgb(60,113,196);text-decoration-line:none" \
target="_blank">UniRx</a></li><li style="box-sizing:border-box">Scala:  <a \
href="https://github.com/ReactiveX/RxScala" \
style="box-sizing:border-box;background:transparent;color:rgb(60,113,196);text-decoration-line:none" \
target="_blank">RxScala</a></li><li style="box-sizing:border-box">Clojure:  <a \
href="https://github.com/ReactiveX/RxClojure" \
style="box-sizing:border-box;background:transparent;color:rgb(60,113,196);text-decoration-line:none" \
target="_blank">RxClojure</a></li><li style="box-sizing:border-box">C++:  <a \
href="https://github.com/Reactive-Extensions/RxCpp" \
style="box-sizing:border-box;background:transparent;color:rgb(60,113,196);text-decoration-line:none" \
target="_blank">RxCpp</a></li><li style="box-sizing:border-box">Lua:  <a \
href="https://github.com/bjornbytes/RxLua" \
style="box-sizing:border-box;background:transparent;color:rgb(60,113,196);text-decoration-line:none" \
target="_blank">RxLua</a></li><li style="box-sizing:border-box">Ruby:  <a \
href="https://github.com/Reactive-Extensions/Rx.rb" \
style="box-sizing:border-box;background:transparent;color:rgb(60,113,196);text-decoration-line:none" \
target="_blank">Rx.rb</a></li><li style="box-sizing:border-box">Python:  <a \
href="https://github.com/ReactiveX/RxPY" \
style="box-sizing:border-box;background:transparent;color:rgb(60,113,196);text-decoration-line:none" \
target="_blank">RxPY</a></li><li style="box-sizing:border-box">Go:  <a \
href="https://github.com/ReactiveX/RxGo" \
style="box-sizing:border-box;background:transparent;color:rgb(60,113,196);text-decoration-line:none" \
target="_blank">RxGo</a></li><li style="box-sizing:border-box">Groovy:  <a \
href="https://github.com/ReactiveX/RxGroovy" \
style="box-sizing:border-box;background:transparent;color:rgb(60,113,196);text-decoration-line:none" \
target="_blank">RxGroovy</a></li><li style="box-sizing:border-box">JRuby:  <a \
href="https://github.com/ReactiveX/RxJRuby" \
style="box-sizing:border-box;background:transparent;color:rgb(60,113,196);text-decoration-line:none" \
target="_blank">RxJRuby</a></li><li style="box-sizing:border-box">Kotlin:  <a \
href="https://github.com/ReactiveX/RxKotlin" \
style="box-sizing:border-box;background:transparent;color:rgb(60,113,196);text-decoration-line:none" \
target="_blank">RxKotlin</a></li><li style="box-sizing:border-box">Swift:  <a \
href="https://github.com/kzaher/RxSwift" \
style="box-sizing:border-box;background:transparent;color:rgb(60,113,196);text-decoration-line:none" \
target="_blank">RxSwift</a></li><li style="box-sizing:border-box">PHP:  <a \
href="https://github.com/ReactiveX/RxPHP" \
style="box-sizing:border-box;background:transparent;color:rgb(60,113,196);text-decoration-line:none" \
target="_blank">RxPHP</a></li><li style="box-sizing:border-box">Elixir:  <a \
href="https://github.com/alfert/reaxive" \
style="box-sizing:border-box;background:transparent;color:rgb(60,113,196);text-decoration-line:none" \
target="_blank">reaxive</a></li><li style="box-sizing:border-box">Dart:  <a \
href="https://github.com/ReactiveX/rxdart" \
style="box-sizing:border-box;background:transparent;color:rgb(60,113,196);text-decoration-line:none" \
target="_blank">RxDart</a></li></ul><h2 \
id="gmail-m_-5470171943895216589gmail-reactivex-for-platforms-and-frameworks" \
style="box-sizing:border-box;font-family:&quot;Source Sans \
Pro&quot;,Helvetica,sans-serif;font-weight:500;line-height:1.1;color:rgb(51,51,51);margin-top:22px;margin-bottom:11px;font-size:28px">ReactiveX \
for platforms and frameworks</h2><ul \
style="box-sizing:border-box;margin-top:0px;margin-bottom:11px;color:rgb(51,51,51);font-family:&quot;Source \
Sans Pro&quot;,Helvetica,sans-serif;font-size:16px"><li \
style="box-sizing:border-box"><a href="https://github.com/ReactiveX/RxNetty" \
style="box-sizing:border-box;background:transparent;color:rgb(60,113,196);text-decoration-line:none" \
target="_blank">RxNetty</a></li><li style="box-sizing:border-box"><a \
href="https://github.com/ReactiveX/RxAndroid" \
style="box-sizing:border-box;background:transparent;color:rgb(60,113,196);text-decoration-line:none" \
target="_blank">RxAndroid</a></li><li style="box-sizing:border-box"><a \
href="https://github.com/kzaher/RxSwift" \
style="box-sizing:border-box;background:transparent;color:rgb(60,113,196);text-decoration-line:none" \
target="_blank">RxCocoa</a></li></ul><div>.</div><div>Why don&#39;t we make XSLT part \
of this large family, where all developers already  know, use and understand the \
functions and operators, and will be able with minimum effort to also use the same in \
XPath/XSLT?</div><div><br></div><div>Or is this really challenging because of \
existing inherent problems in XSLT?</div><div><br></div>-- <br><div \
dir="ltr"><div>Cheers,</div><div>Dimitre \
Novatchev</div><div>---------------------------------------</div><div>Truly great \
madness cannot be achieved without significant \
intelligence.</div><div>---------------------------------------</div><div>To invent, \
you need a good imagination and a pile of \
junk</div><div>-------------------------------------</div><div>Never fight an \
inanimate object</div><div>-------------------------------------</div><div>To avoid \
situations in which you might make mistakes may be the</div><div>biggest mistake of \
all</div><div>------------------------------------</div><div>Quality means doing it \
right when no one is \
looking.</div><div>-------------------------------------</div><div>You&#39;ve \
achieved success in your field when you don&#39;t know whether what you&#39;re doing \
is work or play</div><div>-------------------------------------</div><div>To achieve \
the impossible dream, try going to \
sleep.</div><div>-------------------------------------</div><div>Facts do not cease \
to exist because they are \
ignored.</div><div>-------------------------------------</div><div>Typing monkeys \
will write all Shakespeare&#39;s works in 200yrs.Will they write all patents, too? \
:)</div><div>-------------------------------------</div><div>Sanity is madness put to \
good use.</div><div>-------------------------------------</div><div>I finally figured \
out the only reason to be alive is to enjoy it.</div><div>  </div></div></div></div> \
</div></blockquote></div><br></div></div></blockquote></div><br \
clear="all"><div><br></div>-- <br><div dir="ltr" \
class="gmail_signature"><div>Cheers,</div><div>Dimitre \
Novatchev</div><div>---------------------------------------</div><div>Truly great \
madness cannot be achieved without significant \
intelligence.</div><div>---------------------------------------</div><div>To invent, \
you need a good imagination and a pile of \
junk</div><div>-------------------------------------</div><div>Never fight an \
inanimate object</div><div>-------------------------------------</div><div>To avoid \
situations in which you might make mistakes may be the</div><div>biggest mistake of \
all</div><div>------------------------------------</div><div>Quality means doing it \
right when no one is \
looking.</div><div>-------------------------------------</div><div>You&#39;ve \
achieved success in your field when you don&#39;t know whether what you&#39;re doing \
is work or play</div><div>-------------------------------------</div><div>To achieve \
the impossible dream, try going to \
sleep.</div><div>-------------------------------------</div><div>Facts do not cease \
to exist because they are \
ignored.</div><div>-------------------------------------</div><div>Typing monkeys \
will write all Shakespeare&#39;s works in 200yrs.Will they write all patents, too? \
:)</div><div>-------------------------------------</div><div>Sanity is madness put to \
good use.</div><div>-------------------------------------</div><div>I finally figured \
out the only reason to be alive is to enjoy it.</div><div>  </div></div></div> \
<div><!-- begin bl.html.trailer --> <div style="border-top:1px solid black; \
                background-color: #dddddd;
color: #888888; font-size: smaller; padding: 5px; text-align: center;
font-family: arial,verdana,arial,sans-serif; margin-top:1em; clear:
both; margin: auto">
<a href="http://www.mulberrytech.com/xsl/xsl-list">
XSL-List info and archive</a>
<div style="text-align:center;">
<a style="color: blue;"
  href="http://lists.mulberrytech.com/unsub/xsl-list/651070"
> EasyUnsubscribe</a>
(<a style="color: blue;"
href="mailto:xsl-list-unsub@lists.mulberrytech.com?subject=remove"
> by email</a>)
</div>
</div>
<!-- end bl.html.trailer --></div>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic