Ask HN: What's your quarantine side project?
I&#x27;ve been continuing with Concise Encoding [1], which is a twin format for storing&#x2F;transmitting ad-hoc hierarchical data (similar to JSON).<p>Key points:<p>- It has a binary format (smaller) and 100% compatible text format (readable). Machines work in binary and convert on-the-fly only when a human needs to see or modify it.<p>- Supports all of the basic data types needed on a modern system.<p>- Supports recursive data.<p>- Future proof<p>- Fully specified [2] [3]<p>[1] <a href="https:&#x2F;&#x2F;github.com&#x2F;kstenerud&#x2F;concise-encoding&#x2F;#concise-encoding" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;kstenerud&#x2F;concise-encoding&#x2F;#concise-encod...</a><p>[2] <a href="https:&#x2F;&#x2F;github.com&#x2F;kstenerud&#x2F;concise-encoding&#x2F;blob&#x2F;master&#x2F;cbe-specification.md" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;kstenerud&#x2F;concise-encoding&#x2F;blob&#x2F;master&#x2F;cb...</a><p>[3] <a href="https:&#x2F;&#x2F;github.com&#x2F;kstenerud&#x2F;concise-encoding&#x2F;blob&#x2F;master&#x2F;cte-specification.md" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;kstenerud&#x2F;concise-encoding&#x2F;blob&#x2F;master&#x2F;ct...</a><p>Example (text format):<p><pre><code>    c1
    &#x2F;&#x2F; _ct is the creation time, in this case referring to the entire document
    (_ct = 2019-9-1&#x2F;22:14:01)
    {
        &#x2F;* Comments look very C-like, except:
           &#x2F;* Nested comments are allowed! *&#x2F;
           Note: Markup comments use &lt;* and *&gt; (shown later).
        *&#x2F;
        &#x2F;&#x2F; Notice that there are no commas in maps and lists
        (metadata_about_a_list = &quot;something interesting about a_list&quot;)
        a_list           = [1 2 &quot;a string&quot;]
        map              = {2=two 3=3000 1=one}
        string           = &quot;A string value&quot;
        boolean          = @true
        &quot;binary int&quot;     = -0b10001011
        &quot;octal int&quot;      = 0o644
        &quot;regular int&quot;    = -10000000
        &quot;hex int&quot;        = 0xfffe0001
        &quot;decimal float&quot;  = -14.125
        &quot;hex float&quot;      = 0x5.1ec4p20
        uuid             = @f1ce4567-e89b-12d3-a456-426655440000
        date             = 2019-7-1
        time             = 18:04:00.940231541&#x2F;E&#x2F;Prague
        timestamp        = 2010-7-15&#x2F;13:28:15.415942344&#x2F;Z
        nil              = @nil
        bytes            = b&quot;10ff389add004f4f91&quot;
        url              = u&quot;https:&#x2F;&#x2F;example.com&#x2F;&quot;
        email            = u&quot;mailto:me@somewhere.com&quot;
        1.5              = &quot;Keys don&#x27;t have to be strings&quot;
        long-string      = `ZZZ
    A backtick induces verbatim processing, which in this case will continue
    until three Z characters are encountered, similar to how here documents in
    bash work.
    You can put anything in here, including double-quote (&quot;), or even more
    backticks (`). Verbatim processing stops at the end sequence, which in this
    case is three Z characters, specified earlier as a sentinel.ZZZ
        marked_object    = &amp;tag1 {
                                    description = &quot;This map will be referenced later using #tag1&quot;
                                    value = -@inf
                                    child_elements = @nil
                                    recursive = #tag1
                                }
        ref1             = #tag1
        ref2             = #tag1
        outside_ref      = #u&quot;https:&#x2F;&#x2F;somewhere.else.com&#x2F;path&#x2F;to&#x2F;document.cte#some_tag&quot;
        &#x2F;&#x2F; The markup type is good for presentation data
        html_compatible  = (xml-doctype=[html PUBLIC &quot;-&#x2F;&#x2F;W3C&#x2F;&#x2F;DTD XHTML 1.0 Strict&#x2F;&#x2F;EN&quot; u&quot;http:&#x2F;&#x2F;www.w3.org&#x2F;TR&#x2F;xhtml1&#x2F;DTD&#x2F;xhtml1-strict.dtd&quot;])
                           &lt;html xmlns=u&quot;http:&#x2F;&#x2F;www.w3.org&#x2F;1999&#x2F;xhtml&quot; xml:lang=en |
                             &lt;body|
                               Please choose from the following widgets:
                               &lt;div id=parent style=normal ref-id=1 |
                                 &lt;* Here we use a backtick to induce verbatim processing.
                                    In this case, &quot;##&quot; is chosen as the ending sequence *&gt;
                                 &lt;script| `##
                                   document.getElementById(&#x27;parent&#x27;).insertAdjacentHTML(&#x27;beforeend&#x27;, &#x27;&lt;div id=&quot;idChild&quot;&gt; content &lt;&#x2F;div&gt;&#x27;);
                                 ##&gt;
                               &gt;
                             &gt;
                           &gt;
    }</code></pre>