pathom

:pathom: https://github.com/wilkerlucio/pathom/ & https://pathom3.wsscode.com & https://roamresearch.com/#/app/wsscode
prnc 2021-04-22T15:29:51.227100Z

As I understand p.eql/process in itโ€™s output is silent about Exceptions. thrown in resolvers? Is checking the meta data, the recommended way of checking for errors atm? E.g.

(-> process-result
      (meta)
      ::pcr/run-stats
      ::pcr/node-run-stats
      ::pcr/nodes-with-error)
Or are there other error handling strategies?

wilkerlucio 2021-04-22T15:36:04.227200Z

check the attribute errors plugin: https://pathom3.wsscode.com/docs/built-in-plugins#attribute-errors

prnc 2021-04-22T15:37:39.227500Z

Ah nice, thanks! Iโ€™ve read through the debugging page but I didnโ€™t get to plug-ins!

henrik 2021-04-22T15:59:19.229100Z

@wilkerlucio I have to say though, Pathom 3 seems really snappy. We wrapped all resolvers in Honeycomb logs, and played around with the different parsers/resolvers in Pathom 2, along with batching. Then we threw Pathom 3 into the mix (and immediately got problems due to the well-known batching problem) Bottom line, Pathom 3 without parallelism or batching is just as performant for our particular use case as Pathom 2 with parallelism, batching, & tweaks, if not better. So many kudos on the great work, but also, why is this so? ๐Ÿ˜„ Does Pathom 3 produce more clever plans?

henrik 2021-04-23T08:51:08.234600Z

From where I'm sitting, it certainly looks like Pathom 3 is calling the resolvers fewer times than Pathom 2 did, which might account for the performance: it seems to be doing less work. This seems to be the case even though you recently turned off some optimizations, from what it sounds like. I also noticed that I could severely suboptimize Pathom using batching. I don't remember if this was Pathom 2 or 3, but when I turned on batching it seems like it ended up calling more resolvers (though, in parallell, due to how I implemented the batching). From this it seems like it really isn't worth batching too aggressively, unless you know that the resolver is going to quite expensive to run per individual call.

henrik 2021-04-28T08:53:48.250400Z

Yeah, I've noticed that it's hard to get any I/O to Datomic faster with batching, since it's not really "I/O", and Datomic caches aggressively.

wilkerlucio 2021-04-22T16:32:54.229300Z

hello Henrik! glad to hear about these benchmarks, you make my day happier ๐Ÿ™‚ about how, its because Pathom 3 goes much more strait to the point than Pathom 2. Pathom 2 still follows the same parser/readers abstraction that were created by David Nolen in the first versions of Om.next. by that time, connect ideas were inexistent. later when I got to the connect idea on Pathom 2, it was an addition to it, so it has to accomodate itself there. in Pathom 3, instead of connect having to โ€œgo aroundโ€ the readers interface, connect is the main thing in Pathom 3, and anything else needs to go around that. This allows me to optimize in such a way that wouldnโ€™t be possible in Pathom 2 the new planner thing also helps, Pathom 2 keeps planning (and in case of errors, replanning) all the time while it runs. Pathom 3 model plans once per entity, and that thing is cached, so all the traversing code to figure things out can be isolated, and by the time Pathom 3 is โ€œrunningโ€, it can just go traversing the plan nodes, never needs to replan And most important, I started Pathom 3 with the previous experience about what was bad about Pathom 2, that surely helps me avoid some pitfalls

๐Ÿ‘ 1
littleli 2021-04-22T21:12:39.230600Z

@wilkerlucio I have a progress on windows build / release process of pathom-viz with github actions. stay tuned for PR.

๐Ÿ™ 1
๐ŸŽ‰ 2
littleli 2021-04-22T21:38:25.231Z

https://github.com/wilkerlucio/pathom-viz/pull/37

littleli 2021-04-22T21:41:16.231400Z

trick is, you have to use shell: powershell and once you're down this rabbit hole you have to have two run builds. One for MacOS and Linux, and separate one for Windows.

littleli 2021-04-22T21:41:47.231600Z

ifs are ugly, but since the matrix is small its probably acceptable.

wilkerlucio 2021-04-22T22:01:16.231800Z

merged, Iโ€™m doing a few design adjusts in the Requests tab

wilkerlucio 2021-04-22T22:01:38.232Z

them Iโ€™ll make a tag so we get the windows release on the main repo ๐Ÿ™‚

littleli 2021-04-22T22:05:17.232200Z

๐Ÿคž

wilkerlucio 2021-04-22T22:17:35.232400Z

:hand_with_index_and_middle_fingers_crossed: https://github.com/wilkerlucio/pathom-viz/runs/2414822943?check_suite_focus=true

littleli 2021-04-22T22:30:39.233300Z

๐Ÿ‘ ๐ŸŽฏ

littleli 2021-04-22T22:31:40.233500Z

Congratulation sir! Your application runs on one more platform ๐Ÿ™‚

wilkerlucio 2021-04-22T22:32:17.233700Z

without requiring the user to compile itself ๐Ÿ™‚

๐Ÿ‘ 1
wilkerlucio 2021-04-22T22:32:37.234Z

Iโ€™m updating the docs in Pathom 3 as well, and making the announcement text, will be up in a min

wilkerlucio 2021-04-22T22:40:12.234200Z

1
littleli 2021-04-22T23:59:09.234300Z

as I promised to you once. I added Pathom-viz to scoop bucket and it can now be installed with scoop installer from the command line.

๐Ÿ™ 1