Datomic, Datalog, GraphQL, APIs, etc.

(tank.hyperfiddle.com)

177 points | by tosh 1889 days ago

5 comments

  • rmbryan 1889 days ago
    If "Hyperfiddle is after more of a vision where like, what would it take for my mom or my future kids to be programmers and yet not be professional software engineers." then I suggest you focus on drastically simplifying the vocabulary you use to explain what Hyperfiddle is.

    For example: "This is a pastebin like environment for learning Hyperfiddle. Please namespace :idents with your username Schema changes are allowed To make a fiddle interactive, change tank.hyperfiddle.net to demo.hyperfiddle.net"

    My mom no grok: pastebin, :idents, namespace as a verb, schema, "change" without a where to change.

    Granted, this is a conversation between to engineers, so there's lexicon, but even listening, I get the sense that words get used without definition, or at least without a definition that speaker and listener share.

    • dustingetz 1889 days ago
      For those out of the loop - At Hyperfiddle we are building a tool for Clojure/Datomic programmers to make back of house dashboards easily. http://www.hyperfiddle.net/ Because Hyperfiddle/Datomic has such a simple information model, we see a path to eventually making this easy enough for code-savvy amateurs. But today you need to know Clojure.
      • jives 1889 days ago
        How did you uncover the pain point around making these internal dashboards? What kind of resistance have you encountered from developers who typically enjoy rolling things from scratch?
        • dustingetz 1889 days ago
          Mostly the resistance is skepticism that this is even possible, which is totally justified because we weren't even sure ourselves until sometime last year. We ourselves are skeptical of all the Javascript and SQL centric solutions, including GraphQL. We see Clojure/Datomic as an opportunity to pave over all that complicated baggage and re-present programming in an accessible way. For example, a code-savvy product owner or data manager can make their own tools or diagnose problems without going through engineering, because the system is so operationally transparent.

          Clojure programmers seem to be excited once they "get it". Hyperfiddle is hyper-extensible and built up in layers, most things can be customized with a Clojure/Script function. For example React.js views and Datomic transactions – in Hyperfiddle these are very simple, very often one-liners.

  • frankmcsherry 1889 days ago
    For some context on "what Niko presented at the Conj",

        https://2018.clojure-conj.org/nikolas-gobel/
    
    which is a reactive Datalog implementation built over differential dataflow. The .. um reported anxiety that to add new queries requires a recompile loop, replaying all of history, etc, suggests maybe they aren't entirely on top of how the system works.

    Edit: and again tomorrow at clojureD:

        https://clojured.de/schedule/#nikolasGoebel
    • dustingetz 1889 days ago
      hi Frank, we are definitely not entirely on top of this stuff, but it is very awesome and we will get there eventually :)

      Can you help me understand where we went awry here:

      "Now of course the problem there with a rules engine... I have to look at the incremental dataflow, but I imagine it's kind of the same sort of approach. The problem with that is that if you want to sort by a new thing or you have a new piece of information, you have to change the network and backflow any... [You have to know compile time...] Yeah. Yeah. Exactly. And there are systems where you can add a new rule at runtime, but a lot of those also involve then re-ingesting history into the network to repopulate anything they... 'Cause a lot of these systems to save memory, will just throw away any information you're not interested in, from compiled query."

      If we are close can you tighten up the language and if we are far where did we go wrong? (In the context of differential dataflow, not rules networks)

      • frankmcsherry 1889 days ago
        No worries!

        Niko's talk should probably be the reference material, but you definitely can deploy new queries interactively, against maintained indexed representations of the historical streams. No recompilation required. Streams are maintained in indexed form and don't need to be re-flowed (they may need to be re-indexed if your query calls for an index that doesn't exist).

        Deploying a new query takes ~milliseconds if the correct indices exist, and if not it seems to be no slower than purpose-built Datalog systems (e.g. LogicBlox, but performance seems solid compared with Souffle). This is despite then running against live-updated data.

        As I suspect you know, we cannot report performance relative to Datomic. ;)

  • dustingetz 1889 days ago
    also see the healthy reddit clojure discussion: https://www.reddit.com/r/Clojure/comments/as16f6/transcript_...
  • fiatjaf 1889 days ago
    I love Hyperfiddle, but I'm not good enough to use it.
    • dustingetz 1889 days ago
      Hyperfiddle 2.0 landing soon!
      • bzg 1889 days ago
        \o/ Can I squeeze a last minute request? Allow to login to http://demo.hyperfiddle.net for users who don't have a Google account.

        In any case, I love the idea. Looking forward!