Learn Programming with VB.NET - 09 - Strategy Design Pattern
Skills:
Systems Design Basics80%
Full OOP playlist
https://www.youtube.com/watch?v=3s-bgPg7IWc&list=PLQnljOFTspQX-XZChZg-b06MJ27nAJQS9
Finally after all these introductions, we talk about some good stuff, the design patterns, what is it? how does it help? Our code so happened to need a design pattern so we implemented the strategy design pattern.
We will get rid of the ugly crust type if statement and replace it with a beautiful polymorphism
Stay awesome
www.husseinnasser.com
What You'll Learn
Implements the Strategy Design Pattern in VB.NET to improve code quality and readability
Full Transcript
what's up y'all this is a said no sore from my geometry bringing you the ninth episode of object-oriented programming yes so yeah we are still surviving this series so this is the ninth episode and we have discussed most of the key concept of object-oriented programming and what I want to do scarce next is I mean we talked about inheritance right and that's like the key important thing about object-oriented programming so we know classes we need checked we know inheritance we know properties methods what else all these things are the key stuff the rest you know it's just flavors really and just spices that you add to you know enhance your experience while coding using object-oriented program so so you can you can use any language i'm using in this case vb.net but the concept this series teach you the concept of object-oriented programming not the actual concrete implementation of a programming language get it I hope you get the idea so after this you can program on the web or program on the desktop or really any programming language you know so either mobile development works the same way so it's just the way you are katek tanned design your software to be to be really reusable you know so all right so let's let's see where we ate it's a bit oh so last time we introduced the concept of inheritance and we created one example called margherita pizza so like out of a box pizzas that has stuff in them you know like these kind of portions this much stuff in them and this type of Christ to all these things right so I'm debating what to discuss this episode and so from this point on will be doing a lot so you are an you reached an intermediate stage of this so most of the things that get a C is kind of repetitive no new concept known you mean programming language keywords or whatever I mean you might I mind I might throw things a thing or two as I need it of course are we recording this so I'm I throw thing or two as I needed you see for example I didn't I didn't even mention loose because I didn't need to loop through stuff yet right so that's the way I are usually discussed things when I need something gonna introduce it when I don't basically we don't need it right that's the concept all right so oh so there's something bugging me with this currently there's a lot of stuff bugging me with the current implementation that we have here and this is the thing that is buzzing the crust tied or I think this is what we're going to discuss now so now with the crust time when you create a new pizza you have these three no sorry this is yeah these are the three crust to crust i right so thin and thick and how did we how do you implement this this is a bunch of strength really you know when you edit that so thin and thick and we're doing you know some of statesmen down the line here I guess yeah when we calculate the price of a pizza we basically says if it's thick then do that if it's thin or else just do that I hate that you know I want to get rid of this if statement and make this really extensible you know so how do we do that basically I don't know if you guessed it but we're going to convert this into a class a cross type will be now a class by itself and yes I have a perfect name for this episode wow this is gonna be the strategy design pattern so we're going to discuss our first design pattern in this episode alright so so let's start with the definition of this design pattern so a design pattern is basically pattern what is bad pattern is something that you do over and over again and it there are some common things that you find out while doing it you know then you just and you and you extract a pattern out of it so these guys there are some guys that have more than 30 years experience and object-oriented programming and they were doing a lot of projects and then they I don't know ideal to that so they came up with patterns that that that they saw emerge in their designs all right so and they call them design patterns and people have been using them and what are there are a lot of patterns you know one of them is the strategy strategy design pattern and factory design pattern there's a lot Model View design pattern each one is nothing but it's nothing but an ordering and organizing your structure of classes so that it simplifies your work you know so this is what we were going to discuss today the strategy design pattern and the way and there's another thing so you might have heard about strategies on power or design patterns in general this is the key thing you do not have to force a design pattern in your code it just emerges in your code is you say hey oh this is a perfect thing this is a strategy design pattern there's a great book by the way I really guys recommend you to get it it's called head first design parents and and this is like the best book I ever read you know and this thing and and and it really inspired me to write this book you know their I to start this series you know so this is a very fun reading this is a very fun book to read and just read it go ahead read now you'll be ready to read this book actually because you know the concept is just the way you organize your stuff to clean up the clutter like we have a clutter here right so this is a clatter this is a devastating that is really ugly in so many ways like one of those like there is enough statement first of all right you don't if you need to add a new type you have to check that right and added you have to maintain it here right you have to add an ephah statement here as an F you'll say I'm gonna add a new crust type called where a cheese crust type so get a cheese crust up you have to add a string and check that it's just ugly right so if then you have to have your own price for that it's just unley so this design pattern has been emerging emerging in so many software and if you know it you can apply it that's the only thing I can tell you there's no way you know to like there's no quick way to learn how to apply a design pattern your code it just so happened that emerges in your code to say ho this is a design Prado this is a factory better those and you start applying it like in this case I didn't know today i'll be i'll be doing a design factory or snazzy design pattern in this case i didn't explain it to you yet but this is but I just by looking into the code I know that the pizza class has something called crush type and this crust type is a string and then you just I'm gonna convert the string into something else dry class so the crust type now will be a class and this class will have a lot of crushed type classes inheriting from this main time so it will look like that alright so let's let let's look into that let's draw some Picasso here alright so this is the strategy design pattern right whoa oh my god Oh Swofford strat TG design time this pattern allow you to change behavior based on on runtime and and focus this all right it is if you can change the behavior of your class so that you can change it on runtime not in kampala Sam so that is let us explain what we currently have so we have something called beads arrive there is something here called cross-type across type is gonna get string right this is my class this is a crush type and crustal is basically that the round type around your around your pizza right so can be fake fan and some people like some pizza odd stuff they put cheese in it and they do get go crazy on it right so this guarantee is set as a strength and it's a property in your class so how can you change a property in your class right while how do you change this property so you can you can basically declare a variable called pizza and then say Christ I bake well then then change it too thick we using basically a simple assignment but like we are doing here right when you let's run this so when I start on your pizza let's say we create our own and this is a thin so if it's a thin it has a price that's very we're small cut the boy if it's thick has a price of its 10th has a cheaper price right I think I don't remember what we said but let's say now I want to add a new type how do i do it right currently I have to do some ugly right so I have first to for example go to the pizza cause I have a crush type I have a price set variable here called thick crust I and I said the price that private thin crust I price and I said it here right so and if I want to add like a cheese type i have to add a variable here called cheese crushed type a nice little prize as double say it's expensive so it's two dollars uh alright I'll just one point fox just too much wine alright so you add that nice this is not enough you have to go and your get price calculate method and you have to add an if statement here so so this is a good way to introduce lsf cross type equal then do that else f cross type equal cheese then then you do that right cheese crust type even that is not enough we didn't add the cheese right to the list here so how do we do that we added that item and so you're imagining right how many places did I choose change in order to implement this new I it seems to be easy because I wrote the code but if someone else is reading this code is gonna have a hard time but let's see if it worked so sin is 3.5 dollar thick is for lower this should be 4.5 alright so I just implemented a new crust type but I had to change a lot of places just to do that right so that's one ugly thing about this that's like an ugly thing is this horrifying horrifying a statement you know just adding this so the design the strategy design pattern here can help you change the behavior of the pizza class here to get the price of the pizza all right without the speeds a class you know really knowing about it so what we would do here in the pizza class we're going to create a crust type class and then we'll ask I will ask the crust type to get to turn its price so regardless what the price of the cross type this is gonna get returned I'm gonna get added we're going to get rid of this ugly if statement right now right now so let's go let's get to it so here you're going to have a pizza this is what our current structure so we want to add another class here and we call it interface by Chris type that's a good way to introduce an interface to you can you can do it with the class to its it's really the same thing alright so we have a crust type and then here I'm gonna have my children so here we have thin crust click crust cheese crush see how beautiful this is see how beautiful this is so this is inheriting from this this is inheriting from this and this is inheriting from this but I don't know how to do that thank you but you get the point right yes captain I can't believe I'm drawing this in paint alright so you get a point right this these three guys are inheriting from this but we're missing something else now we're going to introduce something here this relationship now that we're gonna do is cold what the is gold okay it's gold association so this is associated with this right so this crust type is no longer stirring but is actually an an object of type i crush type so what is an interface as an interface is nothing really but a class with no code in it you cannot write code in it that's the simply as it is you know and we use the interfaces to provide some sort of signatures so in this case now the pizza class doesn't have any clue what is the cross type I mean it does know that that crust type is I mean it is of type I crust type but it doesn't know and it doesn't care what is the actual underlining because the crust type can be one of those only right so crushed up can use that you can cross that be calling you thin crust or equal new fake or equal music cheese crust so this is how you basically do it this is we do it let's do there alright so let's implement them strategy design pairings guys mmm think this is very good this is turning to be a very good episode I'm very excited and if you guys have any questions you should I had me write i implemented the strategy design pattern almost a lot a lot of the software i built during the years it just pops up don't force it right don't force it in just pops up that's what she said all right just you know what why writing code if you know if you don't know it obviously doesn't pop up if you do know it and say hey i think i can replace this with a strategy design pattern or there are some days I'm pairing that are really difficult that I'm never used like the decorator for example I never get this it's really complicated and it's really unnecessary my opinion is just there are the most stuff that I use is the strategy example and the factory design pattern there these are the most used design pattern in my opinion in my code at least so I don't know about the rest so let's start cleaning up this shade alright so first of all I hate this form so gonna call it Pizza update don't do that yeah go ahead all right test our code almost test your plot that it's working check your current results so you're gonna create our own then small without any ingredients goes 3.5 thick coast for and cheese coast 4.5 remember those values because we're going to change refactor our code and then we're going to check the results better be getting the same results all right guys always when you have to change something test it first as it's working now today because if you are obviously in an organization you don't go and change random code right that's just nasty because you want to have expected result the same exact result after your factory your code and a lot of developers make these mistakes and change code know as I say I didn't do anything and just to remove the knife system and replace the and refactor the code it don't assume thing because you feel assume you make an ass of yourself right don't assume stuff really just test right even if you like hundred percent sure always test before and after all right I learned this the hard way right believe me yeah four years ago huh I don't want to remember that day who all right so yeah let's start doing the sheet to add class not the class i'm gonna add an interface right so what is this interpretation yeah where are you interface should be here anyway alrighty quick and new autumn so there's a there is an interface class itself but i think it's an only in VBS all right anyway let's add a class so let's call it i crush died i'm going to change it later it's ok so instead of public class you just say public interface really really simple all right the interface what does it have so what what does the crust type have here so obviously it's going to have a name right so we're going to add a property so yeah we're gonna add a property and again interface doesn't have code so we're gonna add a property cooler removal this thing okay so name so this is the name but I'd really like to do that if you do three commas or three slashes in c-sharp you get to have some sort of description that you're right here and get a show up there for the name of the crust telegram and the most important thing is the function function get price give me the price of this particular cross type but return the price of the cluster nicely done guys now i'm gonna add my first crush type class all right class US Sen crust only difference between a thin crust I mean the inheritance and the implementation between the interface and the classes if you inherit a class from another class and you cannot inherit a class to an interface alright if you want to implement right you have to use implement I cross-type right once you had entered says you have to implement all this method another beautiful thing about the interface you can implement multiple interfaces but you can only inherit from one class right let's write that now you can implement multiple interfaces but only in hurt from one class right that's very important that's why the interface you can write another interface and it's a implements I cross-type all right and it's gonna work the same alright so the thin crust type what do we have you how much is the thin crust type thin crust type is point five so literally I'm going to just say return point why that's it i don't care if it's hard coded here because this is going to be capsulated anything related to the crush type that is then we'll be in this class and nobody will see it all right what's going on here it's weird where is the implementation of this all right so yeah you have to implement that and that's already ready for us it's just a property that is called name as a string so we can say that and get it just so this is set for us already it's the same as having a variable called name right so the whole thing gets shortened by this statement right this is the way just to hide the code this is the actual ide does that all right let's add our second class let's go to thick crust type similarly implement i crush died and then return one right was one i think yeah then add cheese last time then implement I cresta I forgot one more little thing so it's 1.5 all right we forgot one thing here when you create a new cheese crust type the name called cheese crust type for example but when you create a new public sub knew the name is called thick cross type and when you create thin public sub new you say the name is then first time Oh think we're good we're good we're really good guys alright one ugly thing that I have to remove here all right I need to remove all these things i want to add these on the fly right gonna do this on the fly guys let's see hmm so when I run that I just removed in right so when I run there's nothing here i'm going to add them when i load the form and the beauty of this i'm going to add these as not strength but i'm gonna add them as objects what am I talking about then explain now right one more change right so we have all cross-type let's organize our code here we can add folders here let's go to cross Todd that's a thing you can organize your code obviously no change will happen you don't have to worry you can just move stuff that are related to each other in a folder all right nicely done all right so what else the pizza class let's get rid of all these ugly-ass cold and this gonna be changed the crust I've is now not strength it's actually how I crust type cursed cross type all right and of course the property that sets it where is it where is it we don't need that right just talks that all this ad we will go now finally my dream will come true good good all these alright so this is the property cross type I return I cross type into your face and I set a cross type right nice and then that's a beautiful thing so all this let's just I'm not Daniel eat it when I leave it here to show you all that we get rid of all this ugly code and replaced it with a very nice sexy of statements no two statements can you guess the price is equal the current price add the crust type don't get price how sexy is this seriously guys how beautiful is it this is right there is called the design the strategy design pattern so I'm going to change the behavior the price or the behavior of this of the function that gets the price will change based on them on the actual object that is instantiated by this object right so the crust type is actually what it's an interface asari Christ I but it can include this class this class or this class and if you call the get price on this class you're going to give the value probably different behavior that's what they call it strategy design pattern because you change behaviors here right and thick crust type in this case I use it a very simplistic way but you can do it in a very end this is like a very naive implementation of the strategy design pattern just returns the value right it changes the value right but but you can do so much more with that like you can call a function that does something else altogether you know I'm gonna trying to think what would that or pizza stuff just nothing really me but you can change the behavior of your algorithm based on this right the design that we're also if I call good price now here if the crust type is set to this I'm gonna get there get price there's a function here called good price right there's a function here is going to price there is a function here good good prize and the prize and each one has an implantation this doesn't have an implementation because it's an interface but these have all right so let's go ahead and complete our code we still didn't complete it so where's one little change here that I'm going to do write in the form load will the foam loads I want to add my crust types there I there are a lot of trust types currently right so add items that this is how you add a thing to your to your code so to your drop-down list so CMB cross-type so this is our drop-down list if you remember the name and you say dot items do that that's how you do it that's what let's just show you for example I just add thin for example here on I add it as a string so it's gonna show up here what oh yeah oh of course so it is the there isn't a pizza yeah by default there's a default thing for this right yeah that's an error so when you what did what happened here so in my new pizza implementation I am sitting the crust up to be thin previously now it's not thin anymore it's actually our object so how do you instantiate over it we taught about that for this new thin crust type that's how you do it and I think I did the same thing in the my reader I so there's another ride there sonu n cross type so by default it's a thin crust time alright so now run it your pizza there you go so that's what we add so how did this is how you add and new stuff to your drop-down list but I don't want to add a strength I want to add an actual objects right so I'm gonna do this new thin crust I i'm going to add new thick crust i'm i'm going to add new cheese Christine so this is one way to do it another way is to do with the boring way by FP thin crust I but your pros now guys all right you can do it this way and then you say this that's okay or this also is ok because this will basically add a new object of type thick crust into this right this will walk this will work same thing right so let's run what do we see now you add this the actual there is an object here there's no more a string when you select that it's actually an object and yeah we're going to fix that now I've got obviously it's expecting a text but it's now an object expecting an object knowledge of text we can change that now so now see when you select that things happen there is a code that we need to change right but before that pizza bit too thin crust up what's that that's the class name and that's the project name by default this is what happens when you add an object to end an item or a control that needs to display it because you didn't say what do you want to display right you just said I the object so well I would know what do you want to display right so this display can be changed fortunately and it's very easy and every object in.net right there is something it as a method that is hidden I don't know if you notice that it's cold like even I inventory the two-string it's always there in every single object and like we discussed in the inheritance because we have like this master object class that every single guy die every single one and hurts from so this is called an object alright and this oblique has its method like to string and by default retains the class name but I want to override this method if that I knew if this is a new term I I'm throwing out here override is when you implement or inherit a single class and then you change the behavior of that class by overriding its stuff right so I'm going to override the object class here i'm going to say public override to string the method to think i'm going to overwrite it but instead of retaining the my base that string which is the method that is above and the object i'm going to return the name which is basically the cheese crush type in this case and obviously this code will be similar in the thick and the thin now I run and what this will return the actual story that I want which is thin crust I've thick rest up and cheese crust I'm and these guys are objects now there are not mere strings their actual object with behavior with the stuff where we can do with them alright so what do we have what what else do we have now when i create a little pizza or as this bug for example so we say you're saying that CMD crust I but X equal the current crush type alright so when you select the pizza hmm which one is that oh you see like that we said that pizza cross type equal to say selected item all right all right that's another one let's fix it so when you change the cross type we don't use the text anymore we're going to use the selected item a selected item is now an object I want the actual item and can you guess it this actual item is nothing but the object that we added when we started the form right we started the phone we had these guys right we added these and now they are stored there as objects and now when I select that I want that object to be set to my pizza that what happens and then when i create now visa then small remember the guys 3.5 medium 3.85 oh okay I'm sorry the thick was 4 and the cheese oh there you go this tragedy is impaired so how does it work how is this magic working so this is what happened when i select the thin crust type i change the pizza dot crest type object 2.2 to this now when when i when i calculate the price of the pizza the price of the pizza will call a lot of stuff and then we'll call crust type that gets price remember the crust a good price will defer to this interface and this interface is a this is the guy who is implementing me so better go and call that particle method not this not this but actually this and get price has returns in this case three points for our 1.5 and then this will be added to your stuff when i change that the on runtime while I'm talking to you this program is running I'm not changing any code I choose too thick now this is pointing to this guy right so this get price get cold and this will call to this this will initiate this investor in this case alright and will return this case one and then one will be added to the rest of the information so thick cheese same thing the kids are the cheese this guy will be at it how about that guy how about that we just implemented the design strategy design pattern successfully you like this I hope you'll do alright so let's see how difficult is it to add a new crush type of the bat what do you think well i'm gonna add one of my favorite noise i'm gonna add yeah what do we think thin thick cheese apple crisp the cursed cross-type member first episode we talked about this all right so up o implement pie crust type then you return it's a very expensive so it's two dollars and then you public sub menu we're gonna say name is equal to apple cross-type know if statements surprisingly we just override public override to string return the name about that and then i simply go to the form copy paste because we're lazy you say add a new Apple cross-type run there you go my apple a crest I pizza lay expensive five dollars right that's after adding all these ingredients of course this is going to exponentially go up but exposure all right so guys let me know in the comments if you like this right let let me know if you want more designed by obviously the factory design pattern I see it screaming out of this like I don't wanna seem like one that's what it's really screaming who's there yep real I want to be a bit dead this is really really screaming right here no you want to be implemented that girl factory design pattern maybe do it next maybe don't we don't I don't know but I'm planning to do the databases to juice that a basis so we can save the shed into a database like the rest of the word you know obviously everything goes on the cloud now nobody use databases they open but I mean everyone do is database but it's hidden so headin down the stack that nobody's mentioning it anymore but yeah guys now I want to do another thing I want to implement the designer strategy design pattern to fix all this ugly things to right ingredients or these mushroom thanks this ingredients they are still ugly I mean they are methods can you imagine add onion add cheese add chicken add these are all ingredients so add ingredients right think what they will think with me we're gonna do this maybe in the next hour mmmm the coming one we're gonna clean this up right i hope you guys enjoyed this one rest up for now i have work tomorrow so we can see you next week felisa i'm still doing really good was recording one episode per week I don't know I hope really I can do more but yeah that's actually my limit for now I'm so busier than our stuff sorry guys but I hope you enjoy it if you do leave a like subscribe really helps to see that people really benefiting from this this is what's keeping me motivated to continue right if I don't see any and interactions basically is d motivates me to make these videos so yeah nobody's watching right but I hope someone out there's really learning from this all right guys you can see you on the next one stay awesome goodbye
Watch on YouTube ↗
(saves to browser)
Sign in to unlock AI tutor explanation · ⚡30
Playlist
Uploads from Hussein Nasser · Hussein Nasser · 12 of 60
1
2
3
4
5
6
7
8
9
10
11
▶
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Extending ArcObjects (IGeometry) - 01 - Getting Started
Hussein Nasser
Extending ArcObjects (IGeometry) - 02 - The Document, The Map and The Layers
Hussein Nasser
Channel Update - New Book, New Job, New Videos
Hussein Nasser
Learn Programming with VB.NET - 01 - Getting Started
Hussein Nasser
Learn Programming with VB.NET - 02 - Classes and Objects (Part 1)
Hussein Nasser
Learn Programming with VB.NET - 03 - Classes and Objects (Part 2)
Hussein Nasser
Learn Programming with VB.NET - 04 - User Interface
Hussein Nasser
Learn Programming with VB.NET - 05 - By Value v. By Reference
Hussein Nasser
Learn Programming with VB.NET - 06 - Variable size, 32 bit vs 64 bit
Hussein Nasser
Learn Programming with VB.NET - 07 - Conditional Statements
Hussein Nasser
Learn Programming with VB.NET - 08 - Inheritance
Hussein Nasser
Learn Programming with VB.NET - 09 - Strategy Design Pattern
Hussein Nasser
Learn Programming with VB.NET - 10 - How did I learn programming
Hussein Nasser
IGeometry 2016 Retrospective - Channel Update
Hussein Nasser
Javascript by Example - The Vook
Hussein Nasser
Vlog - Keep your servers close and your database closer
Hussein Nasser
Vlog - Client/Server Programming Languages
Hussein Nasser
Javascript By Example L1E01 - Getting Started
Hussein Nasser
Persistent Connections (Pros and Cons)
Hussein Nasser
Javascript By Example L1E02 - Building the Calculator Interface
Hussein Nasser
Happy new Year from IGeometry!
Hussein Nasser
Synchronous v. Asynchronous
Hussein Nasser
Javascript By Example L1E03 - Displaying the Digits on Calculator Screen
Hussein Nasser
Show Your Work. Blog, Vlog, Write, Create and Develop!
Hussein Nasser
Relational Database Atomicity Explained By Example
Hussein Nasser
Javascript By Example L1E04 - Operators, All Clear with Arrow Functions
Hussein Nasser
What Comes First, User Experience or Software Architecture?
Hussein Nasser
Javascript By Example L1E05 - Evaluate the Calculator Expressions with eval
Hussein Nasser
Fastest Way to Learn Programming Language or Technology
Hussein Nasser
Javascript By Example L1E06 - Fix Leading Zero Bug with Conditions
Hussein Nasser
Stateful vs Stateless Applications (Explained by Example)
Hussein Nasser
Javascript By Example L1E07 - Running our Calculator on the Mobile Phone
Hussein Nasser
Advice for New Software Engineers and Developers
Hussein Nasser
Why JSON is so Popular?
Hussein Nasser
Building Scalable Software - SLA, HS, VS
Hussein Nasser
Vlog (Istanbul) - Datacenter Proximity
Hussein Nasser
Should Software Engineers Learn Bleeding-Edge Technologies?
Hussein Nasser
Do Developers Build Bad User Interfaces/Experience?
Hussein Nasser
Learn By Doing.
Hussein Nasser
I Wrote Bad Front-End Code That Broke Chrome
Hussein Nasser
My Story
Hussein Nasser
Vlog - Horizontal vs Vertical Scaling
Hussein Nasser
Can User Experience Help Build Better Rest API?
Hussein Nasser
Reverse engineering Instagram in flight mode
Hussein Nasser
The Benefits of the 3-Tier Architecture (e.g. REST API)
Hussein Nasser
Stateless v. Stateful Architecture (Podcast)
Hussein Nasser
The evolution from virtual machines to containers
Hussein Nasser
Proxy vs. Reverse Proxy (Explained by Example)
Hussein Nasser
Canary Deployment (Explained by Example)
Hussein Nasser
No Excuses
Hussein Nasser
Synchronous vs Asynchronous Applications (Explained by Example)
Hussein Nasser
What is an Asynchronous service?
Hussein Nasser
Difference between Client Polling vs Server Push in Notifications
Hussein Nasser
Software vs. Hardware AdBlockers (Explained by Example)
Hussein Nasser
HTTP Caching with E-Tags - (Explained by Example)
Hussein Nasser
Simple Object Access Protocol Pros and Cons (Explained by Example)
Hussein Nasser
Nodejs Express "Hello, World"
Hussein Nasser
Reverse Engineering Instagram feed
Hussein Nasser
Popup Modal Dialog with Javascript and HTML
Hussein Nasser
MIME and Media Type sniffing explained and the type of attacks it leads to
Hussein Nasser
More on: Systems Design Basics
View skill →Related AI Lessons
⚡
⚡
⚡
⚡
Podcast: Architectural Patterns: Moving Beyond Cloud-Native to Local-First - Insights from Adam Wiggins
InfoQ AI/ML
Three Questions I Ask Every System. Most Design Reviews Skip All Three.
Medium · Programming
Thoughts on new “HOT” role *FDE*
Medium · LLM
Building a chikku OS
Dev.to · Ravi Bhuvan
🎓
Tutor Explanation
DeepCamp AI