<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi Ken,<div class=""><br class=""></div><div class="">I think I see what you are recommending. But one of the facts of these external programs is the lack of multi-processing in their JS interpreters. If I sent over one program to maintain state and issue periodic nudges, that would tie up the JS interface for all other possible needs. </div><div class=""><br class=""></div><div class="">Instead, by offering periodic snippets to the JS engine, I leave it mostly available for all other uses. The nudges themselves take only a fraction of a second, issued once per minute.</div><div class=""><br class=""></div><div class="">- DM</div><div class=""><br class=""></div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Jul 3, 2016, at 19:09, Kenneth Tilton <<a href="mailto:ken@tiltontec.com" class="">ken@tiltontec.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><span style="font-size:12.8px" class="">So I generally do all my control from Lisp and issue snippets of JS across a network connection to the tools.</span></blockquote><div class=""><br class=""></div><div class="">That is how I program web apps: send snippets of JS back on each XHR.</div><div class=""><br class=""></div><div class="">With CLJS and Qooxdoo mobile the whole system lives on the client, simplifying a lot of the coordination I had to do between server and client.</div><div class=""><br class=""></div><div class="">Sounds like you need Cells running in JS managing everything. You just send over one program that takes care of everything, all in a declarative modelling paradigm.</div><div class=""><br class=""></div><div class="">Note that your bias (and mine) is that you want to program the devices in Lisp, not JS. With CLJS you would be programming them in a Lisp.</div><div class=""><br class=""></div><div class="">-kt</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""> </div></div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Sun, Jul 3, 2016 at 9:26 PM, David McClain <span dir="ltr" class=""><<a href="mailto:dbm@refined-audiometrics.com" target="_blank" class="">dbm@refined-audiometrics.com</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class="">An example may help… TheSkyX is a telescope control system for an equatorial mount known as a Paramount. This is a high quality telescope mount with tracking of stars. It can interface not only to the mount, but also to cameras for imaging and autoguiding. But it has limits. An autoguider camera mounted on the side of a telescope suffers some degree of differential flexure and so the guide camera gradually drifts away from where the imaging camera wants to be centered. If left to the autoguider control in TheSkyX control program, long exposures would develop streaked star images.<div class=""><br class=""></div><div class="">So in response to that problem, I have a little “Kicker” program, written in Lisp, running alongside TheSkyX, that computes the rate of change in differential flexure during the tracking. It prods TheSkyX with changing positions as to where it should expect the guide star to be. In effect I’m fooling the autoguider into doing the right thing in the face of changing differential flexure. </div><div class=""><br class=""></div><div class="">My wider context for control is the location in the sky where I am pointed with the imaging camera, and the current time. Javascript does not have a concept of saved state, which could allow for differential nudges relative to the previous nudge. Instead, I keep that information updated in the Lisp executive and offer just the blind differential nudges every minute to TheSkyX.</div><span class="HOEnZb"><font color="#888888" class=""><div class=""><br class=""></div><div class="">- DM</div></font></span><span class=""><div class=""><br class=""></div><div class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On Jul 3, 2016, at 18:18, David McClain <<a href="mailto:dbm@refined-audiometrics.com" target="_blank" class="">dbm@refined-audiometrics.com</a>> wrote:</div><br class=""><div class=""><div style="word-wrap:break-word" class="">Hi Ken,<div class=""><br class=""></div><div class="">The Javascript is imposed on me from outside. My tools (TheSkyX and PixInsight) are both wedded to Javascript. But that offers essentially no executive control — state that must be kept aware of wider context. So I generally do all my control from Lisp and issue snippets of JS across a network connection to the tools. My Lisp code keeps aware of context and state and the JS provides only immediate commands to the tools.</div><div class=""><br class=""></div><div class="">- DM</div><div class=""><br class=""></div><div class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On Jul 3, 2016, at 16:46, Kenneth Tilton <<a href="mailto:ken@tiltontec.com" target="_blank" class="">ken@tiltontec.com</a>> wrote:</div><br class=""><div class=""><div dir="ltr" class=""><br class=""><div class="gmail_extra"><br class=""><div class="gmail_quote">On Sun, Jul 3, 2016 at 7:25 PM, David McClain <span dir="ltr" class=""><<a href="mailto:dbm@refined-audiometrics.com" target="_blank" class="">dbm@refined-audiometrics.com</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word" class="">Hi Ken,<div class=""><br class=""></div><div class="">Not to put too much of a damper on your enthusiasm, </div></div></blockquote><div class=""><br class=""></div><div class="">No enthusiasm. As I said, I prefer Common Lisp. You asked if it was a fad, I said "No" and provided the indicators I see.</div><div class=""> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word" class=""><div class="">but can you suggest solid technical reasons for migrating from Common Lisp to Clojure? I don’t do web programming. </div></div></blockquote><div class=""><br class=""></div><div class="">No, I prefer CL. I was responding to this from you:</div><div class=""><br class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"> " I’m finding myself being dragged into a “new” world centering on Javascript and prototype based programming. "</blockquote><div class=""><br class=""></div><div class="">So I suggested ClojureScript (if you have that option.)</div><div class=""> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word" class=""><div class="">I do machine control, image processing, DSP audio processing, cryptography research, etc. I have never programmed a web page in my life, and probably never will.</div></div></blockquote><div class=""><br class=""></div><div class="">So what is the Javascript for? A node.js app of some kind?</div><div class=""> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word" class=""><div class=""><br class=""></div><div class="">My impressions from a few years ago was that Clojure was another language built for the heck of it, much like Python. Not particularly well designed, under the control of one individual, with lots of cheerleading from the small audience. Perhaps it has now matured? </div></div></blockquote><div class=""><br class=""></div><div class="">I just started using it three months ago because I am looking for a job, so I cannot offer much on growth over the years. I do know a few folks now add to the core, and the product is very stable, solid, and mature.</div><div class=""><br class=""></div><div class="">And again, Clojurescript is amazing. Cells is fairly intense and once I had it ported to Clojure it took just  a week to get it running on CLJS (most of that do to some source code reorg in re macros forced by the CLJS->JS compilation chain. So in the context of "OMG! Ihave to do JS" I offered my recommendation.</div><div class=""><br class=""></div><div class="">Not that cljs will save you from the prototype model. :)</div><div class=""><br class=""></div><div class="">best, kt</div><div class=""><br class=""></div></div>
</div></div>
</div></blockquote></div><br class=""></div></div></div></blockquote></div><br class=""></div></span></div></blockquote></div><br class=""><br clear="all" class=""><div class=""><br class=""></div>-- <br class=""><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr" class=""><div class=""><div dir="ltr" class=""><div class=""><div dir="ltr" class=""><div dir="ltr" class=""><div dir="ltr" class=""><div dir="ltr" class=""><div dir="ltr" class="">Kenneth Tilton</div><div dir="ltr" class=""><br class=""></div><div class="">Lisper/Clojurian for hire</div><div class=""><br class=""></div><div class="">Common Lisp + qooxdoo sample: <a href="http://tiltonsalgebra.com/" target="_blank" class="">http://tiltonsalgebra.com</a></div><div class="">Cells for Clojure/Clojurescript: <a href="https://github.com/kennytilton/rube" target="_blank" class="">https://github.com/kennytilton/rube</a></div><div class=""><span style="font-size:12.8px" class="">Clojurescript + qooxdoo mobile JS + Cells: </span><a href="https://github.com/kennytilton/rube" style="font-size:12.8px" target="_blank" class="">https://github.com/kennytilton/</a>qxia<br class=""></div></div></div></div></div></div></div></div></div></div>
</div>
</div></blockquote></div><br class=""></div></body></html>