Live data from Hacker News

Viewing profile — creationix

creationix

HN member
Joined
Wed, Jan 20, 2010, 3:13 PM UTC
HN karma
290
Public activity
112 items

About creationix

[ my public key: https://keybase.io/creationix; my proof: https://keybase.io/creationix/sigs/CgT3_9f2hAjXEp_cYGX7VH7-FkA4SM5jeqRChqONYBE ]

Recent public activity

  1. comment
    Comment #47526506

    I see. We have different definitions of serialized. The way I typically see it used is to describe how something is transmitted and stored, not how it is read. Yes, by your definit…

  2. comment
    Comment #47463998

    So you're saying that random access formats that are encoded to disk as a stream of bytes are not "serialized" because you don't alway read them in order? Yes, many formats are rea…

  3. comment
    Comment #47455973

    > Just copy and paste files If all your workflows allow copying as binary files, more power to you! But there are a lot of workflows where that is not possible. This was inspired b…

  4. comment
    Comment #47455913

    > what sort of storage device does not allow your computers to use all 256 byte values - clipboards - logs - terminal output - alerts - yaml configs - JSON configs - hacker news co…

  5. comment
    Comment #47455875

    And don't worry about railroad diagrams. I already intended to create them, I've just been extra busy this week with other things.

  6. comment
    Comment #47455859

    Tha main reason for the reverse encoding is it makes it easier on the writer. You simply do a depth-first traversal of the data graph and emit data on the way back up the stack. Ze…

  7. comment
    Comment #47449570

    Also good luck parsing 10 MiB of JSON in a loop that can't tolerate blocking the CPU for more than 10ms. What's expensive is very relative to the use case.

  8. comment
    Comment #47449545

    Very true. I had forgotten about bencode, I should read up on that again. It makes sense they need a canonical form because they want same values to have same content hashes.

  9. comment
    Comment #47449517

    I meant computers can read it without any preprocessing. It's random access. You don't need to parse it, you don't need to decompress it. You just start at the end and follow point…

  10. comment
    Comment #47445513

    yeah, LuaJIT is one of the use cases I had in mind working on this. JSON is pretty fast in modern JS engines, but in Lua land, JSON kinda sucks and doesn't really match the languag…

  11. comment
    Comment #47444814

    > it only has a text encoding as long as you can guarantee you don't have any unicode? The format is technically a binary format in that length prefixes are counts of bytes. But in…

  12. comment
    Comment #47444765

    How does CBOR retain JSON compatibility more than RX? RX can represent any value JSON can represent. It doesn't even lose key order like some random-access formats do. In fact, RX …

  13. comment
    Comment #47444686

    I've rewritten the framing in the README to first explain when you should use RX and when you should not. Most uses of JSON should probably stay JSON. Let me know what you think ht…

  14. comment
    Comment #47444669

    Initial format docs are now here: https://github.com/creationix/rx/blob/main/docs/rx-format.md Railroad diagrams will come later when I have more time.

  15. comment
    Comment #47444648

    Thanks for the feedback. I've improved the framing to make the purpose/value more clear. What do you think about "RX is a read-only embedded store for JSON-shaped data"? https://ww…

  16. comment
    Comment #47443720

    That benchmark is a fair comparison for a real-world production workload and use case. Sadly I can't share the details. But suffice it to say that the dataset is a huge object with…

  17. comment
    Comment #47443347

    the project framing needs some help perhaps. JSON is really good at a lot of use cases that this will never replace. But there are cases where JSON is currently used where this is …

  18. comment
    Comment #47443325

    I'm happy to hear suggestions. This format was actually the internal .rexc bytecode for Rex (routing expressions), but when I realized it was actually a pretty good standalone form…

  19. comment
    Comment #47443305

    You're right. Some important differences: sick is binary, rx is textual (this matters for tooling) sick has size limits (65534 max keys for example. I have real-world rx datasets r…

  20. comment
    Comment #47443216

    > Does this duplicate the name of keys? Yes, the format allows for objects to be stored with a pointer to a shared schema (either an array of keys or another object that has the de…

  21. comment
    Comment #47443203

    The current format version is the exact same feature set as JSON. I even encode numbers as arbitrary precision decimals (which JSON also does). This is quite different from CBOR wh…

  22. comment
    Comment #47443164

    it's not really possible to stay human readable and get the compression levels and random access properties I was going for. But it is as human tooling friendly as possible given t…

  23. comment
    Comment #47443144

    yes, this would work very well for any case where you have embedded databases of unstructured data that you want to query in a website or edge server

  24. comment
    Comment #47443133

    yep. I built custom JSON parsers as a first solution. The problem is you can't get away from scanning at least half the document bytes on average. With RX and other truly random-ac…

  25. comment
    Comment #47443085

    I did seriously consider SQLite, but my existing datasets don't map easily to relational database tables. This is essentially no-sql for sqlite.