hamming distance

Disyllabic roots in greyfolk language, 2: creating the database

In my end of February report, I mentioned that I was able to create a database to help me create disyllabic roots while preserving Hamming distance. One big part of that was devising a macro for Excel that would do the following:

  • Range A is a bank of possible (according to the rules of my language) disyllabic roots. I generated this using Zompist’s Gen.
  • Range B is where I input the roots I have chosen.
  • Range C is a bank of roots that conflict with the roots in Range B. I also generated this using Gen with some really roundabout tricks.
  • Rule 1: If a cell appears in Range A and Range C, it is highlighted yellow.
  • Rule 2: If a cell appears in Range A and Range B, it is highlighted green.
  • Rule 3: If a cell appears in Range B more than twice, it is highlighted red.
  • Rule 4: If I a cell appears in Range B and Range C, it is highlighted red.
  • Rule 5: Otherwise, a cell should not be highlighted.

Thus, any white cells in Range A were roots that could still be used because they didn’t conflict with anything else. Even though the highlighting was all done by a macro, there was still a significant portion of manual work that took a few hours. Much more time went into figuring out how to get the most efficient set of disyllabic roots. By that, I mean that I had to figure out how to get as many roots as possible that didn’t conflict with each other from the total bank of possible roots. It always comes back to Hamming distance!

Macro for disyllabic roots database
Sub HighlightDuplicates()

    'Keyboard Shortcut: Ctrl+Shift+D

    Application.ScreenUpdating = False

    Dim ws As Worksheet, t0 As Single, t1 As Single
    Set ws = ThisWorkbook.Sheets("Database")
    t0 = Timer

    'Rule 5: Otherwise, a cell should not be highlighted.
    ws.cells.Interior.Color = xlNone

    Const RANGE_A As String = "B1:E2300"
    Const RANGE_B As String = "G1:G2300"
    Const RANGE_C As String = "I1:AH2300"

    Dim dictA As Object, dictB As Object, dictC As Object
    Set dictA = CreateObject("Scripting.Dictionary")
    Set dictB = CreateObject("Scripting.Dictionary")
    Set dictC = CreateObject("Scripting.Dictionary")

    Call buildDict(dictA, ws.range(RANGE_A))
    Call buildDict(dictB, ws.range(RANGE_B))
    Call buildDict(dictC, ws.range(RANGE_C))

    'Rule 1: If a cell appears in Range A and Range C,
    'I want them highlighted yellow.
    'Rule 2: Then, if a cell appears in Range A and Range B,
    'I want them highlighted green.
    
    Dim cell As range, key As String
    For Each cell In ws.range(RANGE_A)
        If Len(cell.Value) > 0 Then
            key = CStr(cell.Value)
            If dictC.exists(key) Then cell.Interior.Color = vbYellow
            If dictB.exists(key) Then cell.Interior.Color = vbGreen
        End If
    Next

    For Each cell In ws.range(RANGE_C)
        If Len(cell.Value) > 0 Then
            key = CStr(cell.Value)
            If dictA.exists(key) Then cell.Interior.Color = vbYellow
        End If
    Next

    For Each cell In ws.range(RANGE_B)
        If Len(cell.Value) > 0 Then
            key = CStr(cell.Value)
            If dictA.exists(key) Then cell.Interior.Color = vbGreen
        End If
    Next

    'Rule 3: Then, if a cell appears in Range B more than twice,
    'I want them highlighted red.
    'Rule 4: Then, if a cell appears in Range B and Range C,
    'I want them highlighted red.

    For Each cell In ws.range(RANGE_B)
        If Len(cell.Value) > 0 Then
            key = CStr(cell.Value)
            If dictB.exists(key) Then
                If dictB.Item(key) > 1 Then
                    cell.Interior.Color = vbRed
                End If
            End If
        End If
    Next

    For Each cell In ws.range(RANGE_B)
        If Len(cell.Value) > 0 Then
            key = CStr(cell.Value)
            If dictC.exists(key) Then
                If dictC.Item(key) > 0 Then
                    cell.Interior.Color = vbRed
                End If
            End If
        End If
    Next

    For Each cell In ws.range(RANGE_C)
        If Len(cell.Value) > 0 Then
            key = CStr(cell.Value)
            If dictB.exists(key) Then
                If dictC.Item(key) > 0 Then
                    cell.Interior.Color = vbRed
                End If
            End If
        End If
    Next
    
    t1 = Timer
    
    'MsgBox "Completed in " & Int(t1 - t0) & " seconds"

    Application.ScreenUpdating = True

End Sub

You can click on the plus icon or the name to expand that section to see the macro. It’s a biggun, so I decided that it was better to default to it being collapsed and not immediately assaulting any eyeballs.

Now, to even generate Range A, as I said, I used Zompist’s Gen tool. Making rules to create all possible disyllabic roots in greyfolk language was easy.

Categories for all possible disyllabic roots
C=mnptksylh
S=yl
A=a
T=mnl

Rewrite rules for all possible disyllabic roots
hl|h
hy|h
lh|l
ll|l
yy|y
mh|m
mm|m
nh|n
nn|n

Syllable types for all possible disyllabic roots
CACA
CASA
SACA
SASA

CSACA
CSASA
CATCA
CATSA
SATCA
SATSA
CACSA
CACAT
CASAT
SACSA
SACAT
SASAT

CSATCA
CSATSA
CACSAT
SACSAT
CSACSA
CSACAT
CSASAT
CATCSA
CATCAT
CATSAT
SATCSA
SATCAT
SATSAT

CSACSAT
CATCSAT
SATCSAT
CSATCSA
CSATCAT
CSATSAT

Of course, the output type was for all possible syllables.

To generate Range C in Gen, I had to figure out some really roundabout tricks, and, even then, I still had to generate it one chunk at a time. Think of each disyllabic root as a STUVWXYZ map where each letter corresponds to a phoneme. S and W are the first position of their respective syllable and can be «m, n, p, t, k, s, y, l, h». T and X are the second position of their respective syllable and can be «y, l» or ‘-‘. U and Y are the third position of their respective syllable, but, when working with roots, both of them are always «a». Finally, V and Z are the fourth position of their respective syllable and can be «m, n, l» or ‘-‘. For example, the root «myaman» would be ‘mya-m-an’ because the fourth position of the first syllable and the second position of the second syllable are open. If you look at the above Gen rules, it should be clear that STUVWXYZ is essentially CSATCSAT.

Then, to figure out the roots that wouldn’t be compatible with other roots, which is what Range C is, I had to switch the process for ABCDEFGH. Each letter corresponds to the letter in the same position in STUVWXYZ, but each letter of ABCDEFGH take the values of phonemes that do not have enough Hamming distance from those in STUVWXYZ. So, if S=m, then A=mnp because «m, n, p» conflict with «m» according to my Hamming distance parameters. Oh, I also set a meaningless Q=xxxxxx so I could see the separation between ABCDEFGH and STUVWXYZ at a glance.

Categories for «myaman»
A=mnp
B=yl
C=a
D=mnl
E=mnp
F=yl
G=a
H=mnl
Q=xxxxxx
S=m
T=y
U=a
V=-
W=m
X=-
Y=a
Z=n

Syllable types for conflicting roots
ATUVWXYZ
SBUVWXYZ
STCVWXYZ
STUDWXYZ
STUVEXYZ
STUVWFYZ
STUVWXYH

Of course, the output type was for all possible syllables.

Output for «myaman»
mla-m-an
mya-m-al
mya-m-am
mya-m-an
mya-mlan
mya-myan
mya-n-an
mya-p-an
myalm-an
myamm-an
myanm-an
nya-m-an
pya-m-an

From there, it was a matter of removing the dashes. However, an interesting question popped back up. What is the Hamming distance between something like ‘mya-m-an’ and ‘myamm-an’? What about ‘myamh-an’? I went ahead and decided that they were all equivalent (which is actually why ‘myamh-an’ doesn’t generate as I had already taken that into consideration). Because it was a problem I had faced before, I knew how to deal with it. However, another question popped up. What is the Hamming distance between something like ‘myamy-a-‘ and ‘mya-mya-‘? Same thing, I ended up deciding that they were the same as well. Though, they do have enough Hamming distance between them. I just wanted to simplify things and continue to get rid of roots that sounded too alike.

However, I did get some conflicts that weren’t actually conflicts. On the surface, «katya» and «kalya» might seem like they conflict because «t» and «l» conflict in the same position. However, «katya» is «k-a-tya-» (pronounced /ka.tja/) and «kalya» is «k-aly-a-» (pronounced /kal.ja/). So, the «t» and the «l» aren’t actually in conflicting positions.

Anyway, I had to run every planned disyllabic root through Gen, put the output in the database, then format it and remove dashes. It took quite a bit of time to do that manually for over 166 roots—yes, it was more than 166 because I had to add other altered roots at the cost of others after having already processed roots that had to be removed. More than anything else, it was just really repetitive and boring, and I pushed myself so hard during this entire process that I ended up really fried, stressed, and anxious. Oops!

In the next part, I will finally reveal the disyllabic roots!

Disyllabic roots in greyfolk language, 1: planning the roots

In the process of creating the monosyllabic roots the first time (and, by extension, the second time), I had an idea of a few disyllabic roots that I wanted. As «me», «se», and «ke» are the singular personal pronouns, I wanted «mema», «sesa», and «keka» as the plural personal pronouns. That meant, for 4-phoneme disyllabic roots, there was an MM root (‘MaMa’), an SS root (‘SaSa’), and a KK root (‘KaKa’), so I figured that all phonemes would pair with themselves. Furthermore, «me», «se», and «ke» were chosen because MKS is one of the few trios of phonemes that doesn’t conflict with one another (in terms of my Hamming distance parameters). Extending that, I figured I could pair any phoneme with another non-conflicting phoneme and itself. There were a few options available, but the best one ended up being MS, NK, PL, TY with «h» left out. For example, MS worked as follows:

«m» «s»
«m» «mama» «masa»
«s» «sama» «sasa»

It’s basically a Punnett square. So, really, MS = MS, MM, SS, SM in terms of the roots that was created from the pair. There ended up being a few extra that worked, but most of them stopped working later one when I started creating the 5-phoneme disyllabic roots.

Actually making those 5-phoneme disyllabic roots was much trickier. A while back, I figured out that I had two special trios of initial consonants: MKS and NPY. Within each trio, the consonants do not conflict with one another. And no consonants are shared between the two trios. (However, «t» and «l» are left out, and I knew I would have to integrate them later somehow.) I couldn’t cross them with themselves because each phoneme was already paired with itself, and there was already MS, which would conflict in MKS. I figured that I could instead interpolate these special trios with each other to get a bunch of non-conflicting pairs to create 5-phoneme roots, and I was right!

  • MN, MP, MY, KN, KP, KY, SN, SP, SY
  • NM, NK, NS, PM, PK, PS, YM, YK, YS

So, that first set creates «m-a-n-a-», «m-a-p-a-», «m-a-y-a-», «k-a-n-a-», etc. Each root would need an extra phoneme in place of one of those dashes, obviously, to make it a 5-phoneme disyllabic root.

Right off the bat, I knew I couldn’t use KN and NK since I already had those for the 4-phoneme disyllabic roots. Furthermore, that list would create way too few options. Of course, that list also had plenty of holes in it that could be filled, and I spent such a long time trying to figure out what they were. I don’t even know how to explain that process, but I can happily share the results:

  • MN, MP, MY, NH, PH, TK, TL, KP, KS, KY, SN, SP, SY, YL, YH, LM, LS, HM, HT
  • ML, NM, NS, MH, PM, PK, PS, TH, KT, SK, SL, YM, YK, YS, LT, LY, HN, HP, HY

Then, I had to figure out the rest of the pattern to make as many 5-phoneme disyllabic roots as possible. It came to figuring out into which position each of the inserted fifth phoneme would go.

  • MN becomes «m-a-n-a», and one of those dashes has to be filled.
  • I focused on one syllable at a time.
  • For «m-a-», I chose «y» for the first dash, and both «m» and «l» for the second dash (because «m» and «l» don’t conflict).
    • That gives «mya», «mam», and «mal».
  • For «n-a-», I chose the opposite: «l» for the first dash and «n» for the second dash.
    • That gives «nla» and «nan».
  • Crossing those gives «myana», «mamna», «malna», «manla», and «manan».

Then, I did the opposite for NM since it is the inverse of MN. So, the syllables are just switched. «myana» becomes «namya», «mamna» becomes «namam», «malna» becomes «namal», etc. This creates a set of roots that do not conflict with one another. However, some issues did pop up later.

At the time of planning, it looked like I could have 166 disyllabic roots total compared to my expected minimum of 165. Unfortunately, that meager 166 shrunk to 162 when I had to rework the numerals—or, rather, rework the roots so the numerals could fit in the scheme I had created. However, I will share the roots a little bit further down the line.

In the next part, I will talk about the process of creating the root database!

Reworked numerals for greyfolk language

As far as I can tell, I have fixed the numerals to work with my Hamming distance database (that I briefly mentioned in my end of February report), but I don’t want to say these are final. In order to get numerals to work in the way that I wanted them to work, I had to break some other patterns in my database, which is probably going to leave me with even fewer disyllabic roots in the future, but it felt like a necessary sacrifice. Numerals are important—having as many disyllabic roots as possible is also important, but it is less important*.

letter («syun-») number («hu-») name suffix
h 0 «-han»
m 1 «-mam»
n 2 «-nal»
p 3 «-pal»
t 4 «-tla»
k 5 «-kam»
s 6 «-sam»
y 7 «-yal»
l 8 «-lan»
9 «-mla»
A «-nya»
B «-pya»
C «-tyam»
D «-klan»
E «-syal»
F «-myan»
10 «-mamhan»
a «-ha»
e «-he»
i «-hi»
o «-ho»
u «-hu»

Greyfolk language usually uses a duodecimal system, which is 1–9, A–B, 10. However, the numbers are set up to also be compatible with a hexadecimal system, which is 1–9, A–F, 10. Of course, it can work with smaller systems like our typical decimal system, which is just 1–10. I may or may not later create specific words for ‘hundred’, ‘thousand’, ‘million’, etc.

*As I talked about before, what really matters is the number of phonemes in a given root/word in terms of how simple/quick it is to utter. (I still have not found or even looked for a source on that yet, and, even if that is somewhat true, it is obviously not the only factor.) This is a tangent, but I was previously very focused on using every disyllabic root I could, and that led me to using 7-phoneme disyllabic roots. However, if the number of phonemes is so important, then it would make just as much sense to start looking at trisyllabic roots. At a minimum, they will have six phonemes, which is still pretty low, which makes the roots «manasa» and «mansan» comparable thought the former is trisyllabic and the latter is disyllabic.

Reworked monosyllabic roots for greyfolk language

The monosyllabic roots have changed since when I first introduced them. After working on disyllabic roots, my feelings about my original monosyllabic roots changed a bit, and I wanted to make them fit my Hamming distance philosophy better. Previously, the words had the right distance from one another, but the roots didn’t always because I didn’t derive each possible word out of each root. However, when I got to the disyllabic roots, it was easier to focus solely on making sure the roots had the right distance from one another, and creating them that way made more sense because it left the language open for flexibility down the line.

All of the ideas and rules from the original post should still apply because I have gotten a bit more strict in how these were generated. Also, most of them are pretty similar. Now, the differences are quite different because I have allowed for monosyllabic roots with four phonemes/letters in them whereas I tried to keep the limit to three phonemes/letters originally. The more phonemes/letters in a syllable, the ‘heavier’ it feels (to me, at least). Take the word ‘strength’ in English. It is very heavy for just one syllable—there are seven phonemes in that single syllable: /stɹɛŋkθ/. I’m trying to avoid words like that. If I am remembering correctly, words with ‘simpler’ or ‘lighter’ syllables are easier to speak clearly and quickly, which would be why Spanish word equivalents might have more syllables but still be spoken as fast and as clearly as the equivalent word in English. Honestly, I could be talking out of my ass, but I’m pretty sure that’s right—it makes sense, doesn’t it?

Anyway, the reworked roots are «ma, sa, ka, tla, yal, klam, slal, myan, pam, pya, nam, kyan, pal, nal, yam, lan, mlam, nya, ha, syan, mlal, slam, nul* klal». Now, technically, «ha» isn’t far enough away from «ka» because the «h» in «ha» can be pronounced like a glottal stop, but I am fine with that as the derived words should never really end up getting mixed up.

*As I am about to explain, «nul» translates into English as ‘and’.

«ma» is the root for the first person singular. «me» is the pronoun form, and it translates into English as ‘I’ or ‘me’, depending on the whether it’s the subject or the object.

«sa» is the root for the second person singular. «se» is the pronoun form, and it translates into English as ‘you’.

«ka» is the root for the third person singular. «ke» is the pronoun form, and it translates into English as ‘it’, singular ‘they’, or singular ‘them’. Of course, it could also be ‘he’, ‘him’, ‘she’, or ‘her’, but gender and sex don’t matter as this pronoun is not gendered/sexed. Again, the translation may depend on whether it’s the subject or the object.

«tla» is the root for the mediopassive. «tle» is the pronoun form. As a subject, it is a passive or impersonal construction. As an object, it basically means ‘myself’, ‘yourself’, etc. For example, let’s say «lomtam» is a verb that translates into English as ‘to love’. «tle lomtam me» means ‘I am loved’. It can be thought of as ‘[blank] loves me’. It’s almost an even more abstract version of «ke» in this context, but it puts the focus on the object instead of the subject. «me lomtam tle» is a bit simpler, and it means ‘I love myself’.

«yal» is the root for the demonstrative. «yel» is the demonstrative pronoun form and «yil» is the demonstrative modifier form. They both translite into english as ‘this’, but they are used in slightly different ways. «yel» would just translate as ‘this’, but «ke yil» would translate as ‘this one’.

«klam» is the root for the past tense. «klem» is the noun form, and it translates into English as ‘past’ as in ‘the past’. «klim» is the modifier form that, as an adverb, functions as the past tense, and it can also be translated as ‘earlier’.

«slal» is the root for the present tense. «slel» is the noun form, and it translates into English as ‘present’ as in ‘the present’. «slil» is the modifier form that, as an adverb, functions as the past tense, and it can also be translated as ‘now’.

«myan» is the root for the future tense. «myen» is the noun form, and it translates into English as ‘future’. «myin» is the modifier form that, as an adverb, functions as the future tense, and it can be translated as ‘later’.

(As I’ve said before, these tenses are not obligatory—i.e., they are optional. Context clues can make up for a lack of tense. But what tense is an un-tensed sentence in? It’s not really a tense, it’s more of a grammatical mood. Specifically, I’d say this particular mood in my conlang is the indicative, declarative, or realis mood. More or less, it expresses something true. When people say something like ‘I love you’, it doesn’t necessarily express the present tense like ‘I love you right now’. It tends to be more of a declaration of the truth—the truth being that I love you.)

«pam» is the root for the interrogative. «pem» is the noun form, and it translates into English as ‘what’ or ‘whom’; «pim» is the modifier form, and translates into English as ‘which’; and «pum» is the particle form, and it translates into English as ‘?’. That last one is literal—in this greyfolk language, this root indicates a question. If «pem» or «pim» isn’t used, then the particle «pum» is used. For example, let’s say «lomtam» is a verb that translates into English as ‘to love’. «se lomtam pem» means ‘you love what?’ or ‘what do you love?’ «se lomtam ke pim» means ‘you love which one?’ or ‘which one do you love?’ «pum se lomtam ke» means ‘you love it?’ or ‘do you love it?’ In the case of «pum», it can kind of be stuck anywhere in a question, but it is usually the first word. If it follows a word, it puts emphasis on that word as what is being questioned. For example, «se lomtam pum ke» means ‘you love it?’

«pya» is the root for the affirmative and the presence preposition. «pyi» is the modifier form that works like the auxiliary verb ‘do’ as in ‘I do want to go’, and it also translates into English as ‘yes’. «pyo» is the verb form that translates into English as ‘to be’; without a subject, it can also translate as ‘there is/are’. «pyu» is the preposition form, and it translates into English as ‘with’. Furthermore, as I discussed in the previous post, they can also be used to say hi.

«nam» is the root for the negative and the absence preposition. «nim» is the modifier form that translates into English as ‘no’, ‘not’, or ‘don’t’. «nom» is the verb form that translates into English as ‘to not be’; without a subject, it can also translate as ‘there isn’t/aren’t’. «num» is the preposition form, and it translates into English as ‘without’.

«kyan» is the root for the complementizer or relativizer. «kyun» is the particle form that translates into English as ‘that’, ‘who’, or ‘which’ as in ‘people that like pie’ or ‘the pie that was eaten’. Furthermore, «kyen» is acceptable as a noun form that abbreviates the phrase «ke kyun», which would translate into English as ‘one that’ as in ‘one that likes pie’. Thus, «kyen» works similarly to an agentive affix, which, in English, is usually ‘-er’. For example, let’s say «lomtam» is a verb that translates into English as ‘to love’. «kyen lomtam» could translate as ‘one who loves’ or ‘lover’.

«pal» is the root for the possessive. «pul» is the particle form that indicates possession, and it would likely translate into English as ”s’; however, I would translate it as ‘of’ as in ‘he is the brother of my mother’.

«nal» is the root for the ‘and’ conjunction. «nul» is the conjunction form, and it translates into English as ‘and’.

«yam» is the root for the ‘but’ conjunction. «yum» is the conjunction form, and it translates into English as ‘but’.

«lan» is the root for the ‘or’ conjunction. «lun» is the conjunction form, and it translates into English as ‘or’.

«mlam» is the root for the origin preposition. «mlum» is the preposition form, and it translates into English as ‘from’.

«nya» is the root for the destination preposition. «nyu» is the preposition form, and it translates into English as ‘at’ or ‘to’, depending on the context.

«ha» is the root for the separating particle. «hu» is the particle form, and it doesn’t have a clear direct translation into Engligh. The quick-and-dirty explanation is that it’s like a comma. It is used to separate words that, if not separated, might sound ambiguous together. Of course, a pause in speech can also produce the same effect.

«syan» is the root for the terminating particle. «syun» is the particle form, and it also doesn’t have a clear direct translation into English. The quick-and-dirty explanation is that it’s like «hu», but, instead of separating words, it can separate phrases to get rid of ambiguity.

(These special particles—«hu» and «syun»—are not obligatory; i.e., they are optional. They can help reduce ambiguity, but they are not necessary.)

«mlal», «slam», and «klal» are currently unused. However, I want to use them as I lost a few disyllabic roots in the war to get everything to fit together. That war is worth its own post.

End of February report

My arm has recovered quite a bit! It’s functional, but it’s not quite back to the pain-free strength that it had before. My infection (or, perhaps, the symptoms left behind by the infection) hasn’t quite resolved yet, however. I went through another round of antibiotics and painkillers, and I am waiting to see if the discomfort and pain continue to go away or… if they don’t.

Also, the GURPS stuff report has changed to RPG stuff report because I foresee talking about other RPGs as well. I have a couple in mind, but I don’t want to jump the gun.

Conlang stuff report

Even as my arm was still not doing so hot, I was still working hard on my conlang. With help from the internet in creating a macro for Excel, I got a nice database of disyllabic roots running.

  • Range A is a bank of possible (according to the rules of my language) disyllabic roots. I generated this using Zompist’s Gen.
  • Range B is where I input the roots I have chosen.
  • Range C is a bank of roots that conflict with the roots in Range B. I also generated this using Gen with some really roundabout tricks.
  • Rule 1: If a cell appears in Range A and Range C, it is highlighted yellow.
  • Rule 2: If a cell appears in Range A and Range B, it is highlighted green.
  • Rule 3: If a cell appears in Range B more than twice, it is highlighted red.
  • Rule 4: If I a cell appears in Range B and Range C, it is highlighted red.
  • Rule 5: Otherwise, a cell should not be highlighted.

Thus, any white cells in Range A were roots that could still be used because they didn’t conflict with anything else. Even though the highlighting was all done by a macro, there was still a significant portion of manual work that took a few hours. Much more time went into figuring out how to get the most efficient set of disyllabic roots. By that, I mean that I had to figure out how to get as many roots as possible that didn’t conflict with each other from the total bank of possible roots. It always comes back to Hamming Distance!

I’ll share much more about this soon.

RPG stuff report

Over the past couple of weeks, I have started to work on a very loose and flexible magic system that I think is good enough. Ritual Path Magic is loose and flexible, but it is slow and uses a whole new system. Divine Favor has flexibility built in with its prayer system, but it’s way too expensive and it doesn’t focus on flexibility. Sorcery has the same advantages and disadvantages of Divine Favor, though I do like it a bunch more. I based my system off of Wildcard Powers from GURPS Supers, but I’ll talk about it in much more detail soon.

Two more things. First, I just want to say that GURPS Transhuman Space is really cool. Second, I’m a bit late, but I just discovered The Path of Cunning, which is a new (and free!) fan-zine for GURPS content that is doing a good job at slowly filling the void left behind by the discontinuation of Pyramid #3. I’d love to hop on that in its infancy and review the zines as they come out. And—who knows—maybe even try to submit something one of these days. In fact, maybe that flexible magic system is just the thing.

Writing stuff report

I wrote a couple of short vignettes for fun. I dove into some stuff about Gnosticism for inspiration. I also toyed around with some new ideas for my main stories. That’s about it.

End of January report

Infection or no infection, injury or no injury, I can type out a short update and I did make some progress before I injured my arm. Also, I moved away from specifying my reports as for the greyfolk language or writing or GURPS because I will hopefully be talking a bit more about each of them in each report.

It took me a long time to write out this update. I’ve been working on it for two days because it’s hard, uncomfortable, and sometimes painful to type for long periods of time. Between my injury and really focusing on maintaining better posture, it just takes a lot out of me. I’ll probably be like this for the next couple of weeks, but here’s to hoping! 🍻

Conlang stuff report

If I am remembering correctly (and I’m a bit too lazy to check), when I last talked about what was next for greyfolk language, I’m pretty sure that I mentioned disyllabic roots and words were next but also that I wanted to find a way to organize them so I got good efficiency out of my choices while avoiding roots that were within Hamming Distance of each other. For example, I don’t want «meta» and «peta» because the only difference is «m» and «p», which do not have enough Hamming Distance between them (in terms of how they sound). The Hamming Distance between «m» and «p» is 1 (they are both labial sounds, which is an HD of 0, but «m» is a nasal and «p» is a plosive, which is an HD of 1), but I need a Hamming Distance that’s greater than 1 for the sounds in each word to be far enough apart to contrast. So, «mena» and «peta» would work because «n» and «t» also have a Hamming Distance of 1 (they are both coronal sounds, which is an HD of 0, but «n» is a nasal and «t» is a plosive, which is an HD of 1). That brings the total Hamming Distance between those two words to 2, which means they are far enough apart in sound (according to my parameters, of course) that I can use both words.

Of course, that means, if I want to have a lot of disyllabic roots and words, I have to be efficient like I was for the monosyllabic roots and words. Each extra syllable, however, seems to add that much more work. I talked to a friend of mine about creating a program to help me, but it seems that would be more trouble than it’s worth, but I think I found a way to do what I need in Microsoft Excel. I’ll hopefully come back to that sooner rather than later after my arm has healed and after I fully figure that system out.

Also, because Globasa does it (and I just went over how much I like Globasa in my previous post), I’ve been considering allowing «s» at the end of syllables. I need to be careful not to over-complicate my conlang, so I might just put syllable-final «s» in one of the dialects.

GURPS stuff report

As I looked back through my notes, I realized that most of my work in January (as well as December) was done on GURPS. After NaNoWriMo 2019, I was really inspired to work on GURPS again, and it was going quite well! I have a better way to merge Conditional Injury and Knowing Your Own Strength than I did before. I was still figuring out how to do weapons and armor in the least complicated way, and I was getting pretty close to something that I felt was acceptable. Instead of having a damage modifier, a weapon would have a ST modifier. That modifier would be added to the wielder’s Basic Lift, and the total Basic Lift would be the new ST of using that weapon. DR would work similarly with a tricky caveat. Yes, this requires table look-ups, but… Well, I don’t think it’s frequent enough to be awful. I’ve struggled so long with balancing realism, fairness, and ease of play.

Continuing down the path of combat while trying to balance realism, fairness, and easy of play, I have been trying to figure out how to speed up combat for a long time. There are many approaches, and I tried to define each approach by its complexity and its (level of) abstraction. One could resolve an entire combat with nothing more than a Quick Contest—that would be Complexity 1 but Abstraction 10. However, that curve is not smooth. Some methods are only a small step up on the scale of complexity while being a larger step down on the scale of abstraction, which is pretty ideal. For example, I’ve been getting really into Mass Combat and Tactical Mass Combat because the combat isn’t very complex and there are some neat ways to deal with the abstraction. However, the big problem is that PCs remain quite abstract unless you use Heroes on the Mass Scale, but that breaks down really quick for any unit that’s anything less than heroic in scale. So, I could try to rework the entirety of Heroes on the Mass Scale or just assign Troop Strength, Classes, etc. as best as possible to PCs (and any other unit, really). That idea got pretty close to one of my original ideas, which was to run combat like a D&D Skill Challenge where the PCs need x skill successes before getting y skill failures. That’s quite abstract in that it doesn’t take into account the power of the enemies! So, using Mass Combat with guesstimated stats (based on existing units, of course) seems rather balanced between complexity and abstraction, especially by allowing PCs (and enemy bosses) to perform significant actions, which is like a Skill-Challenge-esque factor in Mass Combat. Then, when I want to get a bit more tactical, there’s Tactical Mass Combat. For non-mass-scale scenarios, I’ve been working on a way to modify each for the 1:10 scale so each ‘unit’ is just a character, which is a bit trickier (but oh so satisfying) to do for Tactical Mass Combat.

Last but not least, I worked on some worldbuilding for my very own Project Sirocco, which is really going to end up extremely similar to or part of the setting from my NaNoWriMo 2019 story. I really took a dive into religion and mythology to start working on some cultures for that world. That led to a discussion about how ‘barbarians’ are the same Tech Level with different beliefs and ‘savages’ are lower Tech Level with different beliefs. I learned a lot about comparative theology and the Bronze Age and the Iron Age and Sub-Saharan African history. I spent a good amount of time trying to find places on Earth with very varied climatic zones, and I think I landed on Tierra del Fuego and the Big Island of Hawaii. There are a few places in the (contiguous) United States with very diverse climatic zones in a small area too.

Writing stuff report

I did more work in December than I did in January, but I was working on some background worldbuilding as well as figuring out how I want the story to end to myself me a clear(er) goal.

End of October greyfolk language report

To be honest, I wrote my last post because I got caught up on whether I should capitalize ‘greyfolk’ or not in this post’s title.

During October, I had 15-ish strong days of work on my conlang, which isn’t too much more than last month, but, somehow, I put out six posts this month (not counting the belated end-of-month report for September which I actually wrote in October) compared to September’s two posts, and the two posts in September were about GURPS. So, six posts about my conlang is great work!

Because I was so diligent about posting, there is only one thing that I talked about in my conlang journal that I didn’t talk about here. I was working on disyllabic roots and Hamming distance for disyllabic roots before I decided to focus on my typeface, which I completed! I’d like to return to disyllabic roots so I can have at least a dozen or so meaningful sentences in my language before the end of 2019, but…

Next month, I will also be doing NaNoWriMo, so my conlang will take a back seat for a while. If I can make time to work out Hamming distance for disyllabic roots, I should be able to freely create new words on the fly, but the focus will still be on my writing. Right now, I think I’ll make blog posts about my NaNoWriMo project(s) as I hit word-count milestones. However, I don’t think I’ll share too much content (at least before NaNoWriMo is over)—it’d be posts about the process or just sharing my progress.

Right now, I can say that I feel like my NaNoWriMo work has greatly helped me reestablish my connection with my creative story-telling energy, which I’ve been lacking since I informally took a break from writing and even more so since my last GURPS campaign ended. It feels nice, and I hope it helps me rekindle my tabletop RPG flame too!

Oh, and Happy Halloween!

Greyfolk language’s monosyllabic roots and words: roots 1–5

In my previous post, I gave described the background and the process of coming up with the monosyllabic roots and words for the greyfolk language. There are 20 of them, but, in this post, I will go over the first five.

«me»
«se»
«ke»
«tle»
«yel» «yil»
«nel» «nil»
«ten» «tin»
«lem» «lim»
«pem» «pim» «pum»
«pli» «plu»
«min» «mun»
«kyu»
«kul»
«num»
«sul»
«lun»
«yum»
«myu»
«hu»
«syu»

Obviously, the “head-initial” vowel for each of these words is «e», which means that each is a noun or a pronoun. In this case, these are all pronouns.

Previously, «pe», «te», and «ke» were the first-, second-, and third-person pronoun, respectively. As I worked with Hamming distance, it was obvious that these pronouns would likely have to change.

«me» is the new singular first-person pronoun. Coincidentally, it should be very familiar. In human language, there are all sorts of me and mi first-person pronouns floating around. As the first-person pronoun, it would translate into English as both ‘I’ and ‘me’ depending whether it was the subject or object.

«se» is the new singular second-person pronoun. It would translate into English as ‘you’, which is both the subject and object.

«ke» is the new singular third-person pronoun. It would translate into English as ‘he’, ‘him’, ‘she’, ‘her’, ‘it’, or the singular form of ‘they’ or ‘them’. Gender and sex do not matter for «ke». And, again, it can be both subject or object.

«tle» is the mediopassive pronoun, which is new to my conlang. As a subject, it is a passive or impersonal construction. As an object, it basically means ‘myself’, ‘yourself’, etc. For example, let’s say «tonya» is a verb that means ‘to hurt’. «tle tonya me» means ‘I am hurt’. It can be thought of as ‘[blank] hurts me’. It’s almost an even more abstract version of «ke» in this context, but it puts the focus on the object instead of the subject. «me tonya tle» is a bit simpler, and it means ‘I hurt myself’.

«yel» is the demonstrative pronoun and «yil» is the demonstrative modifier. They both mean ‘this’, but they are used in slightly different ways. «yel» would just translate as ‘this’, but «ke yil» would translate as ‘this one’. There will probably be another word for ‘that’, but I haven’t figured that out yet.Get it?

As a last little bonus, these aren’t monosyllabic words, the plural personal pronouns will probably be «mema», «sesa», and «keka». The singular and plural correlations should be quite obvious!

Greyfolk language’s monosyllabic roots and words: the background

Before I start talking about the nouns formed from the 20 monosyllabic roots in the greyfolk language, I want to explain some background concepts as well as the process. After almost two months, I finished these suckers about a week ago, and then I gave them a bit of time to rest because I knew that I would tweak them a bit more, which I did.

Hamming distance (which I have explained previously, and which I keep wanting to call hammerspace) was the key in determining which roots were usable. As previously discussed, roots that sound too similar aren’t ideal. So, I used Hamming distance to decide what “too similar” meant. In my case, it means that there needs to be a Hamming distance of 2 for things to not sound too similar. For example, «m» is a labial nasal and «n» is a coronal nasal, but there’s only one difference: the difference between labial and coronal. So, «m» and «n» have a Hamming distance of 1. However, «t» is a coronal plosive, so it has a Hamming distance of 2 from «m» (labial nasal), which is neither coronal or plosive. Yet, «t» only has a Hamming distance of 1 from «n» because they are both coronal. Thus, «tan» and «tam» are too similar but «mam» and «mat» aren’t. Furthermore, «nat» and «tan» are different enough because, even though «n» and «t» have a Hamming distance of 1, there are two instances of that difference, so that’s a total Hamming distance of 2 between those two words. It might seem tricky, but Hamming distance is easy to visualize.

Consonants Labial Coronal Dorsal Laryngeal
Nasal m n
Plosive p t k
Fricative s
Approximant j~ɰ1
Liquid l2
Transition h
  1. written «y», can be pronounced like English ‘y’ or ‘w’ or like Spanish soft ‘g’
  2. can be pronounced like English ‘r’ or like Spanish ‘r’ or ‘rr’

If any two consonants share a column or a row, they have a Hamming distance of 1. For example, «m» and «p» share a column, and «t» and «k» share a row. If they share neither a column or row, they have a Hamming distance of 2. For example, «n» and «y» (/j~ɰ/) are in different columns and rows. There is one big exception to this rule: «l» and «y» (/j~ɰ/) only have a Hamming distance of 1 even though they are in different rows and columns because many realizations of the liquid row sound like approximants.

Of course, I could also change the vowels and not just the consonants, but it’s not that easy. That’s because the first vowel dictates word class, which I also explained in the same post that I explained Hamming space. The “head-initial” vowels indicate words as follows:

  • «e» indicates a noun (or pronoun)
  • «i» indicates a modifier (e.g., adjectives, adverbs)
  • «o» indicates a verb
  • «u» indicates a function word (e.g., conjunctions, prepositions, particles)

And «a» is filler—it doesn’t mean anything except that the word isn’t over. So, it can’t be the first vowel.

Then, add the rules for syllables to start creating words. In the greyfolk language, the syllable structure is C1(C2)V(C3).

  • C1 can be «m n p t k s y l h»
  • C2 can be «y l», but not after «y l h»
  • V can be «a e i o u»
  • C3 can be «m n l»

A word just follows all of these rules. So, a word could be «me», «him», «pyo», «klul», «teka», «syepan», etc. Words can be written normally with spaces in between them, but this system has the advantage of being able to be written as a string of text with one minor adjustment. If a word—not a syllable!—does not have a C3, add a silent «h» to the end of the word. This disambiguates certain cases like «kamenyim» which would be «kamen» and «yim» or «kame» and «nyim». Using the silent «h» means that «kamenyim» is «kamen» and «yim» while «kamehnyim» is «kameh» and «nyim».

Now, I’ll return to discussing non-conflicting sounds. There is are two more rules to add to figure out Hamming distance between syllables and words in the greyfolk language. First, the difference between nothing and any sound is a Hamming distance of 1. For example, «nim» and «nyim» have a Hamming distance of 1 between them. «nim» does not have a C2 and «nyim» does, but they are otherwise the same, so this is a Hamming distance of 1. Second, the same root is allowed with different vowels. How else would it work? For example, «nem» and «nim» are fine because «nem» is a noun and «nim» is a modifier. Even if some vowels sound similar and get confused, because head-initial vowels determine word class, context makes up for the Hamming distance of 1.

Using all of these rules, there is a maximum number of non-conflicting syllables that can be formed, especially if they share a vowel. This was the hardest part of figuring out monosyllabic words. By hardest, I mean it was challenging and frustrating, and, yes, I did cry at least once. I have a very limited phonemic inventory, so there are a lot of constraints, and I put one extra constraint on myself: no monosyllabic words with a C2 and a C3.

What did I get?

This:

«me»
«se»
«ke»
«tle»
«yel» «yil»
«nel» «nil»
«ten» «tin»
«lem» «lim»
«pem» «pim» «pum»
«pli» «plu»
«min» «mun»
«kyu»
«kul»
«num»
«sul»
«lun»
«yum»
«myu»
«hu»
«syu»

With «nlu» left over.

So, that’s 20 monosyllabic roots to create 28 words. Not too shabby.

These words will be explained in following posts. I’m planning on discussing groups of roots. The other option is to go by word class, but that would be to show off the Hamming distance between each word in each class, but the above table can be used for that same effect. See for yourself!

Belated end of September Greyfolk language report

During September, I had 13-ish strong days of work on my conlang. Even with all of that work, it feels like I have so little to show. I’m mulling over the idea of making more regular posts that talk about what I’m working on instead of just what I’ve finished.

I merged my possessive/genitive particle with my complementizer/agentive particle, but I later undid that as it led to some weird ambiguity. Confusing “dog of friend eats” and “dog that friend eats” is too weird to ignore.

Concerning Hamming distance, I had a little revelation. If «mun» and «lun» are different enough, shouldn’t «num» and «nul» be different enough? Thus, the idea that a syllable could have the same initial consonant and vowel so long as one ended in «l» and one ended in «m» was born. I haven’t really used this yet, but it’s a neat little observation.

There was a bunch of time spent trying to figure out what the words for ‘yes’ and ‘no’ should sound like.

Numerals also broke a bit.

I played around with syntax and ambiguity a ton. It seems like there isn’t an easy/simple way for me to get the effect that I want, which is fine. It’s hard to disambiguate something like ‘American history teacher’ (without adding complex rules). Is it a teacher of American history? Or is it a history teacher that’s American? We may never know.

My favorite part was relearning Lojban basics while discovering some “ancient” conlangs from the listserv era.

A whole month has gone by without me figuring out monosyllabic words. After the first two weeks, this was very frustrating, and I felt defeated. Eventually, I cried it out, shrugged my shoulders, and changed my focus so I didn’t burn myself out. It’s okay to have not figured them out! As of today, I’m dipping my toes back in, and it feels so good to go back into it with a fresh mindset. That’s the trick—I just have to remind myself of that. Sometimes, a tactical withdrawal is the best move, even if it feels like a loss—because it’s not a loss. Throwing myself at the same topic again and again as I become more frustrated and burnt out, leading to such a big loss of time is just that: a loss.

There are times to push through, of course. It’s just about finding that balance, and there’s also meta-balance, finding the balance of finding balance. Maybe pushing through will lead to frustration and a week’s worth of setback compared to dropping it to work on something else. I might have some setback on the dropped topic because I lose my place, but I get to move forward with something else. Plus, losing my place, as I said, can be refreshing. Then, the meta-balance is figuring out how much of a setback I’m taking by spending time to find a balance. Sometimes, if it’s complex or I find myself teetering back and forth a ton, it’s just best to take the safe option to let myself breathe.

If I keep going, I’ll have written more about my working philosophy than I have about my actual conlang. I hope to post again soon!