![Joshua Morony](/img/default-banner.jpg)
- 336
- 7 381 036
Joshua Morony
Australia
Приєднався 2 січ 2011
I think the web is cool and like to use it wherever I can. Check out my advanced Ionic tutorials at eliteionic.com.
A "hidden" side benefit of DECLARATIVE code
My Angular course: angularstart.com/
I've never given much though to code folding since it has never really struck me as anything particularly useful, and perhaps potentially even something that will result in worse code.
But! I had a sudden realisation in terms of declarative code and code folding which makes it far more useful and will likely end up being a permanent part of my workflow.
Get weekly content and tips exclusive to my newsletter: mobirony.ck.page/4a331b9076
Want to build mobile apps with Angular?: ionicstart.com
0:00 Introduction
0:38 The problem
1:19 Code folding with imperative code
2:48 Code folding with declarative code
3:52 Code folding in Angular
#angular #phaser #declarative
- More tutorials: modernangular.com
- Follow me on Twitter: joshuamorony
I've never given much though to code folding since it has never really struck me as anything particularly useful, and perhaps potentially even something that will result in worse code.
But! I had a sudden realisation in terms of declarative code and code folding which makes it far more useful and will likely end up being a permanent part of my workflow.
Get weekly content and tips exclusive to my newsletter: mobirony.ck.page/4a331b9076
Want to build mobile apps with Angular?: ionicstart.com
0:00 Introduction
0:38 The problem
1:19 Code folding with imperative code
2:48 Code folding with declarative code
3:52 Code folding in Angular
#angular #phaser #declarative
- More tutorials: modernangular.com
- Follow me on Twitter: joshuamorony
Переглядів: 5 402
Відео
How billionaire Charles Munger fixed my Angular app
Переглядів 7 тис.День тому
My Angular course: angularstart.com/ 19th century mathematician Carl Jacobi is often cited for his (roughly translated) "Invert, always invert" quote. In this video we take a look at how applying this advice to state management in Angular yielded fantastic results for me recently Video on folder structure: ua-cam.com/video/7SDpTOLeqHE/v-deo.html Get weekly content and tips exclusive to my newsl...
Observables are WAY easier than they seem
Переглядів 7 тис.14 днів тому
My Angular course: angularstart.com/ Observables can seem like some sort of complex magical constructs that "stream" data, and perhaps it invokes thoughts of managing scenarios like streaming video data or web sockets. But... the fundamental concept is not all that complex, and can be built with some pretty simple functions. What is an Observable (free lesson): angularstart.com/modules/intro-to...
How Angular plans to survive the next 10 years
Переглядів 13 тис.21 день тому
My Angular course: angularstart.com/ Angular v18 has been released which makes further progress towards the overall goal of making Angular viable for the next 10 years or web applications. Perhaps the most important part of this is signals, the new reactivity system, and zoneless change detection. v18 announcement video: ua-cam.com/video/DK8M-ZFjaMw/v-deo.html v18 blog post: blog.angular.dev/an...
How Electron jailbreaks your web application
Переглядів 6 тис.Місяць тому
My Angular course: angularstart.com/ Electron not only allows you to distribute your web application as a native desktop application, it also allows your web application to access native APIs... but how exactly does it do that? Get weekly content and tips exclusive to my newsletter: mobirony.ck.page/4a331b9076 Want to build mobile apps with Angular?: ionicstart.com 0:00 Introduction 0:50 Inter-...
How I code in Angular when nobody is watching
Переглядів 10 тис.Місяць тому
My Angular course: angularstart.com/ I get surprisingly few opportunities to code Angular applications specifically the way I want to without needing to carefully consider risks and weigh trade offs. This video covers how I'm using the Analog component format, createInjectable, and signalSlice in a situation where I *do* get to code however I want. More on Analog SFC: ua-cam.com/video/15vHXCMhl...
Creating DESKTOP apps with Angular is easier than you think
Переглядів 17 тис.Місяць тому
My Angular course: angularstart.com/ Getting a native desktop application up and running with Electron and Angular is surprisingly quick. In this video, we make use of these frameworks, in conjunction with Nx, to create the basic scaffolding required to create desktop applications with web tech Get weekly content and tips exclusive to my newsletter: mobirony.ck.page/4a331b9076 Want to build mob...
Here's what I've figured out about Angular signals
Переглядів 13 тис.Місяць тому
My Angular course: angularstart.com/ I've been using and experimenting with signals in Angular since they came out around a year ago. This video covers some key ideas I've arrived at when using signals for state management. Get weekly content and tips exclusive to my newsletter: mobirony.ck.page/4a331b9076 Want to build mobile apps with Angular?: ionicstart.com Source code (toSignal version in ...
A 7 minute guide to SESSIONS and COOKIES for authentication in Angular
Переглядів 9 тис.Місяць тому
My Angular course: angularstart.com/ If we want our applications to be secure then we need to make sure our backend is secure. Before we send any data to a user, we want to make sure that they are authorised to receive that data. Sessions and cookies are a great way to facilitate this and has been the backbone of many authentication approaches for a long time. Previous video: ua-cam.com/video/1...
This made me NOT hate note taking (as a developer)
Переглядів 8 тис.2 місяці тому
My Angular course: angularstart.com/ Zettelkasten made me completely change the way I approach note taking, and it's the first time I've ever actually enjoyed note taking. This video shows how I use a Zettelkasten system inside of neovim for note taking/learning. More on Zettelkasten: ua-cam.com/video/L9SLlxaEEXY/v-deo.html Article from video: medium.com/@eugeniyoz/angular-signals-reactive-cont...
What happened to Analog's experimental ".ng" format?
Переглядів 5 тис.2 місяці тому
My Angular course: angularstart.com/ A little while ago we talked about Analog's experimental .ng format that allowed creating Angular components with a component authoring experience that more closely resembles something like Svelte or Vue This video is a follow up to cover what ended up happening with the format. 3 months of WebStorm free: www.jetbrains.com/store/redeem/ (use code: K4UQV-BPUN...
Full stack reactive CRUD in Angular with Go (or any REST API)
Переглядів 9 тис.2 місяці тому
My Angular course: angularstart.com/ I've received quite a few requests for guidance on how to integrate the reactive/declarative RxJS and Signals approach I often talk about with a typical REST API backend. In this video, we walk through what it would take to swap out a local storage solution for a REST API in the Quicklists application from my course. Frontend: github.com/joshuamorony/angular...
A workflow for complex open source contributions
Переглядів 3,8 тис.2 місяці тому
My Angular course: angularstart.com/ Once you move past the basics, the process for getting a pull request for some more complex contribution can be quite intimidating. This video aims to show what the entire process might look like from the idea to getting your pull request merged. Get weekly content and tips exclusive to my newsletter: mobirony.ck.page/4a331b9076 Want to build mobile apps wit...
Don't make my toSignal mistake in Angular
Переглядів 7 тис.3 місяці тому
My Angular course: angularstart.com/ I was trying to use toSignal in Angular with a global error handler service when I ran into some weird behaviour: when a single error occurred, I was getting tons of error messages spammed on the screen. It turns out that this was due to the way toSignal handles errors from observable streams, that results in an error being thrown every time a signal is read...
Refactoring my ugliest code with signal view queries
Переглядів 9 тис.3 місяці тому
My Angular course: angularstart.com/ The new signal based view queries in Angular make it far easier to write reactive and declarative code. In this video, we take a look at how I refactored a feature that relies on accessing a video element in the DOM to access its loadstart event. Get weekly content and tips exclusive to my newsletter: mobirony.ck.page/4a331b9076 Want to build mobile apps wit...
The mindset you need for a DECLARATIVE code refactor
Переглядів 11 тис.3 місяці тому
The mindset you need for a DECLARATIVE code refactor
I didn't know snapshot testing was a thing
Переглядів 4,4 тис.3 місяці тому
I didn't know snapshot testing was a thing
Why Neovim nerds are so obsessed with the terminal
Переглядів 77 тис.4 місяці тому
Why Neovim nerds are so obsessed with the terminal
A cautionary tale about ChatGPT for advanced developers
Переглядів 317 тис.4 місяці тому
A cautionary tale about ChatGPT for advanced developers
Watch this BEFORE updating to signal inputs in Angular
Переглядів 10 тис.4 місяці тому
Watch this BEFORE updating to signal inputs in Angular
SIGNALS can make Angular "REACTIVE" forms more reactive
Переглядів 15 тис.4 місяці тому
SIGNALS can make Angular "REACTIVE" forms more reactive
Should this be the future of Angular applications?
Переглядів 12 тис.4 місяці тому
Should this be the future of Angular applications?
Why signal INPUTS in Angular are such a big deal
Переглядів 14 тис.5 місяців тому
Why signal INPUTS in Angular are such a big deal
How to casually change the entire way Angular components work
Переглядів 10 тис.5 місяців тому
How to casually change the entire way Angular components work
A "simplified" approach to Angular components?
Переглядів 14 тис.5 місяців тому
A "simplified" approach to Angular components?
The inject function in Angular is not just a toy
Переглядів 15 тис.5 місяців тому
The inject function in Angular is not just a toy
Things are getting serious with AnalogJS (Angular SSG)
Переглядів 14 тис.6 місяців тому
Things are getting serious with AnalogJS (Angular SSG)
This taught me so much about advanced TypeScript
Переглядів 10 тис.6 місяців тому
This taught me so much about advanced TypeScript
Why does building an Angular app with INJECTION TOKENS feel so good?!
Переглядів 16 тис.6 місяців тому
Why does building an Angular app with INJECTION TOKENS feel so good?!
I tried to build my dream (simple) state management for Angular
Переглядів 11 тис.6 місяців тому
I tried to build my dream (simple) state management for Angular
I don't buy it, sorry. You're basically dumbing it down because you don't want some junior to work a little bit more to UNDERSTAND how dependency injection works, in exchange of later having to understand when and where you are in a context of constructor for being able to inject something and why?? That's just ridiculous. Also, by doing this, you're hiding what are the real dependencies of a component, because, like you yourself showed in the sample code, there's absolutely no hint from outside about what are its dependencies because it "magically" injects them from inside. This is a service locator pattern and the reason why it's actually considered an ANTI-PATTERN and the reason it's so discouraged in many other languages and platforms... But somehow now it's being suggested as the way to go just because some Junior might have to read and understand how dependency injection actually works (which is really not that hard at all, we've all been there). Sorry, I think this is going backwards, not forward.
Grate explanation!
"more painful than using vim as my daily editor" hahahaha
Files tree on the right side is crazy btw
You should a take a look to EffectTs im pretty sure you Will enjoy to code and to push functional and declarative to the next level
You can get this same thing in React with a combination of derived state and IIFE
In this approach have you ever encountered an issue like in some cases your observable triggered when you do not actually need it. Let's say you combined 2 observables, however what you actual need depends on a property of that object. What's your approach in that case? Think like you only depend xObj.foo not need to subscribe the entire object's state change. In some cases xObj.y might change and you might uninentionally trigger your entire combineLatest([x, y, z]) or something.
The key is just creating a stream from whatever it is you want to react to, so if you did want to only re-calculate some thing when some particular property of an object changed then you could create a stream for that, e.g. perhaps you have a myThing$ stream that emits new objects, but if you only want to react to myThing.x changing then you could create a myThingX$ stream that maps to that specific property
What editor do you use? It looks like Neovim, but has UI elements which I thought are not achievable in a regular terminal
It's neovim (LazyVim specifically), you can check my config here if you like: github.com/joshuamorony/lazyvim/
Everything is a stream
At this point, you might want to explore state machines. I suggest checking out XState and the Studio tool, which allows you to visualize the machines and sequence diagrams.
I see you have lsp and highlighting in your html files, could you share how you did it? I don't have any in my .html files. Thanks for your great angular content.
You can check out my neovim config here if you like: github.com/joshuamorony/lazyvim/ but generally (assuming neovim) for any particular file format you want to make sure you have the Treesitter Parser installed for it + optionally LSP
@@JoshuaMorony thanks, I will.
Where can we try the game? 😅 super curious
You can check it out at urltown.io if you like (it's more of a strange productivity/organisation tool than a game though)
Do you share your code in this video in github by any chance? I want to learn how you set up your state
The Angular example from the video can be found here: github.com/joshuamorony/angularstart-quicklists/tree/ngxtension this isn't specifically the default way I tend to go about managing state, I have some more recent videos on that topic with example code as well though if you want to explore
I believe that was the whole idea behind the code folding feature.
Get extra content in my newsletter: mobirony.ck.page/4a331b9076
Hey Josh, Question: It appears signal slice is used here as a way to manage state for a view-model. It is directly tied to a form. The values of the form are stored in the state object. How would you go about "pushing" these values to store that tracks state on the level of a feature (or even global state). Probably it is better to define the form slice as a source for the feature-store slice. How would you expose changes on the form slice as a source? Would you use toObservable for this?
Yes, this is what I have been doing to pull in state from one slice as a source for another. e.g: const audioUploaded$ = toObservable(wordsService.words).pipe( filter(Boolean), map(() => ({ status: 'uploaded' as const })) ); In this example "wordsService" is the signalSlice
@@JoshuaMorony Cool, tnx for the confirmation and the quick response. Follow up question: How do you deal with the fact that in the case of this video, the form-slice lives in a view component and is bound to Formbuilder (which is clearly view oriented) and that this form slice should be able to act as a source for a different slice that is a feature slice. This means the feature slice (which would typically live in a service-like structure or a store) needs to depend on a slice that lives in the view, to be able to define it as a source. This looks like the wrong direction in the dependency graph. View components can inject store components, but not the other way around. Any toughts on that?
@@jovanthournout9707 for cases where I want to share some state between a local/private slice and a shared/global slice I would have an imperative action to send that data back to the top of the data flow - specifically what I mean is that in the shared/global service I would have an actionSource (e.g. doTheThing), and then the local service/component can inject the shared service and call that actionSource with the relevant data (e.g. doTheThing(dataFromMyFormSlice))
@@JoshuaMorony Ok, that's what I am also doing. Can't see any other way besides making an imperative call from an effect of one slice to the action source of the other slice. Any idea how state adapt deals with this kind of situation?
Although this isn't a game changer, I'm happy about this change for a few reasons: - I won't have to import directives for basic template capabilities (conditionally showing content for example) - ngIf doesn't handle else statements elegantly, and it doesn't handle else if statements at all. Compare this to Vue's v-if syntax - no need to get ng-container involved - looks like there are some minor performance benefits, as it forces tracking and leans out templates I'm interested to see how this syntax evolves to include more capabilities.
Simple question (that may be convoluted): "reducers are pure functions", none the less, when creating new todo (11:44), we create an ID with a simple method, yet could be RNG stuff... So function is not so pure anymore. Is it really important for NgRx to have pure reducer functions? (caching stuff may happen). Thanks for great content!
I'm looking forward to these improvements but I'm worried that signals and zoneless is going to make the learning curve for new Angular developers even steeper. Automatic change detection was a paradigm shift and it's what attracted me to Angular in the first place, but now we're expecting people to manage that themselves in the code. It's a step forward for performance but a step back for code complexity and making Angular more difficult to use for beginners. If angular is going to survive another 10 years then it needs to attract new developers and it's hard to see how making it more difficult to use is going to do that. Sorry it's a bit pessimistic because I'm genuinely excited about these new features. I just want to see angular last.
Well it's a nice information, starting Angular from v2 until v4 then switching to react it's the problem i've always faced when working with inheritance components, huge thank you
Won't this lead to a pessimistic approach initially to solve our problems
Would you review NormalNvim?
I'd been using neovim for many years and recently I got swayed.😅 My life balance was heavily disrupted by Helix. OMG, it's so good. Been testing and using Helix for about 2 months now and I don't think I am going back. For all the Neovim lovers, I recommend trying it out. I feel like "object -> verb" model does make sense in a way that you clearly see what you act on before you actually act.
How did you switch your file explorer to the right side, sir?
you can see my neotree config here: github.com/joshuamorony/lazyvim/blob/main/lua/plugins/neo-tree.lua (note the window position = "right" config specifically)
is this guy flexing?
im pretty sure asking an ai plugin inside in vscode can build vim in 10 seconds
Cool! A lot of our mindset is implicit so it's hard to explain why some patterns are better. It's great you were able to explain this soon after you realized it. I was lucky enough in 2017 to work with a super computer science geek who explained something like this to me. Basically that dependencies can look like a diamond instead of a tree, where there's the root of the application that's extremely light, and then you can have other stuff that's common for all features that isn't in the root, but rather a tiny standalone thing that gets imported into other things. So small, focused things get imported into bigger features that combine features, like dashboards. When he explained it, it felt like my brain became untangled, and like you said it became obvious in hindsight. So obvious that I quickly forgot the mental model I used to have so I can't even explain the realization anymore! And I can't immediately tell who doesn't think of things this way either. But I see weird import patterns all the time. For example: importing routing modules into feature modules. It seemed like the whole community was doing that before standalone components.
I think the idea about a lot of our mindset being implicit is interesting. I feel like I can even use an idea or pattern quite effectively for a long time before some final piece clicks into place that allows me to think about it in a more concrete way (and a way that I could explain without vaguery and hand waving). Declarative code was very much like this for me - for a long time I used the concepts and benefited from them, but then at some point it's like some final little piece of the puzzle clicks in that reveals everything with much more clarity. I often get the sense that my subconscious mind knows these things better than I do (which leads to those ah-ha! moments in the shower), the trick I feel is getting to the point where I can think about it clearly in my conscious mind. Feels a bit woo-woo but I've wondered if there are ways to better or more intentionally leverage our subconscious mind or if there has been much research done in that area.
Definitely not woo woo . I've read a few psychology books and I think most people underestimate how much of who they are and what they think is subconscious.
@@mfpears have you read The Master and His Emissary? It's been on my reading list for years now, if I remember correctly it covers the idea of our conscious mind sort of being like a dumb king that thinks it's in control/thinking of all these great plans, but most of it is coming from our subconscious mind (think it touches on implications of the split brain experiments). Curious to know if you think it's worthwhile if you have read it.
@@JoshuaMorony I haven't, but I've learned a lot of psychology over the past 10 years, and now I'm realizing how little psychology most people understand, so I'm looking for resources that might be simpler or purer than how I came to learn these things. I read The Righteous Mind in 2015 and Jonathan Haidt talks about "the elephant and the rider"-so, different metaphor, but same idea I think. But it also has a lot of political stuff that might be boring to some people. So I'm looking for a resource that clearly and convincingly lays out the argument for the importance of subconscious processing. I'm trying to remember the first concepts that opened my mind to this idea, because a lot of people resist it pretty strongly. It may have been How to Win Friends and Influence People, because it showed how it's the rule rather than the exception that in order to persuade people, the majority of what you tend to has to be stuff other than the main point you're trying to communicate. Because deep down most people most of the time have to know you're on their side before they'll even listen to you. And then once you have an idea that changes your perception of people and the world, you start seeing it everywhere. So that's why it's easy to forget what it's like to not see it at all. So this is my primary focus now. I still love learning, but I feel like I've strayed so far from common wisdom that I need to sort of find a way to start bringing more people along. In programming as well.
You could coin this as the Dependency Inversion principle!
It's funny because this is quite literally a dependency inversion, but I've never really though about DI from SOLID in that way (maybe I should), but I think about it more in the context of depending on abstractions instead of concretions (not changing the direction of a dependency)
OoOor, you could just pick the state service out of word/dashboard service to be its own shared service and both word/dashboard service could be dependent on it... if you could that easily move those states to another service, then it probably can be service on its own
Well I unsubscribed since that was inverting the state. /s Just make sure the part you are inverting needs to be done.
🙃
Invert dislike 😅
why do you always need "as const" in your signalSlice fun for the status prop in your state?
Because its supposed to be a specific union type or strings (e.g. "a" | "b" | "c"), without "as const" the type will just be a generic "string" not a specific string
@@JoshuaMorony that makes sense, thank you. I was creating specific types but I like your const approach most. Thank you Josh, been trying the signalslice and I find it awesome :)
Hi Josh, this is really a great video, but I do have a question about it the architecture that I haven't seen in any of your other videos wherever you talk about, how do you deal with shared features (features that depends on other features)? In the context of your video, let's say your "notes" feature can be associated with one or more clients, so somewhere in your "notes add" feature you'd have to show a list of clients from which the user can select from. How would that look like? Should there be a "client list" smart component for each feature that needs to use it? Should there be a shared service specific for loading data for this?
Nice ending!!! lol!!!
Great mantra. Thanks!
That actually makes a lot of sense. Regarding folder structure - I have all my data fetching services in one place, kinda like this: core/inventory/products/ product.service.ts and product.types.ts. My core is kinda like your shared as the services can be injected by anyone and don't hold any state, and then I have my pages: pages/inventory/products/products.ts and products.store.ts (ngrx component store) which then holds all the state of that component.
And to not unnecessarily fetch data multiple times I have implemented a caching service using cashew using cache buckets and a cache bucket gets cleared by my backend when someone changes something -> a cache clearing event with the specific bucket name is sent to all clients connected via SignalR. Don't know how well that will scale though but it works very well and I have made it so that if you fetch lets say all products it also caches the keys of each entity and if you fetch a single product it won't have to go to the server if said product has already been fetched with the "get all" request (or paginated request in my case)
@@MrBloodWoork Wow, neat idea. I used to cache manually some standalone bits of state that were fetched often, but never implemented scaleable solution. I m just wondering. How exactly backend clears cached data? You receive some kind of array key with changed objects or something?
@@loko1944 No, in the frontend I have so called cache buckets. With cashew you can decide for every request which cache bucket the data should be stored in. I used a string backed enum to assign the names to the buckets. Let's assume we have the products cache bucket and we use it for the GET /products request in the frontend. Now in my backend I just call my cache invalidation service with the products enum value right after code that changes or deletes a product. So when POST /products is called then a message is broadcasted to all connected clients to clear their cache with the cache bucket name "products". However I did have to create a dependency map and clear all other buckets which depend on products because e.g. an asset has a product and so assets have to be cleared too because I have joined assets and products when fetching assets to be able to display the assets product name.
@loko1944 No, in the frontend I have so called cache buckets. With cashew you can decide for every request which cache bucket the data should be stored in. I used a string backed enum to assign the names to the buckets. Let's assume we have the products cache bucket and use it for the GET /products request in the frontend. Now in the backend I just call my cache invalidation service with the products enum value right after code that changes or deletes a product. So when POST /products is called then a message is broadcasted to all connected clients to clear their cache with the cache bucket name "products".
@@loko1944 However I did have to create a dependency map because e.g. an asset has a product and so assets have to be cleared too because I have joined assets and products when fetching assets so I can display their product names.
I use charlies estate management framework.
I'm sure I'll be reading more from Charlie, I picked the book up on a whim but I don't think I've taken so many notes from a book in my life
Hello Joshua, thanks for sharing the video. What your thoughts about creating a specific lib/module to expose that dependecy like a "contracts"? When i have composable features, like "customers", "sales" to build a "dashboarad". I expose 2 new from "customers" and "sales" called "dashboard-api-claim" and manage what would be exposed to dashboard feature, commonly data-access/some-api-service.
If I'm following you correctly then I think that makes sense for having more granular control over what is exposed (I haven't personally done something like it though)
Yes this is mostly what is recommended and i think Manfred Styer and the angular architect team started it. Inverting is good but it ends up ugly as time pass cause you end up having a shared service that has trivial APIs cause of some small dependency.
@@g-luu Interesting to know. I never did large projects that way thats why i probably never notice that
I loved the video! A great mindset to have. And, as requested, I unsubscribed.
I've decided always invert is terrible advice now
@@JoshuaMorony thinking in takeUntilDestroyed() terms no one should unsubscribe as long as your chanel is available 😅
Join my newsletter for more content: mobirony.ck.page/4a331b9076
export const JobHandler: Handler = async () => { const module = await import(`@nova/components`); const viewContainer = inject(ViewContainerRef); viewContainer.createComponent(module['LoaderComponent']); console.log('JobHandler is working'); return true; }; Error: NG0203: inject() must be called from an injection context such as a constructor, a factory function, a field initializer, or a function used with `runInInjectionContext`
you know you can just return promise and convert Signal<Promise<Then>> into a Signal<Until | Then | Error>. also adding retries to promise doesn't require rxjs, you can have your own retry wrapper that can also return a promise which doesn't have to be aware of signals are a thing
haha, I see you've used 'firebase' and not '@angular/fire' as the later still doesn't have zoneless support. 😢
Would a strong grasp of the material in this course be enough to get an entry level role using Angular? I use Java Spring backend, MySql, Html, Css, JS, and some TS with Angular on frontend. I'm just not sure when I'll ever be good enough. I have a portfolio site, 5 apps deployed to AWS EC2. I have a 6 month window before moving back to the States with my family and want to find work ASAP.
I don't know your situation, nor do I really know the current job market first hand as I have not had to deal with it any time recently, but my guess is that it sounds like you already would "qualify" for an entry level role (maybe beyond that), and maybe the issue lies somewhere other than needing to know more stuff to land a role (likely a big part of the problem is that from what I have heard the market for entry level positions is very competitive/difficult at the moment). This isn't particularly useful advice, because I don't think I have good advice to give on how to land a job in today's market, but I did want to make it clear that I don't think going through my course is necessarily going to help you land a job. That said, at least from my perspective, someone who has a strong grasp of all the topics covered in the course would be among the best Angular developers (but also, that would come through repeated application of these concepts over a period of time to develop that "strong grasp"). But ultimately, even if you have all these skills, it still might be difficult to land a job without prior positions/network.
Do you have any videos of your Neovim/tmix config? I love your Monokai like theme!
I don't have a video, and my tmux config isn't public, but my neovim config is available here: github.com/joshuamorony/lazyvim/
Redux and NgRx popularity is the sign that modern front-end developers became stupid
What is the point of calling toSignal? What is the benefit? Why not to use just selector with rxjs pipe(map) and bind with async pipe?
Arf, just bought it yesterday 😢
Basdasdas
@JoshuaMorony I have used signals but prefer to just carry on using rxjs alone since I don't feel I gain anything. A reactive system needs to support asynchronous operations, which signals do not do. Combining signals feels like jamming a square peg into a round hole. It feels like a pointless change to an already perfect way of front-end programming. I think the only reason signals were introduced was because the Angular team see that most people don't want to learn rxjs. Great; instead of improving, lets all adopt an inferior system. There's even talk that Angular are aiming to remove rxjs completely from the core Angular packages. I am really disappointed that this is the direction the Angular team are taking this direction as I was so happy with Angular the way it was. What are your thoughts on this?
100% agree. I shared the same opinion back when signals were introduced. They don't solve anything that rxjs doesn't already solve (except maybe for "glitches" but those can be worked around in rxjs) but now you have a fractured ecosystem where every Angular app becomes a mess of mutation with zonejs + signals + rxjs. Unfortunately the Angular team will keep adding changes to the point where it will become a mix of React/Vue/Svelte instead of having its own identity.
I got into some thoughts around this in this video: ua-cam.com/video/iA6iyoantuo/v-deo.html but my general opinion is that signals are a better way to represent state, and observables are a better way to handle events, and the flow I've landed on in my apps of starting with observables which flow through to signals to be consumed by the components I quite like/am happy with. But if you do go the pure RxJS approach I don't think there's anything wrong with that (generally speaking, a pure RxJS approach is going to be fine, a pure signals approach might be questionable)
@@JoshuaMorony thanks man
@@valcron-1000 Signals may become an integral part of Javascript, FYI, so there's not running away from it. It looks like they're here to stay.