<html><head></head><body><div style="color:#000; background-color:#fff; font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:16px"><div id="yui_3_16_0_ym19_1_1476761927128_1152301" dir="ltr"><span id="yui_3_16_0_ym19_1_1476761927128_1152343">Interesting thread, may I butt in with a comment about how the GUI library is just that, to be ideally cross platform and to have widgets, gadgets and other pre-built things like tables.<br><br>But the real problem I have been encountering these days is how do you make your GUI represent your data, without tangling it in a mess of events, handlers and triggers.<br><br>On the GUI side of things I have toyed with observer pattern (backbone, knockout.js) > reactive model (react.js+redux) > clojurescript (reagent).  So far I have loved the one way reactive model, and clojurescript takes that to a new level.<br id="yui_3_16_0_ym19_1_1476761927128_1152700"><br>The premise is that your GUI is "dumb" and cannot handle any events/triggers to check/uncheck a checkbox for example.  The only "smart" parts of your program are your state, and your actions/reductions/transitions/insert_fancy_term_here on that state (nicely modeled by using a gen_statem). Anytime the state changes, the GUI now needs to be redraw to reflect the change in state.  <br><br>Having just last week bumped head first into this problem yet again when working with a foreign code base.  The codebase did not use any observer/reactive patterns, everything on the GUI was triggered via a global event that could be called from any place in the code, and multiple parts of the UI could subscribe to the same global events, leading to a GUI that grew exponentially in complex as features were added.<br></span></div> <div class="qtdSeparateBR"><br><br></div><div class="yahoo_quoted" style="display: block;"> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 16px;"> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 16px;"> <div dir="ltr"><font size="2" face="Arial"> On Monday, October 31, 2016 12:32 PM, Anthony Ramine <n.oxyde@gmail.com> wrote:<br></font></div>  <br><br> <div class="y_msg_container"><br clear="none">> Le 31 oct. 2016 à 16:55, Joe Armstrong <<a shape="rect" ymailto="mailto:erlang@gmail.com" href="mailto:erlang@gmail.com">erlang@gmail.com</a>> a écrit :<br clear="none">> <br clear="none">> So this is why something that used to be a few KBytes of code<br clear="none">> is now wrapped up in the middle of a GByte download.<br clear="none"><br clear="none">But you do realise that what you dismiss as bloat is just... way more features that were lacking and that you can't argue they should disappear, right?<br clear="none"><br clear="none">I don't get the false comparison with the 80s systems where you just couldn't use said systems if you were disabled. Tcl/Tk was never made to work with screen readers and whatnot.<div class="yqt2842839755" id="yqtfd81519"><br clear="none">_______________________________________________<br clear="none">erlang-questions mailing list<br clear="none"><a shape="rect" ymailto="mailto:erlang-questions@erlang.org" href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br clear="none"><a shape="rect" href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br clear="none"></div><br><br></div>  </div> </div>  </div></div></body></html>