Call for Interest: Clojure (or Lisp?) Code Camp with BLM focus
Neil Gilmore
raito at raito.com
Wed Dec 2 16:47:02 UTC 2020
Hi all,
This isn't really replying to Pascal specifically -- his was just teh
last message I received.
I guess none of you pros are also on the music-dsp list out of Columbia,
or look around ccrma at Standford much.
Why not start with what's already out there for CL?
http://ccrma.stanford.edu/planetccrma/software/soundapps.html#SECTION00042400000000000000
Neil Gilmore
raito at raito.com
On 2020-12-02 09:28, Pascal Costanza wrote:
> Hi,
>
> I would also consider Go. It’s actually a really good language in my
> opinion. It’s one of the few “modern” languages that gets lambda
> expressions correct. (No funky exceptional behavior, you can assign to
> variables in the lexical environment, and the correct thing happens.)
>
> It has a “general” type called interface{} that holds values of
> any type. This is not a kludge like in Java, or so, where
> java.lang.Object holds any object except for “primitive” types,
> but interface{} actually stores any type. (Including int8, int16,
> int32, etc., etc., and if I remember correctly, avoids storing on the
> heap if possible.)
>
> It has an extremely good parallel, concurrent garbage collector that
> deals well with pretty large heaps. (Up to 256 GB in our experience.)
>
> Variables are stored by value by default (like in C or C++), but are
> automatically moved to the heap if necessary, for example if you take
> the address of the variable and pass it around. This avoids major
> memory issues that you can easily get in C or C++, but remains
> efficient by default.
>
> The concurrency model is pretty good, and also works well to a large
> extent for parallel programming. Parallelism is based on a
> work-stealing scheduler, which are known to be “optimal,” (except
> if you program against the lowest level of a CPU, but for portable
> parallelism, work stealing is pretty hard to beat).
>
> When moving our elPrep software away from Common Lisp, we evaluated
> C++, Go and Java as potential candidates, and Go turned out to provide
> the best balance between performance and memory use. See
> https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-019-2903-5
>
> We are still using Common Lisp for prototyping, and then translate to
> Go. These two languages are actually much more similar than it appears
> at first. For example, dynamic dispatch feels a lot more like generic
> functions than OOP-style methods. (Methods are defined outside of the
> corresponding record definitions, and can actually be defined on any
> type, including your own variants of “primitive” types, which can
> be extremely handy.)
>
> We also planned to evaluate Rust for elPrep, but Rust didn’t provide
> type-safe atomic compare-and-swap, at least not back then. This is a
> deal breaker for an important part of our software. You can cast away
> the types and express this with “unsafe” types, but that defies
> the main purpose of using Rust. We also expect that the performance
> will be equally bad as that of C++, which suffers a lot from the lack
> of a proper garbage collector. (Details are in the paper.)
>
> Pascal
>
> Sent from my iPad
>
>> On 2 Dec 2020, at 16:15, Scott McKay <swmckay at gmail.com> wrote:
>
>>
>> Rust is C++ done right. At this point, I have several stacks based
>> on what I'm doing:
>> * Web back end – Python/Django
>> * Web front end – Javascript/React
>> * ML/AI (as a "client") – Python
>> * Systems programming – Rust
>>
>> On Wed, Dec 2, 2020 at 9:57 AM Marco Antoniotti
>> <marco.antoniotti at unimib.it> wrote:
>>
>> I second what Scott said. Julia is not "fringe" and I am thinking
>> that - too late probably - that is a Very Good Thing (tm)
>>
>> Apart from that, Rust was described in "Nature". You cannot get
>> more mainstream than that.
>>
>> Ciao
>>
>> Marco
>>
>> PS Me, I am checking out PL/I
>>
>> On Wed, Dec 2, 2020 at 8:52 AM Scott McKay <swmckay at gmail.com>
>> wrote:
>>
>> I can't argue with that. My point was, if you're gonna use a fringe
>> language (*),
>> use a _good_ fringe language.
>>
>> (*) I don't think Julia is "fringe" any more.
>>
>> On Wed, Dec 2, 2020 at 5:45 AM Bob Cassels <bobcassels at netscape.net>
>> wrote:
>>
>> Hey Scott,
>>
>> Go with Julia. It’s enough like Dylan (multi-argument generic
>> function dispatch, expression-oriented, macros), but better in
>> important ways (better type system, package system, better
>> compilation model, cross-language integration).
>>
>> It has warts (kludgy, messy syntax), but mostly it has traction
>> (active, growing user community, increasing library support,
>> libraries are cutting edge).
>>
>> If you long for Dylan, Julia is where you want to be. It’s where
>> the smart cool kids are.
>>
>> Bob
>>
>> On Jul 7, 2020, at 8:24 AM, Scott McKay <swmckay at gmail.com> wrote:
>>
>> I cannot hold my tongue on Pyret – why not Dylan? Pyret breaks no
>> new ground,
>> and does not have as good a language designer as Dave Moon. It's
>> macro system
>> can be trivially used to add the test-ish stuff that Pyret puts in
>> its core language.
>>
>> Dylan remains the best language I've seen that never got traction.
>>
>> —S
>>
>> On Tue, Jul 7, 2020 at 4:41 AM Ken Tilton <kentilton at gmail.com>
>> wrote:
>>
>> Hey, Daniel.
>>
>> Thanks for the +1, as the kids today say!
>>
>> Yeah, what we developers deal with must somehow be avoided until the
>> students have felt the thrill of programming, if they will. This
>> programme will not be for everyone. But for those who light up as
>> much over algorithms as they do the music, _then_ we can let them
>> see a two thousand line Clojure backtrace on every error. Grrrr. :)
>>
>> I like the section contrasting Pyret with other languages that are
>> considered clean syntactically. Pyret makes them look like Java. :)
>> We devs put up with such garbage. One reason I want Clojure or CL
>> for this is because the macros will make it easy to deliver a super
>> friendly yet powerful new music DSL.
>>
>> Looking at Pyret also reminded me of Logo, another super clean yet
>> powerful language aimed at noobs of any age.
>>
>> Thx for the Pyret pointer!
>>
>> -hk
>>
>> On Mon, Jul 6, 2020 at 11:23 PM Daniel Herring
>> <dherring at tentpost.com> wrote:
>> Hi Ken,
>>
>> I think music is a great way to engage a wider audience of potential
>>
>> developers. It has a wider appeal and lower barrier to entry than
>> many
>> other programming activities.
>>
>> Having seen kids fire up a web browser to do "Scratch programming",
>> I'm
>> convinced that a web-based platform is the most accessible. People
>> can
>> use almost any computer to create accounts, create projects, and
>> share/publish projects. Only seasoned developers are comfortable
>> with the
>> concept of "install this editor, compiler, and Git". :)
>>
>> Here's an interesting language, though it may not have a audio
>> library
>> yet.
>>
>> https://www.pyret.org/
>>
>> - Daniel
>>
>> On Mon, 6 Jul 2020, Ken Tilton wrote:
>>
>>> "actively under development"! Music (sorry) to my ears! The Lisp
>> and ADD genes must overlap seriously. I started one of the videos.
>> Really nice live coding.
>>>
>>> I'll make sure our code camp grad school uses CL.
>>>
>>> Thx!
>>>
>>> -hk
>>>
>>> On Mon, Jul 6, 2020 at 8:11 PM Andy Peterson
>> <andy.arvid at gmail.com> wrote:
>>> https://github.com/byulparan/cl-collider "A SuperCollider
>> client for CommonLisp"
>>>
>>> Never tried this but I've been following it for a few years and it
>> is actively under development.
>>>
>>> Andy
>>>
>>> On Mon, 6 Jul 2020 at 13:57, Ken Tilton <kentilton at gmail.com>
>> wrote:
>>> Thanks for the seconding motion! But part of the plan is
>> high accessibility, and low cost. I just noticed the pricing on
>> OpusModus, bit of a showstopper there.
>>>
>>> We would use Clojure Overtone https://overtone.github.io/ but that
>> sits atop Supercollider, not sure if that would make installation a
>> PITA. Ideally we would have sth built atop Web Audio, but
>>> then we really are super low-level. I think! Have to look into
>> that.
>>>
>>> We would want to hook the students with solid music before taking
>> them down to the basics, so existing effects etc would be great to
>> have, but again, this is about coding in general, not music
>>> generation. That is just the hook.
>>>
>>> Thx again! If some campers get more turned on by music than coding
>> that will be a great next step.
>>>
>>> On Mon, Jul 6, 2020 at 1:43 PM dbm at refined-audiometrics.com
>> <dbm at refined-audiometrics.com> wrote:
>>>
>>> Yes, I was also going to suggest OpusModus. I see little
>> purpose in reinventing any portion of what they have done.
>>>
>>> I have been a user for about 2 years now. It seems to be the
>> defacto replacement for an earlier product done in Lispworks, from
>> Italy, called Symbolic Composer. OpusModus is very good, and
>>> getting better every day. They just implemented live MIDI
>> recording in the latest version.
>>>
>>> - David McClain
>>> Refined Audiometrics Laboratory, LLC
>>> Tucson, AZ, USA
>>> refined-audiometrics.com [1]
>>>
>>>
>>> On Jul 6, 2020, at 8:11 AM, Ken Tilton <kentilton at gmail.com>
>> wrote:
>>>
>>> Sounds great, I will keep it in mind if we loosen the
>> web/mobile-native constraint. Or maybe as a direction for campers
>> who take off -- no need then to fret over platform,
>>> power will matter.
>>>
>>> Thx!
>>>
>>>
>>> On Mon, Jul 6, 2020 at 10:54 AM Stonewall Ballard <stoney at sb.org>
>> wrote:
>>> Ken,
>>>
>>> Are you familiar with Opusmodus?
>>> <http://opusmodus.com [2]>
>>>
>>> It’s written in Clozure ccl, and besides providing an incredible
>> array of music manipulation functions and structures, it’s got a
>> beautiful window system. Mac only.
>>>
>>> Your idea of using music as a hook to learn Lisp sounds plausible.
>> Good Luck!
>>>
>>> - Stoney
>>> ————Stonewall Ballard stoney at sb.org
>> http://stoney.sb.org [3]
>>>
>>> On Monday, July 6 at 8:15:31 AM, Ken Tilton (kentilton at gmail.com)
>> wrote:
>>>
>>> So I got to thinking about creating an approachable pathway to IT
>> careers for anyone really, but in the spirit of today one focused on
>> creating career opportunities for
>>> African Americans.
>>>
>>> The idea would be a code camp developed around algorithmic
>> generation of music. I know nothing about music theory, except that
>> there is prolly enough there to introduce
>>> most if not all fundamental programming concepts.
>>>
>>> For those campers that accidentally get hooked on programming
>> itself, which is how many of us ended up in IT careers, away they
>> go!
>>>
>>> The idea is to:
>>> * use music as the hook;
>>> * defer as long as possible the annoying things about
>> programming (I am looking at you, node.js);
>>> * part of that ^^^ will be using a powerful language with the
>> parentheses in the right place, prolly ClojureScript since that
>> could run where JS runs;
>>> * keep programming as the focus, as tempting as the music will
>> be. Sonic Pi comes with all sorts of built-in sound capabilities,
>> but we want to develop those in the
>>> code camp;
>>> * tailor the program to specific musical genres, to maximize the
>> musical hook.
>>> I am dropping this here since I know many Common Lispers have a
>> strong musical bent. My questions are:
>>> * Could we use CL instead? I do think this almost has to be a
>> web app, perhaps even mobile. Hmmm, we could CL-ify CLJS with
>> sufficent clever macrology.
>>> * What do you think? Can a solid programming fundamentals course
>> be expressed in music theory? Hint: HTTP is not a programming
>> fundamental.
>>> * If there is any interest, what would be a good place for an
>> ongoing discussion? Google groups?
>>> Ideas, comments, suggestions all welcome.
>>>
>>> -hk
>>>
>>>
>>>
>>> --
>>> Kenneth Tilton
>>> http://tiltontec.com/
>>>
>>>
>>>
>>>
>>> --
>>> Kenneth Tilton
>>> http://tiltontec.com/
>>>
>>>
>>>
>>> --
>>> Kenneth Tilton
>>> http://tiltontec.com/
>>>
>>>
>>
>> --
>>
>> Kenneth Tilton
>> http://tiltontec.com/
>
> --
>
> Marco Antoniotti, Associate Professor tel. +39 - 02 64 48 79
> 01
> DISCo, Università Milano Bicocca U14 2043
> http://bimib.disco.unimib.it [4]
> Viale Sarca 336
> I-20126 Milan (MI) ITALY
>
>
> Links:
> ------
> [1] http://refined-audiometrics.com/
> [2] http://opusmodus.com/
> [3] http://stoney.sb.org/
> [4] http://bimib.disco.unimib.it/
More information about the pro
mailing list