How is untangled coming along?
in my app state, I always see a nil nil
key-value pair. Is this normal? Or does it refer to the root object? Or do I have something dangling somewhere? I'm not seeing any warnings in the console, and things appear to be working. Just wondering what that is.
Also don't know if this is an untangled-client specific thing, or an Om thing.
Hi all. Back from vacation. I'll be looking at PRs this morning in more detail. Going to do some testing of my own.
@tony.kay Welcome back! Hope you had a restful time π
@erichmond I think it is coming along quite well. Om seems to get bug fixes as we push the boundaries (often thanks to @anmonteiro ). We're quite happy with it, and there are now a few things out in the commercial space using it.
@grzm the nil nil
thing is probably an Untangled bug. I've seen it. Have not bothered tracing it down, since it doesn't hurt anything
Cool. I might even get around to looking for it π
It is probably part of the merge sequence
@jasonjckn I'll give some serious brain cell activity to your PR. I just need to put my brain in gear enough to grok your comments/code.
@tony.kay thanks for responding. whatβs your suggestion on if people should adopt it yet? weβre in a position where we need to crank out an MVP and at this point if things arenβt baked well, weβre going ot have to abandon it for time considerations
weβre considering this and re-frame
@erichmond We've got a product in Beta, and I know of at least one other company that does as well. Reframe is a different animal, aimed only at the UI. Om/Untangled are full-stack stories.
@tony.kay: @grzm https://github.com/untangled-web/untangled-client/issues/22
I have not tried using Re-frame for anything, so I cannot speak to the relative difficulties in coming up to speed.
@ethangracer Ah, good to know
@tony.kay thanks! so if I worked with it today, I could get a simple project working end-to-end?
promise this is my last question π
thanks for your time / answers
@erichmond If you clone Untangled TODOMvc, you'll have a full-stack working solution in about 5 mins
I'm at one of those other companies with a beta product on Untangled - I think it worked out pretty well for us. Overall my only complaints have been learning curve, and @tony.kay has done a pretty great job building up documentation and tutorials
We started with a prototype (week long spike) on a om.next stack that didn't use untangled - we heard about it after we were done with the prototype and realized it solved almost all of the pain points we were fighting during that first week
part of the beauty of the solution (mostly Om) is the unified approach. The full-stack story is very nice IMHO
Definitely
thanks! weβll poke around! I was really excited when it was first annoucned
glad to see itβs still moving
I'm not going to say it's a magic bullet - it's still pretty bleeding edge, but we've been pretty happy with it overall.
@erichmond Definitely go through the tutorial, and the getting started videos available from the Untangled website. They'll save you a lot of time, I think.
@erichmond: from the perspective of a re-frame user, you should be able to get the UI up and running very quickly, and the concepts involved are quite simple and straightforward. The tradeoff is that it really only deas with the UI, and doesn't deal with many of the concerns that Om and untangled are aimed at (nothing graphql-like, nothing for normalizing data, etc). If you are looking for a ui for a more traditional rest based app that is targeting primarily one platform, re-frame is an amazing solution. If the really innovative things in om and untangled are what you need, then re-frame is probably not what you are looking for.
untangled-server 0.6.2-SNAPSHOT is on clojars. Includes @cjmurphy app-name feature.
@tony.kay so for my PR, the blockers are (1) you want the items-to-defer as a pure function, is that all?
I'd like tests that show it does the right thing in the cases I described (e.g. it currently uses data-ident
, which isn't correct)
@tony.kay i'm still pretty fresh to the code base, I can definitely write more tests and make it pure, but that data-ident part that one function passed to distinct-by I need your help
i don't know how to write that little function proper
yeah, I've pulled in your code...I'll write a bit and make it clearer
i'll send you more tests in 1-2 hours
@jasonjckn if you want to jump on skype or hangouts we could pair on it.
@shaun-mahood thanks!
@tony.kay sure when are you free?
@tony.kay i don't think skype or hangouts does virtual desktop (?) i know screenhero does
both do shared screen, which is good enough
k
when?
now is good
k
In untangled, are all mutations sent to the server, even if remote isn't set to true? I'm seeing them show up in the logs.
on the server, that is.
no, only those marked remote
might be a bug on your end
possibly two implementations of the same method?
client 0.5.5-SNAPSHOT updated on clojars
contains @jasonjckn patch for conflicting queries being improperly merged
nice!
thanks, @jasonjckn @tony.kay
oh, was that biting you?
nope, just appreciating the work
ah, cool π
And I've really learned a lot from your video series. very good stuff.
yeah, I'm glad they're coming in handy. I fear the day that IntelliJ changes enough to require me to redo them π
I'm still an Emacs user π Also using Pedestal on the backend instead of untangled server, but they're decoupled enough that it hasn't been an issue.
yeah, we have emacs and vim users here, so the project file is set up to work well for any
I've got a demo tomorrow so I'm finishing up what I need to to make that happen. After that I'm working on lazy loading tabs. Not sure how to scope the queries for the tab based on a setting. For example, say the main tab has a list of cars, and when I select one of the cars, the other tab opens up with details of that particular car.
The mutation to select a car just has to change the app state to the right state
think of the render as a pure function. If the state is right, it will render right
That's what I was thinking. Have to figure out how to get the app state like I need to. Still need more practice doing that.
1. put the "selected car" in the right object that renders the car 2. put the "which tab is open" value for showing the tab
Like a singleton in the main tree
sometimes a singleton...if it is a single UI element. Tabs are often a single data item that use an ident to switch queries/ui rendering
(e.g. union query)
there is a cookbook recipe
Right. I was thinking of the singleton for the selected car, independent of the tab. Then the query for the tab would have a link to that singleton
I think the cookbook even shows how to hot-load data from the server into the tab
https://github.com/untangled-web/untangled-cookbook/tree/master/recipes/tabbed-interface
That's the one I'm looking at. Yeah, the lazy loading is good.
mmm. more likely the object that represents the view of the car (which might be a singleton) would be updated for a field to point at the right car (which would end up with recursive queries, etc)
You've covered a lot of the bases π
trying
it's all the same stuff, but it helps to see it from lots of angles
I'm hoping to get some more blog posts out there as well
please do cookbook additions if you want
or tutorial additions if you have idea on clarifying
When I have something to add, I definitely will!
dev guide also needs love
lots to do
I'm also interested in the full-stack testing stuff that the Ladderlife people have with Cellophane.
blog doesn't hurt...new exposure avenues are nice
You know that Untangled has a full-stack testing story, right?
the protocol testing stuff
Does it require untangled-server?
it is more clever than that
but it does exercise both the client and server...just in a CI compatible, non-breaking way
well, that's good to hear π Maybe this weekend I'll take a look. My backend is pretty well covered. Front-end needs more automated testing.
it doesn't test the "rendering" of the UI, but it gets at what you really want: making sure the model interactions are correct all the way through
See the talk I gave at Clojure West last year (it was an unsession)
not a lot of docs on it, but I explain the concepts there
I was there π
oh, right, we met, didn't we?
I'll rewatch it, though
Yup π
Yeah, I thought your name was familiar
sorry...lots of ppl π
And you've been helping lots of us. I didn't expect you to remember me π
Well, back to bug fixing. Thanks again for all you've done. I do appreciate it.
hey, yeah. You're welcome.