keechma

Keechma stack. Mention @U050986L9 or @U2J1PHYNM if you have any questions
carkh 2019-06-04T07:33:01.002800Z

for my use case the loader function of a datasource feels like its requests parameter is inside out. I have to look inside a possible first request to get to the controller... I feel like a loader function will always pertain to a single end-point, or at the least that one could make a closure creating function to produce several loader functions of a same "type"

carkh 2019-06-04T07:34:15.003700Z

i'm sure this works for you, but i can't help but think an additional app-db parameter to the loader function would be helpfull

carkh 2019-06-04T07:34:48.004Z

anyways, got it working as is, but it's a little bit hacky

carkh 2019-06-04T07:36:55.004100Z

carkh 2019-06-04T07:38:01.004900Z

this is for an eql endpoint in the background page of the extension

mihaelkonjevic 2019-06-04T09:57:02.008300Z

@carkh I’ve just released keechma-toolbox 0.1.24 that adds app-db as a third param to the loader fn

carkh 2019-06-04T09:57:18.008500Z

!

carkh 2019-06-04T09:57:27.008800Z

thanks !

carkh 2019-06-04T09:58:02.009100Z

that's some crazy level of support =)

😁 1
carkh 2019-06-04T10:09:29.010100Z

works now with that new app-db, and i'll now be able to abstract the EQL stuff in a reusable namespace...Very nice

carkh 2019-06-04T10:09:54.010300Z

i didn't know about that second parameter

mihaelkonjevic 2019-06-04T10:13:14.012200Z

second parameter is the context - that is something you can set on the app level (in app-definition under the :context key). We use it when we have “singletons” in the app that need to be shared, for instance - Firebase connection, or if you’re using SSR, you could have different loaders - XHR loader for the web context and db loader for the server side context

mihaelkonjevic 2019-06-04T10:13:51.013100Z

you can also access it on the controller level - via (controller/context context) or as a third param in the pipelines -> (pipeline! [value app-db context])

carkh 2019-06-04T10:14:04.013400Z

ah ok i was wondering what the entry point was for that context param

carkh 2019-06-04T10:16:50.014900Z

so i could have used that and establish the required context for my connect controller in the same way you do in <http://keechma.toolbox.dataloader.app|keechma.toolbox.dataloader.app>

mihaelkonjevic 2019-06-04T10:17:13.015200Z

yeah, that’s an option too

carkh 2019-06-04T10:17:41.015800Z

well i have it working now so we'll call it good enough !

mihaelkonjevic 2019-06-04T10:18:01.016100Z

btw, what are you building?

carkh 2019-06-04T10:18:45.016800Z

that's a chrome extension that's supposed to be the entry point to a range of services for a customer

carkh 2019-06-04T10:19:07.017300Z

i personally wouldn't do an extension, but yeah customers are what they are

carkh 2019-06-04T10:20:38.018200Z

i'll maybe put the learned knowledge to use in a tagged bookmarks extension, always wanted to have that and the current offering is subpar

carkh 2019-06-04T10:24:26.019400Z

i've been on the lookout for a web framework for cljs, have some experience with re-frame, but it's way too verbose and the jumping around drives me crazy.

carkh 2019-06-04T10:25:01.019900Z

fulcro looked nice but the abstraction is leaking all over the place

Ahmed Hassan 2019-06-08T20:52:09.103700Z

What does it mean?

Ahmed Hassan 2019-06-08T21:16:04.104200Z

@carkh How does it relates in the context of ClojureScript libraries, especially Fulcro?

carkh 2019-06-10T15:54:30.104500Z

ok, i really wanted to like fulcro. but there is much magic going on there

carkh 2019-06-10T15:55:06.104700Z

the abstraction is this : define queries for your components and it'll get all figured out for you

carkh 2019-06-10T15:55:38.104900Z

and the fulcro people have been building upon this

carkh 2019-06-10T15:55:50.105100Z

awesome tooling etc...

carkh 2019-06-10T15:56:04.105300Z

much nice things to be said about it all

carkh 2019-06-10T15:56:49.105500Z

but when you build an app with it, you start seeing places where you have to place dummy queries to make the machinery work

carkh 2019-06-10T15:56:55.105700Z

and it's not quite clear where and why

carkh 2019-06-10T15:57:02.105900Z

(to me at least)

carkh 2019-06-10T15:57:55.106100Z

have a look at union queries for instance

carkh 2019-06-10T15:58:02.106300Z

and routing built on top of that

carkh 2019-06-10T15:58:53.106500Z

i'd say that's accidental complexity, at the service of the abstraction

carkh 2019-06-10T15:59:13.106800Z

hence the leaking

carkh 2019-06-10T16:01:53.107Z

i had hoped that fulcro had fixed some of the problems i percieved in om-next. again a very personal thing, maybe my brain isn't wired for that way of doing things.

carkh 2019-06-10T16:02:20.107200Z

and it did indeed fix some of those

carkh 2019-06-10T16:02:50.107400Z

but i feel there is much "complecting" going on there

carkh 2019-06-10T16:03:52.107600Z

i feel bad saying those things when the fulcro people have been so very friendly and helpfull

carkh 2019-06-10T16:08:20.107900Z

End of the day, I can confidently say that fulcro is well suited to make a successful app. you'll have to fiddle with those queries a little bit but it all works well enough

mihaelkonjevic 2019-06-04T10:25:26.020700Z

yeah, I started with re-frame too, but event based frameworks feel too much like GOTO programming

carkh 2019-06-04T10:25:34.021200Z

exactly

carkh 2019-06-04T10:27:11.023300Z

what i would really like is a fullly reactive thing like precept, but maintained and evolving... keechma looks like it strikes a good balance between features and down to earth results

mihaelkonjevic 2019-06-04T10:27:17.023400Z

I’ve used pub-sub in JavaScriptMVC some 10-ish years ago, and it was problematic then too, especially when you have defined order between event handlers. In my experience it’s much better to centralize logic (like with dataloader) and to keep components as pure as possible

carkh 2019-06-04T10:29:06.025900Z

in the end what we're doing is producing a dom, just building strings is what we did 10 years ago and that should be simple, understandable

mihaelkonjevic 2019-06-04T10:29:15.026200Z

another thing is - I’m a working in an agency setting, we can’t be to opinionated because each client has it’s own set of requirements, so Keechma is always developed in a way that is as general as possible. It does require some more glue code, but at least it’s open enough to implement anything

carkh 2019-06-04T10:30:10.027100Z

i'm ok with glue code, i'll do my own abstractions if need be. I like that i can understand what's going on (with your help)

mihaelkonjevic 2019-06-04T10:30:18.027300Z

👍