<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="">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><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 18:18, David McClain <<a href="mailto:dbm@refined-audiometrics.com" class="">dbm@refined-audiometrics.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div 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="">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" class="">ken@tiltontec.com</a>> wrote:</div><br class="Apple-interchange-newline"><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></body></html>