Compare commits

..

No commits in common. "49261be7ef308a297f79033ee260cbb0aced7e0e" and "09bff636e34882106997a69bb7f2a791be6410e0" have entirely different histories.

29 changed files with 175 additions and 224 deletions

View file

@ -65,7 +65,7 @@
for a multi-purpose conlanging tool that was beginning to take shape in my head") for a multi-purpose conlanging tool that was beginning to take shape in my head")
(p "i tried anyway") (p "i tried anyway")
(p "and i made " (p "and i made "
(a ((href "/settled/1")) (a ((href "settled/1"))
"a bad first draft of a sound change tool")) "a bad first draft of a sound change tool"))
(p (p
"there's an e-bnf grammar in that project somewhere! the hubris i "there's an e-bnf grammar in that project somewhere! the hubris i

View file

@ -1,54 +0,0 @@
'(article
((id "latl-primitives"))
;; brief intro - restate the problem
(section
((id "intro"))
(hgroup
(h1 "what must be true of latl primitives")
(p (em "what will latl need to " (u "do") " out of the box?")))
(p "i've talked a little about "
(a ((href "/unsettled/1")) "conlanging and latl")
" previously here. the short version is this: making languages (for theoretical conscious beings) is fun! it's been a consistent hobby and artistic pursuit for me for much of my life. i've had different approaches from making extremely regular languages, to simulating the evolution of a family of spoken languages, to a family of synthesizer languages for a fractured machine society. every language project requires keeping track of a dictionary and a grammar (even if they never become more than quick sketches) and any sufficiently involved project can benefit from tools for generating new words that fit a language's 'phonotactics', generating derived words based on grammatical rules, simulating language change over time. conlanging is a hobby with enough overlap with computation, that some conlangers have created tools for some of these tasks. my own projects have become too ambitious to have my work live in spreadsheets over here and latex files over there and text files with the defintions i provide to web-based tools somewhere else entirely. i want to build on the work of those came before and create a substrate upon which any tool a conlanger needs could be built and in which i can define the entirety of a language in one system.")
(p "at it's base latl will be a tool for operating on languages, invented (or otherwise... maybe.) it helps then to think of the sorts of things that encompass language. spoken and signed languages will be the assumed base case, as those are the things real human beings usually use to communicate with each other. the modality of a language needn't be important to the primitives used, but it's always a good practice to state assumptions"))
(section
((id "contents"))
(ul (li (a ((href "#what-is-language")) "go to what-is-language"))
(li (a ((href "#what-conlangers-do")) "go to what-conlangers-do"))
(li (a ((href "#proposed-latl-primitives")) "go to proposed-latl-primitives"))
(li (a ((href "#signoff")) "go to signoff"))))
;; article contains three main sections:
;; 1. thinking about language
;; 2. talking about conlangers
;; 3. working through some ideas for primitives
;; ---
;; section 1. thinking about language
(section
((id "what-is-language"))
(hgroup
(h2 "thinking about what language is for a moment"))
(a ((href "/unsettled/latl-primitives_what-is-language")
(hx-get "/hx/unsettled/latl-primitives_what-is-language")
(hx-target "#what-is-language")
(hx-swap "outerHTML"))
"what-is-language"))
;; section 2. okay but conlangers
(section
((id "what-conlangers-do"))
(hgroup
(h2 "what conlangers do")
(p (em "moving from a pile of language stuff to a pile of problems to solve")))
(p "coming soon"))
;; section 3. introducing the primitives
(section
((id "proposed-latl-primitives"))
(hgroup
(h2 "introducing the primitives")
(p (em "things that definitely need to be present in latl")))
(p "coming soon"))
;; brief conclusion and next steps
(section
((id "signoff"))
(hgroup
(h2 "signing off")
(p (em "what's next for latl thinking?")))
"coming soon"))

View file

@ -1,60 +0,0 @@
(section
((id "what-is-language"))
(hgroup
(h2 "thinking about what language is for a moment"))
(p "by way of an opening query: what does a language need? naturally our base case spoken languages have sounds and our base case signed languages have gestures. for each of these, we have an articulatory mechanism: the vocal tract, or the face and hands and arms; and a perceptual mechanism: the auditory system, or the visual system. the unique thing about language among other forms of communication is how languages use time. it might seem basic, but it's easy to forget that 'my cat scratched the post' and 'the post scratched my cat' mean very different things. and the same sounds in a different sequence can become a smattering of ideas as in 'the my scratched cat post' or even lose meaning all together as in 'cra catsm sde thymst opsh'. languages differ on how they use time--some languages allow more freedom for word order than others, but relationships between articulations through time are essential to all known languages. for now, let's start with those articulatory bits! (more on time and on meaning later)")
;; 1.1 phonemes
(section
((id "phonemes"))
(hgroup
(h3 "phonemes")
(p (em "what even are they?")))
(p "no talk of letters here! no "
(q ((style "font-family: serif; font-style: italic; padding: 1px 2px;"))
"'ghoti' is pronounced 'fish'")
" jokes! instead, let's imagine how to describe the difference in articulation and in reception between 'mine' and 'fine' and 'wine' and 'dine' or between '"
;; add ASL rhymes
"'. these words rhyme! which (for short words) is a way of saying that most of their sounds are the same, and the similar bits come at the end. "
(footnote "rhyme is a little more complicated than that, encompassing stress patterns") ;; describe ASL rhymes
;; awkward
""
"it is uncontroversial to suggest that there is a basic articulatory/perceptual unit in any given modality which, when strung together, produces the basic units of meaning. this basic unit, no matter the modality, is called the 'phoneme'."
(footnote "historically, called a 'chereme' in sign languages")
"in selecting the words i have, i've already hinted at how linguists support the existence of these phonemes. 'dine' and 'fine' together form a 'minimal pair' of words with a different meaning whose difference is found in only one perceptually distinct part of their articulation. because we know from english language usage that 'mine' and 'fine' and 'wine' and 'dine' are distinct words with distinct meaning, we have a clue that there is some phonemic difference between /m/ and /f/ and /w/ and /d/. by collecting more examples of these minimal pairs ('do' and 'moo' and 'wed' and 'dead' and on and on) we can begin to describe the physical sounds associated with each phoneme and how each is articulated.")
(p "human bodies are inexact things--perception is important here! it does us no good to describe an extra-tightly clenched middle finger in a closed hand shape as indicative of a distinct phoneme as it would be unlikely to be perceptible to an interlocutor and so could never disambiguate between two signs. environments are noisy and so articulation is also important! in my dialect of english the word 'put' /pʊt/, in a noisy environment, might be pronounced roughly [pʰʊtʰ]. in casual speach, however this same word is frequently realized as [pʰɵʔ] with the only audible consonant at the end being the glottal closure of 'uh-oh'. the only ghost of the exaggerated realization is typically an inaudible tongue placement behind the alveolar ridge. a speaker recognizes what the phoneme 'could be' with more effort, but typically such effort is unnecessary for understanding. this suggests that there phonemes are not simply sounds or handshapes or mouth movements. something must be underlying the equality of meaning between [pʰʊtʰ] and [pʰɵʔ]")
(p "there's a fairly wide consensus amongst linguists that, despite being the minimal constituent needed to represent meaning in language, phonemes are " (strong "not atomic.") " a phoneme can be decomposed into constituent features and minimal pairs of phonemes can be shown to be distinct only in their realization of one feature. by way of example, the [b] in the word 'shabby' and the [m] in the word 'shammy' differ only in that the [m] is pronounced with air passing through the nasal cavity. the feature [+/- nasal] is therefore taken to be a salient feature in english phonology")
(p "all well and good, but things start to get tricky when we start defining features. firstly, there is no single agreed upon set of features by which to analyze all languages of a given modality. as stated, there's broad agreement that phonetic features exist and many proposed features are uncontroversial, yet even linguists analyzing the same language can disagree upon featural details. vowels in particular are quite slippery to analyze, with [+/- back], [+/- close], [+/- front], [+/- low], [+/- high], [+/- tongue root retracted], [+/- rounded] among the features present in different systems. there are also some linguists who, relying on auditory analysis, analyze vowels primarily via formant analysis. (formants are measures of what is sometimes referred to as 'resonance' or 'vowel color' -- they are the pitches above the fundamental frequency with the greatest relative amplitude.) it is this amateur crank's opinion that because articulation and perception are subject to different constraints and pressures, what is deemed a feature can elide a relationship between speach actor and interlocutor. thankfully, should latl allow for user definition of features and their phonemes, it can remain agnostic to the hairy work of actual linguistics")
(p "users should therefore be able to define their own phonetic feature sets and use those to compose their phonemes. (i'm going to sneak in the undefended assertion here that users should be able to use "(em "other users'") " definitions as well. forgive me.) if you're reading this and are familiar with linguistics, you might now be wondering about the curious case of place of articulation. should place features be treated as hierarchichal -- should [coronal] place of articulation be required for [+/- anterior] feature of the crown of the tongue? if so, how are coarticulations like [tʷ] or [k͡p] to be expressed in featural terms? here again, latl will allow for the definition of hierarchichal features and make no assumptions about their use")
(p "yet another problem is hiding in the view i've thus provided of phonological features. there is a wide (but not universal) belief that distinctive features in phonology are inherently binary. this is convenient from a computational perspective, but may not be descriptive of real language. firstly, it is possible to analyze [coronal] in the previous paragraph as a unary feature relevant to place of articulation. more distressingly, a proposed feature set that includes [+/- high] and [+/- low] predicts the nonsense value set: {[+ high] [+ low]}. one approach to this conundrum is to propose a feature scale [-1/0/1 height]. this is far from a settled matter, but latl should prioritize a user's ability to define such feature scales over implementation considerations or linguistic debate")
(p "it's been a few paragraphs without any mention of sign languages, so it is worth gesturing at how their phonological features relate to these considerations to ensure latl doesn't start it's life with a modality bias. sign languages are widely understood to have phonological systems that are featural. as is the case with spoken languages, specifics of feature sets vary based on language and researcher. features can be salient to a language and form minimal pairs ie [+/- palm prone] is one way of reading the difference between the ASL fingerspelling signs for /p/ and /k/. research suggests that there is a high degree of hierarchichal complexity in the phonological features of sign languages, which maps very neatly to the place of articulation problem in spoken languages. features related to handshape, such as [+/- flex] or [+/- extension] only make sense in regards to selected fingers. i have not seen any research about featural scales in sign languages, but it would be unsurprising to analogize the same issues arising from nonsense combinations of binary features") ;; TODO add some ASL images (maybe sound for some of the english bits?
(p "let's zoom back out to phonemes for a moment to add another wrinkle to the featural representation. the notion (unconscious or not) a speaker of a language has for what constitutes a single sound is understood to be a 'bundle' of features, but not every feature holds the same importance in every environment. by way of example, the /t/ phoneme in my dialect of english can be realized in a number of different ways depending on its location. it can be aspirated [tʰɑk] with [+ spread glottis] (or [+ delayed onset] if you prefer an auditory approach) in 'tock', without aspiration [stɑk] [- spread glottis] in 'stock', or as a flap [ˈbʌ.ɾək] in 'buttock'. this flap differs from the others at least in having [+ sonorant] and [+ voice], but retaining [coronal] [+ anterior]. yet, if i heard *[ɾɑk] in isolation, i would assume the speaker was referring to a stone or a genre of music. this situation is called allophony and latl must maintain a way to treat phonemes like /t/ as salient bundles of features distinct from the more discrete phones [tʰ], [t], [ɾ] (or [ʔ] from the earlier example) whose features are more specified. once again, we see a similar situation with regards the ASL phoneme, /e handshape/ which has allophonic representations [+ open aperture] (the unmarked /e/ familiar in the fingerspelled alphabet) and [- open aperture] in certain environments")
(p "warning! that [r] in my dialect of english, is an allophone of two different phonemes! the realization of the words /bæt.ər/ and /bæd.ər/ ('batter' and 'badder') is the same: [bæɾ.ɚ]. this 'under-specification' of not unique to my dialect of english and some linguists propose an archiphoneme /D/ which is a kind of set of /t/ and /d/ to account for this. in this view 'batter' and 'badder' are orthographically distinct, but phonemically both /bæD.ər/. is this 'really' what is going on? i'm not qualified to say, but i am confident that latl can be made to handle this situation without straining our abstractions too much")
(p "to recap thus far, we have phonemes, which for the purpose of latl are bundles of features of some value. features may be defined by the user of latl into feature systems, whereby they are usually but not always binary and may each have a dependency on another feature in the system. phonemes may have features of varying saliency allowing for allophony. these allophones are phones whose features are slightly different but retain the salient features of their phoneme, whether that phoneme is specified or an underspecified archiphoneme that could represent multiple phonemes. as an additional item, it is helpful to have a shorthand to refer to phonemes and their allophones, ie "(code "/t/") ", "(code "[tʰ]") ", " (code "[t]") ", and " (code "[ɾ]") " or " (code "/D/"))
(p "an EBNF grammar (because grammars are fun!) of this relationship might be ")
(code "phoneme = positive-integer * phone { phoneme } ) ; (* a phoneme must be a set of phones and optional (archi-)phoneme *)" (br)
"phone = positive-integer * feature ; (* a phone must be a set of features *)" (br)
"feature = ( value, identifier ) | positive-integer * feature ; (* a feature must be a value with some identifier or a set of (dependent) features *)" (br)
"value = non-negative integer ;" (br)
"identifier = letter, { letter | \"-\" } ; (* lispy identifiers assumed for now *)" (br)
"non-negative-integer = digit , { digit } ; (* from here i'll take for granted the definition of digits and letters *)" (br))
(p "this grammar is insufficient to the purpose, but i include it to point at the recursive nature of both phonemes and features revealed by the constraints defined so far. an additional constraint must be that features are bound in a global feature system and a featural definition of a phone requires values for every possible feature within that feature system. additionally, a feature value can be any within a bound set where each feature can be associated with a different set; so, [+/- nasal] and [-1/0/1 high] can exist within the same feature system, but any instance of [nasal] must have a value of [+] or [-] and any value of [high] must have [-1], [0], or [1]. the grammar handwaves with non-negative-integer by analogy with enums in many programming languages. this grammar also defines a language that would be repetitive and finicky to work with. instead of optimizing, i'd like to take a moment to consider the phoneme already solved in latl and think a little bit about how they're used"))
;; 1.2 lexemes
(section
((id "lexemes"))
(hgroup
(h3 "lexemes")
(p (em "zooming out a little to the fundamental unit of meaning")))
(p "note! for the purpose of this exploration, a lexeme is assumed to be synonymous with 'root morpheme'." (small " if you don't know what this note means, please be aware that i'm being a little bit of a crank again. if you do know what this note means and are suspicious, run with me here for a sec; we'll get to it"))
(p "for now i'll posit that a lexeme is an ordered sequence of phoneme(s) that corresponds to a productive, atomic meaning. a lexeme MAY be subject to derivation rules which transform its meaning or its role in an utterance, for now called 'derived forms'. this definition allows for any 'part of speach' so long as the lexeme is not derived. taking for granted, for a moment, the category 'word', here's a selection of english words that fit this definition of lexeme: 'a', 'she', 'her', 'for', 'four', 'write', 'right', 'quick', 'quit', 'dirigible', 'abstract'")
(p "included are 'function words' (the closed set of grammatically necessary words without independent meaning) like 'a', 'she', 'her', and 'for'. 'content words' are also included (the open set of words with semantic weight) beginning with 'four'. but of course, i've also chosen these words to illustrate some potential traps. we have some phonetic ambiguities: 'for' and 'four' are distinct in some english dialects, but i pronounce them both /fɔɹ/. 'write' and 'right' are indistinguishable from each other in every english and sound something like /ɹajt/. the situation is tricky in this case semantically as well! this is one sequence of sounds upon which multiple different etymologies (encoding mark-making, correctness, directionality, or politics) have converged. if the written forms are any hint, there should be at least two separate lexemes")
(p "i've also snuck in the pair 'she' and 'her'. traditionally, 'her' is held to be a derived form of 'she' violating our 'root morpheme' assumption. leaving aside the linguistic reasons to consider 'her' a derived form, there's still the question of what plausible derivation rule could turn the sound sequence /ʃi/ into /hɜɹ/? (" (small "the ancestral form of 'her' probably was transparently derived from the ancestral form of 'she', but in this project i'm concerned with how these derivations are obscured by language change through time") ")")
(p "the write/right example and the she/her example, in slightly different ways, both recall the bidirectional nature of language. an idealized speaker *knows* which specific meaning (specific lexeme?!) of /ɹajt/ they are referring to, but their interlocutor must derive the appropriate meaning from context. likewise, a proficient speaker produces /ʃi/ and /hɜɹ/ in the appropriate position within a sentence without difficulty, while a language learner may struggle to hear the connection between the two forms. (other interesting possibilities include using one or the other form in all locations or in random distribution; analogizing the regularity of /hi/->/hɪm/ ('he'/'him') to /ʃi/->/ʃɪm/ where a /hɜɹ/ is expected; or using /hi/, /ʃi/, /ðej/ 'they' or other third person pronouns interchangeably. all of these point at some other juicy stuff that will have to be shelved for now.) this bidirectionality means that latl will need to support the mapping of a sequence of phonemes to an arbitrary number of lexemes, although for now it's safe to assume that a lexeme has only one associated sequence of phonemes. (ignoring, for the moment, variant pronunciations as in 'the' /ði/~/ðə/)")
(p "a lexeme will probably need some additional stuff, tho. at the very least a 'dictionary definition' and, of course, a shorthand, ie " (code "/ʃi/") ", " (code "/hɜɹ/") ", or " (code "/ɹajt/")". there's absolutely more to what latl will require from a lexeme (and users should be able to extend the lexeme primitive to their own ends) but that will have to wait for now")
(p "before moving on"))
;; 1.3 morphosyntax or morphemes?
(section
((id "morphosyntax"))
(hgroup
(h3 "morphosyntax")
(p (em "where meaning and phonology and time start getting funky"))))
(p ""))

View file

@ -30,9 +30,9 @@
"#lang cli")) "#lang cli"))
(p (a ((href "https://git.bunk.computer/oxaliq/oxaliq.net/src/branch/main/.dev-log")) (p (a ((href "https://git.bunk.computer/oxaliq/oxaliq.net/src/branch/main/.dev-log"))
"you can read about development here")) "you can read about development here"))
(p (a ((href "https://git.bunk.computer/oxaliq/oxaliq.net/src/branch/in-progress/.idea-log")) (p (a ((href "https://git.bunk.computer/oxaliq/oxaliq.net/src/branch/main/.idea-log"))
"you can read about my vague plans here")) "you can read about my vague plans here"))
(p (a ((href "https://git.bunk.computer/oxaliq/oxaliq.net/src/branch/in-progress/in-progress")) (p (a ((href "https://git.bunk.computer/oxaliq/oxaliq.net/src/branch/main/in-progress"))
"or read works in progress here")) "or read works in progress here"))
(p (p
"the image in the header is a crop of the work " "the image in the header is a crop of the work "

View file

@ -1,6 +1,4 @@
title,link,summary,published,updated title,link,summary,published,updated
latl-primitives_what-is-language,https://oxaliq.net/unsettled/latl-primitives_what-is-language,thinking about language from the perspective of latl,2024-02-25T21:36:03,
latl-primitives,https://oxaliq.net/unsettled/latl-primitives,designing the primitives to be provided by latl,2024-02-25T21:33:06,
feature-change-applier,https://oxaliq.net/settled/1,a first attempt at a conlanging tool,2024-01-25T16:26:10, feature-change-applier,https://oxaliq.net/settled/1,a first attempt at a conlanging tool,2024-01-25T16:26:10,
beginning latl,https://oxaliq.net/unsettled/1,beginning the process of thinking through an environment for conlanging and other language shenanigans,2024-01-18T22:39:00, beginning latl,https://oxaliq.net/unsettled/1,beginning the process of thinking through an environment for conlanging and other language shenanigans,2024-01-18T22:39:00,
now,https://oxaliq.net/now,what the author of this site is up to (not computer things),2024-01-18T22:22:03, now,https://oxaliq.net/now,what the author of this site is up to (not computer things),2024-01-18T22:22:03,

1 title link summary published updated
latl-primitives_what-is-language https://oxaliq.net/unsettled/latl-primitives_what-is-language thinking about language from the perspective of latl 2024-02-25T21:36:03
latl-primitives https://oxaliq.net/unsettled/latl-primitives designing the primitives to be provided by latl 2024-02-25T21:33:06
2 feature-change-applier https://oxaliq.net/settled/1 a first attempt at a conlanging tool 2024-01-25T16:26:10
3 beginning latl https://oxaliq.net/unsettled/1 beginning the process of thinking through an environment for conlanging and other language shenanigans 2024-01-18T22:39:00
4 now https://oxaliq.net/now what the author of this site is up to (not computer things) 2024-01-18T22:22:03

View file

@ -1,7 +1,6 @@
tags,-> tags,->
about,root/now,root/contact,root/very-earnest-disclaimer,root/this,root/about about,root/now,root/contact,root/very-earnest-disclaimer,root/this,root/about
latl,unsettled/latl-primitives_what-is-language,unsettled/latl-primitives,unsettled/1 latl,unsettled/1
conlang,unsettled/latl-primitives,settled/1,unsettled/1 conlang,settled/1,unsettled/1
programming-language,unsettled/latl-primitives,unsettled/1 programming-language,unsettled/1
tool,settled/1 tool,settled/1
linguistics,unsettled/latl-primitives_what-is-language
1 tags,->
2 about,root/now,root/contact,root/very-earnest-disclaimer,root/this,root/about
3 latl,unsettled/latl-primitives_what-is-language,unsettled/latl-primitives,unsettled/1 latl,unsettled/1
4 conlang,unsettled/latl-primitives,settled/1,unsettled/1 conlang,settled/1,unsettled/1
5 programming-language,unsettled/latl-primitives,unsettled/1 programming-language,unsettled/1
6 tool,settled/1
linguistics,unsettled/latl-primitives_what-is-language

View file

@ -1,4 +1,2 @@
id,headline,description,history-> id,headline,description,history->
latl-primitives_what-is-language,latl-primitives_what-is-language,thinking about language from the perspective of latl,2024-02-25T21:36:03
latl-primitives,latl-primitives,designing the primitives to be provided by latl,2024-02-25T21:33:06
1,beginning latl,beginning the process of thinking through an environment for conlanging and other language shenanigans,2024-01-18T22:39:00 1,beginning latl,beginning the process of thinking through an environment for conlanging and other language shenanigans,2024-01-18T22:39:00
1 id headline description history->
latl-primitives_what-is-language latl-primitives_what-is-language thinking about language from the perspective of latl 2024-02-25T21:36:03
latl-primitives latl-primitives designing the primitives to be provided by latl 2024-02-25T21:33:06
2 1 beginning latl beginning the process of thinking through an environment for conlanging and other language shenanigans 2024-01-18T22:39:00

View file

@ -0,0 +1,102 @@
#lang s-exp racket
'(article
((id "latl-primitives"))
;; brief intro - restate the problem
(section
((id "intro"))
(hgroup
(h1 "what must be true of latl primitives")
(p (em "what will latl need to ") (u "do") " out of the box?"))
(p "i've talked a little about "
(a ((href "/unsettled/1")) "conlanging and latl")
" previously here. the short version is this: making languages (for theoretical conscious beings) is fun! it's been a consistent hobby and artistic pursuit for me for much of my life. i've had different approaches from making extremely regular languages, to simulating the evolution of a family of spoken languages, to a family of synthesizer languages for a fractured machine society. every language project requires keeping track of a dictionary and a grammar (even if they never become more than quick sketches) and any sufficiently involved project can benefit from tools for generating new words that fit a language's 'phonotactics', generating derived words based on grammatical rules, simulating language change over time. conlanging is a hobby with enough overlap with computation, that some conlangers have created tools for some of these tasks. my own projects have become too ambitious to have my work live in spreadsheets over here and latex files over there and text files with the defintions i provide to web-based tools somewhere else entirely. i want to build on the work of those came before and create a substrate upon which any tool a conlanger needs could be built and in which i can define the entirety of a language in one system.")
(p "at it's base latl will be a tool for operating on languages, invented (or otherwise... maybe.) it helps then to think of the sorts of things that encompass language. spoken and signed languages will be the assumed base case language, as those are the things real human beings usually use to communicate with each other. the modality of a language needn't be important to the primitives used, but it's always a good practice to state assumptions"))
(section
((id "contents"))
(ul (li (a ((href "#what-is-language")) "go to what-is-language"))
(li (a ((href "#what-conlangers-do")) "go to what-conlangers-do"))
(li (a ((href "#proposed-latl-primitives")) "go to proposed-latl-primitives"))
(li (a ((href "#signoff")) "go to signoff"))))
;; article contains three main sections:
;; 1. thinking about language
;; 2. talking about conlangers
;; 3. working through some ideas for primitives
;; ---
;; section 1. thinking about language
(section
((id "what-is-language"))
(hgroup
(h2 "thinking about what language is for a moment"))
(p "by way of an opening query: what does a language need? naturally our base case spoken languages have sounds and our base case signed languages have gestures. for each of these, we have an articulatory mechanism: the vocal tract, or the hand and arm in relation to the body; and a perceptual mechanism: the auditory system, or the visual system. the unique thing about language among other forms of communication is how languages use time. it might seem basic, but it's easy to forget that 'my cat scratched the post' and 'the post scratched my cat' mean very different things. and the same sounds in a different sequence can become a smattering of ideas as in 'the my scratched cat post' or even lose meaning all together as in 'cra catsm sde thymst opsh'. languages differ on how they use time--some languages allow freer word order than others, but relationships between articulations through time are essential to all known languages. for now, let's start with those articulatory bits! (more on time and on meaning later)")
;; 1.1 phonemes
(section
((id "phonemes"))
(hgroup
(h3 "phonemes")
(p (em "what even are they?")))
(p "no talk of letters here! no \"'ghoti' is pronounced 'fish'\" jokes! instead, let's imagine how to describe the difference in articulation and in reception between 'mine' and 'fine' and 'wine' and and 'dine' or between ''. these words rhyme! which (for short words) is just a way of saying that most of their sounds are the same, and the similar bits come at the end. it is uncontroversial to suggest that there is a basic articulatory/perceptual unit in any given modality which, when strung together, produces the basic units of meaning. this basic unit, no matter the modality, is called the 'phoneme' (historically, called a 'chereme' in sign languages). i've already hinted at how linguists support the existence of these phonemes. 'dine' and 'fine' together form a 'minimal pair' of words with a different meaning that differ in only one perceptually distinct part of their articulation. human bodies are inexact things--perception is important here! it does us no good to describe an extra-tightly clenched middle finger in a closed hand shape as indicative of a distinct phoneme as it would be unlikely to be perceptible to an interlocutor and so could never disambiguate between two signs. environments are noisy and so articulation is also important! 'fish' and 'shiff' might be hard to distinguish on a windy overlook or in a compressed recording, but they are ") ;; TODO START HERE
(p "there's a fairly wide consensus amongst linguists that, despite being the minimal constituent needed to represent meaning in language, phonemes are " (strong "not atomic.") " a phoneme can be decomposed into constituent features and minimal pairs of phonemes can be shown to be distinct only in their realization of one feature. by way of example, the [b] in the word 'shabby' and the [m] in the word 'shammy' differ only in that the [m] is pronounced with air passing through the nasal cavity. the feature [+/- nasal] is therefore taken to be a salient feature in english phonology")
(p "all well and good, but things start to get tricky when we start defining features. firstly, there is no single agreed upon set of features by which to analyze all languages of a given modality. as stated, there's broad agreement that phonetic features exist and many proposed features are uncontroversial, yet even linguists analyzing the same language can disagree upon featural details. vowels in particular are quite slippery to analyze, with [+/- back], [+/- close], [+/- front], [+/- low], [+/- high], [+/- tongue root retracted], [+/- rounded] among the features present in different systems. there are also some linguists who, relying on auditory analysis, analyze vowels primarily via formant analysis. (formants are measures of what is sometimes referred to as 'resonance' or 'vowel color' -- they are the pitches above the fundamental frequency with the greatest relative amplitude.) it is this amateur crank's opinion that because articulation and perception are subject to different constraints and pressures, what is deemed a feature can elide a relationship between speach actor and interlocutor. thankfully, should latl allow for user definition of features and their phonemes, it can remain agnostic to the hairy work of actual linguistics")
(p "users should therefore be able to define their own phonetic feature sets and use those to compose their phonemes. (i'm going to sneak in the undefended assertion here that users should be able to use "(em "other users'") " definitions as well. forgive me.) if you're reading this and are familiar with linguistics, you might now be wondering about the curious case of place of articulation. should place features be treated as hierarchichal -- should [coronal] place of articulation be required for [+/- anterior] feature of the crown of the tongue? if so, how are coarticulations like [tʷ] or [k͡p] to be expressed in featural terms? here again, latl will allow for the definition of hierarchichal features and make no assumptions about their use")
(p "yet another problem is hiding in the view i've thus provided of phonological features. there is a wide (but not universal) belief that distinctive features in phonology are inherently binary. this is convenient from a computational perspective, but may not be descriptive of real language. firstly, it is possible to analyze [coronal] in the previous paragraph as a unary feature relevant to place of articulation. more distressingly, a proposed feature set that includes [+/- high] and [+/- low] predicts the nonsense value set: {[+ high] [+ low]}. one approach to this conundrum is to propose a feature scale [-1/0/1 height]. this is far from a settled matter, but latl should prioritize a user's ability to define such feature scales over implementation considerations or linguistic debate")
(p "it's been a few paragraphs without any mention of sign languages, so it is worth gesturing at how their phonological features relate to these considerations to ensure latl doesn't start it's life with a modality bias. sign languages are widely understood to have phonological systems that are featural. as is the case with spoken languages, specifics of feature sets vary based on language and researcher. features can be salient to a language and form minimal pairs ie [+/- palm prone] is one way of reading the difference between the ASL fingerspelling signs for /p/ and /k/. research suggests that there is a high degree of hierarchichal complexity in the phonological features of sign languages, which maps very neatly to the place of articulation problem in spoken languages. features related to handshape, such as [+/- flex] or [+/- extension] only make sense in regards to selected fingers. i have not seen any research about featural scales in sign languages, but it would be unsurprising to analogize the same issues arising from nonsense combinations of binary features") ;; TODO add some ASL images (maybe sound for some of the english bits?
(p "let's zoom back out to phonemes for a moment to add another wrinkle to the featural representation. the notion (unconscious or not) a speaker of a language has for what constitutes a single sound is understood to be a 'bundle' of features, but not every feature holds the same importance in every environment. by way of example, the /t/ phoneme in my dialect of english can be realized in a number of different ways depending on its location. it can be aspirated [tʰɑk] with [+ spread glottis] (or [+ delayed onset] if you prefer an auditory approach) in 'tock', without aspiration [stɑk] [- spread glottis] in 'stock', or as a flap [ˈbʌ.ɾək] in 'buttock'. this flap differs from the others at least in having [+ sonorant] and [+ voice], but retaining [coronal] [+ anterior]. yet, if i heard *[ɾɑk] in isolation, i would assume the speaker was referring to a stone or a genre of music. this situation is called allophony and latl must maintain a way to treat phonemes like /t/ as salient bundles of features distinct from the more discrete phones [tʰ], [t], [ɾ] whose features are more specified. once again, we see a similar situation with regards the ASL phoneme, /e handshape/ which has allophonic representations [+ open aperture] (the unmarked /e/ familiar in the fingerspelled alphabet) and [- open aperture] in certain environments")
(p "warning! that [r] in my dialect of english, is an allophone of two different phonemes! the realization of the words /bæt.ər/ and /bæd.ər/ ('batter' and 'badder') is the same: [bæɾ.ɚ]. this 'under-specification' of not unique to my dialect of english and some linguists propose an archiphoneme /D/ which is a kind of set of /t/ and /d/ to account for this. in this view 'batter' and 'badder' are orthographically distinct, but phonemically both /bæD.ər/. is this 'really' what is going on? i'm not qualified to say, but i am confident that latl can be made to handle this situation without straining our abstractions too much")
(p "to recap thus far, we have phonemes, which for the purpose of latl are bundles of features of some value. features may be defined by the user of latl into feature systems, whereby they are usually but not always binary and may each have a dependency on another feature in the system. phonemes may have features of varying saliency allowing for allophony. these allophones are phones whose features are slightly different but retain the salient features of their phoneme, whether that phoneme is specified or an underspecified archiphoneme that could represent multiple phonemes. as an additional item, it is helpful to have a shorthand to refer to phonemes and their allophones, ie "(code "/t/") ", "(code "[tʰ]") ", " (code "[t]") ", and " (code "[ɾ]") " or " (code "/D/"))
(p "an EBNF grammar (because grammars are fun!) of this relationship might be ")
(code "phoneme = positive-integer * phone { phoneme } ) ; (* a phoneme must be a set of phones and optional (archi-)phoneme *)" (br)
"phone = positive-integer * feature ; (* a phone must be a set of features *)" (br)
"feature = ( value, identifier ) | positive-integer * feature ; (* a feature must be a value with some identifier or a set of (dependent) features *)" (br)
"value = non-negative integer ;" (br)
"identifier = letter, { letter | \"-\" } ; (* lispy identifiers assumed for now *)" (br)
"non-negative-integer = digit , { digit } ; (* from here i'll take for granted the definition of digits and letters *)" (br))
(p "this grammar is insufficient to the purpose, but i include it to point at the recursive nature of both phonemes and features revealed by the constraints defined so far. an additional constraint must be that features are bound in a global feature system and a featural definition of a phone requires values for every possible feature within that feature system. additionally, a feature value can be any within a bound set where each feature can be associated with a different set; so, [+/- nasal] and [-1/0/1 high] can exist within the same feature system, but any instance of [nasal] must have a value of [+] or [-] and any value of [high] must have [-1], [0], or [1]. the grammar handwaves with non-negative-integer by analogy with enums in many programming languages. this grammar also defines a language that would be repetitive and finicky to work with. instead of optimizing, i'd like to take a moment to consider the phoneme already solved in latl and think a little bit about how they're used"))
;; 1.2 lexemes
(section
((id "lexemes"))
(hgroup
(h3 "lexemes")
(p (em "zooming out a little to the fundamental unit of meaning")))
(p "note! for the purpose of this exploration, a lexeme is assumed to be synonymous with 'root morpheme'." (small " if you don't know what this note means, please be aware that i'm being a little bit of a crank again. if you do know what this note means and are suspicious, run with me here for a sec; we'll get to it"))
(p "for now i'll posit that a lexeme is an ordered sequence of phoneme(s) that corresponds to a productive, atomic meaning. a lexeme MAY be subject to derivation rules which transform its meaning or its role in an utterance, for now called 'derived forms'. this definition allows for any 'part of speach' so long as the lexeme is not derived. taking for granted, for a moment, the category 'word', here's a selection of english words that fit this definition of lexeme: 'a', 'she', 'her', 'for', 'four', 'write', 'right', 'quick', 'quit', 'dirigible', 'abstract'")
(p "included are 'function words' (the closed set of grammatically necessary words without independent meaning) like 'a', 'she', 'her', and 'for'. 'content words' are also included (the open set of words with semantic weight) beginning with 'four'. but of course, i've also chosen these words to illustrate some potential traps. we have some phonetic ambiguities: 'for' and 'four' are distinct in some english dialects, but i pronounce them both /fɔɹ/. 'write' and 'right' are indistinguishable from each other in every english and sound something like /ɹajt/. the situation is tricky in this case semantically as well! this is one sequence of sounds upon which multiple different etymologies (encoding mark-making, correctness, directionality, or politics) have converged. if the written forms are any hint, there should be at least two separate lexemes")
(p "i've also snuck in the pair 'she' and 'her'. traditionally, 'her' is held to be a derived form of 'she' violating our 'root morpheme' assumption. leaving aside the linguistic reasons to consider 'her' a derived form, there's still the question of what plausible derivation rule could turn the sound sequence /ʃi/ into /hɜɹ/? (" (small "the ancestral form of 'her' probably was transparently derived from the ancestral form of 'she', but in this project i'm concerned with how these derivations are obscured by language change through time") ")")
(p "the write/right example and the she/her example, in slightly different ways, both recall the bidirectional nature of language. an idealized speaker *knows* which specific meaning (specific lexeme?!) of /ɹajt/ they are referring to, but their interlocutor must derive the appropriate meaning from context. likewise, a proficient speaker produces /ʃi/ and /hɜɹ/ in the appropriate position within a sentence without difficulty, while a language learner may struggle to hear the connection between the two forms. (other interesting possibilities include using one or the other form in all locations or in random distribution; analogizing the regularity of /hi/->/hɪm/ ('he'/'him') to /ʃi/->/ʃɪm/ where a /hɜɹ/ is expected; or using /hi/, /ʃi/, /ðej/ 'they' or other third person pronouns interchangeably. all of these point at some other juicy stuff that will have to be shelved for now.) this bidirectionality means that latl will need to support the mapping of a sequence of phonemes to an arbitrary number of lexemes, although for now it's safe to assume that a lexeme has only one associated sequence of phonemes. (ignoring, for the moment, variant pronunciations as in 'the' /ði/~/ðə/)")
(p "a lexeme will probably need some additional stuff, tho. at the very least a 'dictionary definition' and, of course, a shorthand, ie " (code "/ʃi/") ", " (code "/hɜɹ/") ", or " (code "/ɹajt/")". there's absolutely more to what latl will require from a lexeme (and users should be able to extend the lexeme primitive to their own ends) but that will have to wait for now")
(p "before moving on"))
;; 1.3 morphosyntax or morphemes?
(section
((id ""))
)
)
;; section 2. okay but conlangers
(section
((id "what-conlangers-do"))
(hgroup
(h2 "")
(p (em "")))
(p "")
(section
(hgroup
(h3 "what's in a sound change rule?")
(p (em "using previous work as a starting point")))
""))
;; section 3. introducing the primitives
(section
((id "proposed-latl-primitives"))
(hgroup
(h2 "")
(p (em "")))
(p "")
(section
((id ""))
(hgroup
(h3 "")
(p (em "")))
(p "")))
;; brief conclusion and next steps
(section
((id "signoff"))
(hgroup
(h2 "signing off")
(p (em "what's next for latl thinking?")))))

View file

@ -1,12 +0,0 @@
(section
((id "proposed-latl-primitives"))
(hgroup
(h2 "")
(p (em "")))
(p "")
(section
((id ""))
(hgroup
(h3 "")
(p (em "")))
(p "")))

View file

@ -1,11 +0,0 @@
(section
((id "what-conlangers-do"))
(hgroup
(h2 "what conlangers do")
(p (em "moving from a pile of language stuff to a pile of problems to solve")))
(p "")
(section
(hgroup
(h3 "what's in a sound change rule?")
(p (em "using previous work as a starting point")))
""))

View file

@ -176,9 +176,7 @@
(define (make-page resource static-write) (define (make-page resource static-write)
(string->bytes/utf-8 (string->bytes/utf-8
(static-write (static-write
(string-append (fragment->page resource))))
"<!DOCTYPE html>\n"
(fragment->page resource)))))
(define (fragment->page resource) (define (fragment->page resource)
(xexpr->string (xexpr->string

View file

@ -88,8 +88,10 @@
".scm")) ".scm"))
(error "'root resource requires headline"))) (error "'root resource requires headline")))
(define (make-res-file-handle x r id) (define (make-res-file-handle x r id)
(if (< 0 id)
(path->string (path-add-extension (build-path (if x "publish-test/source" "source") r (~a id)) (path->string (path-add-extension (build-path (if x "publish-test/source" "source") r (~a id))
".scm"))) ".scm"))
(error "~a resource requires r-id" r)))
(if (equal? r-type "root") (if (equal? r-type "root")
(make-root-file-handle x-test l-headline) (make-root-file-handle x-test l-headline)
(make-res-file-handle x-test r-type r-id))) (make-res-file-handle x-test r-type r-id)))
@ -223,7 +225,9 @@
(build-path "data" r)) (build-path "data" r))
#".csv")))) #".csv"))))
(define res-id (string-replace l " " "-")) (define res-id (if (equal? r "root")
(string-replace l " " "-")
(length res-table)))
;; before anything else, open output file ;; before anything else, open output file
;; doing this means that if a file exists of the intended ;; doing this means that if a file exists of the intended
(define out (define out

View file

@ -1 +1 @@
<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title>λ.oxaliq.net</title><link rel="self" href="https://oxaliq.net/feed.atom"/><updated>2024-02-25T21:36:03</updated><author><name>sorrel</name></author><id>https://oxaliq.net</id><entry><title>latl-primitives_what-is-language</title><link href="https://oxaliq.net/unsettled/latl-primitives_what-is-language"/><id>https://oxaliq.net/unsettled/latl-primitives_what-is-language</id><content src="https://oxaliq.net/unsettled/latl-primitives_what-is-language" type="text/html"></content><summary>thinking about language from the perspective of latl</summary><published>2024-02-25T21:36:03</published><updated></updated></entry><entry><title>latl-primitives</title><link href="https://oxaliq.net/unsettled/latl-primitives"/><id>https://oxaliq.net/unsettled/latl-primitives</id><content src="https://oxaliq.net/unsettled/latl-primitives" type="text/html"></content><summary>designing the primitives to be provided by latl</summary><published>2024-02-25T21:33:06</published><updated></updated></entry><entry><title>feature-change-applier</title><link href="https://oxaliq.net/settled/1"/><id>https://oxaliq.net/settled/1</id><content src="https://oxaliq.net/settled/1" type="text/html"></content><summary>a first attempt at a conlanging tool</summary><published>2024-01-25T16:26:10</published><updated></updated></entry><entry><title>beginning latl</title><link href="https://oxaliq.net/unsettled/1"/><id>https://oxaliq.net/unsettled/1</id><content src="https://oxaliq.net/unsettled/1" type="text/html"></content><summary>beginning the process of thinking through an environment for conlanging and other language shenanigans</summary><published>2024-01-18T22:39:00</published><updated></updated></entry><entry><title>now</title><link href="https://oxaliq.net/now"/><id>https://oxaliq.net/now</id><content src="https://oxaliq.net/now" type="text/html"></content><summary>what the author of this site is up to (not computer things)</summary><published>2024-01-18T22:22:03</published><updated></updated></entry><entry><title>contact</title><link href="https://oxaliq.net/contact"/><id>https://oxaliq.net/contact</id><content src="https://oxaliq.net/contact" type="text/html"></content><summary>how to talk to me</summary><published>2024-01-18T22:21:26</published><updated></updated></entry><entry><title>very earnest disclaimer</title><link href="https://oxaliq.net/very-earnest-disclaimer"/><id>https://oxaliq.net/very-earnest-disclaimer</id><content src="https://oxaliq.net/very-earnest-disclaimer" type="text/html"></content><summary>being earnest in the streets</summary><published>2024-01-18T22:20:50</published><updated></updated></entry><entry><title>this</title><link href="https://oxaliq.net/this"/><id>https://oxaliq.net/this</id><content src="https://oxaliq.net/this" type="text/html"></content><summary>the site this bitch made</summary><published>2024-01-18T22:19:43</published><updated></updated></entry><entry><title>about</title><link href="https://oxaliq.net/about"/><id>https://oxaliq.net/about</id><content src="https://oxaliq.net/about" type="text/html"></content><summary>about the bitch who made this site</summary><published>2024-01-18T21:56:45</published><updated></updated></entry></feed> <?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title>λ.oxaliq.net</title><link rel="self" href="https://oxaliq.net/feed.atom"/><updated>2024-01-25T16:26:10</updated><author><name>sorrel</name></author><id>https://oxaliq.net</id><entry><title>feature-change-applier</title><link href="https://oxaliq.net/settled/1"/><id>https://oxaliq.net/settled/1</id><content src="https://oxaliq.net/settled/1" type="text/html"></content><summary>a first attempt at a conlanging tool</summary><published>2024-01-25T16:26:10</published><updated></updated></entry><entry><title>beginning latl</title><link href="https://oxaliq.net/unsettled/1"/><id>https://oxaliq.net/unsettled/1</id><content src="https://oxaliq.net/unsettled/1" type="text/html"></content><summary>beginning the process of thinking through an environment for conlanging and other language shenanigans</summary><published>2024-01-18T22:39:00</published><updated></updated></entry><entry><title>now</title><link href="https://oxaliq.net/now"/><id>https://oxaliq.net/now</id><content src="https://oxaliq.net/now" type="text/html"></content><summary>what the author of this site is up to (not computer things)</summary><published>2024-01-18T22:22:03</published><updated></updated></entry><entry><title>contact</title><link href="https://oxaliq.net/contact"/><id>https://oxaliq.net/contact</id><content src="https://oxaliq.net/contact" type="text/html"></content><summary>how to talk to me</summary><published>2024-01-18T22:21:26</published><updated></updated></entry><entry><title>very earnest disclaimer</title><link href="https://oxaliq.net/very-earnest-disclaimer"/><id>https://oxaliq.net/very-earnest-disclaimer</id><content src="https://oxaliq.net/very-earnest-disclaimer" type="text/html"></content><summary>being earnest in the streets</summary><published>2024-01-18T22:20:50</published><updated></updated></entry><entry><title>this</title><link href="https://oxaliq.net/this"/><id>https://oxaliq.net/this</id><content src="https://oxaliq.net/this" type="text/html"></content><summary>the site this bitch made</summary><published>2024-01-18T22:19:43</published><updated></updated></entry><entry><title>about</title><link href="https://oxaliq.net/about"/><id>https://oxaliq.net/about</id><content src="https://oxaliq.net/about" type="text/html"></content><summary>about the bitch who made this site</summary><published>2024-01-18T21:56:45</published><updated></updated></entry></feed>

View file

@ -1,8 +1,6 @@
(article (main
((id "oxaliq-dot-net-slash-index"))
(h1 "oxaliq [dot] net [slash] index")
(noscript (noscript
(div (span
((class "noscript")) ((class "noscript"))
(p "hey! yr not letting yr browser execute javascript served by my page.") (p "hey! yr not letting yr browser execute javascript served by my page.")
(p "that's cool!") (p "that's cool!")
@ -26,46 +24,40 @@
a nice time building this little thing ") a nice time building this little thing ")
(p " i hope you have a nice time looking at things here") (p " i hope you have a nice time looking at things here")
(hr) (hr)
(div ((class "hx-target")) (p (span ((class "hx-target"))
(p
(a ((href "/this") (a ((href "/this")
(hx-get "/hx/this") (hx-get "/hx/this")
(hx-target "closest div.hx-target") (hx-target "closest span")
(hx-swap "innerHTML")) (hx-swap "innerHTML"))
"(how i build this little page)"))) "(how i build this little page)")))
(div ((class "hx-target")) (p (span ((class "hx-target"))
(p
(a ((href "/now") (a ((href "/now")
(hx-get "/hx/now") (hx-get "/hx/now")
(hx-target "closest div.hx-target") (hx-target "closest span")
(hx-swap "innerHTML")) (hx-swap "innerHTML"))
"(what i'm doing)"))) "(what i'm doing)")))
(div ((class "hx-target")) (p (span ((class "hx-target"))
(p
(a ((href "/about") (a ((href "/about")
(hx-get "/hx/about") (hx-get "/hx/about")
(hx-target "closest div.hx-target") (hx-target "closest span")
(hx-swap "innerHTML")) (hx-swap "innerHTML"))
"(who i am)"))) "(who i am)")))
(div ((class "hx-target")) (p (span ((class "hx-target"))
(p
(a ((href "/contact") (a ((href "/contact")
(hx-get "/hx/contact") (hx-get "/hx/contact")
(hx-target "closest div.hx-target") (hx-target "closest span")
(hx-swap "innerHTML")) (hx-swap "innerHTML"))
"(how to say hi to me)"))) "(how to say hi to me)")))
(div ((class "hx-target")) (p (span ((class "hx-target"))
(p
(a ((href "/very-earnest-disclaimer") (a ((href "/very-earnest-disclaimer")
(hx-get "/hx/very-earnest-disclaimer") (hx-get "/hx/very-earnest-disclaimer")
(hx-target "closest div.hx-target") (hx-target "closest span")
(hx-swap "innerHTML")) (hx-swap "innerHTML"))
"(a very earnest disclaimer)"))) "(a very earnest disclaimer)")))
; (div ((class "hx-target")) ; (p (span ((class "hx-target"))
; (p
; (a ((href "/links") ; (a ((href "/links")
; (hx-get "/hx/links") ; (hx-get "/hx/links")
; (hx-target "closest div.hx-target") ; (hx-target "closest span")
; (hx-swap "innerHTML")) ; (hx-swap "innerHTML"))
; "(some things i think are neat)"))) ; "(some things i think are neat)")))
(p (a ((href "static/license/license.txt")) (p (a ((href "static/license/license.txt"))

View file

@ -43,7 +43,7 @@
(h4 ,(second post)) (h4 ,(second post))
(p ,(third post)) (p ,(third post))
;; tagged posts will insert href instead of id ;; tagged posts will insert href instead of id
(a ((href ,(~a "/" (first post)))) (a ((href ,(first post)))
,(~a "go! to " (second post) " page"))))) ,(~a "go! to " (second post) " page")))))

View file

@ -1 +1 @@
'(article (hgroup (h1 "stuff what's tagged like " (em "#about")) (p (em "everything (or maybe just some things) i've ever said about " (strong "#about")))) (h3 "the thoughts") (div ((class "post-preview")) (h4 "now") (p "what the author of this site is up to (not computer things)") (a ((href "/now")) "go! to now page")) (div ((class "post-preview")) (h4 "contact") (p "how to talk to me") (a ((href "/contact")) "go! to contact page")) (div ((class "post-preview")) (h4 "very earnest disclaimer") (p "being earnest in the streets") (a ((href "/very-earnest-disclaimer")) "go! to very earnest disclaimer page")) (div ((class "post-preview")) (h4 "this") (p "the site this bitch made") (a ((href "/this")) "go! to this page")) (div ((class "post-preview")) (h4 "about") (p "about the bitch who made this site") (a ((href "/about")) "go! to about page"))) '(article (hgroup (h1 "stuff what's tagged like " (em "#about")) (p (em "everything (or maybe just some things) i've ever said about " (strong "#about")))) (h3 "the thoughts") (div ((class "post-preview")) (h4 "now") (p "what the author of this site is up to (not computer things)") (a ((href "now")) "go! to now page")) (div ((class "post-preview")) (h4 "contact") (p "how to talk to me") (a ((href "contact")) "go! to contact page")) (div ((class "post-preview")) (h4 "very earnest disclaimer") (p "being earnest in the streets") (a ((href "very-earnest-disclaimer")) "go! to very earnest disclaimer page")) (div ((class "post-preview")) (h4 "this") (p "the site this bitch made") (a ((href "this")) "go! to this page")) (div ((class "post-preview")) (h4 "about") (p "about the bitch who made this site") (a ((href "about")) "go! to about page")))

View file

@ -1 +1 @@
'(article (hgroup (h1 "stuff what's tagged like " (em "#conlang")) (p (em "everything (or maybe just some things) i've ever said about " (strong "#conlang")))) (h3 "the thoughts") (div ((class "post-preview")) (h4 "latl-primitives") (p "designing the primitives to be provided by latl") (a ((href "/latl-primitives")) "go! to latl-primitives page")) (div ((class "post-preview")) (h4 "feature-change-applier") (p "a first attempt at a conlanging tool") (a ((href "/1")) "go! to feature-change-applier page")) (div ((class "post-preview")) (h4 "beginning latl") (p "beginning the process of thinking through an environment for conlanging and other language shenanigans") (a ((href "/1")) "go! to beginning latl page"))) '(article (hgroup (h1 "stuff what's tagged like " (em "#conlang")) (p (em "everything (or maybe just some things) i've ever said about " (strong "#conlang")))) (h3 "the thoughts") (div ((class "post-preview")) (h4 "feature-change-applier") (p "a first attempt at a conlanging tool") (a ((href "1")) "go! to feature-change-applier page")) (div ((class "post-preview")) (h4 "beginning latl") (p "beginning the process of thinking through an environment for conlanging and other language shenanigans") (a ((href "1")) "go! to beginning latl page")))

View file

@ -1 +1 @@
'(article (hgroup (h1 "all the tags") (p (em "a categorical mess for your perusal"))) (h3 "the thoughts") (div ((class "post-preview")) (h4 "about") (p "posts about about") (a ((href "/tagged/about")) "go! to about page")) (div ((class "post-preview")) (h4 "latl") (p "posts about latl") (a ((href "/tagged/latl")) "go! to latl page")) (div ((class "post-preview")) (h4 "conlang") (p "posts about conlang") (a ((href "/tagged/conlang")) "go! to conlang page")) (div ((class "post-preview")) (h4 "programming-language") (p "posts about programming-language") (a ((href "/tagged/programming-language")) "go! to programming-language page")) (div ((class "post-preview")) (h4 "tool") (p "posts about tool") (a ((href "/tagged/tool")) "go! to tool page")) (div ((class "post-preview")) (h4 "linguistics") (p "posts about linguistics") (a ((href "/tagged/linguistics")) "go! to linguistics page"))) '(article (hgroup (h1 "all the tags") (p (em "a categorical mess for your perusal"))) (h3 "the thoughts") (div ((class "post-preview")) (h4 "about") (p "posts about about") (a ((href "/tagged/about")) "go! to about page")) (div ((class "post-preview")) (h4 "latl") (p "posts about latl") (a ((href "/tagged/latl")) "go! to latl page")) (div ((class "post-preview")) (h4 "conlang") (p "posts about conlang") (a ((href "/tagged/conlang")) "go! to conlang page")) (div ((class "post-preview")) (h4 "programming-language") (p "posts about programming-language") (a ((href "/tagged/programming-language")) "go! to programming-language page")) (div ((class "post-preview")) (h4 "tool") (p "posts about tool") (a ((href "/tagged/tool")) "go! to tool page")))

View file

@ -1 +1 @@
'(article (hgroup (h1 "stuff what's tagged like " (em "#latl")) (p (em "everything (or maybe just some things) i've ever said about " (strong "#latl")))) (h3 "the thoughts") (div ((class "post-preview")) (h4 "latl-primitives_what-is-language") (p "thinking about language from the perspective of latl") (a ((href "/latl-primitives_what-is-language")) "go! to latl-primitives_what-is-language page")) (div ((class "post-preview")) (h4 "latl-primitives") (p "designing the primitives to be provided by latl") (a ((href "/latl-primitives")) "go! to latl-primitives page")) (div ((class "post-preview")) (h4 "beginning latl") (p "beginning the process of thinking through an environment for conlanging and other language shenanigans") (a ((href "/1")) "go! to beginning latl page"))) '(article (hgroup (h1 "stuff what's tagged like " (em "#latl")) (p (em "everything (or maybe just some things) i've ever said about " (strong "#latl")))) (h3 "the thoughts") (div ((class "post-preview")) (h4 "beginning latl") (p "beginning the process of thinking through an environment for conlanging and other language shenanigans") (a ((href "1")) "go! to beginning latl page")))

View file

@ -1 +0,0 @@
'(article (hgroup (h1 "stuff what's tagged like " (em "#linguistics")) (p (em "everything (or maybe just some things) i've ever said about " (strong "#linguistics")))) (h3 "the thoughts") (div ((class "post-preview")) (h4 "latl-primitives_what-is-language") (p "thinking about language from the perspective of latl") (a ((href "/latl-primitives_what-is-language")) "go! to latl-primitives_what-is-language page")))

View file

@ -1 +1 @@
'(article (hgroup (h1 "stuff what's tagged like " (em "#programming-language")) (p (em "everything (or maybe just some things) i've ever said about " (strong "#programming-language")))) (h3 "the thoughts") (div ((class "post-preview")) (h4 "latl-primitives") (p "designing the primitives to be provided by latl") (a ((href "/latl-primitives")) "go! to latl-primitives page")) (div ((class "post-preview")) (h4 "beginning latl") (p "beginning the process of thinking through an environment for conlanging and other language shenanigans") (a ((href "/1")) "go! to beginning latl page"))) '(article (hgroup (h1 "stuff what's tagged like " (em "#programming-language")) (p (em "everything (or maybe just some things) i've ever said about " (strong "#programming-language")))) (h3 "the thoughts") (div ((class "post-preview")) (h4 "beginning latl") (p "beginning the process of thinking through an environment for conlanging and other language shenanigans") (a ((href "1")) "go! to beginning latl page")))

View file

@ -1 +1 @@
'(article (hgroup (h1 "stuff what's tagged like " (em "#tool")) (p (em "everything (or maybe just some things) i've ever said about " (strong "#tool")))) (h3 "the thoughts") (div ((class "post-preview")) (h4 "feature-change-applier") (p "a first attempt at a conlanging tool") (a ((href "/settled/1")) "go! to feature-change-applier page"))) '(article (hgroup (h1 "stuff what's tagged like " (em "#tool")) (p (em "everything (or maybe just some things) i've ever said about " (strong "#tool")))) (h3 "the thoughts") (div ((class "post-preview")) (h4 "feature-change-applier") (p "a first attempt at a conlanging tool") (a ((href "1")) "go! to feature-change-applier page")))

View file

@ -1 +1 @@
'(body (section (hgroup (h2 "how this site") (p "some kind of colophon")) (p "all of the code for the website is hosted and deployed from tree, " (a ((href "https://git.bunk.computer/oxaliq/oxaliq.net")) "bunk computer club's git forge") "i do almost everything in the main branch, cause it's just me and that way\n i can add links below to the in-progress stuff real easy") (p "first, this website doesn't do anything to know who you are or anything.\n this website is a ~20MB binary and some static resources. it is built\n primarily with " (a ((href "https://docs.racket-lang.org/web-server/")) "racket web-server")) (p "this website serves ~46kB of javascript in the form of " (a ((href "https://htmx.org/")) "the htmx library (minified.)") " i don't love serving minified code. forking the library and removing\n features that are of no use to me is on the agenda for 2024") (p "everything here is hosted on turtle, " (a ((href "https://wiki.bunk.computer/hypha/servers")) "bunk computer club's shared application server")) (p "there's some racket scripts i use for tooling that were made with " (a ((href "https://docs.racket-lang.org/cli/")) "#lang cli")) (p (a ((href "https://git.bunk.computer/oxaliq/oxaliq.net/src/branch/main/.dev-log")) "you can read about development here")) (p (a ((href "https://git.bunk.computer/oxaliq/oxaliq.net/src/branch/in-progress/.idea-log")) "you can read about my vague plans here")) (p (a ((href "https://git.bunk.computer/oxaliq/oxaliq.net/src/branch/in-progress/in-progress")) "or read works in progress here")) (p "the image in the header is a crop of the work " (em "'Oxalis acetosella', Otto Wilhelm Thomé (1885)") " run through a generation tool on " (a ((href "https://www.asciiart.eu/")) "this art archive"))) (footer (a ((href "https://git.bunk.computer/oxaliq/oxaliq.net/src/branch/main/source/this.scm")) "view source") (hr) (section (h5 "tagged") (ul ((class "tag-list")) (li ((class "tag-item")) (span ((class "hx-target")) (a ((href "/tagged/about") (hx-get "/hx/tagged/about") (hx-target "closest span.hx-target") (hx-swap "innerHTML")) "about"))))) (hr) (p ((class "doc-history")) (small "published: 2024-01-18T22:19:43")) (p ((class "license-info")) (small (a ((href "static/license/license.txt")) "license"))))) '(body (section (hgroup (h2 "how this site") (p "some kind of colophon")) (p "all of the code for the website is hosted and deployed from tree, " (a ((href "https://git.bunk.computer/oxaliq/oxaliq.net")) "bunk computer club's git forge") "i do almost everything in the main branch, cause it's just me and that way\n i can add links below to the in-progress stuff real easy") (p "first, this website doesn't do anything to know who you are or anything.\n this website is a ~20MB binary and some static resources. it is built\n primarily with " (a ((href "https://docs.racket-lang.org/web-server/")) "racket web-server")) (p "this website serves ~46kB of javascript in the form of " (a ((href "https://htmx.org/")) "the htmx library (minified.)") " i don't love serving minified code. forking the library and removing\n features that are of no use to me is on the agenda for 2024") (p "everything here is hosted on turtle, " (a ((href "https://wiki.bunk.computer/hypha/servers")) "bunk computer club's shared application server")) (p "there's some racket scripts i use for tooling that were made with " (a ((href "https://docs.racket-lang.org/cli/")) "#lang cli")) (p (a ((href "https://git.bunk.computer/oxaliq/oxaliq.net/src/branch/main/.dev-log")) "you can read about development here")) (p (a ((href "https://git.bunk.computer/oxaliq/oxaliq.net/src/branch/main/.idea-log")) "you can read about my vague plans here")) (p (a ((href "https://git.bunk.computer/oxaliq/oxaliq.net/src/branch/main/in-progress")) "or read works in progress here")) (p "the image in the header is a crop of the work " (em "'Oxalis acetosella', Otto Wilhelm Thomé (1885)") " run through a generation tool on " (a ((href "https://www.asciiart.eu/")) "this art archive"))) (footer (a ((href "https://git.bunk.computer/oxaliq/oxaliq.net/src/branch/main/source/this.scm")) "view source") (hr) (section (h5 "tagged") (ul ((class "tag-list")) (li ((class "tag-item")) (span ((class "hx-target")) (a ((href "/tagged/about") (hx-get "/hx/tagged/about") (hx-target "closest span.hx-target") (hx-swap "innerHTML")) "about"))))) (hr) (p ((class "doc-history")) (small "published: 2024-01-18T22:19:43")) (p ((class "license-info")) (small (a ((href "static/license/license.txt")) "license")))))

File diff suppressed because one or more lines are too long

View file

@ -1 +1 @@
'(article (hgroup (h1 "unsettled thoughts") (p (em "just doing some thinking aloud"))) (h3 "the thoughts") (div ((class "post-preview")) (h4 "latl-primitives_what-is-language") (p "thinking about language from the perspective of latl") (a ((href "/unsettled/latl-primitives_what-is-language")) "go! to latl-primitives_what-is-language page")) (div ((class "post-preview")) (h4 "latl-primitives") (p "designing the primitives to be provided by latl") (a ((href "/unsettled/latl-primitives")) "go! to latl-primitives page")) (div ((class "post-preview")) (h4 "beginning latl") (p "beginning the process of thinking through an environment for conlanging and other language shenanigans") (a ((href "/unsettled/1")) "go! to beginning latl page"))) '(article (hgroup (h1 "unsettled thoughts") (p (em "just doing some thinking aloud"))) (h3 "the thoughts") (div ((class "post-preview")) (h4 "beginning latl") (p "beginning the process of thinking through an environment for conlanging and other language shenanigans") (a ((href "/unsettled/1")) "go! to beginning latl page")))

View file

@ -1 +0,0 @@
'(body '(article ((id "latl-primitives")) (section ((id "intro")) (hgroup (h1 "what must be true of latl primitives") (p (em "what will latl need to " (u "do") " out of the box?"))) (p "i've talked a little about " (a ((href "/unsettled/1")) "conlanging and latl") " previously here. the short version is this: making languages (for theoretical conscious beings) is fun! it's been a consistent hobby and artistic pursuit for me for much of my life. i've had different approaches from making extremely regular languages, to simulating the evolution of a family of spoken languages, to a family of synthesizer languages for a fractured machine society. every language project requires keeping track of a dictionary and a grammar (even if they never become more than quick sketches) and any sufficiently involved project can benefit from tools for generating new words that fit a language's 'phonotactics', generating derived words based on grammatical rules, simulating language change over time. conlanging is a hobby with enough overlap with computation, that some conlangers have created tools for some of these tasks. my own projects have become too ambitious to have my work live in spreadsheets over here and latex files over there and text files with the defintions i provide to web-based tools somewhere else entirely. i want to build on the work of those came before and create a substrate upon which any tool a conlanger needs could be built and in which i can define the entirety of a language in one system.") (p "at it's base latl will be a tool for operating on languages, invented (or otherwise... maybe.) it helps then to think of the sorts of things that encompass language. spoken and signed languages will be the assumed base case, as those are the things real human beings usually use to communicate with each other. the modality of a language needn't be important to the primitives used, but it's always a good practice to state assumptions")) (section ((id "contents")) (ul (li (a ((href "#what-is-language")) "go to what-is-language")) (li (a ((href "#what-conlangers-do")) "go to what-conlangers-do")) (li (a ((href "#proposed-latl-primitives")) "go to proposed-latl-primitives")) (li (a ((href "#signoff")) "go to signoff")))) (section ((id "what-is-language")) (hgroup (h2 "thinking about what language is for a moment")) (a ((href "/unsettled/latl-primitives_what-is-language") (hx-get "/hx/unsettled/latl-primitives_what-is-language") (hx-target "#what-is-language") (hx-swap "outerHTML")) "what-is-language")) (section ((id "what-conlangers-do")) (hgroup (h2 "what conlangers do") (p (em "moving from a pile of language stuff to a pile of problems to solve"))) (p "coming soon")) (section ((id "proposed-latl-primitives")) (hgroup (h2 "introducing the primitives") (p (em "things that definitely need to be present in latl"))) (p "coming soon")) (section ((id "signoff")) (hgroup (h2 "signing off") (p (em "what's next for latl thinking?"))) "coming soon")) (footer (a ((href "https://git.bunk.computer/oxaliq/oxaliq.net/src/branch/main/source/unsettledlatl-primitives.scm")) "view source") (hr) (section (h5 "tagged") (ul ((class "tag-list")) (li ((class "tag-item")) (span ((class "hx-target")) (a ((href "/tagged/latl") (hx-get "/hx/tagged/latl") (hx-target "closest span.hx-target") (hx-swap "innerHTML")) "latl"))) (li ((class "tag-item")) (span ((class "hx-target")) (a ((href "/tagged/conlang") (hx-get "/hx/tagged/conlang") (hx-target "closest span.hx-target") (hx-swap "innerHTML")) "conlang"))) (li ((class "tag-item")) (span ((class "hx-target")) (a ((href "/tagged/programming-language") (hx-get "/hx/tagged/programming-language") (hx-target "closest span.hx-target") (hx-swap "innerHTML")) "programming-language"))))) (hr) (p ((class "doc-history")) (small "published: 2024-02-25T21:33:06")) (p ((class "license-info")) (small (a ((href "static/license/license.txt")) "license")))))

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 44 KiB

View file

@ -35,26 +35,26 @@ h1, h2, h3, h4, h5 {
font-family: 'Courier New', Courier, monospace; font-family: 'Courier New', Courier, monospace;
color: var(--background-color); color: var(--background-color);
background-color: var(--visited-link-color); background-color: var(--visited-link-color);
padding: 2px 10px; padding: 2 10;
} }
h5 { h5 {
margin: 2px 0px; margin: 2 0;
} }
div.noscript p { span.noscript p {
font-family: 'Courier New', Courier, monospace; font-family: 'Courier New', Courier, monospace;
font-size: small; font-size: small;
} }
div.hx-target section { span.hx-target section {
border: solid 1px var(--link-color); border: solid 1px var(--link-color);
border-radius: 4px; border-radius: 4px;
padding: 5px 10px; padding: 5 10;
margin: 3px; margin: 3;
} }
div.hx-target footer { span.hx-target footer {
display: none; display: none;
} }
@ -78,7 +78,7 @@ a:not(.ascii a):not(a[hx-get*="hx"])::before {
} }
body { body {
max-width: 600px; max-width: 600;
margin: auto; margin: auto;
font-size: medium; font-size: medium;
font-family: sans-serif; font-family: sans-serif;
@ -128,21 +128,21 @@ nav a {
} }
p { p {
margin: 12px 0px; margin: 12 0;
} }
ul.tag-list { ul.tag-list {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
flex-wrap: wrap; flex-wrap: wrap;
margin: 6px 0px; margin: 6 0;
padding: 0px; padding: 0;
} }
li.tag-item { li.tag-item {
list-style-type: none; list-style-type: none;
flex-basis: fit-content; flex-basis: fit-content;
margin: 0px 6px; margin: 0 6;
} }
img { img {