
Show HN: Minimal Object Description Language – char efficient data serialisation - elliottinvent
http://www.modl.uk
======
elliottinvent
Hi Slaughter, Lamb here.

I designed this and I'm looking for some (brutal, I expect) feedback and
input.

I've been working on some DNS-based protocols and have been frustrated by how
verbose plain text data serialisation languages are and how unsuitable they
are for storing in DNS TXT records.

MODL prioritises character efficiency above all else.

I welcome all feedback and comments and if anyone would like to help develop
it, that would be amazing.

So, please tell me what you think – I can take it. I'm expecting a good
shearing at least.

Thanks,

Elliott

------
randomerr
I like the concept but here are some issues:

True (01) / False (00) - I assume that you will not support hexadecimal
notation (00)

How will you note when its a textual semicolon from a string separator. IE:
"a":";","b":"1" vs. a;;b;1

How do you tell a numeric value from a string character? IE: "a":1;"b":1 vs.
a;1;b;1

Nulls what is test or is null: "x":null vs. x;000 < is this a string value, a
hex value, or a null?

~~~
elliottinvent
Thanks very much for the feedback. Keys and values are separated by equals.
Pairs and array items are separated by a semi-colon. I wasn't totally clear
whether your examples were pairs or array contents sorry, but I've assumed
they were pairs.

Hexadecimals work like JSON (4 digits)

key=\uXXXX

Semi colons are used for structure so need to be escaped or quoted:

## quoted example

a=";"

## escaped value

a=\;

## escaped value using escape tilde (better in DNS)

a=~;

The interpreter uses type inference, so this example will always be a number:

a=1

To force it as a string, you can quote it:

a="1"

I wasn't clear on your final question but unquoted 000 always represents null.
So:

## this is null

x=000

## this is string 000

x="000"

Hope that answers the questions and thanks again for the feedback. If I've
misunderstood or you’re not clear on anything let me know.

(edited to fix line spacing)

