{"id":1374,"date":"2019-08-11T16:38:11","date_gmt":"2019-08-11T16:38:11","guid":{"rendered":"http:\/\/sdi.thoughtstorms.info\/?p=1374"},"modified":"2019-08-11T16:38:11","modified_gmt":"2019-08-11T16:38:11","slug":"whats-up-august-2019-edition","status":"publish","type":"post","link":"https:\/\/blog.thoughtstorms.info\/?p=1374","title":{"rendered":"What&#039;s up? August 2019 Edition"},"content":{"rendered":"\n<p>Gosh &#8230; we&#8217;re half way through the year already.<\/p>\n\n\n<p>So what am I up to in programming?<\/p>\n\n\n<p><strong>Clojure<\/strong><\/p>\n\n\n<p>I still think it&#8217;s a wonderful language. Not doing as much as I&#8217;d like. But it&#8217;s still great. <br \/><br \/>One thing I did a few months ago was port the terminal version of Mind Traffic Control to it. Which you can get here : <a href=\"https:\/\/gitlab.com\/interstar\/MTC-CLJ\">https:\/\/gitlab.com\/interstar\/MTC-CLJ <\/a><\/p>\n\n\n<p>And I&#8217;m happy with it. Works fine. I&#8217;m using it every day.<\/p>\n\n\n<p>That means that my experimenting with Racket is unfortunately at an end. I don&#8217;t currently see myself going back to using Racket for anything in the near future. Nice as it is, I think I&#8217;m committing to Clojure for my Lispish stuff at the moment.<\/p>\n\n\n<p><strong>C++<\/strong><\/p>\n\n\n<p>Huh? Yep. I&#8217;ve been doing audio programming recently. And, unfortunately, until https:\/\/github.com\/soul-lang\/SOUL goes mainstream, there doesn&#8217;t seem to be much alternative.<br \/><br \/>In particular I&#8217;m playing with <a href=\"https:\/\/vcvrack.com\/manual\/PluginDevelopmentTutorial.html\">plugin development<\/a> for VCVRack, which is surprisingly civilized. And yeah, in that specific context, with their nice API and <a href=\"https:\/\/github.com\/memononen\/nanovg\">nanovg<\/a> it&#8217;s all fairly OK. <\/p>\n\n\n<p>Which makes me also want to try another go at VST programming with JUCE. (I&#8217;m doing a lot of music in FL Studio these days, too). And I&#8217;m doing something on Android with <a href=\"https:\/\/github.com\/google\/oboe\">Oboe<\/a>. <br \/><br \/>Oboe is OK, but Android is hell!<\/p>\n\n\n<p><strong>Flutter \/ Dart<\/strong><\/p>\n\n\n<p>Which brings me to Dart \/ Flutter which I started playing with <em>today<\/em>. And already, I&#8217;m sold. I never bothered to look at Dart before. It looked like the kind of &#8220;bit nicer than Java&#8221; language which is probably good to have, but has never got my pulse racing.<\/p>\n\n\n<p>But Flutter &#8230; literally I&#8217;ve wanted to do stuff on Android for ages. And HATED every time I&#8217;ve tried to do much with it. The whole experience is ghastly. <\/p>\n\n\n<p>But finally &#8230; Flutter actually looks like some sanity has been brought to Android. Yey! It&#8217;s all in one file. Yey! A language that allows complex data declaration and therefore can use this to define reactive UIs declaratively. Yey! Hot-reload (like Figwheel for ClojureScript).<br \/><br \/>Finally. Some sanity.<\/p>\n\n\n<p>OK, this might be premature. I haven&#8217;t actually done anything more than the hello world tutorial. But it does look like it&#8217;s an acceptable Android programming language \/ framework.<\/p>\n\n\n<p>Next challenge, can I call native C++ libraries like Oboe from it?   <\/p>\n\n\n<p><strong>Ferret<\/strong><\/p>\n\n\n<p>I still think Ferret (a compile to C++ Clojure-like) looks promising. And I asked the inventor if I can make libraries for inclusion into C++ code with it. <\/p>\n\n\n<p><a href=\"https:\/\/github.com\/nakkaya\/ferret\/issues\/29\">You can!<\/a><\/p>\n\n\n<p>Great. So once I&#8217;ve got a moment to play, I&#8217;ll see if I can write some pure data-model \/ code stuff in Ferret, compile it to C++ and try to use in a) my music context and b) natively on Android.<\/p>\n\n\n<p><strong>Python3<\/strong><\/p>\n\n\n<p>I&#8217;m in the process of moving my code-bases to Python3.<\/p>\n\n\n<p>I think TSWiki <a href=\"https:\/\/github.com\/interstar\/ThoughtStorms\">code<\/a> (and the libraries) are pretty much done. FSQuery theoretically but I found a bug. I think OWL is getting there but not released.<\/p>\n\n\n<p>Basically I am on schedule that all my non legacy \/ abandoned Python is going to be Python3 by the end of this year. <\/p>\n\n\n<p><strong>Prolog<\/strong><\/p>\n\n\n<p>I&#8217;m still fascinated by the potential of Prolog or Prolog-like declarative \/ logic \/ inference-engine enabled languages. <\/p>\n\n\n<p>And I&#8217;m actually playing a bit with SWI-Prolog at the moment. It is VERY GOOD. <\/p>\n\n\n<p>Running a web-server and putting a web front-end to Prolog turns out to be fairly straightforward and very concise. Actually generating HTML from the DCG-based DSL is also surprisingly good. More or less equivalent to my own Python <a href=\"https:\/\/github.com\/interstar\/BEACHhtml\">library<\/a> for this <br \/><\/p>\n\n\n<p>If I can just figure out how to do some of the things I&#8217;m now imagining Prolog is good for (see <a href=\"http:\/\/sdi.thoughtstorms.info\/?p=1370\">my last post<\/a>) in Prolog, then I might well be doing some fun stuff here.<\/p>\n\n\n<p>So yeah, that&#8217;s me, August 2019 : Clojure, Python3, Dart \/ Flutter, C++, Prolog<br \/><br \/>And I&#8217;m finally getting my development environment into Docker containers.<br \/><br \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Gosh &#8230; we&#8217;re half way through the year already. So what am I up to in programming? Clojure I still think it&#8217;s a wonderful language. Not doing as much as I&#8217;d like. But it&#8217;s still great. One thing I did a few months ago was port the terminal version of Mind Traffic Control to it. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[53,66,147,154,252,282,295,359,360,365,484],"class_list":["post-1374","post","type-post","status-publish","format-standard","hentry","category-me","tag-c","tag-clojure","tag-ferret-lang","tag-flutter","tag-logic-programming","tag-mind-traffic-control","tag-music-programming","tag-project-thoughtstorms","tag-prolog","tag-python","tag-vcvrack"],"_links":{"self":[{"href":"https:\/\/blog.thoughtstorms.info\/index.php?rest_route=\/wp\/v2\/posts\/1374","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.thoughtstorms.info\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.thoughtstorms.info\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.thoughtstorms.info\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.thoughtstorms.info\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1374"}],"version-history":[{"count":0,"href":"https:\/\/blog.thoughtstorms.info\/index.php?rest_route=\/wp\/v2\/posts\/1374\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.thoughtstorms.info\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1374"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.thoughtstorms.info\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1374"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.thoughtstorms.info\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1374"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}