I spend months collecting the dataset to create a wordlist. And I also spend 100+ hours just judging squares and words. And eventually also training char-level LLM's to do that job for me. In Dutch you can compound and there is quite an active morphology so it can be really tricky to judge whether a given word is any good.
Since I worked on it on and off, and also did a bunch other related things I'm not sure, but I would be surprised if I spend any less than 1000+ hours on these silly word-games.
I once spend more time than I want to admit constructing the best possible 10-square in Dutch[1]. There are also some other forms that are fun, like cubes[2], or hypercubes. Or using bigrams. Or hexagonal tiles. And so forth.
Finding solutions for big squares/wordlists in reasonable time is actually not a trivial algorithmic problem. Neither is making good wordlists, I ended up creating what is essentially a Dutch version of the Pile[3] just to collect words. Good fun.
It's a fun programming/puzzle challenge. I developed a perfect pangram in Dutch about a teachers bike that is very lightweight and fast, but not so strong
I'm not on my desktop, but I used nanoGPT extensively on my RTX-4090. I trained a GPT2-small but with a small context window (125 > 90M params) at batch sizes of 1536 using gradient accumulation (3*512). This runs at just a smidge over 1 it/s. Some notes
- Gradient checkpointing and 2048 batch size in a single go allows ~10% performance improvement on a per sample basis.
- torch.compile doesn't work for me yet (lowest cuda version I got my 4090 to run on was 11.8 but highest cuda version on which I got the model to compile is 11.7).
I have a workflow where I do my composing in Musescore, export to musicxml & convert with musicxml2ly to Lilypond, and finally do the typesetting there.
I basically throw away everything in the generated .ly files except the notes. But saves a lot of effort regardless.
I never found a a Lilypond -> Musescore conversion that worked really well. I did write a very simply tool based on python-ly to at least get the 'notes' to musicxml so that I can import something into Musescore.
Wang's carpets is a short story about life evolving within a simulation of a naturally occurring computer. (also part of the larger novel Diaspora)
Schild's Ladder is about physicists researching the fundamental 'geometry' of the universe and accidentally create a quickly expanding geometry that is more stable than a regular vaccuum, very unhealthy for all regular matter, but...
Interesting, I still hear it the same, dissonant and consonant, perhaps western music ruined me. Thanks for sharing.
Edit: Didn't see the url, makes my old reply obsolete:
Interesting. I tried to avoid clipping/aliasing by using audacity with as high quality audio as my system allows and I can still reproduce pretty much exactly what you hear on those websites. https://vocaroo.com/i/s0Be5CexLgVs is 440hz, then 440hz+880hz, then 440hz+850hz. But I would be interested in any repeatable signal that does not harmonize at all so do share!
To add the all the resources here, Alan Belkin is a composer with many very in depth and practical videos for fellow composers: https://www.youtube.com/channel/UCUQ0TcIbY_VEk_KC406pRpg one of the best theory youtube channels.
And https://musescore.com/groups/counterpoint-and-fugue is one of those well hidden small internet communities centered around contrapuntal writing with many knowledgeable members, original music and in depth essays about contrapuntal details.
If I open 2 tabs of https://www.szynalski.com/tone-generator/ and then listen to 440+880, and then change 880 to 850 it is a world of difference. I would definitely describe that difference as dissonance and consonance.
Now the overtone series IS important and is not always 'simple ratios', a good example in a real instrument is the strong minor third overtone of a carillon, and as expected writing in major for that instrument is hard.
Suckerpinch (Tom) recently had a video[1] about predicting the position of the oponents pieces from knowning just white. I don't think he's aware of this. Great video anyway.
He trained an NN to predict the pieces and then used Stockfish on the resulting position.
You can first divide the solution in two parts, 1) the letter selection and 2) finding a valid permutation.
There's a fairly finite set of letters that you might want to enumerate based on both your initial 'seed' text and the letters that are in the numbers especially if you consider 'one [a-z]' as seed text. That is to say, the amount of sets of letters that have different sets of numbers that you can spell with them is small.
If you know what letters you have to write and you know all of those must have 2 or more instances you can add the "'s"'s and single instances of those letters to the seed text. At that point you just need to worry about selecting numbers that including their own letter counts sum to the seed text constant. This can be easily expressed in an ILP.
The ILP will define a 26 boolean array for each possible number we can spell representing whether that number is the count of that letter. We add a constraint that the sum of all active numbers on a given letter == 1. Next we simply add constraints that sum all active numbers their lettercounts to the known constants from the seed text.
But as it turns out that is overkill, a more traditional and flexible solution would involve a tree search that keeps track of the lower and upper bounds of lettercounts and picks number words within those bounds without associating it with a specific letter yet. And you associate at the end. Runtime is a 15 minutes in python for most numeric bases/seed texts/variations.