untangled

NEW CHANNEL: #fulcro
erichmond 2016-08-23T02:51:55.000720Z

How is untangled coming along?

grzm 2016-08-23T15:00:20.000721Z

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.

grzm 2016-08-23T15:01:06.000722Z

Also don't know if this is an untangled-client specific thing, or an Om thing.

tony.kay 2016-08-23T15:36:22.000723Z

Hi all. Back from vacation. I'll be looking at PRs this morning in more detail. Going to do some testing of my own.

grzm 2016-08-23T15:37:18.000724Z

@tony.kay Welcome back! Hope you had a restful time πŸ˜‰

tony.kay 2016-08-23T15:37:27.000725Z

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

tony.kay 2016-08-23T15:38:04.000726Z

@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

grzm 2016-08-23T15:38:38.000727Z

Cool. I might even get around to looking for it πŸ™‚

tony.kay 2016-08-23T15:39:28.000728Z

It is probably part of the merge sequence

tony.kay 2016-08-23T15:41:30.000729Z

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

erichmond 2016-08-23T15:54:49.000730Z

@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

erichmond 2016-08-23T15:54:53.000731Z

we’re considering this and re-frame

tony.kay 2016-08-23T16:04:26.000732Z

@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 2016-08-23T16:05:00.000735Z

I have not tried using Re-frame for anything, so I cannot speak to the relative difficulties in coming up to speed.

tony.kay 2016-08-23T16:05:34.000736Z

@ethangracer Ah, good to know

erichmond 2016-08-23T16:07:33.000737Z

@tony.kay thanks! so if I worked with it today, I could get a simple project working end-to-end?

erichmond 2016-08-23T16:07:40.000738Z

promise this is my last question πŸ˜„

erichmond 2016-08-23T16:07:46.000739Z

thanks for your time / answers

tony.kay 2016-08-23T16:08:07.000740Z

@erichmond If you clone Untangled TODOMvc, you'll have a full-stack working solution in about 5 mins

2016-08-23T16:09:26.000741Z

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

2016-08-23T16:10:27.000742Z

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

tony.kay 2016-08-23T16:10:49.000743Z

part of the beauty of the solution (mostly Om) is the unified approach. The full-stack story is very nice IMHO

2016-08-23T16:10:59.000744Z

Definitely

erichmond 2016-08-23T16:11:04.000745Z

thanks! we’ll poke around! I was really excited when it was first annoucned

erichmond 2016-08-23T16:11:07.000746Z

glad to see it’s still moving

2016-08-23T16:11:23.000747Z

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.

tony.kay 2016-08-23T16:12:15.000748Z

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

shaun-mahood 2016-08-23T16:26:20.000749Z

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

tony.kay 2016-08-23T17:21:27.000751Z

untangled-server 0.6.2-SNAPSHOT is on clojars. Includes @cjmurphy app-name feature.

2016-08-23T17:33:38.000752Z

@tony.kay so for my PR, the blockers are (1) you want the items-to-defer as a pure function, is that all?

tony.kay 2016-08-23T17:34:20.000753Z

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)

2016-08-23T17:35:59.000754Z

@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

2016-08-23T17:36:16.000755Z

i don't know how to write that little function proper

tony.kay 2016-08-23T17:36:35.000756Z

yeah, I've pulled in your code...I'll write a bit and make it clearer

2016-08-23T17:37:39.000757Z

i'll send you more tests in 1-2 hours

tony.kay 2016-08-23T17:39:05.000758Z

@jasonjckn if you want to jump on skype or hangouts we could pair on it.

erichmond 2016-08-23T17:49:13.000759Z

@shaun-mahood thanks!

2016-08-23T17:51:39.000760Z

@tony.kay sure when are you free?

2016-08-23T17:51:56.000761Z

@tony.kay i don't think skype or hangouts does virtual desktop (?) i know screenhero does

tony.kay 2016-08-23T17:52:41.000762Z

both do shared screen, which is good enough

2016-08-23T17:52:46.000763Z

k

2016-08-23T17:52:53.000764Z

when?

tony.kay 2016-08-23T17:52:57.000765Z

now is good

2016-08-23T17:52:59.000766Z

k

grzm 2016-08-23T19:04:28.000767Z

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.

grzm 2016-08-23T19:04:32.000768Z

on the server, that is.

tony.kay 2016-08-23T20:09:30.000769Z

no, only those marked remote

tony.kay 2016-08-23T20:09:48.000770Z

might be a bug on your end

tony.kay 2016-08-23T20:10:32.000771Z

possibly two implementations of the same method?

tony.kay 2016-08-23T23:22:45.000772Z

client 0.5.5-SNAPSHOT updated on clojars

tony.kay 2016-08-23T23:23:03.000773Z

contains @jasonjckn patch for conflicting queries being improperly merged

grzm 2016-08-23T23:23:32.000774Z

nice!

grzm 2016-08-23T23:24:05.000775Z

thanks, @jasonjckn @tony.kay

tony.kay 2016-08-23T23:24:18.000776Z

oh, was that biting you?

grzm 2016-08-23T23:24:57.000777Z

nope, just appreciating the work

tony.kay 2016-08-23T23:25:06.000778Z

ah, cool πŸ™‚

grzm 2016-08-23T23:25:29.000779Z

And I've really learned a lot from your video series. very good stuff.

tony.kay 2016-08-23T23:26:13.000780Z

yeah, I'm glad they're coming in handy. I fear the day that IntelliJ changes enough to require me to redo them πŸ˜•

grzm 2016-08-23T23:27:03.000781Z

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.

tony.kay 2016-08-23T23:27:43.000782Z

yeah, we have emacs and vim users here, so the project file is set up to work well for any

grzm 2016-08-23T23:30:10.000784Z

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.

tony.kay 2016-08-23T23:30:59.000786Z

The mutation to select a car just has to change the app state to the right state

tony.kay 2016-08-23T23:31:13.000787Z

think of the render as a pure function. If the state is right, it will render right

grzm 2016-08-23T23:31:26.000788Z

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.

tony.kay 2016-08-23T23:32:03.000789Z

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

grzm 2016-08-23T23:32:06.000790Z

Like a singleton in the main tree

tony.kay 2016-08-23T23:32:37.000791Z

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

tony.kay 2016-08-23T23:32:44.000792Z

(e.g. union query)

tony.kay 2016-08-23T23:33:12.000793Z

there is a cookbook recipe

grzm 2016-08-23T23:33:16.000794Z

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

tony.kay 2016-08-23T23:33:28.000795Z

I think the cookbook even shows how to hot-load data from the server into the tab

grzm 2016-08-23T23:34:03.000798Z

That's the one I'm looking at. Yeah, the lazy loading is good.

tony.kay 2016-08-23T23:34:23.000799Z

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)

grzm 2016-08-23T23:34:24.000800Z

You've covered a lot of the bases πŸ™‚

tony.kay 2016-08-23T23:34:34.000801Z

trying

tony.kay 2016-08-23T23:34:48.000802Z

it's all the same stuff, but it helps to see it from lots of angles

grzm 2016-08-23T23:34:49.000803Z

I'm hoping to get some more blog posts out there as well

tony.kay 2016-08-23T23:35:00.000804Z

please do cookbook additions if you want

tony.kay 2016-08-23T23:35:16.000805Z

or tutorial additions if you have idea on clarifying

grzm 2016-08-23T23:35:20.000806Z

When I have something to add, I definitely will!

tony.kay 2016-08-23T23:35:36.000807Z

dev guide also needs love

tony.kay 2016-08-23T23:35:39.000808Z

lots to do

grzm 2016-08-23T23:35:56.000809Z

I'm also interested in the full-stack testing stuff that the Ladderlife people have with Cellophane.

tony.kay 2016-08-23T23:35:58.000810Z

blog doesn't hurt...new exposure avenues are nice

tony.kay 2016-08-23T23:36:14.000811Z

You know that Untangled has a full-stack testing story, right?

tony.kay 2016-08-23T23:36:20.000812Z

the protocol testing stuff

grzm 2016-08-23T23:36:30.000813Z

Does it require untangled-server?

tony.kay 2016-08-23T23:36:38.000814Z

it is more clever than that

tony.kay 2016-08-23T23:37:00.000815Z

but it does exercise both the client and server...just in a CI compatible, non-breaking way

grzm 2016-08-23T23:37:17.000816Z

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.

tony.kay 2016-08-23T23:37:33.000817Z

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

tony.kay 2016-08-23T23:37:55.000818Z

See the talk I gave at Clojure West last year (it was an unsession)

tony.kay 2016-08-23T23:38:05.000819Z

not a lot of docs on it, but I explain the concepts there

grzm 2016-08-23T23:38:08.000820Z

I was there πŸ™‚

tony.kay 2016-08-23T23:38:16.000821Z

oh, right, we met, didn't we?

grzm 2016-08-23T23:38:17.000822Z

I'll rewatch it, though

grzm 2016-08-23T23:38:22.000823Z

Yup πŸ˜‰

tony.kay 2016-08-23T23:38:37.000824Z

Yeah, I thought your name was familiar

tony.kay 2016-08-23T23:38:42.000825Z

sorry...lots of ppl πŸ™‚

grzm 2016-08-23T23:39:19.000826Z

And you've been helping lots of us. I didn't expect you to remember me πŸ™‚

grzm 2016-08-23T23:41:04.000827Z

Well, back to bug fixing. Thanks again for all you've done. I do appreciate it.

tony.kay 2016-08-23T23:51:20.000828Z

hey, yeah. You're welcome.