fulcro

Book: http://book.fulcrologic.com, Community Resources: https://fulcro-community.github.io/, RAD book at http://book.fulcrologic.com/RAD.html
sihingkk 2020-09-06T00:53:14.229900Z

hi, had anyone experience with using fulcro+pathom together with neo4j (or any other graph db? )

xceno 2020-09-06T20:52:20.238100Z

I'm currently building a system with fulcro + pathom and use datomic as a graph db. Ping me in some month and ask me how it went. But right now (2 months in), I'm quite impressed. I was considering neo4j but datomic just made more sense to me at the time

lgessler 2020-09-06T01:28:46.230Z

copy pasting what i wrote krzysztof here:

lgessler 2020-09-06T01:29:42.230200Z

wasn't too bad, the worst part i'd say is that neo4j's identifier syntax isn't really compatible with clojure keywords (so my neo4j nodes would look like `(p:Person {address: ..., ...})` but I'd have to write code to turn that into `{:person/address ...}`). not the end of the world, but you need to either accept that you'll be putting functions in to deal with renaming variables everywhere, or you need to write a macro to do it for you you can see here for the code i wrote: https://github.com/lgessler/glam/blob/605b09f462079afa81a68b69c4de6747c3a6da49/src/main/glam/models/project.clj i think if i had kept going with neo4j i would have looked hard for a way to make the interop stuff less painful hope that helps, let me know if you have more questions

Jakub Holý 2020-09-06T07:23:43.230500Z

I struggle with long recompilation times of 3-7s shadow-cljs in my Fulcro app. I have tried RAD demo and it has a similar though smaller problem. Do you have similar experiences? (I have 4y old macbook pro). Wilker reported: > 3-7 seconds seems a very high time for me, in the biggest project I worked on (30k+ LOC), we were still getting compilations in 500ms avg (except when touching some of the big files, there it could go up to 3 seconds, but rarely more than that)

tony.kay 2020-09-06T18:27:50.235400Z

@holyjak are you talking about initial startup full compile, or incremental compile on save? Incremental compiles on my late-2013 macbook pro are sub-second on 30kloc projects (of mine). That said, you can make your compile times really horrible if you use large namespaces. Part of the reason Fulcro is split into so many nses is this keeps compile times low. every time you add a function to a file you increase the probability that you’ll edit that file, and you also increase the liklihood that you’ll require it in other files. Editing that file will trigger recompiles of that file and anything that requires it. So: • Keep nses small • Prune your requires aggressively. Don’t leave unused requires in a file. Closure will (mostly) DCE them on adv builds, but they will hurt your incremental times

1❤️
tony.kay 2020-09-06T18:28:26.236Z

Put 30kloc in one file and pretty much expect super long compiles, because there is no incremental to that…it has to do the ns from top to bottom.

tony.kay 2020-09-06T18:32:41.236900Z

Editing dashboard.cljc on f-rad-demo for me: initial compile 16s, first incremental 0.58s next 0.49s. Editing sales_report.cljc: 0.565, 0.551, etc

tony.kay 2020-09-06T18:33:02.237300Z

that is on my desktop, which is a little faster than that old laptop, but not more than abt 30%

tony.kay 2020-09-06T18:33:22.237700Z

of course both machines have SSDs and sufficient RAM, which matters

Jakub Holý 2020-09-07T11:47:42.240400Z

Thanks a lot! I have an early 2015 MacBook Pro with 16GB RAM (14GB used) and an SSD disk, which was a high-performance machine at that time but perhaps is too aged now. The OS complained about the disk being used but increasing the free space from 5 to 10GB did not change the performance.

nivekuil 2020-09-06T18:33:59.237900Z

verdict: compose queries/initial state all the way up to the root. simple yet somehow hard

xceno 2020-09-06T20:52:20.238100Z

I'm currently building a system with fulcro + pathom and use datomic as a graph db. Ping me in some month and ask me how it went. But right now (2 months in), I'm quite impressed. I was considering neo4j but datomic just made more sense to me at the time

lgessler 2020-09-06T23:49:40.239Z

if a component is a dynamic router's target and it has :initial-state, should the router be passing its initial state to it? i thought the answer would be yes but i can't seem to get it to work