# wirelyre's recent activity

1. ## Comment on Is the FOSS world’s desire for ‘simplicity’ really just anti-intellectualism? in ~comp

wirelyre
I wonder if this is correlated with LLVM's popularity. Why didn't this new generation of languages tend to use GCC as a backend? Licensing? API? IR?

Only in the last decade has there been a resurgence of language design

I wonder if this is correlated with LLVM's popularity.

Why didn't this new generation of languages tend to use GCC as a backend? Licensing? API? IR?

1 vote
2. ## Comment on "Invisible" Sound Design in Breath of the Wild in ~games

wirelyre
(edited )
Breath of the Wild's aleatoric field theme and combat accents are really interesting to me. They point to a kind of mechanic I'm really curious about, where non-diegetic sounds (like music and...

Breath of the Wild's aleatoric field theme and combat accents are really interesting to me. They point to a kind of mechanic I'm really curious about, where non-diegetic sounds (like music and menu bleeps) blend into the game action in a "musical" way.

I don't mean like rhythm games, exactly, but rather games with other core mechanics where the coherence of the sound is just a design detail. Something more like the battle combos in Mother 3. Actually, I mean the exact opposite of a rhythm game: instead of in-the-moment gameplay actions being strictly formed around the soundtrack, let the soundtrack be strictly formed around in-the-moment actions.

Taken to the extreme, you'd have a game with no pre-composed soundtrack at all, whose motifs and form would arise entirely from player actions; and different musical ambiances would blend seamlessly in continuous musical time, something like the camera in the 2018 God of War.

3. # "Invisible" Sound Design in Breath of the Wild

4. ## Comment on Sad state of cross platform GUI frameworks in ~comp

wirelyre
It's not easy to criticise JavaScript from inside. I don't think it's that weird given the influence from Smalltalk, and in fact I think prototypes are pretty cute. But we need to step back and...

It's not easy to criticise JavaScript from inside. I don't think it's that weird given the influence from Smalltalk, and in fact I think prototypes are pretty cute.

But we need to step back and ask why we'd use it in the first place: to make web documents dynamic. For that dynamic content, we usually don't want to manipulate an arbitrary tree, we want shallow structured data rendered as presentation components.

From this perspective I think the mismatch between web apps and JavaScript becomes clearer. JavaScript isn't very good at creating DOM nodes in this way ― or really at all. From MDN:

const sect = document.querySelector('section');
const para = document.createElement('p');
para.textContent = 'We hope you enjoyed the ride.';
sect.appendChild(para);


I think it's silly to work with the document on such a low level, because we're using a scripting language, which was designed for document manipulation, specifically to make part of a document. Template instantiation is frankly no simpler.

elem('#content') += <p>We hope you enjoyed the ride.</p>;
elem('#accounts').data[4].balance = 3;


Imagine if JavaScript itself, the language of 1995, had a tighter type system and element creation as a primitive feature. (Imagine if permitted content were type checked.) Imagine if Node.js, when it was inevitably created, could already represent documents in memory, and using an HTML template on a server were exactly the same as within a web browser.

That's just a bit about JavaScript. Here's some about the DOM as a whole. (I take it with salt but there's some good stuff.)

In reality, most styles don't actually cascade: paddings and backgrounds are set on individual elements. The inherited ones are almost all about typography: font styles, text justification, writing direction, word wrap, etc.

5. ## Comment on Investigating the etymology of "Triscuit" in ~food

wirelyre
Oddly captivating. I like the discussion of "naive" advertising practices, because it doesn't require a competing hypothesis: If this weren't true, what general information would contradict it?

Oddly captivating. I like the discussion of "naive" advertising practices, because it doesn't require a competing hypothesis: If this weren't true, what general information would contradict it?

6. ## Comment on Drop 2 Guitar Voicings in ~creative

wirelyre
Hey, I know a bit about SMuFL! Basically it's little more than a way to map musical glyphs into fonts ― sort of like how Unicode is for mapping language glyphs* into fonts. You still need...

Hey, I know a bit about SMuFL!

Basically it's little more than a way to map musical glyphs into fonts ― sort of like how Unicode is for mapping language glyphs* into fonts.

You still need something else to render those glyphs, and put them in the right place, and kern them and all that. For example, LilyPond does something similar to TeX; and VexFlow does something similar to MathJax.

This is a lot more like image editing than plain text editing, unfortunately. For example, where hyphenation is so straightforward that your browser can do it**, for a fully rendered score, a system (line) break might require introduce a lot of new notation in the following system.

And chord diagrams and classical scores are just two of many standard notational tools, each with different rendering and layout rules.

* Actually code points, which may or may not correspond to glyphs. Also SMuFL is itself mapped into the Unicode code space.

** Using CSS hyphens with lang="something".

7. ## Comment on Feature suggestion: One-to-many user thread format in ~tildes

wirelyre
Yeah, I did the same thing. Now I'm pretty much research-literate in intuitionistic type theory and some even more exotic typing systems. But category theory texts inevitably get to toposes and...

Yeah, I did the same thing. Now I'm pretty much research-literate in intuitionistic type theory and some even more exotic typing systems. But category theory texts inevitably get to toposes and fibrations and then I feel stuck again. There's just so much that I'm sure would become clear from a few examples, maybe linking back to analysis, but I haven't found any usable video lectures yet.

1 vote
8. ## Comment on Feature suggestion: One-to-many user thread format in ~tildes

wirelyre
Thanks for the univalence lecture. Maybe I'll be able to make it past the second chapter of the Homotopy Type Theory book. I keep wishing I had more background in algebraic topology (and algebraic...

Thanks for the univalence lecture. Maybe I'll be able to make it past the second chapter of the Homotopy Type Theory book.

I keep wishing I had more background in algebraic topology (and algebraic geometry). It's hard to find material to learn with, and it's hard to figure out what I don't know until, often, halfway through a textbook.

1 vote

10. ## Comment on What programming/technical projects have you been working on? in ~comp

wirelyre
That's really cool. What's beyond?

That's really cool. What's beyond?

11. ## Comment on More coronavirus-related updates: specialized views, and a daily topic. Anything else we should do? in ~tildes.official

wirelyre
Yeah, that's my concern. :/ Guess I can put it on my calendar.

Yeah, that's my concern. :/ Guess I can put it on my calendar.

12. ## Comment on More coronavirus-related updates: specialized views, and a daily topic. Anything else we should do? in ~tildes.official

wirelyre
I did that last week ― maybe it would make sense to hide the bar if the view is already filtered? Or to only show it if there are topics with the group or tag visible? Edit: Or to give it an ID so...

I did that last week ― maybe it would make sense to hide the bar if the view is already filtered? Or to only show it if there are topics with the group or tag visible?

Edit: Or to give it an ID so I can Stylus it away.

13. ## Comment on What programming/technical projects have you been working on? in ~comp

wirelyre
I think you have at least two options. Patterns are scale degrees (A+1 = B, A+2 = C) and MIDI note numbers. Then you can resolve a note name by calculating its sharpness/flatness. The number of...

I think you have at least two options.

1. Patterns are scale degrees (A+1 = B, A+2 = C) and MIDI note numbers.

Then you can resolve a note name by calculating its sharpness/flatness. The number of sharps of a note is the difference between the MIDI numbers of the given note and of the scale degree.

2. Patterns are sums of whole and half steps.

Then you can keep a running count of the scale degree and sharpness. Each step, whole or half, increases the scale degree/note name. But depending on the specific note name, a whole or half step might also sharpen or flatten the running note.

For example, A♮+half = B♭. E♮+whole = F♯.

14. ## Comment on A redditor explains how modes work as a musician in ~music

wirelyre
Maybe I read the answer so slowly that I missed the main thrust. I guess I was frustrated by how carefully they distinguished key and mode (incorrectly, I judge), then didn't explain what modes...

Maybe I read the answer so slowly that I missed the main thrust.

I guess I was frustrated by how carefully they distinguished key and mode (incorrectly, I judge), then didn't explain what modes are beyond the pitches that comprise them.

15. ## Comment on A redditor explains how modes work as a musician in ~music

wirelyre
I find this somewhat misleading. Let's consult the literature. ― The New Grove Dictionary of Music and Musicians So key is a property of tonal music. It describes harmonic structure like how...

I find this somewhat misleading. Let's consult the literature.

Mode (from Lat. modus: 'measure', 'standard'; 'manner', 'way'). A term in Western music theory with three main applications: […] the relationship between the note values [lengths] longa and brevis in late medieval notation; interval, in early medieval theory; and, most significantly, a concept involving scale type and melody type. The term 'mode' has always been used to designate classes of melodies, and since the 20th century to designate certain kinds of norm or model for composition or improvisation as well.

[…]

It is essential to distinguish between 'mode' as a concept in the history and theory of European music and 'mode' as a modern musicological concept applied to non-Western music, though the latter naturally grew out of the former.

[…]

But since the 20th century the use of the term 'mode' in English has been broadened to the extent that melodic type and motivic features are now given equal weight with scale type in musicological parlance.

[…]

Mode is essentially a question of the internal relationships of notes within a scale, especially of the predominance of one of them over the others as a tonic […].

Key (i). In tonal music, the abstract arrangement of musical phenomena such as melodies, harmonies and cadences around a referential or tonic pitch class. While the French ton and the German Tonart stress the importance of the tonic, the English term has a broader meaning: as a metaphorical 'key', the tonic 'unlocks' or clarifies the arrangement of pitch relations that underlies the music. A tonic thus unifies and coordinates the musical phenomena within its reach: in the key of C major, for example, there is an essential 'C-ness' to the music.

[…]

Also crucial to the concept of key is the idea that there are two basic modal genera, major and minor, each with different musical characteristics arising largely from the disposition of tones and semitones within their respective scales.

― The New Grove Dictionary of Music and Musicians

So key is a property of tonal music. It describes harmonic structure like how cadences behave and melodies are likely to end on the tonic.

(I was going to criticize "it's in the Key of C, Major version" because the concept of key includes its major- or minor-ness, but it appears that a minority (hah) of definitions don't necessarily include a mode; and anyway if you wrote "the key of C" meaning "ambiguously major or minor" no one would bat an eye.)

But modes are not arrangements of a pitch set, and are much more than scale formulas. They include concepts of center, of melodic contour, and arguably of harmony.

People use "mode" to describe almost any melodically well-structured piece, including non-Western ones. For instance, I might cautiously translate raga as "mode" (but normally would write raga because it's more descriptive).

So this: 'a non-diatonic set of notes can be rotated as well (as can diatonic subsets like the Pentatonic Scale), and thus can have modes as well' is misleading at best. A set of notes doesn't "have" modes; a mode is an emergent or constructive property of a piece, which includes a scale formula.

And this: 'a Key is not a scale or mode. It's a "concept". A "Key" is an "establishment of a Center" - a "Key Center" or "Tonal Center" if you like' is not a meaningful distinction because modes also establish "centers" or "tonics".

In the end, I think it's very confusing to contrast "music based on keys" with "music based on modes", because they are related concepts.

(Also I bristled a little at "you're over-thinking it". The New Grove entry "mode" is almost 100 pages long.)

16. ## Comment on Resources for music composition? in ~music

wirelyre
You could share any fragments you have! Then we can talk about what's good, what's odd, and what's missing. I bet you'll become more confident about the larger problems as you practice working the...

You could share any fragments you have!

Then we can talk about what's good, what's odd, and what's missing.

I bet you'll become more confident about the larger problems as you practice working the small problems through a bunch of little toy pieces.

If you give a bit more detail about what you're interested in working on, or what you've done in the past, maybe we can all figure out some prompts/exercises together!

17. ## Comment on Don’t try to sanitize input. Escape output in ~comp

wirelyre
Please forgive some philosophy. "Escaping" is something you do at an interface. It is a process of transforming data I have into another form that she wants ― of encoding. When a sequence of...

Please forgive some philosophy.

"Escaping" is something you do at an interface. It is a process of transforming data I have into another form that she wants ― of encoding.

When a sequence of characters stays within an environment (like your web browser) nothing special happens. Your web browser holds a mini document for every text field, which it updates when you type into it. The browser is able to do this because it conceives of strings in a very abstract sense.

When we write var addressee = givenName + " " + surname; we aren't really concerned about the quote characters in the middle. Instead we think abstractly about three separate strings: givenName and surname, which are already sequences of characters, and " ", which we have just summoned into the computer. Once they're all there, you and I can think about them however we want, but all the computer knows is "givenName is list of numbers, which are 69, 109, 105, 108, 121, representing a string".

The JavaScript engine stopped caring about quote characters right after it executed " ". Quote characters are just an incantation to conjure strings into your browser.

Similarly, a SQL engine running SELECT given_name from person WHERE surname = 'Murphy'; first transforms that command into an internal representation, then runs it.

At issue is the transformation from plain text into internal forms. Data at rest is perfectly safe.

If plain text is the interface from my web server to my database, then I have to produce plain text that conjures the right data into the database when the database program interprets that text.

As you have figured out, "injection" is when you make me emit plain text that she misunderstands.

But when you type into your JavaScript console, you interact with an extra interface! That's not an injection because that interface doesn't usually exist. If you write into a form field in your browser, that input materializes in memory without any escaping at all. It lives there and means nothing more than "a sequence of bytes" unless someone tries to run it ― to decode it.

So here's the question: what can you do to trick me into making bad text for her? The answer probably doesn't include executing JavaScript on your own computer, because you don't have to treat your own browser as a black box: you control it already. In other words, you're trying to trick yourself, not me.

Instead you have to somehow subvert my interface for her.

18. ## Comment on Real Numbers - Why? Why not computable numbers? in ~science

wirelyre
Well, the halting problem is the very question of computability, so I wouldn't expect a concrete example to be constructed anyhow else.

mutilating

Well, the halting problem is the very question of computability, so I wouldn't expect a concrete example to be constructed anyhow else.

1 vote
19. ## Comment on Real Numbers - Why? Why not computable numbers? in ~science

wirelyre
That's not quite what that means. Just because you have a Cauchy sequence of rational numbers doesn't mean you have a practical algorithmic way to determine when you have accurately produced the...

That's not quite what that means.

Just because you have a Cauchy sequence of rational numbers doesn't mean you have a practical algorithmic way to determine when you have accurately produced the nth digit of their limit.

And conversely, almost all infinite sequences of digits cannot be produced by a machine — by computing. You can get that result from a simple counting argument.

I can walk through the construction of a Specker sequence if anyone is interested, but it will take time to type out some background.