Like others, it took me a while to understand what this actually does. Even coming from a Clojure+Datomic background.
As best I can tell, this is like phpMyAdmin for Datomic. But the cool and unique thing about Hyperfiddle is that in addition to writing queries and seeing the results, you can customize the result display using markdown or even arbitrary clojurescript code. Then you can generate forms to input new data (based on the schema of the database), connect it to more clojurescript, and before you know it you've built a web app. Because the whole thing is web based, you can send a link to your "fiddle" (web app) to other people, and they can use it without knowing anything about programming. This is all without git, editing text files, or even thinking about deployment or hosting. I think that's all pretty cool.
In most situations, this would be dangerously powerful, especially running on a production database. But Datomic has unique facilities for speculating "what if I transacted this" (which is how the hyperfiddle staging area works). Datomic also has powerful undo and time-travel options, which makes it much less terrifying to hyperfiddle it.
It's also cool that hyperfiddle queries/views/code are all stored in Datomic, so you get a sort of version control type layer built-in.
I think this is a cool vision for making it much quicker to develop lightweight database-backed web apps. Obviously the current state of hyperfiddle needs a lot of work on the UI and home page to explain this all.
Just to add another piece of feedback - I'm someone who has written production Clojure + Datomic apps and still don't understand what this product actually does. Not withstanding the direct link to the demo, your actual homepage (http://www.hyperfiddle.net/ - had to work too hard to find it) doesn't say much about what this does.
The first paragraph of actual text on the page says "Isn't a tool this powerful too dangerous for production?" - you're trying to debate a problem I haven't even mentally flagged because I have no idea what it does. The demo vid is way too fast (and long - the worst combination) for me to get an understanding. I'm generally in-favor of having a demo video as the first thing on your site but only if it's max 20 seconds long and gives me a very clear picture of what it does.
Thanks for the feedback, will you ask me three questions right here (something more specific than "i dont know what this is"), so that when I rework the copy I can make sure they are clearly answered above the fold? That would be really valuable, thanks in advance.
I've known about hyperfiddle for a while, but I never really "got" it. I finally get it, this is https://glitch.com but with a hosted database and can be used for real web apps in production, thanks to datomic's use of data for schema migrations instead of imperative sql style migrations and datomic's support for "time travel".
It's definitely a huge leap forward for productivity, seeing as you can throw away git, your text editor, bash/ansible/puppet/docker/k8s for deploys since you're editing things live on datomic cloud, but it's a hard sell, even to a huge clojure fan like me, I'm just so used to the status quo.
Perhaps I've been eating the 'devops' cookies for too long, but live editing doesn't replace git and versioning. Even if you're running only 'latest' version and your product is hosted, you still need versions and to be able to roll back (or forward) and to know which nodes are running which version.
So something like glitch for fast prototyping - sure, but IMO it doesn't replace a real production workflow.
Thanks Sean! You can use git if you want and just point the fiddle at a qualified var like "myapp.foo.bar/xyz-view". Tbh it will take some time for these ideas to settle in and figure out how far the idea of code-in-database can be pushed. One interesting thing to note is that any fiddle's cljs code is basically just little top-level React.js snippets that stitch components together, it just isn't very critical in the grand scheme of things, the components themselves are still a proper dependency rooted in git. There are also some new things we can do, for example: really good intellisense backed by a database, collaborative editors for pair programming, or even dependency splitting and analysis down to the function scale like explored in Codeq. Only time will tell!
Hi HN, we're excited to share this! Basically, it is an easy way to make web apps backed by Datomic, which is an emerging database from the Clojure ecosystem with some unique capabilities that make this kind of real-time tool possible. We have a very long way to go, but we think there is an opportunity here to make programming simple again. Read more here: http://www.hyperfiddle.net/
You really need to make the presentation more approachable. It would be great if you could get a web developer to do the front-end for you -- the more unfamiliar he/she is to Datomic/Clojure the better, since so are we.
I.e there is so much that I don't grasp with this front-end. Maybe first list Datomic's pros, and then explain how you add to it, what the workflow with hyperfiddle would be, etc etc.
As you say, you have a long way to go, so good luck!
As a user, don't make me think when I visit your website. What am I looking at? The tagline "Real CRUD apps, zero to prod in a month in real-time." is good. The rest is confusing - I watched the video and opened the demo without undestanding what I'm looking at.
* What problem does the demo app solve?
* Which part is the end product (the app)?
* Which part is the editor?
* If this is the persistence layer, what else do I need to make a full-blown app?
* What is this query language?
The video is way too fast and don't understand what you're trying to show me apart from that you can build an app in real time - but again, what am I looking at?
As a user, I don't really care that it's powered by Datomic. I do care that I can time travel. What other advantages do I get from this as opposed to doing event-sourcing in my favourite SQL RDBMS?
Also, consider having a friend build the website (content) for you. They should have a different perspective about the product and show only the points that will sell it rather than going too deep too quickly.
> What other advantages do I get from this as opposed to doing event-sourcing in my favourite SQL RDBMS?
You can do it real-time in your browser (including schema changes) without learning any other tools or writing any code, other than optional React.js views and css. Thank you for the feedback!
I like the idea but it seems too confusing for anyone without background on datomic and clojure. Also there is no labeling/help for the interface. It almost feels alien.
This is interesting. I could see it replacing the small apps I would build in Django or Google Sheets. However, I think the moment any piece of a fiddle becomes non-trivial, the whole experience breaks down and you'll wish you used something else.
The deep idea we're really aiming for is proper separation of concerns. Hyperfiddle isolates your web clients from network I/O, so your components can stay declarative, data-driven and pure, and thus compose/nest arbitrarily deep and in recursive ways. If we accomplish this, it should compose a lot better than the ball of mud imperative UIs and APIs that make up today-era applications.
Again, I think the benefits of what you're describing only matter in larger apps. Separation of concerns come up in large projects where people of different disciplines get together...or you want to be disciplined about abstractions and re-use. However, when you get to that point, you're going to want specialized tools to manage each component. Code is code and it still needs to get audited.
To address this, I recommend thinking about decoupling the technology from the workflow.
We do :) The Hyperfiddle Editor includes the whole ClojureScript compiler and standard library – because we are evaling userland cljs in the browser, obviously – but we will bake / pre-compile / dead-code-eliminate userland code in prod to get artifact sizes comparable to any normal ClojureScript project. We don't do this yet but it's straightforward to do.
My first impression was that this was something kinda like phpmyadmin, but more convenient. phpmyadmin takes work to install (30m plus when you include debug time). And it's not super user friendly.
but then when i went to the web page, it seems like something else.
keep in mind I only spent about 60 seconds on the page.
Is there a way to dumb down the presentation a bit? perhaps, just show a super simple example that can be understood in a very short time.
Fiddles are data and generally are transacted into a Datomic database. Which database is configured by URI, which you can see in the demo by clicking on "env" in the toolbar top right.
If you self-host, you can instead opt to store your fiddles on the filesystem in git as .edn, .cljs and .css, or whatever. You can wire up that webservice yourself in a couple lines of code. We have a lot of built in tools that work like this, for example the schema editor, the toolbar, and the hyperfiddle editor itself which is bootstrapped. Generally we prefer to store everything in the database where reasonable, because we can hot edit it and it's a much faster and fun workflow.
As best I can tell, this is like phpMyAdmin for Datomic. But the cool and unique thing about Hyperfiddle is that in addition to writing queries and seeing the results, you can customize the result display using markdown or even arbitrary clojurescript code. Then you can generate forms to input new data (based on the schema of the database), connect it to more clojurescript, and before you know it you've built a web app. Because the whole thing is web based, you can send a link to your "fiddle" (web app) to other people, and they can use it without knowing anything about programming. This is all without git, editing text files, or even thinking about deployment or hosting. I think that's all pretty cool.
In most situations, this would be dangerously powerful, especially running on a production database. But Datomic has unique facilities for speculating "what if I transacted this" (which is how the hyperfiddle staging area works). Datomic also has powerful undo and time-travel options, which makes it much less terrifying to hyperfiddle it.
It's also cool that hyperfiddle queries/views/code are all stored in Datomic, so you get a sort of version control type layer built-in.
I think this is a cool vision for making it much quicker to develop lightweight database-backed web apps. Obviously the current state of hyperfiddle needs a lot of work on the UI and home page to explain this all.