Tuesday, May 16, 2017

Quiet a long time

I've been quiet a long time, because I've been very, very busy with work, kids and other things.

I find my best free time these days is when I am sitting in a dark room getting kids to fall asleep, but it's hard to work on the kinds of projects I used to do under those conditions. Instead I've been revisiting languages that I've studied in the past, and learning about some new ones.

But I've also been trying to figure out how I can fit more interesting work into my free fragments of time. I've built a kind of operating system that runs in a browser, that I can bring up on my phone or any laptop I happen to be using, and pick up a piece of work and poke away at it. The state of the session is saved to a server, and reloaded in the next browser I use to access it. I call it Joss.

One of the first applications I wrote to run on Joss is a JavaScript REPL, but it turns out to be fairly difficult to write JavaScript code on my phone. Autocorrect wants to fix everything up, and special characters require several taps to access. My next project is going to be a programming language that is suited to the constraints of the phone. I've been thinking about the properties of an English-like programming-language for years, and this is the perfect opportunity to try it out.

Ultimately, I want to get to a place where I can work on some other ideas that I have been gnawing on in my spare time, too. For example, I want to develop some strategies to attack word-substitution ciphers. I plan to take a text and divide it into two parts, and encipher one half with a randomly generated word substitution cipher, then use the other half as data to inform the decipherment. I want to use two halves of a single text in order to maintain a common semantic domain and idiolect.

Another idea I want to work on is something I call "paleo-poetics". This is inspired by work I did with Manchu to reconstruct syllable structure and prosody by looking at poetry. I think it would be interesting to apply the same ideas to Egyptian, Akkadian and Sumerian poetry, to see if I can discover anything interesting about those languages and their poetic traditions by uncovering the skeletons of their poetic forms.

Monday, March 23, 2015

A Weak Argument for the Rohonc Codex as a Bogomil Text

I often privately come back to the question of whether the Rohonc Codex could be a Bogomil text. I think that could only really be proven by decipherment, but here let me lay out a weak argument in favor of that idea.

We don't know much about Bogomil theology, but of the small amount that we do know, I think there are three things that may be reflected in the imagery of the RC.

1. Adoptionism: This is a theological teaching that Jesus was born a man, but was adopted by God as His son. The circumstantial evidence for this in the RC is the fact that Jesus is normally portrayed in a way similar to other saintly people (with a simple turban-halo), but at some point (after the crucifixion?) appears to be transformed into a giant luminous being. Does this represent the adoption of Jesus by God?

Jesus riding into Jerusalem

Luminous Jesus

2. Absence of Mary: One of the implications of adoptionism is that Mary would have become pregnant in the normal earthly manner, rather than through divine intervention. As a result, adoptionists like the Bogomils and Paulicans did not revere Mary in the same way that Catholics and Eastern Orthodox churches did. The circumstantial evidence for this in the RC is the fact that Mary is rarely depicted, and never given a special status.

The family of Jesus receiving the Magi

3. Dualism: In addition to being adoptionist, the Bogomils were apparently dualist, believing in the existence of an evil demiurge as a counterpart to God. Some dualists, like the Marcionists, held that the demiurge was none other than the God of the Old Testament. The main circumstantial evidence for this in the RC is the absence of clear Old Testament imagery.

Make of that what you will.

A functional database

I mentioned in an earlier post that I was again working on a functional programming language. Probably the reason it is going so well is that the language itself is not my main goal. What I really want to do is build a functional database.

On the face of it, this seems like a ridiculous idea, because in order to be purely functional you would need to pass the whole database in as a parameter to any query, and return the updated database whenever you make a change to it.

But put aside the ridiculousness of it for a moment and imagine the following:

1. Your database is represented as a linked list of data changing transactions, so changing the database is just a matter of consing the new transaction onto the transaction chain.

2. Every transaction in the database carries a timestamp and a checksum, where the checksum is built from the data in the transaction and the checksum of the last transaction.

3. The data storage is trusted and the checksum has a vanishingly low rate of collision, so the checksum at time T can act as a reliable proxy for the whole database at time T.

What good would this thing be? I think it could be very powerful for certain applications. Consider the following:

  • All changes to the database would be audited. In an important sense, the database itself is the audit trail.
  • It would be trivial to add a date/time parameter to any query and get back the result of the query as it would have been at any time in the past.
  • The checksum could be used to verify whether the results of a query did indeed come from a given database at a given time.
  • Brute-force backdoor changes to the transaction chain would show up in the checksums.
  • You could allow "alternate universes" to be forked off of the main database at any time, to experiment with different scenarios. These would exist in parallel time with the main database, but would be distinguished by their own checksums.
This database would be useful in environments where data needs to be reliable and auditable.

Saturday, March 21, 2015

Whose Universe is This?

I've been thinking about the diagram of the universe that appears on page 83 of the Rohonc Codex:

At the center, we see the earth, with some cities and maybe a ship on the sea. Underneath the world is apparently Hell, which we also see on page 79:

The circle immediately surrounding the earth appears to hold the sun and moon, and beyond that are other complex shapes whose meaning is not clear to me.

I am wondering if this represents a description of the universe from a particular source. Perhaps from one of the three books of Enoch, or maybe another source that I am not familiar with.

The two figures in the highest heaven are reminiscent of something from the Talmud related to the apostate rabbi Elisha ben Abuyah, who is said to have gone to heaven and seen two figures seated there (understood to be God and Metatron). Since no one was allowed to sit in the presence of God, he exclaimed "Perhaps there are -- God forbid! -- two powers in heaven!"

Wednesday, March 18, 2015

Nearly full circle: A functional programming language

My mind is like an attic, stuffed with everything I can't bear to get rid of, and occasionally I bring something out and work on it (only to put it back later).

The earliest posts that I wrote on this blog related to my plan to create a functional programming language. Over the last few weeks, I have actually done that. It's nothing pretty, but it really does work, with lambda expressions and everything.

I worked backwards, starting with how the language would work on the inside, without worrying about what it would look like on the outside. The final language isn't finished yet, but I created a kind of intermediate testing language to use for checking the architecture.

The testing language is not supposed to be pretty. My main consideration here was to create a language that could be parsed by a very simple parser (with no lookahead), so that meant leaving out a lot of syntactic sugar and salt.

Here is my first program in the testing language.

using System
using FBaseUnitTests
let plus
    method Program _test006plus [ Int32 , Int32 ]
let ifzero
    lazyMethod Program _test006ifzero [ Int32 , Int32 , Int32 ]
let func
    lambda [ Int32 ] [ x ]
        apply variable ifzero [
            variable x ,
            value Int32 1 ,
            apply variable plus [
                variable x ,
                apply variable func [
                    apply variable plus [
                        variable x ,
                        value Int32 -1
let r
    apply variable func [ value Int32 16 ]

The most important thing here is that functions are first-class citizens. The variables plus and ifzero hold native methods (one of which has some lazy parameters), while the variable func holds a lambda expression.

Wednesday, March 4, 2015

The Meroitic Romance

I have recently been reading Aethiopica, a novel written in Greek by a Phoenician named Heliodorus, from the city of Emesa. (I am reading Wright's 19th century revision of Thomas Underdowne's 1587 translation.)

The novel was probably written around 200 - 300 AD, but it is set in Achaemenid Egypt, when Egypt was a satrapy of the Persian empire (between 525 - 332 BC).

One of the things I love about this text is that the realities of language and ethnicity are everywhere. Greeks in Egypt must find another Greek (often a captured Greek slave) to act as translator. The wife of the Persian governor of Memphis, though she understands Greek, cannot speak it, so she too needs a translator to communicate with the Greeks. Phoenicians on trading expeditions are found in Delphi, and recognized at other islands in the Mediterranean by their huge and well-built ships.

One thread of the complex plot involves a mysterious letter written in an unknown language. This is in the possession of the main female character of the story, Chariclea, the adopted daughter of a Greek priest of Apollo. Among the belongings he received when he adopted her is a letter written on cloth that is neither in Greek nor Egyptian. This mysterious letter is finally read by a visiting Egyptian priest, who says:
"It was in Ethiopian letters, not the common sort, but such as their princes use, like to those that the Egyptians call hieratic."
When Heliodorus tells us that they are "Ethiopian letters", however, he is not referring to the old Ge'ez abjad. Indeed, the Ge'ez letters do not look much like hieratic:

Ge'ez abjad, from Wikipedia

A piece of one of the Chester-Beatty papyri in hieratic

In fact, when Heliodorus says Ethiopia, he means the kingdom of Kush, and the writing system he is referring to must be the cursive form of Meroitic:

A Meroitic ostracon, from the Unesco website.

Meroitic is not yet fully deciphered, but the script is known, and it was in use for about 800 years from 300 BC - 600 AD. Its inclusion in the Aethiopica is probably a little anachronistic, but it is a sin that can easily be forgiven in such a well-written story from so long ago.

Thursday, December 11, 2014

The Three Tablets

Page 14 shows three tablets with writing on them, and two figures standing among them.

Delia Huegel takes this to be Moses, Aaron, and the tables of the law, but she notes the odd fact that there are three tables instead of two.

The text on the second and third tablets begins with the formulae I I CQ IGV and I I I CQ IGV, which I expect probably means something like "the second X" and "the third X". Since the first tablet has Q1C in the place of the number "one", I expect Q1C probably represents a word that is semantically equivalent to "first", but etymologically unrelated to the number "one" (e.g. English first, Latin primus, etc.)

Since the tables are numbered one, two and three, I don't think they represent the tables of the law, but rather a set of three things or ideas. The obvious candidate is the holy trinity.

The usual order of the three persons (or hypostases) of the trinity are established in Matthew 28:19 as the Father, the Son and the Holy Spirit, in which case the third tablet would represent the Holy Spirit.

The text of the third tablet contains the glyph RT, which I have previously read as "saint". In a number of languages, the word for "saint" is just a nominal form of the adjective "holy", as it is in Latin: Spiritus Sanctus. This suggests that the word either before or after RT on the third tablet might be "spirit", forming the phrase "holy spirit".

The glyphs of the first and third tablets could be nearly the same, though in a different order, up until the final phrase:

First: Q1C CQ IGV [?] K1A1A I I RAA O X2 O C I RAA C F O R CO [?]

The word C.F.O.R.CO is interesting because one of my earlier algorithms (about which I did not write) identified it as a likely alphabetic word. Is it possible to read C.F.O.R.CO as "father", and RT CUNSAR.I.IX.O.O as "holy spirit"? If so, how do I test that reading?