Video details

Speaker Q & A | David East, Ben Lesh, & Mike Ryan | ng-conf: Hardwired


David East, Ben Lesh & Mike Ryan

Get ALL the ng-conf: Hardwired videos for FREE at
ng-conf is a three-day Angular conference focused on delivering the highest quality training in the Angular JavaScript framework. 1500+ developers from across the globe converge on Salt Lake City, UT every year to attend talks and workshops by the Angular team and community experts.
Follow us on twitter Official Website:


Why don't we bring the panel on panel? Has everyone gone? Well, how are you? I'm good. Go in. Ben. Dave. Good. Howdy. Hey. All right. He. All right. Sorry, students in last minute changing of the tires as we drive down the freeway adjustments. OK. Good job on your talks. Got some questions here. I missed you to ask me an order. Most likes gets asked first because it's a community curated list. Yeah. All right. I think we know the answer already. But I have to ask it. Graph QOL versus indirects. Why isn't there any any other graph? Q All this year, please share good resources and pattern's regular plus graph. Q. Room anyway. Double double regression. I'll take a stab at it. Go. And my opinion, it's not graft QOL or indirects. The two can play really well together. Sam, Julian and I were just talking about maybe doing some live streams this summer, some blog content exploring this topic. But I think they can play really well together. And in fact, I use graphical Andrex a job. I'll be looking out for that. We'd love to get some content out there that answers that question. Yeah. OK, cool. This one's for David. How are you doing, man? Doing great. Good. All right. Why use a traditional server approach instead of a server? This approach with Firebase, such as Firebase? Well, it depends on what you're with specifically, you mean by that there's a traditional server approach being like one server, that's it. So whether what you're doing on the server, if you're serving your app, like serving assets through a traditional server approach, and that way where you're doing like a server rendering, like every time someone sends a request them and generates made GM out and send it back. That's one way of doing. That's one way of having a general server approach. And I think that is the drawbacks of that server approach, is that you really want to be taking advantage of a CDM, especially if you're building a single page app, because you're not really a lot of your rendering is on the client side. So if you are going to a one server somewhere and you're you're just sending back that HCM all through, you know, back from that one server, you're going to have a big performance hit there because it's much faster to cash those in a sedan around the world rather than having to make that trip back to that one server. So that's Serverless can work really well with that because you can trigger a Cirillo's function to write to a CDM, which is a really. And so the Serverless function was a trigger every single time it'll be cashed in the Sudan. So that's one really nice approach. But if you mean in terms of, like, how I was demoing off the security, there's not actually well, however you want to do it isn't that big of a deal. The what's nice about the Serverless approach is that it's event driven. So Serverless will trigger when that specific thing happens that you care about. Whereas if you were doing it on a traditional server, you would just have to set up your own, like, event processing system. That's like, hey, I know this thing happened. Now run this. So, yeah. So those are kind of the two approaches for that. All right. OK, thanks, Dave. Hey, Mike, I think you answered this, but just to clarify. Can endure X. Can I use Engineer X, let an indirects push without using the store? So you can use it in your X component, the entire library, without using a single other indirects library. All that matters is that you're using some kind of observable way of structuring your state. So whether that's a Kita or Energy Access or Dan, while leadings observable store or behavior subject in a service, those all are going to play great with indirects component. So I'm going to just clarify the question. They want to know they use injects lette and injects indirects push. And you said they can use engine X component. I'm guessing indirects left and injects push up part of the component. That's right. Those are two API expose and enter your X combine. So, yes, you can use in your X component without the store. The other pieces of injects. All right. So, Mike, imagine I'm building a library. That I'm going to ship out to the peeps where I'm going to give some of that love. Does it make sense to put the store inside of my library instead of a public library? What are your thoughts on libraries exposing their actions, in effect, store applications? Yeah, I think you could do this. I'd be curious to hear what your use cases is. We support an API that makes that possible so you can use affects module for feature and the store module for feature to sort of ship your own effects and reducers. And then when it comes to actions, Mylie recommendation there is to make sure your exporting actions and a separate import than the rest the library to like if libraries name was cookies and cookies slash actions with all your actions. That way plays really well with sort of some of the lazy loading strategies that indirect developers are accustomed to. Cool. Thanks. All right, Ben. A lot of us have any we've heard about ex dev tools. Ah, yes, Dev tools, Nicholas got us all excited. We want good toys. Is there any plans on that coming out any soon? Or what do you think? Well, he's he's had those out for a while. I don't know how much time he's had to. To update them, but let's call it archness spy dev tools. You can you can find those actually under Nicklaus's get. And we have a plan where we want to try to get all of that into the core repository, to the main repository so we can kind of keep this up to date. At the same time, but that hasn't materialized yet. Yes, go, that's right. So can't I actually know how to say that Cardin's card anyways, so yeah. So you can you can find it. And we want it. We want to try to get that in the same repository as our chess master and try to keep it in sync. I don't know how compatible it is with version seven. I assume it's still fully compatible. I haven't talked with Nicholas about that. So if I want to install it, if I want to install or just spy like the chrome dev tools, like the chrome extension, do I just go to his ex just by repo or where do I go? Yeah. You want you want to go to the repository because it has instructions for how to how to install it. From other. I think that might actually be under our access now. It's now it's you have to go to that. You have to go there, remember. OK, I got to go the red meat to follow how to install it. Kay, we're going to put a link to it down below. And so if you go down to the action button down over there. So imagine, imagine, I want to go away from the zone. Yes. And I want to go to Anjar X View, which is part of an Jarek's component, right? Yeah. That's going to. I can't just like, find. Replace. Go. I can't just like remove zone Jess and then wrap my entire apon on Jericho view. So the question is, the kids want to know what are some of the recommended steps for that migration. So hopefully that it'll be a drop in replacement for the async pipe. But that's not going to be enough to get you completely off of using zone gas. Before we call injects component ready to go, we'll have a more robust answer for this. But it's going to require more than just code that you're authoring to change. There are a couple of angular libraries that you are likely using, like angular material and angular router that we're hoping to work with. They'll may need to make some changes on their end, too. We're still a while away from getting there, but it gets us on the right start. OK. Two questions for Dave. First question, what would be the best approach for SS so into multiple subdomains using firebase module? So that's as long as you have the right, like Domain's white listed, that that can work just fine. So she's using like a provider, like a single provider like Google across all or e-mail and password. It's pretty simple. There's ways with Firebase also link accounts. But that's usually pretty straightforward since your authors. Yeah. Decentralized from your your name servers. Stuff like that. So that tends to be pretty straightforward. Where it might get tricky is if you have like your own custom authentication system, then there's that's still like easy enough to do. But there's going to be some work you're going have to do to tie some things together. So for the most part, it works. But, yeah, you definitely need to figure out, like, what systems are kind of going to cause you problems. OK, cool. So with the firebase SSD, so good with the custom authentication might be a little harder. Yeah, it's a harder but more work. All right. So, Dave, you're to do app that you showed in your slides. The kids want access to you to do so. I prefer to prefer, like just a it's a cop bomb board. It's not totally just sitting at every absentee. It's a better version, though. Good. Don't disrespect it. Right. Call it. Come on now. It's now. Let's call it what it is. Every every app really is either a chat app or to do app. Like if you think about like a grocery list app, that's just an app where you're just chatting about groceries and like you just think about it every app out there. I mean, this is a chat app right here. We're just chatting. So just think about it that way. I will have the I will have that updated. And I want to get the income account to t it. Yes. Deal. Ben, this is probably a good chance to talk about some things. Kind of an interesting question. And I think maybe you can talk. You don't have to talk around it, but it would be cool if you talked at it. And then around as well. I'm just laughing because this is probably a good time to talk about some things, like I'm being sat down by my dad, Ben. I need to explain some things. You how the grass grows, buddy. No, no. I want you to explain to me how the grass grows. That's what I'm asking. All right. So first set. Yes. Four four four four seven, not one. You've got has lint rules, but AYLOR uses T. S lint. So how are we supposed to catch this stuff? Well, the reason. I mean, if you want to help us with the Senate rules, then that's great. But the reason that we're we're talking this is one they're not written yet. We need to write them and test. Lynch is moving over to be. Yes. And that's the last I heard of it. And I don't think that's changed. Eastland runs a lot faster. It has to do with the architecture in it. And they're able to handle the typescript side of things as well now, I guess. So doesn't we're tagging all of this. Things are open to suggestion. And the most important thing is that we're able to accommodate a large swath of people. Is slow moving because it's all volunteer work and after hours these days. So it's I wouldn't worry about suddenly you need to upgrade it. Yes. Yes. Lente like next month. Like this is you'll probably need to upgrade too. Yes. And I would guess before we even have these things released, if that makes sense. Yeah. OK, thanks, man. Here's a question for Ben. Not sure how much. Maybe just just not yet anyway. I was going to ask it. Is it possible for the deprecated subscribe methodology to be refactored automatically in a future engy update schematic? Yeah. So that's that's the whole idea behind trying to get these code transformations done in upcoming minor releases is ideally not only would they be something you can just run from a command line, but if it's something you can run from a command line, then it should be something that could be run from like Endi update or or whatever it is to actually have the scaffolding in place for people that are using socialite's to update those things for you. That's that's the whole idea is we wanted to make sure that migration for people, the majority to do it, use our ships is as smooth as possible. Does, though, do those migration scripts, are you going to include the yes land transitioning as well in their. What do you mean it might? Ideally, it would just leverage the same transformation's, right? So, like, it would be great if it's great he's a lending tool for these things because they can do fixes and transformations and they can notify you while you're writing code that you're doing the wrong thing. So if you can if you can knock them out like that, then you get the most bang for your buck. So that's that's ideally what we want to do. We're going to need a lot of help doing it, though, I think being the small crew that we are. Cool man. Thanks. Another question the kids want to know. Oh, sorry. They're in bad order. So this one is for Mike. It was only for Ben, but Mike Scott Hirer votes came Mike. You have a recommendation as far as structuring your state vertically, i.e., nesting on everything, just reshift at home or horizontally. Different keys of the same state object. Yeah, I, I think in in Jarek's land, we recommend a horizontal structure. We like to think of database, think of indirect state like a database where you structure a thing with multiple tables within that same database. That makes it easier to selecting those data together, using tools like selectors. I'd be my recommendation horizontal versus vertical. OK. Mike, any sort of plans to bring some sort of local component state to angular natively? Yes, that is something we will have to tackle as part of indirects component. There are a couple of proposals out within the team that we're discussing right now. When we do that, they will it will be a state management solution or component state that will live completely independently of our state management libraries. So stay tuned for that. We'll have more things to say about it soon. I think the question and maybe you're answering this is they want to know. I don't want to use NCAR X is angular going to provide something by default as well? I think that's what they're asking. Gotcha is actually gonna provide something natively for local component state. I don't know. There have been comments about this before. If you've not seen me, goes talk from last and can't. Yeah, they read goes into some of this. I like to watch that video. But you say. Okay. Do you have any more knowledge about that happening or use. Kind of like. I don't know. Yeah, I really don't know. I know something we're going to tackle on indirects side as well, but I'm not sure about the angular native implementation. Okay, cool. Where can we get more examples of engineering data, state management. Reach out toward Bell on Twitter. He's sort of the mastermind behind and Eurex data. And he has the most experience by far. He's using it in a very, very large point. It's a really good examples. All right. I mean, I asked this loss when they were done. This one's for Ben. It's kind of a hard one. So one of the barriers to entry for people who are learning a killer is our ex jass. There's several, but one of them is our ex. Yes, sure. How do you think? What do you think about how to make that barrier lower? I think there probably needs to be more guidance, too. I mean, just seems like a promise if you find it that confusing. Just use it like a promise. You can subscribe to it and get the value out of it and do whatever you want with it. And if it is, particularly if you're only dealing with it, should it be if you don't unsubscribe? Is that great? No, it's it's not great. I mean, you're going to be eating resources that you didn't want to eat, but you're in the same place you would have been if you were using promises. And the difference is you realize it now. But at the end of the day, it's if it's if it's truly that hard for you. Don't worry about operators. Just get your observable, subscribe to it and do a bunch of imperative code. And eventually, hopefully somebody comes along and helps you learn ARC's. Yes. Or you learn more and you realize like, oh, I could have done these things more tersely with these operators or I could have done them with better memory guarantees with these operators and the inherent description and all these other things. But like, if it's super hard for you, just get the observable and subscribe to it. It's OK. I'm not going to come to your house and derate you for just subscribing and never unsubscribing. You're not using operators. If anyone ever does berate you for that. You can send them to me and I'll be right there. Yes. Yeah. I went to one of the cool things that are just live. Was Jay Phelps. He said, hey, we got to stop shaming people in the community for not being as advanced with our actions as maybe we are. And yeah, I think that's important. You know, just learn it the same way the rest of us learned it. Piece by piece. Make all the same mistakes. It's fine, right? Right. Right. It's not. Like, there's no there's no our express way to do things like I don't want. I mean, there's you there's the functional reactive programming like academia crowd. And then there's the rest of us that are just getting our jobs done. And I, I cater to the rest of us like it's it's very, very important to me that everyone treats each other with respect to the community. And it's also important to me that beginners feel OK with doing what they need to do to get their job back. It's fine if you you've got a Swiss Army knife and all you need to do is use it to bang in a nail. That's banging the damn nail. OK, I don't need to find exactly the right tool. Out of 70 tools in your Swiss Army knife. I'm going to nail it. You just need to nail it. That's cool. That's my basement. Dave, by the way, I just barely notice your shirt. Great job. A, I've had this on the whole time after time. I know I barely notice my bad, my bad. All right, Kay. Gentlemen, appreciate your time. I know this was hard to focus on, preparing talks and whatnot in light of what's going on. So we really, really appreciate your indication the community had come in today in presenting these.