Standalone Structure with Nx - AiA 372
Colum Ferry is a Senior Software Engineer at Nrwl. He joins the show to discuss "Component-First Architecture with Standalone Components and Nx". He begins by explaining the concept of the article. He also elaborates more about Nx and its amazing features for developers.
Hosted by:
Show Notes
Colum Ferry is a Senior Software Engineer at Nrwl. He joins the show to discuss "Component-First Architecture with Standalone Components and Nx". He begins by explaining the concept of the article. He also elaborates more about Nx and its amazing features for developers.
On YouTube
Sponsors
- Chuck's Resume Template
- Developer Book Club starting
- Become a Top 1% Dev with a Top End Devs Membership
Links
- Component-First Architecture with Standalone Components and Nx | by Colum Ferry | Nx Devtools
- Colum Ferry
- LinkedIn: Colum Ferry
- Twitter: @FerryColum
- Web Animations Course: lucaspaganini.com/web-animations
- Hire Angular Experts: unvoid.com
- YouTube @lucaspaganiniweb
- LinkedIn @lucaspaganiniweb
- Twitter @lucaspaganini
- Instagram @lucaspaganini
- TikTok @lucaspaganiniweb
Picks
- Armen - Inventing Reality: The Politics of News Media
- Chuck - Ark Nova
- Chuck - Obviously Awesome
- Chuck - The Alloy of Law
- Lucas - Unity WebGL Player | War
Transcript
Charles Max_Wood:
Hey there and welcome back to another adventures in Angular This week. On our panel we have Armand Verdanan,
Armen_Vardanyan
Yeah,
Charles Max_Wood:
Armand Verdanan, We have Subertmitra,
Subrat_Mishra
Hello,
Charles Max_Wood:
Lucas Paganini,
Lucas_Paganini:
Hey,
Charles Max_Wood:
I'm Charles Max Wood from Top End Eves, and today we have a special guest. It's Colum Ferry.
Colum_Ferry:
Hi.
Charles Max_Wood:
Do you want to introduce yourself? Let people know who you are and why you're so famous? everywhere
Colum_Ferry:
I think say Missis, Put nicely. Am calling Ferry. I'm a senior engineer at Norwell, I work on the angular vertical for the N X defitals. I posted a lot of content around Angular and the clsinthedftal and round Angular.
Charles Max_Wood:
Awesome and every time I see Narwal, Now I just I'm going to throw in kind of a random bit of stuff. I've been doing some triathlontraining. In the triathlon system gives you points for how well you do and on the swim work out. It's not a unicorn in Narwal, And so whenever I hear a narwal, I'm like, Yeah, anyway, Um, we invited you on to talk about this article. It was written on the Narwal blog. It was component first architecture with stand alone components in N. X, And uh, yeah, it seems like we talked a bit about stand alone components, but it seems like you have kind of a different take. Do you want to give us a kind of ten thousand foot view on this article and then we can kind of dive in and talk about what's going on here and how we use all these tools and ideas together?
Colum_Ferry:
Yeah, sure thing. the component First architecture is like how we can approach standon components from architectural point of view, because it's great to get the feature out of angular, but it kind of creates this void of architecture where engymodules had previously filled. That we had the concept of coremodules, shared modules, feature modules. When we get rid of G modulesthen, we don't have that type of architectural pattern any more. So the component First Architecture kind of falls into that that void Byaloynto architecture, your apse following the same kind of pattern, but just using only components and the whole montaroinded is that your whole application should be led and directed by components.
Subrat_Mishra
Yeah, I think angler is going towards a very good direction. Now if you are using component different application. so now know it to have a extra knowledge of having engymodi. So suppose now someone is on boarding triangle. Now it'll be little easier to sar component between each other, Lady. load the component in. So prior to the prior clagyloading component ward a little bit tricky. I need to put that in a model and then then I think all those things are gone now now anger going towards functional approgent, and that's pretty pretty awesome.
Colum_Ferry:
Yeah, definitely the
Subrat_Mishra
Oh
Colum_Ferry:
even gone towards like functional yards and things like that, so you can really see them going down that functional approach.
Subrat_Mishra
Yeah, Yah. Oh yeah, M. M. Yeah, yeah, Y, yes, Yeah, yeah, Oh Yeah.
Colum_Ferry:
Yeah, that's Yeah. I call that article as well, because it's something that came pretty obviously on me as well, especially like you said when you're trying to use a component that might be declared in a muddle, But if you are doing some sort of refractor in and you move a component doing, said a set of layers on modules where it previously had that component in the declared in the same modele, It's not. It's because it's a child. a lower level in the injection Here, archy, then You start getting these weird errors about how you can find it. Whereas refractor becomes easier because the component is already important What it needs. You can move that component anywhere and it should still be able to find the components and the directives Nd everything that it actually needs to function, so that even the refractor becomes easier with this And so I built it for N. X. and I think the tunnel basal husband as well,
Lucas_Paganini:
Well, since you mentioned N. X, I think that we could talk a little bit more about that to the audience because to us I already feel extremely familiar with N. but that's definitely not the case for everyone, so I think that one of the greatest differentials between you call em and the other guests that we had on the show talking about in a long components, is that you work at the company That bold en, So imagine that you must work in the N X source code yourself. Perhaps so, I think that we could first introduce an X to the audience pretty quickly, and then maybe we could talk about the different features that the audience could expect to have focused on stand on components by using N X instead of using the rag Lar Angular build system.
Colum_Ferry:
Yeah, yeah, son is, it's a bull system. It's kind of like you see. at your end I bought those a lot more and it's got first class money support and a lot of integrations with jest and cyphers and these things, And it just it really helped the whole, like cor, concept of it is to never run the same code twice, So you get computation casion out of the box, which a lawyer, if you run a set of tests than if nothing changed Paul from Cash Roll, and the reronthes tests again. Because we can detect that nothing has changed. Nothing affected those tests, and they build on that we've created the affected command, which will analyze your work space, Then create the project. Work. Projects will analyze your work space, and we can say Okay by changing a file and project a project B is effected because project in porta file from project, and from that we an Bo, Affected graph of notes that have been effective on your work space, which allows us to a task graph of what need tasks like bold test in London, whatever needs to be run, based on that task graph of affected projects, which can save a lot of time, especially in C, where you don't necessarily want to be on the bold on everything when only one thing is changed, so it can save you some time and money on C.
Lucas_Paganini:
I love that you mentioned those points about only running things when necessary, because I think that a lot of people miss that benefit from n. A lot of developers look at N X as only a solution for Monoripo management, But it's not just that like if you have a single application and you have no interest at the moment, At least to break your repository into multiple different parts. You can Still benefit from using N X. It is still more performant than the regular Angular build system, and it, also, generally speaking, introduces new features to the C I, faster than the Angular Cli, So of course, we can't say that it will always be faster than the Angular C, but they are indeed much more focused on developing This single part of the system than the Angular team, which has to maintain a lot of different models. Like an X has a responsibility in the cow base that is much more focused than the responsibility that the Angular team has in total, which is managing all the different modes, so Nex is much more focused on the build the build system and improving the performance of all the general E ran script on an Angular Co base, such as for mating Linting, running tests, et cetera, And it's also maintained by a private company. that is, so it's not just maintained by the open source community. So all those things together make an ax a candidate to introduce features faster than what the Angular team can do. Knowing that they have to Team, they have to distribute their focus across a lot of different libraries. So this is particularly interesting if you haven't explored an X before, I highly encourage you to take a look at their dogs. They can look at their website. Even if you have no interest in having him on a rip. Everything that we're going to be discussing here today is available on an X. So if you want to generate stand alone component from the C, l. I, You can do that now with the regular angular Cli, Just using n G. Generate component dash dash Ten, But you could do that before using the N x l. I and I will bet that there are other things that the N x C L supports forced than the loan component structures that may be the angular Cli doesn't support yet. So Column is that a Statement? Do we
Colum_Ferry:
Yeah,
Lucas_Paganini:
have
Colum_Ferry:
that's a.
Lucas_Paganini:
things?
Colum_Ferry:
Yeah. That's the first statement the biggest one is generating When you do an n g, new De, create new Angular Sal application. You get n g, muddle little box. As far as I'm aware that others of time recording, they don't support the Dahdashtandon flag on new, so you'll always get an angular application that's but strapped with n g muddle. At the present time, N X will allow you to Strap an angular application with stndloncomponents passing the Touch Dahstandloom flag. In fact, will be releasing a new version Fistenpoint Eight, which will have better support for when you run an M. p. X, create an X work space and you choose a stand Angular project. It will ask you if you want to use standon components from the start, which will set up the all the code is needed to put strap from a stand component. Rather hang from an modele.
Armen_Vardanyan
Fun fact, the nor team is going to wish to stand alone as the default configuration in the future, and running engine It's going to create and lone instead of muddles. Ees, too soon to save. The muddles are gonna get deprecated, but
Colum_Ferry:
Yeah,
Armen_Vardanyan
it's possible. in the future.
Colum_Ferry:
and I remember reading on the road map for Angular at the getting started documentation on Angular. I will also change the ustanloncomponents and engmodules as well, So it's going to happen. It's down the line in the future With an actual Can get it right now.
Armen_Vardanyan
I'm actually a newcomer to an X. I'm using it right now, and it's like for the first time I knew about N. X for a long time, but our previous project was kind of a mess. It would benefit if it was a nxorspace. But anyway, we couldn't like introduce it there. but we started a new thing and I really, I really like an X from the start, though some things kind of confused me like I remember distinctly that we created a stand worth space like the Angular Emeric, or you are calling it, But it also creates like a default project. Right other projects, Libaiscasomeh, the default project I discovered today because they weren't using default. Somehow it has modulesit Das module and I'm
Colum_Ferry:
Yeah,
Armen_Vardanyan
wondering if I did
Colum_Ferry:
that
Armen_Vardanyan
something wrong.
Colum_Ferry:
no, you didn't. There's some confusing terminology at the Mont, Because the pay people move the way most people look at N. That is a monorboto, so we want to try and break away from that idea. So there was a term creator called Stand Loan Project with an n X, which is just an application like a React application or an angular application or a note application, which isn't your standard Mnorebo structure, And then that causes confusion with Angular, because Angular its own concept of stand Em. So
Armen_Vardanyan
Oh, I see.
Colum_Ferry:
Yes, but now, if you really run that prompt and network space generation again, you get prompted once you click stand loom Angular application. If you want to use tandem components as well, so yeah, there is some
Armen_Vardanyan
So
Colum_Ferry:
confusion there with the terminology, but we do support the
Armen_Vardanyan
So
Colum_Ferry:
stand
Armen_Vardanyan
apparently
Colum_Ferry:
component.
Armen_Vardanyan
the stand alone project concept is an annex concept. Like
Colum_Ferry:
Yeah,
Armen_Vardanyan
you have something that is not exactly in a monoreporight.
Colum_Ferry:
Yeah,
Armen_Vardanyan
Yeah, I see that now we just we have just removed all of those files. It's going to be okay.
Colum_Ferry:
If it's
Armen_Vardanyan
We
Colum_Ferry:
not,
Armen_Vardanyan
didn't
Colum_Ferry:
you can reach
Armen_Vardanyan
really
Colum_Ferry:
out
Armen_Vardanyan
need
Colum_Ferry:
to me.
Armen_Vardanyan
it.
Subrat_Mishra
I was just thinking about the model like git it. what I'm saying is gita on pipe line. That engine model will be completely removed Because
Colum_Ferry:
I can't.
Subrat_Mishra
what?
Colum_Ferry:
I can't
Subrat_Mishra
yeah,
Colum_Ferry:
see it being completely removed yet. it could happen to your three version is down the line, but Angler has a good support system, so they try to support multiple versions, and so I can't see it happening just yet, and a lot of enterprise applications will still be using Ngmodule and it will take a longer time for them to transition away from Ngmodule. I know that the Sea angler Cli team are working on a schematic that should replace En modules with stand components automatically, but I'm
Subrat_Mishra
Hm,
Colum_Ferry:
nearly sure Mincopatweek that said that you check everything thing that works after you run it because it could break. So it still that risk of if you want to go all on or not.
Subrat_Mishra
Think, like engine model can be useful for certain scenario like, Suppose you have a big project and you haven't converted them to multiple micro front ndvuhtalits. A single report and multiple projects are working than in that scenario may be. Engine model will be Make sense to segregate different teams, and they should divide. They are work in their only modiolike. Suppose they are Having a survey. They should provide that service in their model instead of providing in the root itself. So like how, what's your thoughts on how it will be handled if and Eng model will be gone completely.
Colum_Ferry:
Yeah, I think the easiest way to Anser Lot is to use an X, because an X will let you set up what's called libraries feature libraries, and you can set that by team or by domain. Like you can bring Domaindriven design under that, and that's where you could have. Each team will have their own folder within the Monorabl, that is specific to their domain and the work that they're doing. so all their stand components, and everything will be from that one library, and it
Subrat_Mishra
Hm.
Colum_Ferry:
will export. Suppose a public P from that library, which will ave Your point, And that means the only way you can access those that teams code is through the exposed the Pa that they provide. So then you get the same kind of effective and g modele, but avoid halting. They have an n G muddle.
Subrat_Mishra
Hm. makes sense.
Lucas_Paganini:
A different use case that I don't really know how to do it without an n G. made. Perhaps you could help me call him Um. My use case is that I have a model that is responsible for
Subrat_Mishra
Yeah,
Lucas_Paganini:
creating teams for an application. So I have a light team and a dark team, And you may think what is the magic there? Because there's not in special. The thing is, In order for users to load the application without seeing a flash of unstilled content in the beginning, I have to inject my c, s, S variables, which are the ones that define if I'm in the light team or in the dark team. I have to inject them before the Javascript code is. So my application uses service Ide rendering in Angular, and I have Mado called Team Made, and in this team made in the constructor, I inject everything that I need in order to check if I am running my application in the browser side or in the service side. if I am running it in the M In the server side, then I inject some c, s s styles at the head of my of my content. So I just inject that dynamically using the Angular renderer And if I'm in the browser side, then I don't need to do that, because it was already injected by the time it was service side rendered, So the c. s s would already be there. I wouldn't need to inject that And I just have to use the variables, so basically I'm doing something that I probably shouldn't, which is I have logic in the constructor of my angry modo, but I really don't know what would be the best practice here. I imagine that the best practice would be to use the appinitializer token and then provide a function that can take all the deed It sees that I need and does this initialization for me, But I'm not sure if that is the right call, and even if that were the right call, I wonder how I could expose that as a individual library to consume in all my applications. So imagine that I isolate this team library, and I I am using that in a bunch of different an work spaces, and I want to import Um, like something, Um at angular teams, and just somehow uhinitialize my team handling logic like right now I can just import the team modo and import that into the root modo, And then it just does all that logic for me. But if I were to switch to a more functional approach using stand alone components, how would I do that if I don't even have a component, Just the mode and the service that allows me to dynamically change the team?
Colum_Ferry:
Yes, so that's very interesting that you said that. For two reasons, one is that servercide render. An Angular does support stand on components. Yet you still need to have an an n G model for Servircide rendering. They're going to work on that this year, but for the most part, you need to have an N G modele as your entry point for servicide rendering. Secondly, Yes, an apbonationalizer natializer would be the best solution for that You could write a provide function. U. send the new inject function that is exposed from the Angular Core package, and with an Angular injection context that can still inject your dependencies that you need on your function. So and you could have a function that provide thing, which will do the same as your theme modele, And you applied to the applications. Uh providers are, and you could do that with On the bootstrap application method for sandal components. But like you said, it's because Servercide rendering, it's all goin, have to be in the providers array of your G mogul,
Lucas_Paganini:
Okay, so basically right now I can't do it because it's simply going to break, Is not going to work with service rendering. But in the future when Angular adds support for service Ide rendering, then the right way to go would indeed to use the Ap initial Isinitializer token. and then perhaps the way that I would export it would be similar to how the Ttprouter and the sorry, Or how the client and the route are being exported now on Angular Fifteen with their new functional apis in which you can just you call function in the when your boots raping your application, and that function is going to return all the things that need to be provided. So I would, instead of exporting a mad, and then to consume this library, I would import this mode in my route, modo. I would That export a function, and this function returns everything that must be provided for this library to work. And I would call this function in when I am but strapping my application, And this would be the new way of doing it with stand alone with a stand alone architecture. Is that right?
Colum_Ferry:
Yeah, yeah, that's right.
Lucas_Paganini:
Awesome And thanks for the tip about service rendering. I really didn't know that you would break the application, so I imagine that like I can still use. so, just to clarify to the audience, I imagine that I can't use stand alone components internally. I just can't have everything the stand alone, so somewhere I need to have a mode that is importing, like, maybe a mode for the Root component. Just that and then everything else can still be a stand along component. But maybe the root modo needs. The root component needs to be in an Eng modo, so that service side rendering can work. Is that
Colum_Ferry:
Yeah,
Lucas_Paganini:
correct?
Colum_Ferry:
yeah,
Lucas_Paganini:
Okay? Okay, that's good to know, because that way, if anybody has service side rendering and they do want to move to stand alone structure, they can't do it right now. They just have to be aware that they can't make the Root components stand alone just yet, so you can make everything else stand alone and already have ninety nine percent of the benefits from stand alone architecture. But you can't yet go all in on that.
Colum_Ferry:
Yeah, exactly yeah. And that's really enter uperability between N g muddles and standon components Has been really good because you can still you stand components in G muddles and you can sell import Ng muddles until you stand loom components. That Nterprabaldy is pretty good at the one and it helps for that situation.
Lucas_Paganini:
Also, how does the N X road map connect with the angular road map? So let me just give a little bit more context to what I mean by that, because this question could go into so many different directions. Um, what I mean is at the beginning an X was extremely connected with Angular loike. It almost seemed like it was a tool made for angular applications. Hand over time it expended, so now you can even use
Armen_Vardanyan
Yeah,
Lucas_Paganini:
an Ax with React based applications, and of course you can use it to also connect parts of your repository that are just simple note modes. there, not even like a front and application and all that, But at the beginning it was very very connected with Angular, so I even expected an Ax versions to be an Major versions to be Uh, connected with Angular major versions. So for example, I imagine that if I want to use Angular Fifteen, I have to upgrade Nex to the major version Fifteen. If I use an to use Angular Fourteen, I would have to use an Xvortem, So it's very very connected. But now that Nex has support outside of Angular, I wonder like how much of the angular Road map affect where N X is going, or if maybe there are directions that N X wants to go that are not exactly the ones that Angular wants to go. And why?
Colum_Ferry:
Yeah, so originally an X pasatolthat was built primarily for Angular, but it was realized that it could do so much more than just Angular. So that's when the plot began to show. That's when they started out and react. Support and we, but more support for all our tools and technology. Since then, the point where N X is its own independent. I know it's not connected. The Angular. We do support Angular, but we're not influenced by Angular or following its fruit map. In any kind of way We will add support for any new features that they introduce, and we will provide any bold fixes that we need to do in our side that relates to you Angular. but we're not. We're not so closely linked. in that regard, Let's major version of Angular correlates. The major version of N. X is not like that. Any more it will be we have an compatibaldy matrix on our doxite, which will show the version of N that matches the version of Ang, So you can use the Artifinwich version of an actually need to use. But also, we have recently launched support for two major versions of Angular, so you can now use N x fifteen point seven with Angular Fourteen on Angular Fifteen. So we've made it even more independent where it is just a deft. We just have her dependency S on the Angular project on Angular packages, Right, and it means that the devitols our defitls can keep off, or new new features and new Bob faxces of Being tied to a version of Anger, where if you want to migrate to the latest version of N X, you don't need to necessarily migrate to the latest version of Anger.
Lucas_Paganini:
Nice? Nice. And what about actual features? Actual road mat for features like Angular is going into a very functional programming approach Legally like it has been taking more and more concepts from functional programming and trying to simplify the developer experience. Um. How about an Ax like N, X also wants to go in that direction. Um. And is there Anything else that N X might want to do that? Maybe Angular is not doing now.
Colum_Ferry:
The biggest one is probably Model Federation support, so we want to try and make sure Model Federation works pretty well with Angular, so we built our own pluggin. Sorry, not flogging about the room. A pi around the model Federation Logan, For we pack, If Angular ever does make the full switch to S. Bold, Were we ready to look into a solution for Model Federation with S old rolling Web pack? So that's a kind of feature that we can offer that Angular doesn't off the bar. And if there's anything else to like that strikes us like that that we can provide that angler, doesn't. We will look on the ill, research it, and well, the side of its worth. Ballantey're not, so we can still offer more features and what angler offers out of the box, but anything that angler dolls offer out of the box we will also support. If that makes sense, will always support everything that Angular supports, but we could also develop our own features. Latin to that. like our Model Federation support. we recently added Survercide Render Mode Federation support as well, so you can use Servercite Render with Model Federation, or you could just use standard client site model federation, So that gives you your Mio front, then solution. If you really want to go to India, Mio front end, or you could just use it for incremental bulls, where you can split your application and they, multiple smaller ups, have them bold, and take advantage of the Nex, cash, the facti bold in, and then speed up your Ci and your bolt times using just the model Federation tool. In itself,
Lucas_Paganini:
Awesome. Could you explain more? what is Modo Federation? Which problem does it solve?
Colum_Ferry:
Yeah, so modele federation is to or technique that lawyers run time Javascript to be fetched from a different domain, essentially different and point than the rest of the application. So it basically tells Webpack that when I Ncointers module that is federated that it's not part. It's not a part of the Bull Script is not a part of the bold the source files, But it's not a problem that will be resolved at one time. It can find that that co One time, and then at one time, when Webpack at one time reaches that import of specific modele that has been federated, it will know where to look for the muddle. It will fetch it across the wire, and then it will build it on it. at one time.
Subrat_Mishra
I would just like to have just for our listener, for a simple, simple, one line statement to understand, Like now, you can export to your standard component or a modil, Uh, through through a r to another application, and that that is possible through model federation. This just to set up the context of what,
Lucas_Paganini:
So let me see if the problem that this fixes as the same one that I have in my mind. So one issue that I constantly run into is I have many next repositories and there are well imagining that you have a well organized An ax repository. This makes it really easy to re use code from repository into the other, because if you have it well organized Then everything is well isolated and you can just copy and
Subrat_Mishra
Yeah,
Lucas_Paganini:
paste parts of your
Subrat_Mishra
Yeah,
Lucas_Paganini:
system into
Subrat_Mishra
yeah,
Lucas_Paganini:
a new repository and add those functionalities really fast. And this is what we do right now, but of course a better solution would be to simply centralize that part which is being re used in many places in a single repository, and then somehow all other repositories can import from there, And this is what we general, We do, but we use
Subrat_Mishra
Oh
Lucas_Paganini:
m p M libraries for that, so every time that we want to
Subrat_Mishra
yeah,
Lucas_Paganini:
isolate something, and
Subrat_Mishra
Oh
Lucas_Paganini:
we use it
Subrat_Mishra
yeah,
Lucas_Paganini:
in many different repositories or work flow, currently is to publish that as an m p M library. If it is an internal library that we don't
Subrat_Mishra
Oh
Lucas_Paganini:
have a desire to expose publicly, then we just use a private package. But if it's okay to be released publicly, then we make The repository open search.
Subrat_Mishra
Yeah,
Lucas_Paganini:
And then we
Subrat_Mishra
yeah,
Lucas_Paganini:
just publish the package
Subrat_Mishra
Oh,
Lucas_Paganini:
in public on the N P, public public repository. Um, but what you're telling me is that maybe I don't have to do that. I can have a different approach and still solve the same issue. So the issue is importing something that is isolated in its own repository, and I want to use it in many other reposit Ores, So perhaps there's a better way to do it than publishing as an m p M library.
Colum_Ferry:
Ah, I wouldn't say that exactly, mainly because for it to work, you need to deploy the Bultjvascript code. So that's the. That's the key difference there between an M P package and model Federation is that, Yes, you can share. You can share different remote among different applications, But it does need to be deployed. It needs to be living on a server that can be reached at one time from from the model Federation Pipeplogan, So I can do you basely as a, H, t, P. Get request to fetch the Java script code and then inserted at one time, It more akin to microfrontends so you could have three applications to the or your micro front end applications, and one insure host application that will serve the three mirfrontends where at one time it can just fetch the entry point for the one Two microfrontene at one time and loaded into its own shell. Take an
Lucas_Paganini:
What
Colum_Ferry:
a
Lucas_Paganini:
is
Colum_Ferry:
frame on Stard.
Lucas_Paganini:
Okay? Okay? Um, I got the difference now if I publish that as an M p M library, I can have that available at Campo time, so I can actually install the code and have it locally in the repository. And then when I build the the package or the repository, then Web pack can bundle that code together with my application, And if I use a, The other solution than I have it available at run time instead of compile. time. Okay, I understood that, and I also understand that this is more related to some problems that people may have with micro front ends, But I still don't understand. Why can't we just have things available at compile time in a micro front end? like?
Subrat_Mishra
Oh
Lucas_Paganini:
I understand that you would have to dynamically understand
Subrat_Mishra
yeah.
Lucas_Paganini:
which I
Subrat_Mishra
Oh
Lucas_Paganini:
frames to load, And each
Subrat_Mishra
yeah.
Lucas_Paganini:
eye frame would be like a small application inside your your major application. But each one of those microfhront ends. Why they can't just have that library at compile time? Why why do they have to get it at one time? What's the benefit here?
Colum_Ferry:
The biggest benefit for that is related to organizational issues. Really. So it's a point, teams on a large corporate organization having Phil autonomy over their release, so they release new versions of their micrefrontend or what they're working on at their own release cadence, which could be different to the release cadence of a Knole application that you usus their Macrfontend, So, even though say team has release cadence of monthly release, whereas Team B, who is developing on my growfront than their lay, release a new version every week. then people that use Team as Pro Project will still get the latest version from Team B, despite one monthly release
Subrat_Mishra
M.
Colum_Ferry:
from Team, because it will always be a. A. the latest version that's been released by Team B, so gives them that autonomy to develop features faster on a different schedule than other teams on organization. That gives them more tonomy overload. So it's more Completely organizational issue that it solves, rather than any technical problem.
Subrat_Mishra
Yeah. I think also now nowadays Peo, people may think there microphantenegic cool thing, but Colum said that if you have multiple teams and multiple dependency, then sort go for microphonten and one more thing, Model Fetersson helps here, which, which was not possible before model faderasion, Its shading, Same Same component means sharing the. Suppose you are Iain angle Fifteen and another microfonalso gin angle fifteen. Now you can say at the same angle a fifteen code base, so that it need not need to be run down, load on the run time of the Braga before not further fetes. It was not possible We what we used to do. I need to bundle the whole angular code and the application cord and then serve it to different file. So I think the Main benefit of model furterasin from microfontin side.
Colum_Ferry:
Yeah, that's a good point. Ah, the dependencies that are needed from the microphront end can be provided by whatever application is using the microphone. And so if it has angular core angler common already installed and loaded in the bracer, then the microphone thing can just use that package that's already been loaded rather than have be. Don't load its own package.
Subrat_Mishra
Hm,
Colum_Ferry:
The one problem that does introduce, though is if you share a package like Low Ash Model Federation, the modelferation, Pagan doesn't know what a P s are
Subrat_Mishra
Yeah,
Colum_Ferry:
required from Lodash for each of the microphontens that you use, so you don't get the same tree shaken benefit of lowdah at that stage, So there is that tree shaken potentially being less performance unless aftermized when you share certain packages, So it's good to just keep an eye on what you do share between the microphone tents with modelfoderation.
Subrat_Mishra
Yeah, makes sense. I think one more thing to Lucas like whatever you are asking about the problem right, So just thinking about one more solution of prose. If you just what happened if you create a multiple and pain package and load them, so it might happen that a iniclabundan side will be more. if you bought up and pain package and trying to bundle them to your single page application. Then if you're going with a single application way, then might be the initial bundle side will be high. And if you now, if you convert that to multiple microfentr, and then you load them lagilly, so that might increase the you experience or the onload experience of the fast render experience for a Ger, But if you're doing with service at Rending that, I think the urgent make much sense here.
Lucas_Paganini:
Understood, thank you And call Um. Is there any feature on an X which would allow people to import libraries at compile time? just like I've been doing by publishing them as an M, p M library, but with doubt having to publish them on M p. M. So somehow telling Annex that you want to make an import into Get Repository, And then if it's a private Rep Ository, then you somehow, also um, add your a Pike or something, and then an ex can automatically go into that repository and build that for you, Or do we really need if we want to have something available at Compo? Time is currently the best solution to do what I am doing, which is publishing things as an M P. library.
Colum_Ferry:
Yeah, so an ex doesn't act like a package manager and it doesn't try to act like a package manager. So managing those types of third party libraries and things is outside the scope of what an X can and will try to do. so. the best solution I would say follow is just to follow. like the package managers solutions followed like M, p, m, r, p, m, M. I know they have, like Aveloptthey. can allow you to install packages from Gethop, but it needs to be set up in your package that Jason file to point to Hob repository. I don't know if it lays a pre build step to compile Lose once they've been done, ordered or not, but yeah, that's probably the best solution I can give.
Subrat_Mishra
I think it might be funny to say, but I was about to say I use. No. I think Dino does that with
Colum_Ferry:
Yeah,
Subrat_Mishra
single and but it's I think does and walks with Dino. Like if I'm
Colum_Ferry:
We are
Subrat_Mishra
I'm
Colum_Ferry:
held
Subrat_Mishra
there,
Colum_Ferry:
in support for so we have some experimental support to the one and we are currently working on more full integration of it.
Subrat_Mishra
It would be nice
Lucas_Paganini:
What are the most requested integrations? Currently? I imagine that Dino must be highly requested, But other than that, what else is coming?
Subrat_Mishra
The bun.
Colum_Ferry:
We haven't liked on yet. Vite was actually a big one, so we land support for feet. I test or ve test. So that was A was a big one that we got over the line. We are kind of looking into more native languages as well, so things that cure Java Dot Net.
Subrat_Mishra
Hm.
Colum_Ferry:
Those types of languages and where we could potentially support for lose. so we're trying to work towards that as well.
Subrat_Mishra
Your job will be huge like an ex comes into it Nowadays, like every, every company has different way of architecturing their file. But yeah, I would not like to put in Jabharoutso. We've changed it.
Lucas_Paganini:
Yeah, I've been very fortunate, very lucky
Subrat_Mishra
Yeah,
Lucas_Paganini:
to lately only have to work on code bases that are just using type script all over. So I have full support from N X in everything that I am doing in all my projects, But Um, I did wonder once, like what if I wanted to have like something in the back end which would be rest Or in elixer? Like, how would I have support for that? And, even though we don't have support for those other languages inside Annex right now, what would you recommend Callum for developers that are working Co, basis that need a monoriposolution, need something to connect all the different parts of their application? But perhaps what they are using is not yet supported by an X. What would be the next best alternative to N X? if they are working in a Co based that N X doesn't support.
Colum_Ferry:
I wouldn't even go straight to an alternative. The N X. There are community plogins for an X that will add support for Pipin. Go roast, Java Dot already exist in their community owned, maintained, so it's not currently first class support from N X. But the maintainers of those projects are very good and they provide a lot of support Freloose, because the project graph, which is basically the core functionality of what everything that Can an dose do like, that's the core functionality. It can be hooked on to any any language. Really, As long as you, as long as a pluggin can provide it with some information about how the files are linked together or how the projects are set up. So there are plogans for those different languages available for an X ulf, like the n X, Personally, and see if there's a community Plogon, and as I said, there will be first class of work for some of those languages moving forward. or if you feel confident of yourself, you could build your own and exploe, And to manage the project graph for one of those languages that you're using, maybe bull your own generators. They scafledoute some Net files or Java files that you need for those languages. For any situation that you're on that you get of a generator to generate some class that you have to bowl over and over again for for Java. So there's all this extensive alit that is promoted from an Especially And the next Plug Gun generator where you can generate Jon Ex pluggin.
Lucas_Paganini:
That's really interesting. I didn't know that there was so much community support and it's good to know that others have already paved the way to a lot of those features, because I don't even know if I have enough beers in my home to reach that level of confidence of trying to write my own N X plugging, so I'm very happy that others have done it.
Colum_Ferry:
Yeah, it's very straightforward. Actually, in terms of writing generators, the executors is another thing that you would have to take into consideration when you're writing one of those ploguns, Because if you want to run like an X, bold, my Java project, then that means you'd hav to have an executor, But that executor is just a Java script script, Essentially that you could then just use like child process to invoke the Java computer, which will actually do the compelatio, For you could invoke Graal or whatever it is That you need me, Cotland, whatever you're using the Buldordova project, So it could just be literally a quick Javascript script that is run in child process, to exact, sink one of those all our both native Boltols for the actual Java project, And then that also gives you the benefit of a cash on. because if that returns successful, put, then Ten X can say Okay, Well, we seen successful Put. we can cash the put off that bold on the next time we try to run. If we don't see any changes to the files that unpacked that project, then we can just return to cash and return to the cash files that we've are the fact that we find after we run the ball the first time.
Lucas_Paganini:
Nice. Nice to like that actually seems pretty straight forward. I can actually like. imagine how the code for those pluggings must look like. Not that hard. So perhaps if you are looking for a solution and an ax doesn't support your weird language, then you can actually write a plugging for it. pretty cool. Nice.
Armen_Vardanyan
It's all
Lucas_Paganini:
Ow. about
Armen_Vardanyan
it easier
Lucas_Paganini:
when
Armen_Vardanyan
than.
Lucas_Paganini:
you? Oh, sorry, Armand, Go ahead
Armen_Vardanyan
It's all that easier than writing an angular schematic.
Colum_Ferry:
It's a lot
Armen_Vardanyan
Because
Colum_Ferry:
easier
Armen_Vardanyan
I
Colum_Ferry:
than it
Armen_Vardanyan
tried
Colum_Ferry:
in an angler schematic. Those newsarcts.
Armen_Vardanyan
tried. A. I tried to come up with the in the project that we were doing previously when we started it. We didn't know about N. X, and I don't know when N became popular, but we started a project I guess in twenty seventeen, so we haven't heard about like mon repos or anything, But in retrospective, I think that that would be really beneficial because I wrote a bunch of scripts to build web components and all all of them were just like not just scripts that I put them in the P. M, like Peckish Jason as a P M script, and obviously all of them were pretty buggy and I couldn't like used to have script in them for for weird reasons. Yeah, if we have been using something like X, I think I tried to look into like, how can I turn that script into schematic? But it sounded really hard and
Colum_Ferry:
Yeah,
Armen_Vardanyan
I just kind of forgot about it until
Colum_Ferry:
Angler
Armen_Vardanyan
the project
Colum_Ferry:
scimmatics
Armen_Vardanyan
cancelled.
Colum_Ferry:
can be difficult to understand first before even trying to write them when you write them becomes even more difficult because this whole idea of a rule and chain and the multiple operations and how all that impact how you write your schematic, and it's all based in our x j, S. so even the dbogan of that then afterwards can be really difficult to to debook, Because you get air throw by some Marge map, Some switch em up somewhere within that. Because of the operators and I speak for myself Any way I struggle to find the actual air that causes those ourxgsars Most of the time. it's like going through a lot of different light lines and jump in three files. When you're deep organ, they try and find what actually caused the air, Whereas for n x generators, we use just a sincoterables, so it is just Ovascript and jobs. All we doing? Really? it's very easy to eat a book, very easy to write.
Lucas_Paganini:
And how does
Armen_Vardanyan
I
Lucas_Paganini:
it work
Armen_Vardanyan
tried.
Lucas_Paganini:
If we run Run many. So for example, if I run an X test and I put run many to run it in a lot of different projects. How can I like write up plugging? That can accept that? I imagine that perhaps I would just have to add a command that has the same name as test. So if I want to add support for test, then I do Have to add a command in my plugging that has this name, and also try to use the same names of of options that are passed to other commands. So maybe just
Colum_Ferry:
Huh,
Lucas_Paganini:
trying to use the same flag names is that it
Colum_Ferry:
Kind of, but not really. So the run. many command will look for the name of a target test. In this case, an ah of the project that Jason files, But those project that Jason files are technically loose. You could write them whatever way you want, as long as they follow a certain structure, which is to have a target with a name, and then the target definition, which will have an executor field, which is where you would put on your Logans, executor for testing, might not be called tasticcould, be called something else, But it will be the executor, which is just basically the Jabascriptfile or Jabascriptscript that will run when it's called, So it's basically call on that function and then the options that are available to be provided to your Jabiscript function to determine how it runs. So the options will be basically your arguments to your function and your target name is test. So Nex will look for the test target and all the pro I thought Jason files, and then it will find the executor, which will then see your Logan executor. It ill. It ll basically do like a dynamic import for that function and rom the function, So it's very easy. They actually introduce the wrong man I command, because you don't even have the worry about a something that a exttexcare takes care of as long as you provide a test target with a project that Jason File uses you Executor, with whatever options you want they provide as arguments,
Lucas_Paganini:
Got.
Subrat_Mishra
So I think I would like to ask. I think back to the where he started. Like if if someone is now have already had a pretty engymoudial application? Now they want to go towards stand on a component architecture like Tand component base architecture. Then is there any command available which will change, change their cold, like Engupdate or something from Annex? Is there What should be the approach initial approach to convert a engymodeabased application to a component fast application
Colum_Ferry:
So N X offers a command that will help you converted scans to stand loan components, which could
Subrat_Mishra
Hm,
Colum_Ferry:
be a good first step if you've used the scale architecture. Otherwise N X itself doesn't offer any schematic or generator to convert. Angular does support one. So if you really run an x, G, the command from Angular,
Subrat_Mishra
M,
Colum_Ferry:
So that Angular
Subrat_Mishra
hm,
Colum_Ferry:
slash Cora, Angler, Flash, and their schematic, I don't know the name of it. It will Run in your Nxborkspace and still al you to convert your your end muddles to your standon components, so you can still run that command. There's one offered by Angular can verify how good it is, but I do know that Angular schematics tend to work off Typescript programs, soter
Subrat_Mishra
Hm,
Colum_Ferry:
up more thorough on how they do actually function.
Subrat_Mishra
Yeah, I think makes sense, but four times anticipating is it will take a lot of time for a big project to go from go away from Engimaudiol to totally component base architecture.
Colum_Ferry:
Yeah, yeah, still take time. and the best solution there is probably the good Scot method or whatever it's called. Where if you're on a file and it's using Ngmodulesand, you feel like you can change it to a stand component. Go for if you've got the time, should with should work pretty straight forward, and just using that doing that approach over time, you should eventually but join the number of models you have.
Subrat_Mishra
Yeah,
Lucas_Paganini:
I have something to say about this before we we wrap things up, I saw opposed by Mingo Getchup linking, and he was talking about the Angular team building a script to my great code basis, from en Gi Mago architectures to standalone components. So if you just wait a bit more, then you can just run a script instead of having You do all those changes manually.
Colum_Ferry:
Yeah.
Subrat_Mishra
Yeah.
Charles Max_Wood:
Okay, go ahead,
Lucas_Paganini:
Okay, so I think we can wrap things up now if no one else has any major questions. I mean we could talk with. Call them for two entire days.
Charles Max_Wood:
Right.
Colum_Ferry:
Yeah,
Charles Max_Wood:
Yeah, all right. Well before we do that, call them if people want to find you or follow you online. where do they do that?
Colum_Ferry:
Twitter is probably the best place. so at Ferry column on Twitter.
Charles Max_Wood:
Awesome? Um, Well, let's go ahead and start doing our picks, our self, promo, and then our picks. So Lucas, what are you working on that people should know about
Lucas_Paganini:
Awesome, Um, well, two things. So my webanimation course before this podcast was actually recording content for that, So still not fully ready. But I do have waiting list open. so if you're interested in having solid fundamentals about web animations, not just learning how to do this particular animation, how to do that particular transition, but actually learning how webanimations work so that you can create anything that you want, So if you're interest That in something like that, then check out Lucas Paganini dot com slash web animations. and it might just be exactly what you're looking for. And also I have open spots in my company to take more projects. So if you have an Angular base project and you need help like you need more developers working in this project. Or maybe you just want more developers temporarily and then you want to decrease the work load. That's okay, So you can reach out to us at Avoid Dot Com. We are extremely specialized in angular and functional programming, so if this is what you're looking for, we are the best option for you and I believe that's all for me.
Charles Max_Wood:
All right, Sube, What are you working on that people should know about?
Subrat_Mishra
Yeah, I think it will be interest here because I think have started a podcast and the first guest was Lucas. So ye can.
Charles Max_Wood:
I know him.
Subrat_Mishra
Yeah,
Lucas_Paganini:
I'm getting famous.
Subrat_Mishra
you said it was the podcast.
Charles Max_Wood:
That's right.
Subrat_Mishra
Yea, so guys, please go and was the podcast? Maybe I've give the link in the in the Sow note And and as well as I have Also some videos on standard on component, So if you guys are interested, you can go and wash a play list on standard on component, mostly on angle.
Lucas_Paganini:
If I may add.
Charles Max_Wood:
Awesome.
Lucas_Paganini:
Um,
Subrat_Mishra
Oh,
Lucas_Paganini:
I want to set
Subrat_Mishra
yeah,
Lucas_Paganini:
up expectations for people. It's not a technical podcast.
Subrat_Mishra
Yeah,
Lucas_Paganini:
We just talked about how I built my company. How what I look for when I am hiring developers, specially Angular developers. Since since this is the experts of my company, so if you want to know how my company hires and evaluate developers, to figure out which candidates are the most qualified for what we're looking for, or you do Want to know how I got to where I am right now. Not that this is like the major Leo, but I imagine that it might be curious to some people how you can go from employee to employer. Then we cover all that in this podcast episode. Sode. I loved talking about that. thank you sort again for the
Subrat_Mishra
Yeah.
Lucas_Paganini:
invite.
Subrat_Mishra
thanks. you did my part pretty well. thanks
Lucas_Paganini:
Uh,
Subrat_Mishra
explaining
Lucas_Paganini:
huh,
Subrat_Mishra
the podcast.
Charles Max_Wood:
Awesome. all right, Armand. What are you working on The people you know about
Armen_Vardanyan
Yeah, I was kind of looking forward or it's like sharing out. I wrote a bunch of articles, but that's not what I want to talk about. I tried. I remember that we did a separate episode and when the function came out with separate episode about Ow, we can change the action outside of sons
Subrat_Mishra
Yep.
Armen_Vardanyan
with proces and everything. I wrote an article about that promise that will publish. It's one day, O, P. M. So Yeah, Eventually I went on and did that. I published a piesh call zone. Is, I think it's going to become a relevant, somewhat angular, introduce the signals, but it offers like a separate, like a different, A P. I. and it's not. It's not related to sens. I don't think it's performance. just an experiment. Anyone wants to try out that separate, like experimental
Subrat_Mishra
Oh,
Armen_Vardanyan
project. It's got different a p. I, because it works as if as if there is no proxy or anything like, like a usual angular property and everything like with deep checking and everything works. But without I got an example there. I also kind of integrated observable into it, and computed property is like what we probably are going to get with, But without the signal a P, but working like the usual object. I think the Angular team in the end decided not to use proxobjects, I'm not entirely sure about the reasons, but I will put the links to the package here, so if anyone is interested, I just I'm just interested in hearing like feedback. I'm pretty sure this is not gontabthenxt big thing, but It, it would be interesting to compare to what will come next in terms of re activity and your said. That's That's mainly the thing that I'm kind of concern about.
Charles Max_Wood:
Awesome? Um, I'm gonna, just I'm starting and building a new course. It's going to be most valuable programmer because I like the M v P. idea kind of ripen off of the sports to help people become kind of olympic level programmers. Um, and that that includes both the career and soft skills people skills, as well as the technical skills. Um. So you know everything from Updating your resume and doing interviews all the way through figuring out where you want to take your career. How to find a company that you like to work for. Down to how do you practice? How do you state current on technology and stuff like that? So um, I'm probably going to put up a page where you can get it on the pre launch and then what I think I'm probably going to do as Um, The full price is going to be like a thousand dollars. But what I'll probabl, We do is whatever percentage I have completed is going to be what the price is. So if you wait longer, you'll get more value right away, but it will you know. it will cost you whatever that percentage is right. But then I can also start getting feedback on the course and so that's kind of the trade off, but it's going to be a complete master class and it's going to walk you through all of the different ways that you can take your career all the way to outer space. you know, just Just all the way to the top. So anyway, that's what I'm working on column. what are you? What are you working on? The people should know about
Colum_Ferry:
At the moment, I'm working mostly on stabilizing the Angular program for an X and a part of my work. Outside of work, I write in a fiction novel and am working on a tool called Grammar Greer, which will be an player till they help writers professionals, teachers and students improve their the writing and their tax communication, So it will offer features like feet, Go on, tone, feedback on the pace of your writing, improving descriptiveness, improvin, conciseness, things like that.
Charles Max_Wood:
Nice. All right. Well, let's do our picks real quick, Lucas. What are your picks?
Lucas_Paganini:
Well, Chuck. I'm going to compete with you today, because generally you are the one that picks games, but I will be the one. I'm taking a game today. Um, I am going to pick the online version of War by Grow. I've always loved this game. It somehow is extremely effective in destroying all your friendships in a short amount of time, and I just love how good it is at doing that like it's a beautiful game to Play with family with people that you just met that you don't ever want to see again. Like all that, It's just beautiful. and now I, my employees. Actually, they know how much I like this game because we had an in person Hackton in the past week and then I, I brought that game and then we played that in that trip a bunch of times. Um, and by the way, they didn't let me win. Okay, unfortunate, They weren't nice employees, but that's outside the scope of this pick. So what they did is that they found an online version of this game and they were like, Oh, it's going to love this, So I've been playing a lot with this outside my working hours. Okay, just to have that registered, but I've been really addicted to playing war online and just knowing that if you don't have other people that want to Tress out and play that game with you, you can just play it with random person on line or even an M. P. C. So yeah, this is what I've been doing lately in my free time.
Charles Max_Wood:
Awesome? Very cool. Yeah, always love new games. Super. What are your picks?
Subrat_Mishra
I think I was about to pick signals like Angular React signal, but man adjustment and it before, so I will just go adad and pick another another thing. A was just reading One book is understanding the distributer its system, So if you are interested in maybe going towards full stack development, then this must be a inicelbook To go go and read it. I haven't Inicatihave. just started, So I thought to pick, I think that's all for On the
Charles Max_Wood:
Good deal, Arm, and what are your picks?
Armen_Vardanyan
So I've been reading a book recently. Its work by Michael Parent. I don't know if Bouthimit's called Inventing reality, The politics of mess media. It's really a kind of political book mainly focused on Like how the media, newspapers and everything is working in the specifically United States context Has really lots of interesting things and inside, how Like there is lots of discussion online. It's not that old of a book. I think it's It was published in nineteen ninety three or something, but there's right now. there's lots of discourse on line about all this takes, news and propaganda and song and so on. And there's lots of words being thrown around and everyone accuses everyone of lying, and so on. And this book is really focusing essentially how it works like Behind the scenes, and how lots of people are actually kind of engaged in spreading propaganda, but without even realizing that or how how the perspectives are being manipulated, And so it's kind of. It's kind of a stressful read because there are lots of like, really painful revelation about how it all works, But I'm kind of a history above, so I love like all stuff political and so I really enjoy it. Um, considering, really, all other books by the guy, So yeah, that's probably my pick for this week.
Charles Max_Wood:
Very cool. All right, I'm going to jump in with my picks and then we'll let call Im share his. M. So I always do a board game.
Armen_Vardanyan
Yeah.
Charles Max_Wood:
Monday, I played new board game with some friends of mine. Now the game, I'm just goin t warn you. It took us like four hours to play. M. It was awesome, but yeah, I know that some of the longer games kind of turned people off Game geek. I'm pulling it up because it usually gives you trying frame. It says Yeah, ninety to a hundred and fifty minutes. So that's an hour and a half to two and a half hours. We played it for the first time and I think that's why it took so long. and we. anyway, we really enjoyed it. It was. it was a ton of fun. It's called Arknova, and effectively you, you have land in front of you. You're trying to build a zoo, And so you Bring animals in and the animals have different effects. You, you build prestige, and you have conservation points, and you also have a peal of the zoo, and you get sponsors that give you certain abilities. And anyway, it's It's a ton of fun. Um, so yeah, you're kind of building an engine that you know, Let you build more and more stuff in your zoo Board game. Peek weights it at three point seven, two. So it is a bit of a complicated game. and yeah, really really enjoyed it. Um, but yea it is. It is a bit involved. There were four of us playing too, and I think that was another reason that it took as long as it did, because we had to wait for everybody to take their turn figure out what they were going to do. I think as you get more experience right, it becomes easier to make the calls you want to make. So anyway, I'm going to pick Arknova, Um, that's Ark with Kay, and yeah, then I'm gonna throw out a few other things that I've picked up, so I've read or listened to two books on Audible that I really really enjoyed one of them, called The one more by Edmilet And basically it's kind of a personal, excellent book. But he goes into like leadership and a whole bunch of other stuff And it's it's really, really, really great, So I'm going to pick that book and then the other book that I've been listening to is Obviously awesome And it's it's more about positioning your products. It's a marketing book, but I think it applies to a lot more than that because effectively, if you're trying to get a job, you're trying to, um, you know, be a free lancer. If you're trying to convince people to to take certain steps in your code base, all of those things are Um. through all things that you, you're going to have to sell to people in one way or Other, and those basically break down. then into. how do I position this so that they understand what it is and why they want it, And so I really enjoy that, And then finally the last pick that I have is another book. This one is one I also listened to on Audible, and it's the Alloy of Law by Brandon Sanderson, So if you've read the Mis Born trilogy, Uh, this is kind of a follow on like three hundred years later. And so it's more of kind of west, And almost, or you know, their technology level is early night, early twentieth century, late nineteenth century. So they've got railroads and you know pistols and stuff like that anyway, fun fun book. So I'm gonna recommend that. Um, call them. What are your picks?
Colum_Ferry:
Yeah, so my book is related to productivity because I really want to be get. I want to get better at key board navigation, N just using my moist. less. So I really found the gamified course that I found was Vembadventures, which teaches you Vun through a game. and it's pretty awesome. It's really fun to actually go through And you do feel like you're learning a lot more. And because of if you can get God of the The Short cuts, and yeah, there are extensions for the intellig for Google Crom, and things like that that will allow you to apply the key map to those products, which means you could take the same skill set and use it across multiple different applications that you use. So I feel like that. That's something that I'm trying to get on to improve our own productivity about,
Charles Max_Wood:
Awesome? All right? Well, thanks for coming. This was awesome and I'm just going to wrap us up because I've got to get to the developer book club. We're finishing up Doctor Deep Dive today, Um, next month we're doing pragmatic programmer anyway, Um, but in the meantime till next time, folks max out.
Subrat_Mishra
Bye bye.
Lucas_Paganini:
Bye.
Colum_Ferry:
Right?
Standalone Structure with Nx - AiA 372
0:00
Playback Speed: