Hearing God (December 28 2005)

If God wants to speak to you, how can you be sure that it's not just your own imagination? How can you be sure you heard it right? Use an error correction code!

A message sent by a Reed-Solomon code on GF(32) can take a list of 31 symbols (each symbol is a value in A..Z or 1..6) and produce a message that is 15 symbols long. The remaining 16 symbols are used to correct errors. Any 8 of the 31 symbols in the list can be wrong and the decoder will correct them. This doesn't mean that absolutely any list of 31 symbols will produce a 15 symbol message, though. Less than 1 in 100,000 31-symbol lists can be decoded at all.

If God gives you an answer encoded this way and it can be decoded, you can be pretty sure you didn't make it up (there's under 1 in 100,000 chance that an answer you made up would decode to anything). And if you didn't hear God right for up to a quarter of the characters, the code can correct for that.

How would a message from God really be formatted? Well, if I were God, I'd respond in English (or your native tongue), and I'd use all 31 characters by considering 100,000+ ways of saying what I want to say and choosing to say it in the one way that can be decoded. I'm not God, though, so that's just a guess. God might choose a different format.

Try it! Kai Chen has implemented a Reed Solomon decoder applet here. Ask God for 31 symbols (symbols can be any of A..Z or 1..6) and the applet can decode it for you (the message is the first 15 of the 31 decoded symbols). He also has a description and source code here. (Kai Chen just implemented the Reed Solomon decoder. He had nothing at all to do with the idea of using it to decode messages from God. The blame for that idea rests solely on my shoulders.)

If you want to play with the applet to see how things work, enter 15 symbols followed by 16 '*' and decode that. '*' means "I don't know". Then the applet will fill in the '*' to form a legal codeword. For example, try 'HOW3ARE3YOU3MAN****************'. You can feed that legal codeword in as the input and it will decode to itself. Or you can change up to 8 symbols in the completed codeword, and the applet will correct them, decoding to the original codeword.

DO NOT USE '*' IN MESSAGES YOU GET FROM GOD. If you use 15 random symbols and 16 '*', the applet can always fill them in to form a legal codeword. The more '*' you use, the more likely you are to be able to decode the message purely by chance. Saying that you heard a message from God, but including lots of '*', is showing a lack of faith that God is answering you. It's hoping that you'll make up a random OK message that you can pretend is from God. Don't do it.


I'm an atheist, er, I find the world more predictable when I assume God does not exist. For example, the assumption that there is no God to hear predicts that you should almost never hear a decodable message (unless you memorize one beforehand or someone tells you one or such). But I'm not a faith-based atheist. Testing my assumptions is a fine thing to do, and this tests the assumptions that God does/doesn't exist, and God does/doesn't want to speak to me, in interesting ways.

I've tried this a few times and I've never come up with a decodable message. If I did come up with a decodable message, I'd be leery of it. I'd just know it isn't from me. That doesn't prove it's from God, or from anyone looking out for my better interests. It's probably not from my long-dead Aunt Louise, though, because I don't think she could handle computing a Reed-Solomon encoding.

If you never hear a decodable message, God may still exist, he may still be speaking to you. All we've really shown is he's either not willing or not able to speak to you in this manner. A similar test is to ask God to move your furniture, you'll find he's not willing to do that either, at least not at the present time.