libera/#commonlisp - IRC Chatlog
Search
5:05:34
lotuseater
beach: If you don't mind, I wanted to ask you about the status and your plans with Gsharp. I recommended OpusModus (maybe you heard of it) to a very music-affine friend of mine who also works in that topic and he's already on Mac. I remembered your Gsharp project when he mentioned he used MuseScore.
5:06:34
lotuseater
I wonder how much effort would be needed to port OpusModus for other implementations and Linux.
5:08:15
lotuseater
When someone hears `gsharp` it could be thought of a maybe new programming language by Microsoft accidently.
5:09:40
lotuseater
I saw when skimming through your repo files that you also implement things from Metafont. :) very interesting
5:10:22
beach
When I started Gsharp, there was no good Music font. Now there is a free font and a good standard.
5:10:47
beach
Or, rather, there were music fonts, but they looked like crap on low-resolution displays.
5:11:59
beach
So the idea for Clovetree is to use McCLIM, the new open font standard, and the new open font. I forget the names of the standard and the font.
5:12:48
beach
Otherwise, I will simplify the concepts of Gsharp. It was a mistake to introduce the concept of a "segment" to the user. I did it because I thought I needed it for performance.
5:14:34
lotuseater
Is music one of your other special interests? Writing such applications requires also much domain specific knowledge.
5:15:57
beach
And I took an interest in music engraving. First I read the book by Ted Ross, and that was interesting but very brief.
5:16:02
lotuseater
I remember reading about Knuth, when visiting him at home you have to make a organ pipe session playing with him. :)
5:20:02
beach
A composer is someone who knows about things like harmony and counterpoint. I have studied those a little bit, but not enough to be a composer.
5:20:35
beach
Music engraving, however, is something you can read up on and then implement the rules in software.
5:27:01
beach
To someone who is unfamiliar with music engraving as a domain (like for those composers who think they know everything) it is a very surprising read.
5:28:18
beach
So the main features of a program like this is to implement all these rules, with all the possible variations, while still allowing the user to tweak the result (because it is impossible to totally automate).
5:29:22
beach
I can't imagine what prompted the MuseScore developers to use C++. It seems like a masochistic choice.
5:30:41
beach
So what information are you looking for, and what are your plans? Maybe I already answered all your questions?
5:33:25
beach
I mean, why were you interested in the status of Gsharp in the first place? Do you plan to re-implement OpusModus?
5:34:09
lotuseater
And maybe if you know the geometry "GeoGebra" I would like to have this in McCLIM too, so featuring 100% less Java.
5:35:44
beach
Maybe so. Clovetree is stalled at the moment because I am too busy with Gsharp, but maybe later.
5:40:32
beach
Once I finish bootstrapping, there will be tons of smaller, independent projects like a type of compiler optimization, or some other modules.
5:47:15
beach
Bah, Mandarin has only 4 tones as I recall. Vietnamese has 6 or 8 depending on how you see it.
5:48:14
lotuseater
oh sounds interesting, but maybe if I would learn an Asian human language it would be Japanese I think
5:52:37
beach
I lived in Aotearoa for a year, and tried to organize a Kiwi Common Lisp meetup, but there are only around 5 Lispers within a 3 hour flight radius from Auckland. Very different from Europe.
5:54:06
lotuseater
I never lived in another country yet, but I would want to, if some interesting opportunity opens up and someone would need me.
5:57:42
lotuseater
gilberth said jokingly to me organizing some CL meetup somewhere here central and invite some people, now that the situation gets hopefully better with time. but I would also travel for that to France if other costs are not out of my current financial range
6:50:33
pjb
lotuseater: I also worked a little with gsharp, if you have questions. I have some patches here: https://gitlab.com/abnotation/gsharp I have apending pull request on gsharp to prepare for more PR with my patches… https://github.com/robert-strandh/Gsharp/pulls
6:55:35
pjb
beach: that's nice, all PR merged. I will make new PR with my patches soon (I hope over the week-end). Thanks.
6:55:59
lotuseater
I forked the repo this night and skimmed trough, for example changed some (when foo ...) to (unless (null foo) ...) and such
8:36:02
Duuqnd[m]1
If I have two threads both writing to the same network socket using WRITE-SEQUENCE followed by FORCE-OUTPUT, is there any chance that will cause problems? (I'm using SBCL)
8:43:36
hayley
When in doubt with concurrent programs: Don't Count On It. How sockets interact with threads is somewhat undefined to my knowledge, so you best use a lock if you care.
8:48:02
Duuqnd[m]1
I would do that, but the part that writes to the socket is in a library that I don't really want to modify
8:48:28
Duuqnd[m]1
This program only has to run on SBCL (because I'm the only user) so I can live with some uncertainty
8:49:20
Duuqnd[m]1
There's lots of functions that call the socket writing function and putting a lock around each one would be very inconvenient.
8:51:22
hayley
Well, my apologies then. But having your program break because someone decided to change undocumented behaviour, or worse, having it break completely randomly (cause that's threading for ya), is also very inconvenient.
8:52:54
Duuqnd[m]1
It is indeed. I have to choose between blindly trusting SBCL or making the program much worse to use and I don't like either option. Maybe I'll just add locks in the library after all.
8:54:36
Duuqnd[m]1
All this is because if the socket connection dies while it's listening I have to try to send something down the socket for it to notice that it's dead.
8:55:16
Duuqnd[m]1
A separate thread that pings the server every 10 seconds was the first solution I came up with (admittedly not a great one but the whole program is a soup of bad decisions)
8:56:05
Duuqnd[m]1
I can hardly believe it held out long enough to bridge IRC and Twitch for the two days that ELS needed it
9:01:44
Duuqnd[m]1
I guess I'll be using the worst possible solution: Assume it works until it breaks.
9:02:41
Duuqnd[m]1
I'll probably end up replacing the library with my own thing anyway since CL-IRC doesn't seem to support SASL which Libera usually wants.
9:11:31
pjb
Duuqnd[m]1: you can count on it, on the contrary: count that concurent write-sequence WILL send their data randomly mixed on the socket.
9:12:39
pjb
Duuqnd[m]1: basically, as soon as you have a loop, it's not atomic. Obviously, write-sequence contains loops.
12:07:18
Cymew
lotuseater: You were not alone in your reaction to that expression. I did a double take before I re-parsed it.
15:35:55
q3cpma
Hello, I've finished my wordcount program (http://0x0.st/-Y-W.lisp), but it somehow manages to blow SBCL's 1GB heap just during the word gathering part while processing a 40 MB file. Any idea why?