
Show HN: We made a real-time editor for web database apps - dustingetz
http://demo.hyperfiddle.net/:quick-demo/
======
aaroniba
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.

------
jtmarmon
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/](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.

~~~
dustingetz
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.

~~~
jtmarmon
\- What does your product do (e.g. in-browser website builder)

\- Why is it uniquely good at doing that (e.g. iteration speed is super fast,
no installing dependencies, etc)

\- For the non-clojure inclined, what is the value of clojure/datomic to them

------
swlkr
I've known about hyperfiddle for a while, but I never really "got" it. I
finally get it, this is [https://glitch.com](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.

~~~
xchaotic
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.

------
dustingetz
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/](http://www.hyperfiddle.net/)

~~~
kreetx
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!

------
aargh_aargh
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?

Hope this helps!

~~~
aargh_aargh
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.

------
option_greek
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.

------
tokyodude
> We made a real-time editor for web database apps

When I read this I assumed this was going to be a web based version of
Filemaker or Access. Instead a code editor appeared.

Are there web based versions of Filemaker? That used to be the go to app for
non-techies making database apps.

~~~
tokyodude
Oh haha, filemaker still exists

[https://www.filemaker.com](https://www.filemaker.com)

Though it sadly doesn't seem web based

------
fiatjaf
I love the idea and I've worked on similar stuff (although not in Clojure or
Datomic) multiple times[1], however never finishing anything.

The problem is that I don't know Clojure or Datomic, so I don't know how to
edit the app. It seems too complicated to learn.

[1]: [https://github.com/fiatjaf/journalstate-
todomvc](https://github.com/fiatjaf/journalstate-todomvc)

~~~
fiatjaf
Besides that, I will try to learn it later when I have more time.

------
madrox
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.

~~~
dustingetz
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.

~~~
madrox
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.

~~~
dustingetz
It already is

------
chrisparton1991
Thanks for sharing your work!

Your demo app has a 1.7MB payload after gzipping (the main.js file alone is
9.5MB before gzip). For me, this alone would be a dealbreaker.

Do you have plans to reduce the payload size?

~~~
dustingetz
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.

~~~
chrisparton1991
Cool, I understand it's more important to get an MVP up and running before
applying optimisations. It's good to know that it's on your radar though :)

Thanks for answering my question, and best of luck with Hyperfiddle!

------
megaman8
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.

------
pbiggar
I definitely think there's value in hosted datomic. But I was under the
impression the license forbade it - did they change that?

------
unixhero
Looks really cool! I got it, the fast video was great.

------
qwerty456127
Does it save the data on the user PC or on a server?

~~~
dustingetz
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.

