Latte is a minimalistic functional language shipped with the Orpheus functional layer. Higher level functionality is written in Latte, making it easier to define system state.
Orpheus is the kind of small, self-contained hobby programming environment I miss from my childhood. Those are what got me excited about programming in the first place. Each one is like a fantasy world made of logic.
The current implementation has several limitations:
Base numbers can’t go below 0.
Functions defined in let don’t have unrestricted recursion yet.
Starting Orpheus
To start Orpheus, open a graphical terminal in an Ubuntu-compatible Linux distro and run:
If you already have Orpheus, you can update and run it:
cd orpheus git pull sudo chmod +x ./latte (enter your root password when prompted) ./latte
Interface
In the GUI, you can open a new text window by clicking the “+ Text” button in the top bar. You can execute commands by typing them in a text window and middle clicking them.
GUI systems either run into menu labyrinths or a lack of customizability. CLIs run into the problem of awkward line editing. For example, I often keep long commands saved inside a text file. I have to edit the command as necessary, copy and paste it into the terminal. Allowing the user to execute commands by middle clicking inside what is effectively a notepad window sidesteps this issue.
Basics
The base types are atoms and pairs.
Examples of numeric atoms: 0, 1, 2, 3, …
Examples of text atoms: %hello, %heart, …
Examples of pairs: [1 2], [3 0], …
As mentioned, numbers below 0 are not base types yet.
Lists are a derived type that must end in a 0. Example: [1 2 3 0]
[1 2 3] is the pair [1 [2 3]]. This is NOT the same as the list [1 2 3 0].
Another surprise is that 0 means true. ‘if’ takes the ‘then’ branch if the condition evaluates to 0.
Comments are lines that start with ‘::’.
Arithmetic
Incrementation is the operator +():
eval +(41) :: → 42
The other operations are defined in the standard library lib/std.lat. Functions are called with the function name first inside parentheses and other arguments separated by spaces:
A function is defined inside a session using the ‘def’ keyword. To run this, you have to middle click both lines in succession:
def fact [n] = loop with [i = n, acc = 1] : if (i == 0) then acc else again((dec i), (mul acc i)) end
eval (fact 5)
:: → 120
In the current alpha release, recursion is not supported for a function defined inside a let block. The function is not in scope while it’s being bound.
Recursion is supported:
When a function is defined inside a module. This uses the keyword ‘core’. See the next section.
When a function is defined inside a session using the ‘def’ keyword.
Modules
‘def’ defines a function for one session. You can create a new module permanently using the ‘core’ keyword. In a text window, type and middle click the line:
System.New greet
This opens a module frame. Enter:
import std core greet twice = fn [x] -> (add x x) shout = fn [w] -> (cat w %!) end
Press the ‘Compile’ button on the frame’s header. In a text window, type and middle click:
eval (twice 21)
:: → 42
Press ‘Store’ and it persists as pkg/greet.lat.
Functions defined inside a core can call themselves.
The Standard Library
In the example module, the line ‘import std’ incorporates the standard library. Here are some of the operations it contains:
Arithmetic: dec add sub mul div mod pow Bitwise: shl shr band bor bxor popcount Lists: len reverse append nth member range take drop last zip enumerate Higher order functions: map filter foldl foldr scanl any all count Aggregation: sum maximum minimum argmax Sorting: sort, sortby Association lists: aget aput ahas adel Text atoms: cat catall bytelen bytes frombytes numtext
Some of this functionality will be covered in future tutorials.
A romantic song by a founder of a communist party (English translation in the subtitles):
“At the risk of seeming ridiculous, let me say that the true revolutionary is guided by a great feeling of love. It is impossible to think of a genuine revolutionary lacking this quality.” – Che Guevara
For the first time, I’m trying to address this kind of a dimension in conlanging:
Puns in the spoken language are a source of cultural associations. For example, the sea is associated with favor (lho). A cutlass is associated with waves (só). A sharp look is said to pierce the soul like a talon (lhé). A lighthouse flows into the cliff it’s built on in popular imagination (k’ó), and both are thought of a wind-swept places. Both bronze and debt are associated with things that weigh us down (hòlh). The crew has always been associated with a haven (tin).
“Xa tu’wa sa hëq’on, wa’ hëq’on. Ti’ kwën ‘i lhaq. Ti’ qaxwo sa kwën. Ëlhqi ‘i lëtl’wa. Ti’ k’ot’ë ‘i si’l xa ‘yan. Na’yanënku ‘i mu në lëtl’wa, ka natuk’me ‘i siya qu nu’. Nakwën ‘i noq’a sa nu’’wa. Tu’wa ‘i siya. Ka pan naqi’lku, nak’ot’ëp’ëlh ‘i siya xa ‘yan sa nu’.”
Ti’ ‘yanp’ëlh ‘i mëlqu në op’. Naloc’ ‘i kitul. Ti’ mët’u ‘i su’ në tin.
Ka namët’u ‘i xwa’m: “Muxwlhuqa kitul, xa tu’wa sa hëq’on!”
Namuxwlhuq ‘i kitul xa Hëq’ontaq. Na’an lëtl xa sumal, ka ëlhqi ‘i si’l. Wa’ k’aw. Ka namuxw ‘i lhax. Xa lhuq, tu’wa ‘i hëq’on. Wa’ tin qu muxwp’ëlh.
Nayil ‘i mu në tin xa c’ël. Naqi’l ‘i siya: “Lhaxki! Namuxwme ‘i siya qu kitul, xa tu’wa sa hëq’on!”
Natuk’ëntul ‘i lhap sa kitul xa siya. Namuxw ‘i siya, ka wa’ c’aw, wa’ tëtle. Naqi’lme ‘i siya qu kitul xa ‘yan sa kitul, ka ti’ qilh ‘i kitul. Natuk’ëntul ‘i kitul xa p’ëq sa siya.
Xisu namuxwme xa k’aw?
Ti’ k’ot’ë ‘i xwa’m. Nakwën ‘i ‘yan sa siya. Na’yanëntul ‘i lhaq ‘yan. Ka na’yanën sa lhaq në wënii ‘i kitul:
Draft 9: Added vocabulary and sample sentences. Added spoken forms to the lexicon. Added sound changes to the spoken language. Added note about puns. Changed conworld details.
Draft 8: Renamed archipelago. Edited descriptions. Added vocabulary. Noted irregularities. Regularized glottal finals. Removed evidentials. This language started as a dialect of Toukanta, but inexactness feels more piratey. Arrr!
Lhawën “the Laven tongue” is the polite speech of the Saltwashed, the sea-rovers of the drowned archipelago Lhaxwëmtaq (Spoken: Lhawento), where the only roads are currents and the only border is the wind. The deixis is based on the mental geography of the Saltwashed. Possession classes show their morality.
Commoners speak Lhawen, the spoken form. This grammar describes the polite speech, Lhawën, as it survives on bronze plates and in the conservative quarterdeck register. For the daughter, see The spoken language below.
Flooded as it is, Lhaxwëmtaq is still the most developed part of the civilized world. It is surrounded by the seven seas, barbarous waters where adventurers search for lost wonders.
Glossing conventions
Abbreviations used in the interlinear examples throughout: TOP topic · AGT non-topic agent/genitive · LOC locative · GOAL allative/purpose · AV/PV/LV/CV actor/plunder/locus/conveyance voice · BEG begun (realis) · NB not-begun (irrealis) · PROG progressive · HARD hardened stem (“in hand”) · WEAK weakened stem (“in chase”) · VEN ventive (hither) · ITV itive (thither) · SWD seaward · LWD landward/havenward · WWD windward · LEE leeward · RET returnative · HU hull-up · HD hull-down · OH over-horizon · INCL/EXCL clusivity · CREW crew-inclusive · DEF deferential · POSS possessor enclitic · PLUN plunder class · EARN earned class · PERS personal article · LK linker · Q polar question · IMP imperative · QD quarterdeck register.
1. Phonology
1.1 Consonants
Lhawën has a large inventory. Every plosive and affricate has a plain and an ejective partner; the dorsal region splits into plain, labialized and uvular series; and the sonorants pair plain with glottalized. There is no rhotic.
Labial
Alveolar
Lateral
Velar
Labiovelar
Uvular
Labiouvular
Glottal
Plosive
p
t
k
kʷ
q
qʷ
ʔ
Ejective
pʼ
tʼ
kʼ
kʷʼ
qʼ
qʷʼ
Affricate
t͡s
t͡ɬ
Ej. affricate
t͡sʼ
t͡ɬʼ
Fricative
s
ɬ
x
xʷ
χ
χʷ
h
Nasal
m
n
Gl. nasal
mˀ
nˀ
Approximant
w
l, j
Gl. approx.
wˀ
lˀ, jˀ
1.2 Vowels
Six vowel qualities, a e i o u ə, with a phonemic length contrast. Schwa /ə/ is by far the commonest vowel. Long vowels carry weight for stress.
1.3 Romanization
This grammar uses a fixed romanization. (For the native writing system, see section 15.) An apostrophe after a consonant marks an ejective. An apostrophe before a sonorant marks glottalization.
Sound
Written
Sound
Written
Sound
Written
ʔ
‘
t͡s
c
ɬ
lh
pʼ tʼ kʼ qʼ
p’ t’ k’ q’
t͡sʼ
c’
x χ
x qh
kʷ qʷ
kw qw
t͡ɬ
tl
xʷ χʷ
xw qhw
kʷʼ qʷʼ
kw’ qw’
t͡ɬʼ
tl’
mˀ nˀ lˀ jˀ wˀ
‘m ‘n ‘l ‘y ‘w
Vowels are written a e i o u ë (ë = /ə/); long vowels are doubled (aa, ëë, ii …); the glide /j/ is written y.
1.4 Phonotactics and stress
The syllable is (C₁)(C₂)V(ː)(C₃), with the three consonant positions sharply restricted rather than free. The nucleus is a single vowel, short or long. The onset holds at most two segments and rises in sonority toward the nucleus: C₂, the slot next to the vowel, is the true onset and may be any consonant, while the optional outer slot C₁ is filled only by the sibilant s or the lateral ɬ, the one licensed cluster type (e.g. sp-, ɬk-), the cross-linguistically familiar sibilant-initial exception. The coda is a single consonant, and it may be any coda-capable consonant: obstruent codas are core to the language, since the hardening mutation itself yields them (qw’etl → qw’etl’, “in hand”). Only /h/ is barred from the coda. The bare glottal stop is admitted in a closed class of words like nu’ “I”. The sonority scale is plosive/affricate < fricative < nasal < liquid < glide < vowel.
Two further limits keep syllables light. The rhyme is maximally bimoraic: a syllable may have a long vowel or a coda, not both (woo, lhax, tin are well-formed; *lhaxn, *iiqn are not). The one lexical holdout, iiq “rum”, is best analysed with a diphthong nucleus rather than as long V + coda. And glottal-initial and glottalized-sonorant-initial onsets occur only in strong position: word-initially, after a vowel, or after a proclitic boundary. This is why such segments cluster at the starts of words like ‘ima, ‘na, ‘yek’.
A syllable is heavy if it has a long vowel or a sonorant coda; primary stress falls on the leftmost heavy syllable, otherwise the rightmost. An ejective or other obstruent coda does not add weight: only sonorants are moraic, which is precisely why the bimoraic limit treats VV and V-sonorant as equivalent and forbids stacking them.
2. Morphophonology
Lhawën features a mutation of the stem-final consonant, grammaticalizing the oldest distinction a raider knows: is the thing in my hand, or am I still chasing it?
Hardening: “in hand” (realis, completed, seized): strengthens the final consonant. Plain stop → ejective (t → t’, q → q’), s → c’, tl → tl’, lh → ‘l, sonorant → glottalized. It pairs with the begun prefix na-.
Weakening: “in chase” (irrealis, prospective, pursued): softens the final consonant. Voiceless stop → voiced (t → d, q → gh), tl → dl, s → z, loss of glottalization.
Note the minimal pair of the verb qw’etl “seize”:
(T13) Qw'edl-ën 'i q'was='wa — ti' qw'etl'-ën hëq. seize\WEAK-PV TOP gold=OH — NEG.NB seize\HARD-PV yet "The gold is being chased — not yet in hand."
(T29) Na-qw'etl'-ën=tul 'i q'was=ki! BEG-seize\HARD-PV=1pl.CREW TOP gold=HU "We seized the gold — in hand now, hull-up before me!"
The low, voiced qw’edl “give chase” becomes the hard, ejective qw’etl’ “seized, in hand”, the consonant reporting possession. Reduplication is the other signature process: CV- reduplication marks the progressive (yi~yil “keeping watch”, T1; lha~lhalhik “glimmering”, T4), full-stem reduplication marks plurality (tin → tin-tin “crew”, T14), and heavy reduplication marks the intensive (“raid upon raid”).
3. Word classes
Lhawën distinguishes nouns, verbs, modifiers (joined by the linker në), a closed class of relators (case markers and directionals), pronouns, demonstratives, numerals, particles (negation, question) and interjections (qw’ë “aye”, ‘në “nay”, se! “quiet!”). Aspect and mood are not particles; they are carried by the stem mutation and the na- prefix (§7.2). Most roots can predicate directly. It is voice morphology that makes a root verbal.
4. The noun phrase
4.1 Case relators
Four particles head the noun phrase and assign its role.
Relator
Role
Function
‘i
TOPIC
the in-focus argument selected by the verb’s voice
Personal names take the article hi (topic) and kan (oblique) instead of ‘i / xa, as in hi Qw’iq’ “(Old) Qw’iq’” (T6).
4.2 Horizon clitics: can you see it?
Every referential noun may (and in vivid narration must) carry a clitic placing it on the lookout’s three-way scale of sight.
Clitic
Gloss
Meaning
=ki
HU
hull-up: in plain sight, whole
=lha
HD
hull-down: sails or masts only, on the rim
=’wa
OH
over-horizon: known, named, unseen
The tale tracks the prize on this scale: it first appears kanla në ‘ima=lha “a lone lantern, hull-down” (T3); at the chase’s climax ‘inki ‘i kanla=ki “here is the lantern, hull-up” (T15); and when escaping, the ship is lhax=‘wa “the ship, over the horizon”, gone and unnameable (T36). To name a thing =ki is to vouch for it; =’wa is the horizon of rumor and the dead.
4.3 Directionals
There is no left/right and no north. Bearings are absolute and maritime, in three axes; each is an enclitic that locates a noun or orients a verb.
Axis
toward speaker / ship
away
deictic
-me VEN (hither)
-na ITV (thither)
coast
-tin LWD (landward, havenward)
-lhuq SWD (seaward, to deep water)
wind
-k’aw WWD (windward, up-wind)
-tul LEE (leeward, down-wind)
The home is the fixed center of the world, so -tin “landward” always means toward home and safety and -lhuq “seaward” means toward the deep and the hunt. In the text, the fog drifts qu-lhuq “out to seaward” (T1), the chase is muxw-k’aw “to windward” (T12–T13), the longboat is rowed qu-tul “leeward” (T16), and the escape is tlam-tin “flee landward, run home” (T33–T34).
4.4 Demonstratives
Four terms, transparently deixis + horizon: ‘inki “this: by me, hull-up” (T15), yatin “that: by you”, yawu “yon: away but in sight”, and tu’wa “yonder: gone, over the horizon” (T35). Tu’wa doubles as the bilge euphemism for death (§12).
5. Possession
How a thing is held is characterized by how it was got. Inalienable possession, body parts, kin, and a ship’s timbers, take the possessor enclitic directly: ‘i q’an=ni “her keel” (T20), qu ‘yek’=ku “to my hand” (T21). Alienable possession pass through one of exactly two classifiers, and the choice is a moral claim.
Class
Classifier
Covers
PLUNDER
qw’ac-
loot, prizes, seized cargo: anything taken
EARNED
wa’-
fair shares, honest trade: anything won or made
(T31) Qw'ac-q'was, na-paha'-ën=tul; wa'-q'was, pëq'. PLUN-gold BEG-share-PV=1pl.CREW; EARN-gold, no "Plundered gold we share; earned gold we do not."
The qw’ac- / wa’- distinction is the nearest thing the language has to a word for honor.
6. Pronouns
Three parallel sets, topic, agent (a genitive enclitic), and oblique (prefix xa-), with a true clusivity contrast, a special crew-inclusive, and a deferential form for addressing the captain.
TOPIC
AGENT
OBLIQUE
1sg
nu’
=ku
xanu’
2sg
k’aw
=mu
xak’aw
2sg DEF (to the captain)
ta’an
=ta’
xata’an
3sg
siya
=ni
xasiya
1pl EXCL
na’m
=naw
xana’m
1pl INCL
kit
=ta
xakit
1pl CREW (all aboard)
kitul
=tul
xakitul
2pl
k’am
=niw
xak’am
3pl
si’l
=nil
xasi’l
The form depends on role. A topic actor (the subject of an actor-voice or intransitive clause) takes the free form. Kitul stands to windward (T13), clambers aboard (T18), and drinks in the haven (T37). A non-topic actor: the agent of a plunder-, locus-, or conveyance-voice clause, takes the agent enclitic instead. It is =tul that seizes the gold (T29), shares it out (T31), and is denied naming the lost ship (T36). The navigator likewise asks =mu “you” of the lad (T7) but addresses the captain with the deferential ta’an / =ta’ (T11), and the exclusive na’m “we, not you” sets the boarding party apart (T14).
7. The verb
The verbal template is: [na- BEG] [voice-prefix] ROOT[mutation] [-voice-suffix] [-directional/AM] [=a IMP].
7.1 Voice (the trigger)
Voice
Marker
Topic is…
Example
Actor (AV)
unmarked (emphatic më-)
the doer
(T3) na-tuk’ nu’ “I spot a lantern”
Plunder (PV)
suffix -ën
the thing taken
(T7) tug-ën=mu “what you see”; (T29) …qw’etl’-ën… ‘i q’was “the gold we seized”
Locus (LV)
suffix -an
the place / goal
(T19) …na-tuk’-an… p’ëq “the deck where we found…”
Conveyance (CV)
prefix ci-
the means / thing conveyed
(T30) Na-ci-qw’etl’-na… ‘i qakwëm “the longboat we carried it off in”
Four voices each promote one argument to ‘i-topic. Actor voice is the unmarked default: the topic actor simply takes a free pronoun (T1, T3), and the optional prefix më- only adds emphasis. The system is reorganized around the act of taking, so the patient voice is literally the plunder voice.
The four voices let the storyteller foreground whatever the moment is about: the lookout (AV) when he is the news, the gold (PV) when the prize is, the deck (LV) when the place is the horror, the boat (CV) when the means of escape matters.
7.2 Aspect and mood
Realized by the consonant mutation, reinforced by the begun prefix na-. Not-begun (irrealis, “in chase”) is the weakened stem with no na-; begun (realis, “in hand”) is na- plus the hardened stem. The imperative also uses the weakened stem. A future resolve stays in the not-begun form, since it reports intention: Qw’edl-ën=tul siya “We (will) take her” (T12). The progressive is CV-reduplication (T1, T4, T14).
7.3 Knowing, and the horizon
In a culture run on lookouts and rumor you must say how you know what a prize is. That work is carried by the horizon clitics of §4.2: to name a thing =ki (hull-up) is to vouch for it; =lha (hull-down) reports only what can be inferred from a silhouette on the horizon; and =’wa (over-horizon) is the domain of the rumored and the dead.
The lookout’s report includes these: Lhax=lha “a ship, by the look of it” (T8), Q’waslhax=’wa “a treasure-ship, they say” (T11), and at last the difficult =ki once the thing is in sight (T15, T29). Where sight is not enough, the verb itself does the telling: tuk’ “see, find” for what is witnessed, qilh “hail (a report)” and qhëwti “ask” for what is passed along. The closing proverb into a maxim based on the seen/heard contrast (see T38): gold hull-up is gold; gold over-horizon is only wind.
7.4 Associated motion and the returnative
The directionals attach to the verb to bundle a movement into the action. There is also the returnative -p’ëlh “raid and return”.
(T33) Qw'edl-p'ëlh=a, k'am! Tlam-tin=a! seize-RET=IMP 2pl! flee-LWD=IMP! "Take it and run home, lads! Away to landward!"
The idea is to go out, take, and come home to divide the plunder.
7.5 Imperatives
The imperative is the (weakened) stem plus the clitic =a, usually with a directional. The negative imperative prefixes ti’: Qwët’ë-me=a ‘i qakwëm “Row the longboat over!” (T16); Ti’ qw’edl-ën=a “Don’t take it!” (T26).
8. Numerals
Decimal in structure and based on hands: wec’ “five” is literally a hand, mëwec’ “ten” two hands.
1
2
3
4
5
10
mu
k’et
su’
paqh
wec’
mëwec’
Numerals modify a noun through the linker në: ‘i mu në tin “one of the crew” (T17), ‘i su’ në asët “three chests” (T32). Teens are mëwec’ në + unit; tens are unit + mëwec’; higher units xantus 100, xanlip 1000. Ordinals prefix xi-. “How many?” is wila (T9). By custom, counting begins from the share owed to the lowest crewman, never the captain’s cut.
9. Negation and existence
Three negators: pëq’ negates nouns and identity (T15, T28); ti’ negates not-begun (irrealis) verbs and forms negative imperatives (T9, T26, T36); wa’ negates begun (realis) verbs and serves as the negative existential “none” (T2, T19). Existence is positive ‘an “there is” (T21). The negator pëq’ also forms privative compounds: pëq’-qëp’aq “un-cursed, no curse” (T28).
10. Questions
Content questions front an interrogative word (‘unu what, xisu who, xay where, mëta’ why, suman when, lhintin how, wila how many): ‘Unu ‘i tug-ën=mu, lhetl? “What do you see, lad?” (T7); Wila ‘i tin xa lhax=’wa? “How many aboard that ship?” (T9). Polar questions take the clause-final clitic =ga: Qw’edl-ën=ga=ta’ siya? “Will you take her?” (T11); Lhëk’=ga? “True, is it?” (T27).
11. Coordination and subordination
The all-purpose linker në ties a modifier or relative clause to its head: kanla në ‘ima “lone lantern” (T3), xwa’m në na-lhuq-na “a captain who went to the deep” (T23). The coordinator iwan “and” joins clauses and phrases (T1, T14, T21); the contrastive ka “but / or” sets things against each other (T8, T28). The subordinator pan “if / when” opens a conditional, whose consequence takes begun na-:
(T25) Pan qw'edl-ën=tul 'i qëp'aq-q'was, na-pot kitul. if seize\WEAK-PV=1pl.CREW TOP curse-gold, BEG-sink 1pl.CREW "If we take cursed gold, we go down."
12. Non-verbal predication and registers
A noun, modifier, or demonstrative predicates directly, with no copula; the predicate comes first, the ‘i-topic after: Haana ‘i lhaq=ki “The sea is glassy-calm” (T2); Qoq’op’lhax siya “She is a ghost-ship” (T24); q’was ‘i q’was “gold is gold” (T28).
Speech runs in three social tiers, and the choice of word places the speaker: the quarterdeck (high, used to and about the captain), the crew (neutral), and the bilge (low: used downward, or to and about landlubbers). Core verbs come in triplets: “come” is ca’me / këme / xwitna, “speak” is ‘yana / ‘yan / wëqwa. In the text, when the captain comes up she ca’mes and the navigator ‘yanas to her (T10), high words marking deference. And the dead captain of the prize did not simply die: she na-lhuq-na, “put out to the deep” (T23), the quarterdeck’s honorable death, literally go-seaward, the very directional that elsewhere means the hunt.
13. Syntax
Lhawën is predicate-initial. The unmarked order is Predicate – Agent – (Locus) – Topic, but because the voice already tags every role, constituents move freely for emphasis; the ‘i-topic gravitates to the end as the clause’s pivot. When the agent is a non-topic actor it is not a free word but the enclitic on the verb, so the “Agent” slot can be filled inside the predicate:
Discourse prominence is managed by choice of voice: the narrator stays in actor voice while he is the news, shifts to plunder voice when the gold becomes the point, to locus voice for the horror of the empty deck, and to conveyance voice for the means of escape. The three obligatory deictic systems (case, horizon, and bearing) mean a single Lhawën clause reports who did it, whether it can be seen, and where it lies on the wind and the coast.
14. The spoken language
Lhawën is the polite form; the common Saltwashed speak its spoken form, Lhawen. The two names are the same word. The schwa of Lhawën fallen in with plain e.
The spoken language is not written. Its grammar and pronunciation are not formalized and vary among settlements. There are no orthographic conventions for writing it. Educated people regard it as careless speech or slang.
The spoken language is unlikely to be spoken to superiors. Whether it happens depends on the speaker’s level of education. Being unable to speak the polite language can be a reason to look down on someone.
Final glottals, ejectives and glottalized sonorants raised a high tone on their vowel and then let go their constriction; final fricatives left a low tone; the harsh uvular series first coloured its vowel (i→e, u→o, a→o) and then merged away (q→k, qh→h, qw→kw, qhw·xw→w); the affricates smoothed (c→s, tl→t); medial ejectives lost their pop, surviving only word-initially; schwa merged to e; and length and almost every coda were lost, leaving a (C)(w/y)V(n/l/lh) syllable structure. A few signatures remain such as the lateral lh, rare initial ejectives, and the s/lh+stop onset.
The sound changes in the most common spoken dialects were:
Tonogenesis. The old laryngeals turned into tone. A word-final glottal stop, ejective or glottalized sonorant raised a high tone on its vowel and then let its constriction go; a final fricative left a low tone as it fell (only the lateral lh stayed on as a coda); a final plain stop or affricate left a mid, “checked” tone; and a word-initial ejective likewise lent its syllable a high tone. The three register tones, high á, mid a, low à, were formed here. They now carry much of the grammatical load the lost consonants once did.
Onset register. Word-initial ejectives survived (as in p’at’ → p’á “hardtack”), but every ejective and glottalized sonorant inside a word is no longer glottalized.
Codas, clusters, and lenition. Almost every coda went away. Final stops and affricates dropped (a uvular colouring its vowel on the way out); m and n neutralized to n; a final glide melted into the vowel, -w rounding it and -y fronting it; only n, l, and the signature lh survived as codas. Onset clusters reduced to the consonant nearest the vowel, sparing the licensed s/ɬ + stop and any consonant + glide. A lone plain stop between vowels voiced (p t k kw → b d g gw) which is why a root keeps its voiceless stop word-initially (kanla “lantern”) but shows a voiced one when a vowel-final element is fixed in front of it (‘na- + kanla → náganla “corpse-light”; iiq + tii → edi “grog”).
The uvular purge. The uvular series first coloured its neighbouring vowel (a → o, i → e, u → o, ë → o) and then merged away: q → k, qw → kw, q’ → k’, qh → h, qhw · xw → w, x → h. The uvulars survive now only as a shadow in the vowel.
Smoothing. The affricates softened (c (ts) → s, tl → t) while lh was kept, and any ejective that had reached a medial slot was flattened, leaving ejectives only word-initially.
Vowels and repair. Schwa, the spine of the old tongue, merged into e; vowel length was lost; and where falling consonants had left two vowels abutting, a glide (y or w) was slipped between them. The result is a syllable structure (C)(w/y)V(tone)(n/l/lh). The lateral lh, rare word-initial ejectives, and the s/ɬ + stop onset remain.
Polite (Lhawën)
Spoken (Lhawen)
gloss
lhax
lhà
ship
qw’etl
kw’é
seize
q’was
k’wò
gold
xwa’m
wán
captain
’mëq
mó
fog
Lhawën
Lhawen
the tongue itself
Because so many distinctions converge to so few shapes, the spoken form has new homophony: polite lhaq “sea”, lhuq “the deeps” and lho “astern” all fall together as lho, and xwa’m “captain” and ’wam “landlubber” both become wán. The spoken language leans on context, and letting tone do some of the work the lost consonants once did.
Puns in the spoken language are a source of cultural associations. For example, the sea is associated with favor (lho). A cutlass is associated with waves (só). A sharp look is said to pierce the soul like a talon (lhé). A lighthouse flows into the cliff it’s built on in popular imagination (k’ó), and both are thought of a wind-swept places. Both bronze and debt are associated with things that weigh us down (hòlh). The crew has always been associated with a haven (tin).
15. Irregularities
The polite speech contains a handful of lexical and morphological irregularities:
Invariant verbs. A few high-frequency verbs (muxw “rove”, pot “sink”) never take the stem mutation, even where the rule would predict one (T12, T25).
The lone heavy syllable.iiq “rum” is the one root that breaks the bimoraic limit (long vowel and coda); it is best read as a diphthong, and it is the only such holdout (§1.4).
A frozen dual. “Ten”, mëwec’, is literally “two hands”, yet it uses the old dual prefix më- rather than the living numeral k’et “two”, a relic the counting system no longer forms productively (§8).
Homophony.k’aw is at once “you” (2sg), “wind”, and “windward”, and the enclitic =tul is both the crew-inclusive agent (“we, all aboard”) and the leeward bearing. Distinct origins, identical shapes; only the clause tells them apart (§4.3, §6).
Suppletive registers. The everyday verb has no regular high or low form: “come” is ca’me / këme / xwitna and “speak” is ’yana / ’yan / wëqwa across quarterdeck, crew and bilge, unrelated roots chosen by whom one addresses (§12).
A lexicalised bearing. Seaward -lhuq means “toward the hunt” everywhere except of a captain’s death, where na-lhuq-na “put out to the deep” is the quarterdeck’s honourable “she died” (§12).
Glottal-final roots. A root that already ends in the glottal stop, like paha’ “share”, cannot harden any further, so its “in-hand” stem is identical to its base: a gap in the mutation (§2).
The gold-cluster. q’was “gold” carries a rare onset cluster the language otherwise forbids. Compounds inherit the spelling (Q’wastin “Goldhaven”, Q’wasmëk’ “Goldsail”). The spoken language preserves both segments as k’wò.
16. Lexicon
Verbs are cited in their base form; the hardened “in-hand” and weakened “in-chase” stems follow by the regular mutation. A few high-frequency motion verbs (muxw “rove,” pot “sink”) are invariant and do not mutate. Grammatical morphemes documented in earlier sections are gathered again here for completeness. Spoken forms are given in parentheses.
Sea, sky & weather
lhaq (lho) sea · lhuq (lho) the deeps, seaward · qhatl’ (hó) “abyss” · k’aw (k’ó) wind · haana (hana) glassy calm · c’aw (só) wave · ‘lanu (lánu) swell, long wave · qhwam (won) storm · qësliqw’ (kòlé) squall · ‘mëq (mó) fog · ‘mat’ë (mádé) fog-bank · ‘ëtluqw’ (‘etó) the undertow · o’mluk’ (ónlú) whirlpool · qhëmii (homi) deep current · q’ëqhwu (k’ówo) brine · lhëk’ik’ (lhegí) sea-foam, spray · wënëc (wene) doldrums, dead calm · lho (lho) dark, astern · hëq’on (hekón) horizon, the rim · sumal (sumal) sky · mëcë (mese) moon · liwë (liwe) dusk · wëm (wen) breeze · mumëë (mume) a hum, a drone · ‘nakanla (náganla) St Elmo’s fire (soul-lantern) · qa’mq’umë (kónkóme) red dawn (that warns of an incoming storm) · qhwosc’aw (wòsó) freak wave (downing wave) · taa (ta) year, season · ‘male (mále) warm.
këtik’ (kedí) gull, sea-bird (Saltwashed gulls can bend solid metal and tolerate bronze that has been cooking in the sun for hours. They have some muscular, dinosaur-like features.) · lëc’atl’ (lesá) eel, sea-serpent · muqw’ (mó) leviathan, great sea-beast · qhwam (won) stormcaller (a mythical creature) · lhim (lhin) fish (the catch, a fish) · lhqin (lhkin) silverfish, shoalfish (the schooling food-fish), bait · tlup’ (tú) deepfish, grouper, great cod · xëp (he) corpsefish (flatfish, sole) · nëq’ (nó) spinefish (rockfish) · cutl’ (sú) biter (sea-pike) · katl (ka) shellfish, crab · lap’ (lá) roe, spawn · c’aqhwal (sáwol) shark · kanlalhim (kanlalhin) lantern-fish.
People & rank
tin (tin) crewman (plural tin-tin crew) · kitul (kidul) all-hands, the whole company · xwa’m (wán) captain · mëlqu (melko) navigator · ‘wam (wán) landlubber · lhetl (lhe) lad · noq’a (nokó) comrade, sworn brother · op’ (ó) old · k’an (k’án) kin · ‘na (ná) soul · qoq’op’ (kokó) ghost · Lhaxwëm (Lhawen) the Saltwashed (the people) · Lhawëm (Lhawen) the Laven (the ethnic group) · tu’wëm (tuwén) outlaw · tlamuwam (tamuwan) Ledger-agent, enforcer · t’enke (t’énke) share, lot · t’enkewam (t’énkewan) quartermaster · t’anlhic (t’ánlhi) the Articles · lhosëp‘ (lhosé) given to a captain who has been voted down · k’atlwam (k’áwan) “surgeon” · lhicwam (lhiwan) rollmaster (sometimes insulting name for a bookworm) · imi (imi) sister.
‘i (‘i) topic · sa (sa) agent · xa (ha) locus · qu (ko) goal · hi (hi) / kan (kan) personal article · në (ne) linker · iwan (iwan) and · ka (ka) but, or · pan (pan) if, when · pëq’ (pó) not (nouns, identity) · ti’ (tí) not (irrealis, neg-imperative) · wa’ (wá) none, negative existential · ‘an (‘an) there is · olu (olu) again · hëq (ho) now, at last · se (se) quiet, still · qw’ë (kw’ó) aye · ‘në (né) nay.
Affixes & clitics
na- begun (realis) · më- actor voice (emphatic; AV otherwise unmarked) · -ën plunder voice · -an locus voice (also nominal -an “place-of,” as in Yilan “the Lookout”) · ci- conveyance voice · =ki hull-up · =lha hull-down · =’wa over-horizon · -me ventive · -na itive · -tin landward · -lhuq seaward · -k’aw windward · -tul leeward · -p’ëlh returnative · =a imperative · =ga polar question · qw’ac- plunder class · wa’- earned class · -wëm folk, people (in ethnonyms: Lhawëm, Lhaxwëm) · -wën tongue, speech (in glottonyms: Lhawën “the Laven tongue”).
The seven seas
Sea-names are a quality-word before lhaq “sea”: kup’ (kú) brass → Kup’lhaq (Kúlho) the Sea of Brass · kawye (koye) mead → Kawyelhaq (Koyelho) the Sea of Mead · qa’m (kón) blood → Qa’mlhaq (Kónlho) the Sea of Blood · tl’iq (té) ice, frost → Tl’iqlhaq (Télho) the Sea of Ice · ‘mëqh (mò) veil, shroud → ‘Mëqhlhaq (Mòlho) the Sea of Veils · seqh (sè) silence, hush → Seqhlhaq (Sèlho) the Sea of Silence · lëtl (le) star → Lëtllhaq (Lelho) the Sea of Stars.
qwëm (kwon) drink, a draught, beverage · tii (ti) fresh water, sweet water · iiq (e) rum · iiqtii (edi) grog, watered rum (iiq + tii) · kawye (koye) mead · qël (kol) small-beer, weak ferment · skiq (ske) spirits, strong liquor · cëqh (sò) a bitter brew, brine-tea · moxwu (mowu) horn-cup · iiqpaha’ (ebahá) rum ration · iiqmët’u (emedú) rum courage · iiqsip’ (esí) hangover.
Faction, council & coalition
t’ëq’ (t’ó) following, faction, party, a bloc (partisan t’ëq’wam) · t’ëq’wam (t’ówan) partisan · tlëswëq (tèwo) coalition, league, confederacy (the generic term; the Gone’s own is Wëtllhaq) · tënces (tensè) council, assembly (gathered captains) · t’an (t’án) pact, accord, sworn alliance · qhwës a vote, a voice in council, a show of hands · qhëtl’ bond, obligation · talip (tali) parley.
Piracy
qw’ëltlap’ (kw’óltá) mutiny · moho’n (mohón) maroon · q’anatuk (k’ónadu) keelhaul · ulëqh (ulò) scurvy · kwat’eqw (kwadé) swagger · c’op (só) wretch · yicap (yisa) layabout · qoq’op’lhap/la’ëq’lhap (kokólha/la’ólha) Jolly Roger (ghost-flag/bone-flag) · lhënwënii (lhenweni) treasure map · ‘yek’lhëtl’ (yélhé) hook hand · p’ant’up (p’ántú) bronze leg · siqwtin (sedin) old salt · k’ëp’op’ (k’ébó) treasure, hoard · lhënsëp’ (lhensé) spot marked by X · p’ee (p’é) fire, to burn.
The Free Seas
tu’wa (tuwá) gone, named-no-more (the verdict of outlawry) · tu’wëm (tuwén) the Gone (the exiled free captains) · tlamu the Ledger (the money-council that rules the isles) · tlamuwam Ledger-agent · wëtl (we) free, unbound · Wëtllhaq (Welho) the Free Seas (the confederacy of the Gone) · qen (ken) song, shanty · tlëp (te) brink, verge.
The qhaxi’m (the writing)
qhaxi’m (hohín) “the scoring,” the Saltwashed script, a featural abugida whose letters are worn-down pictures of sea-things (see p’ëqwo spar, t’ënop’ anchor-stone, k’ëqhwon reef, këtik’ gull, and the rest above), with each base sign carrying an inherent schwa.
17. Writing system
Lhawën is written in a featural abugida, the qhaxi’m (“the scoring”). A consonant sign carries an inherent vowel, vowels and codas are added to it, and the shapes of the signs encode the sounds’ features rather than being arbitrary. It has a small core of about forty signs and builds everything else by composition, recycling and omission.
The base signs
Twenty-three base signs carry the inherent vowel schwa: the bare sign for t already reads të. The chart gives each sign’s value, the word whose picture it descends from, and that word’s sense.
Sign (Cë)
Value
Source-picture
Sense
‘ë
glottal stop / vowel-carrier
‘ëtluqw’
the undertow
pë
labial stop
pëk’u’l
barnacle
p’ë
labial ejective
p’ëqwo
spar
të
coronal stop
tëtle
waterline
t’ë
coronal ejective
t’ënop’
anchor-stone
kë
velar stop
këtik’
gull
k’ë
velar ejective
k’ëqhwon
reef
së
sibilant fricative
sëno
signal-smoke
lhë
lateral fricative
lhëk’ik’
sea-foam
xë
velar fricative
xëp’i
shoal
qhë
uvular fricative
qhëmii
deep current
hë
glottal fricative
hëq’on
the horizon
q’ë
uvular ejective
q’ëqhwu
brine
cë
alveolar affricate
cëtë
net
c’ë
alveolar ejective affricate
c’ët’u
knot
tlë
lateral affricate
tlëpeq
driftwood
tl’ë
lateral ejective affricate
tl’ëk’ix
harpoon
më
labial nasal
mëcë
moon
në
coronal nasal
nëhë’n
tidal flat
lë
liquid
lëc’atl’
eel
wë
labial glide
wënëc
dead calm
yë
palatal glide
yëk’ë’n
halyard
që
uvular stop
qësliqw’
squall
Vowels, length and codas
Schwa is the unwritten default. The other five vowels are diacritic marks attached to the base, themselves descended from pictures of vowel-initial words: –a (ak’ë “oar”), –e (eti “ember”), –i (ikw’ëtl “ice-floe”), –o (o’mluk’ “whirlpool”), –u (ulhxek “kelp”). A single coda is written as the consonant’s own sign in a vowel-suppressed form. The one licensed onset cluster, s/ɬ + C, is a small element prefixed to the base.
The block is bimoraic by construction. It can take a length-mark or a coda. Two further marks complete the apparatus. Labialization (kw, qw, xw, qhw, and the labialized ejectives kw’, qw’) is a small rounding loop on the velar or uvular sign. A glottal tick serves the rare glottalized sonorants (‘m ‘n ‘l ‘y ‘w), set on the plain sonorant base. Because the ejectives are full letters in their own right, this tick is the script’s one purely featural diacritic.
Spelling
Qhaxi’m under-writes what it can afford to. Vowel length (barely 1% of syllables) is usually unmarked, the predictable word-initial glottal stop goes unwritten before a vowel, and a few high-frequency irregulars such as iiq “rum” survive as single logographs.
The base signs are available as a TrueType font, Qhaxim Regular (Qhaxim-Regular.ttf). It is a display font containing the twenty-three base letters, the five vowel marks, and a space.
Lower-case types the plain letter, the shifted (capital) key adds the ejective (k → kë, K → k’ë). The full layout:
Group
Type…
…to get
glottal / vowel-carrier
'
‘ë
plain stops
p t k q
pë të kë që
ejective stops
P T K Q
p’ë t’ë k’ë q’ë
affricates
c / C · j / J
cë / c’ë · tlë / tl’ë
fricatives
s f x X h
së lhë xë qhë hë
nasals · liquid · glides
m n · l · w y
më në · lë · wë yë
vowel marks
a e i o u
–a –e –i –o –u
So lhax “ship” is typed f a x, tin “crew” is t i n, and qw’etl “seize” is Q e j (the rounding loop and coda being supplied by hand in this version). Note the few non-obvious keys: f = lh, j/J = tl/tl’, and x/X = x/qh. Every sign sits at a fixed code point in the Private Use Area, beginning at U+E000 in the above order.
18. Sample texts
Default registers are shown first.
Adu, adu! “heave, heave” Polite: Atu, atu! (not said in living memory)
Kwen ‘i lha. “strike the colours” Polite: Kwën ‘i lhap.
Kobó ko k’ó! “Curse this wind!” Polite: Qëp’aq qu k’aw! (not said)
K’wò=wá, k’ó siya. “gold over-horizon is only wind” Polite: Q’was=’wa, k’aw siya.
Tl’et’ qu T’anlhic. “sign on” (swear to the Articles) Spoken: Té ko T’ánlhi. (not said)
Tí tali ‘i wán — k’ó! “The captain won’t parley — blast it!” Polite: Ti’ talip ‘i xwa’m — q’ak’! (possible if the speaker is an aristocrat or a bookworm)
Sáwol=lha! Ko-tin=a! “Shark on the rim! Make for haven!” Polite: C’aqhwal=lha! Qu-tin=a!
K’ëp’op’=ki! T’ig-ën=a xa xum! “Treasure — in plain sight! Stash it in the sand!” (Polite speech sounds more authoritative. More likely in imperatives if the situation is not an emergency.) Spoken: K’ébó=ki! T’í-en=a ha hun!
Na-pahá-en ‘i t’énke sa T’énkewan, ko hagidul. “The quartermaster divided out the shares to every hand aboard.” (more likely if said to a deck hand) Polite: Na-paha’-ën ‘i t’enke sa T’enkewam, qu xakitul. (more likely if said to the captain)
Náganla ha sél! Na-ló ‘i kidul. “Corpse-light on the mast! The crew took fright.” Polote: ‘Nakanla xa c’ël! Na-loc’ ‘i kitul.
Té=a ko T’ánlhi, ka tan-tin=a! “Swear to the Articles or clear off home!” Polite: Tl’et’=a qu T’anlhic, ka tlam-tin=a!
Na-mu nú e liwe; ‘an esí k’óme. “I drank rum at dusk; comes dawn, the reckoning.” Polite: Na-‘mu nu’ iiq liwë; ‘an Iiqsip’ q’umë. (more likely as a line of poetry)
Kanla ‘Ima — “The Lone Lantern”
The complete tale from which every example above is drawn, in Lhawën with a free translation beneath each sentence. Writing always uses the polite speech. There is no standard way to write the spoken language.
Scene I — The dusk watch
T1. Liwë. Na-yi~yil nu' 'ima, xa c'ël, iwan na-woo 'i 'mëq=lha qu-lhuq. Dusk. I keep watch alone, aloft at the mast, and the fog drifts hull-down out to seaward.
T2. Wa' në k'aw. Haana 'i lhaq=ki. There is no wind. The sea lies glassy-calm.
T3. Na-tuk' nu' sa kanla në 'ima=lha, xa lhuq. I spot a lone lantern, hull-down, out to seaward.
T5. Na-qi'l nu': "Lhax=lha! Kanla qu-lhuq!" I hailed down: "A sail, hull-down! A lantern, seaward!"
T6. Na-sut'ë-me hi Qw'iq', 'i mëlqu në op'. Old Qw'iq' the navigator clambers up to me.
T7. Na-qhëwti siya xanu': "'Unu 'i tug-ën=mu, lhetl?" He asks me: "What do you see, lad?"
T8. Na-k'ot'ë nu': "Lhax=lha — ka wa' në lhap." I answer: "A ship, by the look of it — but no colors."
T9. "Wila 'i tin xa lhax='wa?" Na-k'ot'ë nu': "Ti' tug-ën=ku — wa'." "How many aboard that ship?" I answer: "None I can see — none at all."
T10. Na-ca'me 'i xwa'm. 'Yana hi Qw'iq' qu-ta'an: The captain comes up. Qw'iq' addresses her, with respect:
T11. "Q'waslhax='wa siya, xwa'm. Qw'edl-ën=ga=ta' siya?" "A treasure-ship, they say, Captain. Will you take her?"
T12. Na-k'ot'ë 'i xwa'm: "Qw'edl-ën=tul siya. Muxw-k'aw=a, k'am — p'el!" The captain answers: "We take her, all of us. Windward, lads — quick!"
Scene III — The chase
T13. Na-muxw-k'aw kitul. Qw'edl-ën 'i q'was='wa — ti' qw'etl'-ën hëq. We stand to windward. The gold is being chased — not yet seized, not yet in hand.
T14. Atu~atuk 'i tin-tin sa 'mus, iwan na-muxw-k'aw-na na'm. The crew haul on the ropes, and we (not you) run away to windward.
T15. Hëq! 'Inki 'i kanla=ki — pëq' =lha olu. At last! Here is the lantern, hull-up now — hull-down no longer.
T16. "Këme=a! Qwët'ë-me=a 'i qakwëm, qu-tul!" "Closer! Row the longboat over — leeward!"
T17. Na-loc' hi Tlët', 'i mu në tin; p'u~p'usec' siya. Tlët', one of the crew, takes fright; he whispers and whispers.
Scene IV — Boarding
T18. Na-sut'ë kitul xa p'ip në xap', qu p'ëq në tlaq. We clamber over the cold rail onto the empty deck — all of us.
T19. P'ëq 'i na-tuk'-an=tul në wa' në 'na. The deck is the place where we found not a soul.
T20. K'i~k'i'lëq 'i q'an=ni; se 'i lhax — pëq' yëk' olu. Her keel creaks and creaks; the ship lies still — nothing stirs.
T21. 'An 'i q'was=ki — hap'pë, iwan xap' qu 'yek'=ku. There is the gold, hull-up — heavy, and cold to my hand.
T22. Iwan, xa p'ëq: la'ëq'. And on the boards: bones.
Scene V — The turn
T23. Na-qaxwo hi Qw'iq': "'Inki 'i lhax sa xwa'm në na-lhuq-na suman." Qw'iq' remembers: "This is the ship of a captain who put out to the deep, a season past."
T24. "Qoq'op'lhax siya," na-tl'et' siya. "Qëp'aq-q'was." "A ghost-ship," he swears. "Cursed gold."
T25. "Pan qw'edl-ën=tul 'i qëp'aq-q'was, na-pot kitul." "If we take cursed gold, we go down."
T26. Na-'yan hi Tlët': "Ti' qw'edl-ën=a! Qu-tin — olu!" Tlët' cries: "Don't take it! Back to the haven!"
T27. K'u~k'ukwa 'i xwa'm. "Lhëk'=ga?" na-'yan siya. The captain laughs and laughs. "True, is it?" she says.
Scene VI — The taking
T28. "Qëp'aq ka pëq'-qëp'aq, q'was 'i q'was." "Curse or no curse — gold is gold."
T29. Na-qw'etl'-ën=tul 'i q'was=ki! We seized the gold — in hand now, and I saw it done!
T30. Na-ci-qw'etl'-na=tul 'i qakwëm. The longboat was what we carried it off in — across and away.
T31. Qw'ac-q'was, na-paha'-ën=tul; wa'-q'was, pëq'. Paha' qu xakitul. Plundered gold we share, every soul aboard; earned gold we do not. A share for us all.
T32. Na-qw'etl'-ën=tul 'i su' në asët, iwan 'i qhin. We took three chests — and the silver too.
T33. "Qw'edl-p'ëlh=a, k'am! Tlam-tin=a!" "Take it and run home, lads! Away to landward!"
Scene VII — Away, and the telling
T34. Na-tla'm-tin kitul; na-kwën 'i qoq'op'lhax xa lho. We ran for landward; the ghost-ship faded astern.
T35. Lha~lhalhik 'i kanla=lha, iwan tu'wa — na-kwën. The lantern still glimmered, hull-down, then yonder over the rim — gone.
T36. Mumëë xa wëm; ti' 'yan-ën=tul 'i lhax='wa. A hum on the breeze; we name that ship no more.
T37. Na-'mu kitul sa iiq, xa tin — qu siya. In the haven we drank rum to her, all of us.
T38. "Q'was=ki, q'was 'i q'was. Q'was='wa, k'aw siya." "Gold hull-up is gold; gold over the horizon is wind." — i.e. gold seen whole is gold; gold merely heard-of is wind.
T39. Tu'wa 'i 'yan sa kanla në 'ima. Hëq. That is the tale of the Lone Lantern. So it ends.
No, no, my love, these are not tears you see. Sleep, only sleep, has dimmed the kohl of my eyes. At the pale break of night you watch the dew lie on the lotus leaf, and you suppose the flower has blossomed out of grief. This is no more than a winter cloud brushed by a false and treacherous mist, an illusion risen wide awake. No rain has come. Why, poet? For nothing, nothing at all did you make yourself the grit in every eye? Setting out to bring another to tears, you have wept, in the end, for yourself alone.
Whenever I try to explain how a piece of software works, I hit a library whose insides are off-limits. But to understand programming, looking at the libraries is sometimes the most important thing.
Let’s say you’re reading Martin Kleppmann’s Designing Data-Intensive Applications. It discusses B-trees and log-structured storage, Bloom filters, consistent hashing, snapshot isolation, vector clocks and CRDTs. What if you want to look at a database application where such features are implemented in a transparently visible library?
This is the kind of problem Orpheus is meant to solve. It runs on Ubuntu (and probably other distros). First install Rust and glibc. Open a graphical terminal and run:
git clone https://github.com/thoriumrobot/orpheus
cd orpheus
sudochmod+x ./latte
(enter your root password when prompted)
./latte
Orpheus is a small but complete computing environment that lets you understand it all the way down, making it convenient to teach from.
Orpheus has a persistent state. All actions get written down as an event in an append-only log. To find the current state, you replay the log from the start, folding each event into the one before. Because the replay is deterministic, the same events always rebuild the same state.
This state can persist across machines. Each machine keeps its own copy of the log. They keep each other current over a network. A machine tells the others which events it has, asks for the ones it lacks, and passes along new ones as they happen. Every machine replays the events in one fixed order. Two machines that have seen the same set of events end up in exactly the same state regardless of the order those events arrived in.
Inside the environment, high level apps are written in a simple language resembling a functional fragment of Rust combined with Lisp. Expressions are like Lisp. E.g. (add 2 3) is 5. Underneath, there are only numbers and pairs, written [a b]. Everything else is made of pairs. A list is a chain of pairs that ends in a 0, so [1 2 3 0] has three elements. Every piece of a program is an expression that produces a value.
You write a function with fn. A definition is a name, the arguments in brackets, and the expression it returns:
sq = fn [x] -> (mul x x)
So (sq 3) is 9.
Libraries are lists of such definitions. You can select a function name and click the Def button on the top bar to display the function definition in the system log.
I plan to use this system to create a free course where every algorithm can be traced down to first principles.
Oh maiden from a far-off island, I know you, I know. Stranger from the land of cinnamon, so sweet, soft-spoken. On the calm Pacific sea, through typhoon and the storm, I heard your restless tune. Do you play a wild flute of mountain cane? The woods are washed all over in a spring-gold smile. Deep in the coils of your hair fresh cardamom blossoms sway, oh flower-loving maiden.
An ex-member of Hindutva talks about his experience:
There is so much right-wing propaganda because right-wing propaganda outlets are hiring in massive numbers. The Indian right hires “IT cells”, which are exactly what they sound like.
Right-wing propaganda paints those crushed by the system as losers. The pressure generated by the system triggers the effects of Terror Management Theory, causing the masses to cling to their institutions. These institutions are in turn led by right-wing propagandists. The right buys off every community leader who attains popularity and silences any resistance they encounter. It’s a downward spiral.
As a STEM student, even I was offered multiple jobs in research and IT (not in propaganda) associated with right-wing organizations, which I declined. Leftists are currently not creating a comparable number of jobs programs associated with ideologically left-wing institutions. Until this changes, the world will keep looking the way it does right now. In order to change this, I propose Accountable Planning as the way forward: