Models - WPF MVVM TUTORIAL #1

Поделиться
HTML-код
  • Опубликовано: 13 дек 2024
  • НаукаНаука

Комментарии • 132

  • @yuchengtsai2745
    @yuchengtsai2745 Год назад +8

    I am a new developer diving into WPF. I watched this tutorial from start to finish and found it extremely helpful. The speaker took great care in explaining each paragraph in the video, covering everything from building functions from scratch to refactoring and optimization. I highly recommend this video to developers venturing into WPF and utilizing the MVVM framework. It's definitely worth watching from beginning to end.

  • @mrsajjad30
    @mrsajjad30 3 года назад +40

    This is the best place to learn MVVM. Thank you for taking you time to share this with the community.

  • @HP-ol2ux
    @HP-ol2ux 3 года назад +10

    Your tutorials about wpf are pure gold

    • @SingletonSean
      @SingletonSean  3 года назад +2

      Thank you H P, glad this is helpful!

  • @CharlieScarver
    @CharlieScarver Год назад +31

    Straight to the code with a good and clean example project. Maybe it’s a bit too fast for absolute beginners but I loved it

    • @magmyr
      @magmyr Год назад +3

      I agree. For someone that wants to follow the steps, I need to stop the video all the time so I can follow along.

    • @ksaketh2
      @ksaketh2 2 месяца назад

      You can slow down the video playback speed from youtube controls and watch it according to your pace

  • @zhaozhongliu2793
    @zhaozhongliu2793 Год назад +3

    One of the best videos to learn MVVM, with great explanations with clear, non-redundant language. Thank you so much for making this.

  • @kopilkaiser8991
    @kopilkaiser8991 Год назад +2

    A very good teacher. You taught well with a clear and simplified explanation.

  • @antoniomarino3494
    @antoniomarino3494 2 года назад +5

    I have never seen a tutorial video so concise and so on point on any topic. You are my new favourite tutor. I`m baffled on all the stuff you went into, I`ll be returning to this video to get ideas when building models for any application. That was trully aweome.

    • @SingletonSean
      @SingletonSean  2 года назад +1

      Thanks Antonio, I'm so glad to hear this was helpful!!

    • @HamedAlRasni
      @HamedAlRasni 2 года назад

      ​@@SingletonSean Thank you, my best teacher, I learned a lot from you about MVVM. Thank you for your effort. I would like to be a member of the channel, but my subscribe icon does not appear, I am from Yemen, I do not know if you have already defined your audience, and I have another question: \\\ Do you have a lesson that explains Using all the package functions (MVVMEssentials) + Dependency injection as I explained in the Full Stack WPF MVVM series..?? ///... Thanks for your great effort .

  • @dunnoqwe
    @dunnoqwe 10 месяцев назад

    Thank you very much! I've been doing programming for over a year now, but I always had the feeling that I couldn't build anything myself. You showed me how simple things can interact with each other and opened up a new vision for me in development.

    • @SingletonSean
      @SingletonSean  10 месяцев назад

      That is wonderful to hear, glad this has inspired you!! 🚀

  • @davidjennings6293
    @davidjennings6293 2 месяца назад +1

    First of all GREAT tutorial. Second, I was perusing some of the earlier comments to see if someone had pointed out an error in the Conflict logic. I happened upon a very unfriendly comment complaining about the speed of the presentation. I will acknowledge that the pace is challenging, but I find that pausing and backing up provides for valuable repetition and gives me a chance to really think about what is being presented. No sarcasm. No complaint. What I found HILARIOUS, was your suggestion that he turn down the playback speed. Honestly, that had never occurred to me, so I gave it a try. I highly recommend it if you're looking for a laugh. You sound SO DRUNK at 50%. LOL.

    • @SingletonSean
      @SingletonSean  2 месяца назад +2

      I'm afraid to try 50% playback 😂 but glad this is helpful and that you were able to find this valuable despite the speed!

  • @rushas
    @rushas 3 месяца назад

    You're very good with both the Visual Studio and the C# language in general. Great stuff, thanks.

  • @daliangilbert
    @daliangilbert 2 года назад +2

    At first glance this kind of Model is overwhelmingly complicated, but thus fulfill the subject very thoroughly. Definitely we should learn from you Sean! Thanks!

  • @josbexerra8115
    @josbexerra8115 2 года назад

    Gracias Mister SingletonSean....es Oro Puro este tutorial.....Saludos de los Andes Peruanos

  • @bl1c
    @bl1c Год назад

    this channel have the best tutorials for c#

    • @SingletonSean
      @SingletonSean  Год назад +1

      Thanks Bl1c_sana, glad these tutorials are helpful! Nice custom emojis 🎉

  • @seanpereira5824
    @seanpereira5824 2 года назад +2

    This made my day..God bless you sir..You giving me the confidence to believe in myself and look for work after 3 years!!

    • @SingletonSean
      @SingletonSean  2 года назад +2

      That's great to hear fellow Sean! Confidence is so key 🔑

  • @niltonhugosilvamarlo6515
    @niltonhugosilvamarlo6515 6 месяцев назад

    🎯 Key points for quick navigation:
    00:00 *🏨 Understanding MVVM architecture for WPF applications*
    - MVVM architecture separates the view layer into models (M), views (V), and view models (VM)
    - Exploring the concept of models and how domain logic is encapsulated within them
    - Creating classes for a hotel, reservation book, reservation, and room id to represent the domain model
    02:07 *🛠️ Implementing model functionality*
    - Organizing classes into folders within the project structure
    - Defining methods within the model layer to interact with the domain logic
    - Handling reservation conflicts and implementing exception handling within the model layer
    08:13 *📝 Refining model functionality for user interactions*
    - Introducing user identification within the reservation class
    - Opting for a list data structure over a dictionary for simplicity and ease of use
    - Defining methods in the model layer to support user actions such as viewing and making reservations
    Made with HARPA AI

  • @ragnarok7976
    @ragnarok7976 6 месяцев назад

    Granted I'm not exactly a beginner but I actually do like the speed. I tend to just watch videos like these without following along and then implement the concepts in my projects at a later time.
    I disagree with the people who say it's bad I think it's just an intermediate level tutorial that assumes a certain level of familiarity. For those with problems I would remind you that MVVC and design patterns in general tend to be more advanced programming concepts. There is no shame in wanting a slower format that goes into more details but for people who are just looking to pick up MVVC and little else I believe this is actually a pretty good tutorial which is why it's the first result when searching for such a thing.

  • @abouttimebrewing3215
    @abouttimebrewing3215 2 года назад +1

    Excellent! I picked up so many things from this first video, I can't wait for all the cool stuff I'll know by the end of the course.

  • @icseic8914
    @icseic8914 3 года назад +2

    Best MVVM Tutorial out there

  • @renyeh9119
    @renyeh9119 2 года назад

    your voice and speed of speaking here is so comfortable to listen to and make watching great, not boring and hard to focus

    • @SingletonSean
      @SingletonSean  2 года назад

      Glad you enjoyed the pace, thanks for the feedback ren yeh!

  • @bluxtina
    @bluxtina 2 года назад +3

    Hi this might be a stupid question, but at around 5:50 I don't understand why we need to override the equals operator. Why can't we just use the normal Equals for the object?
    Thanks for the tutorial.

    • @shinyshark2247
      @shinyshark2247 2 года назад +1

      Yeah I have the same thought. I don't really understand why we're throwing away all the functionality that the method offers and narrowing it down to just what our usecase would be.

  • @jarvisx86
    @jarvisx86 2 года назад +1

    Man, nice work! I am building a small wpf app and this is just what I needed!

  • @ZANES-YT
    @ZANES-YT 3 года назад +4

    Mate we're currently about to do mvvm in college and want to learn a lil earlier thank you soo much

    • @SingletonSean
      @SingletonSean  3 года назад +1

      That's awesome ZANE! I used to love getting a head start in college, it would always help a ton.

  • @cristhiancasierra8265
    @cristhiancasierra8265 3 года назад +1

    You've read mymind!!! This was just what I needed!! Thank you so much!!

  • @ElCidPhysics90
    @ElCidPhysics90 Год назад +1

    How do you make changes so fast? Like at around 8:50 you change = new Dictionary to List instantaneously.

    • @SingletonSean
      @SingletonSean  Год назад +2

      It looks like it was just editing in order to make myself look like a speedy 10x developer 😓

    • @ElCidPhysics90
      @ElCidPhysics90 Год назад

      @@SingletonSean lol. I keep saying how in the world did he do that so fast? I want the shortcut lol

  • @josbexerr5166
    @josbexerr5166 3 года назад

    Excelente mister SingletonSean....saludos de los andes peruanos

  • @shahbazshzzi
    @shahbazshzzi 5 месяцев назад

    its not just a beginner tutorial. an intermediate one. but a good sprint will be handy for beginners

  • @guaranteedgenius7895
    @guaranteedgenius7895 2 года назад

    That you for your videos they have been a big help. But I did want to point out for anyone running into this...conflict needs to check if reservation starttime is between starttime and endtime...same goes for reservation endtime. If you only check < or > then conflict can return true and there not actually be a conflict.

  • @matthewiskra771
    @matthewiskra771 2 года назад +9

    You touch upon UML and Use Cases, which is excellent as code follows design. However I've never had to pause so much in a tutorial. You don't tell us what the shortcuts for autogenerating the code are, although I did figure out "ctor-tab-tab". When you did the constructors for the Exception and at least three were autogenerated, at that point I'm like "WTF?".

    • @MaxiJabase
      @MaxiJabase 2 года назад +5

      The thing is, this is not a tutorial on those kind of things. If you're wishing to learn MVVM is because you've already gone through a decent chunk of work related to C# and programming in general to be seeking improvement in the design-pattern area, which is far gone past the VS navigation/shortcut perks. I personally appreciate when the tutorial doesn't branch away from the topic explaining little details of everything, because when you're learning something new it's important to keep that momentum that makes you flow through new concepts and ideas efficiently, and I think that momentum is fragile and must be kept at all costs.

  • @tatycoins
    @tatycoins 2 года назад

    10:46 Why in my case it didn't add the parameters to the existing constructor, and instead the menu option creates a new one?

  • @tapendrashahi2097
    @tapendrashahi2097 2 года назад

    An amazing tutorial. Thanks for taking your time to do this. Really appriciate it.

  • @Afro_techLegacy
    @Afro_techLegacy 6 месяцев назад

    Amazing work

  • @slead345
    @slead345 2 года назад

    This is top-notch... Thank you...

  • @moritzcer
    @moritzcer 3 года назад +4

    So when testing 13:09 reservations ResultView shows: Empty "Enumeration yielded no result".
    Anyone else got this problem/solution? My code is pretty much the same

    • @Zbaz10an
      @Zbaz10an 3 года назад +1

      Yeah I had the exact same problem, here is the issue: In the Reservation folder you need to use the "username" parameter like this:
      "public Reservation(RoomID roomID, string username, DateTime startTime, DateTime endTime)
      {
      Username = username;
      RoomID = roomID;
      StartTime = startTime;
      EndTime = endTime;
      }"

  • @TheWolverine1984
    @TheWolverine1984 2 года назад +7

    This is a good tutorial but some of the Visual Studio code generation magic is skiped over too fast to understand what he's actually doing.

  • @MoraisNelson1407
    @MoraisNelson1407 Год назад +7

    I'm thankful for the fact that you're sharing your knowledge with us, but if I may.. Lots of us would benefit from a more relaxed pace and not seeing you flip from one tab into another while you continue explaining. I'm saying this because I'm attempting to follow along with you and find myself not only pausing to keep up, but also having to rewind to actually grasp what you're saying. A steady pace for the same content you're already producing without jumping back and forth between classes to illustrate what you're trying to say would probably attract a lot more viewers. :)

    • @klondikexx2831
      @klondikexx2831 Год назад

      I agre with this. Its kinda very hard to follow along

  • @mohamedmedjabri
    @mohamedmedjabri Год назад

    HI, great ressource, what version of c# and .NET freamework you are using in this project?

  • @A__Singh__
    @A__Singh__ Год назад

    Well put together video.

  • @MattCantSpeakIt
    @MattCantSpeakIt Год назад

    Just to be clear, any properties that should be editable should have setters as well, rigth? Like if you could edit a reservation, the start and end dates should have setters?

  • @jessedellemann2939
    @jessedellemann2939 2 месяца назад

    Hi, I'm struggling to switch multiple checkboxes turn on and off at once by selecting multiple checkboxes. I look at youtube, forms, etc. but it seems there's nobody with the answer. Do you know how to switch multiple checkboxes in WPF? I prefer to use the MVVM logic. Thanks in advance ;)

  • @yassinetaki7736
    @yassinetaki7736 3 года назад +3

    is there a shortcut for documenting the code because it was fast :) ?

    • @SingletonSean
      @SingletonSean  3 года назад

      Try typing '///' on top of a method/property/class :)

    • @Gholamalih
      @Gholamalih 2 года назад

      @@SingletonSean I thought you created all these documents with just one shortcut key.

  • @itsdudley3243
    @itsdudley3243 2 года назад

    Great video! Keep up the good work!

  • @mariuszpetruk5777
    @mariuszpetruk5777 2 года назад

    how did you generated the constructors at 10:30 ?

    • @SingletonSean
      @SingletonSean  2 года назад +2

      I did a "CTRL + period" with my cursor after "Exception", and that brought up the context menu where I selected to generate all constructors

  • @bunnywhiskerz3616
    @bunnywhiskerz3616 2 года назад

    When overriding OnStartup, it throws no errors if there is only base.OnStartup(e); . However, as soon as I try to add any more code to the override, there is an error. It says that "base" is an invalid token.

  • @jupiguy3369
    @jupiguy3369 2 года назад

    You are saving my IB diploma haha tysm

    • @SingletonSean
      @SingletonSean  2 года назад

      Hahah glad to hear, Jupiguy! Shoutout to you for seeking out content to enhance your learning

  • @lorissalvador7905
    @lorissalvador7905 Год назад

    I'm a beginner, I would like to do something when I close the window, at the beginning I used the OnClosedWindow fonction in the code behind but I don't think it's a very good way to do that. I want to do the function in my mainViewModel. Someone can help?

  • @lecardinal1
    @lecardinal1 7 месяцев назад

    really cool presentation of WPF even if it is a little fast for me. Btw, one question it loook like a lot of logic is implemented at Model level. Why not having this logic in upper layer ?

  • @ivandrofly
    @ivandrofly 2 года назад

    4:55 Readonly models (this was ref in Services tutorial)

  • @billbrock5486
    @billbrock5486 2 года назад

    Sean, I like the tutorial. It's one that actually builds a complete example. You move fast. This prompted me to study my snippets and shortcuts again. I am uable to build the project on my system. Visual Studio 2017. I get this error and some other realated errors:
    TargetFramework value 'net5.0-windows' was not recognized...
    Can you suggest a fix for this?

  • @jp2code
    @jp2code Год назад

    I've watched a few Tim Corey videos, and he is soooooo slow! These are picking up the pace, and I can still understand what you are saying (not English from India).

    • @SingletonSean
      @SingletonSean  Год назад +1

      Glad this pace was good jp2code! Pace seems to be subjective - I get tons of people complaining about my pace too hahaha. I definitely have room for improvement still 😁

  • @oussamaatallah7930
    @oussamaatallah7930 3 года назад

    There is a problem of hashcode i try to install the package but not work.

  • @lmren1155
    @lmren1155 2 года назад +4

    Very important to note that reservation.StartTime = StartTime , works but
    reservation.StartTime >= StartTime && reservation.EndTime

  • @brianwoo7630
    @brianwoo7630 2 года назад +2

    The validation logic has issues.
    Validation first rule is to check if existing reservation is on same guest as incoming reservation.
    You either do that by looping through the filtered collection (get reservationsbyUser) or add checking guest name first in the conflict method

  • @GOODBOY-vt1cf
    @GOODBOY-vt1cf 7 месяцев назад +1

    3:10

  • @dcamron46
    @dcamron46 8 месяцев назад

    This is definitely for intermediate people comfortable with cs syntax…which I barely am, but great tutorial

  • @snouzz-gaming
    @snouzz-gaming 2 года назад

    hi, can you help me a bit with my project?
    I must split Logig and UI but i dont know how to da it...
    It would be mega great!

  • @hanneskasel1853
    @hanneskasel1853 Год назад

    Thaaaaaanks! Don't have no money yet. Will donate in future.

  • @brennansalibrici
    @brennansalibrici 3 года назад +1

    Hi Sean! I've got a couple 'off topic' questions about your videos. Where's the best place to ask them?

    • @SingletonSean
      @SingletonSean  3 года назад

      Email is good (which I see you've already sent to, hahah)

    • @yazoncui625
      @yazoncui625 3 года назад

      @@SingletonSean Can I know your email address?

  • @vishrutchandra3745
    @vishrutchandra3745 2 года назад

    Maybe if you're unable to get the HashCode, declaring an internal class of HashCode may help.

  • @sajadbehineh2385
    @sajadbehineh2385 3 года назад +1

    Hi, i'm really grateful for your courses. And a question is how can i be member to see this playlist which is member only ...???? (I'm subscribed you ...)

    • @mcnets
      @mcnets 3 года назад

      There is a link in the description of the video.

    • @SingletonSean
      @SingletonSean  3 года назад

      Thanks Sajad! Along with mcnets comment, I also describe it a bit in this video: ruclips.net/video/8zWyopRUaWg/видео.html

  • @shahinlarki9822
    @shahinlarki9822 3 года назад

    how can i use openfiledialog mvvm?

  • @tgcmlm
    @tgcmlm Год назад

    @SingletonSean, want to hear the funny side of it? Play this video back at 0.5X speed from about 3:00 minutes. It sounds dope man. I wanted to hear what you said because you were going fast, so I played it back at 0.5X. Quite funny. Sounds like you on something haha.

    • @SingletonSean
      @SingletonSean  Год назад

      Definitely! 😄 although I would argue that most people (excluding folks like Ben Shapiro) sound pretty whack on 0.5x speed

  • @انامسلموكفى
    @انامسلموكفى 2 года назад

    Hi i dn't ve to tell u this but i want to : i ve watched a lot a wpf's MVVC teacher but you re just the king of learning without any doubt.
    Thank you for your time& efforts. I have a wpf project about booking a workspace/dockingstation/work material... for employees .. the point is that i ve to group by room coz in the room it could be more than an employer
    , wht u think which models i ve to include in my models folder ?

  • @upcsatx
    @upcsatx 3 года назад +1

    Not a fan of using VS class diagrams?

    • @SingletonSean
      @SingletonSean  3 года назад +1

      I haven't really used them yet, s not currently/yet. They look nice, I will have to check them out!

  • @movsar42
    @movsar42 2 года назад +1

    Everywhere I look people say you need a framework for MVVM in .NET, but here you show that you really don't, what am I missing? Is it just the dependency injection capability that these people mean? Why use MVVM framework when you can not to?

    • @SingletonSean
      @SingletonSean  2 года назад

      I feel the same way! I think the big thing with the MVVM frameworks is navigation support, as well as DI like you mentioned. I'd have to try out a framework to really have an opinion though.

  • @ay2s389
    @ay2s389 3 года назад

    Soo gooood! that's all I can say :)

  • @nehalpradhan2229
    @nehalpradhan2229 Год назад

    thought i could catch up but it's too much for beginner like me. will definitely come back after i am more comfortable with basic coding.

  • @AlaSwekProductions
    @AlaSwekProductions 2 года назад

    thanks!

  • @bartholomewtott3812
    @bartholomewtott3812 2 года назад +2

    most MVVM tutorials shove all the domain logic in the VM. Its rare to see some proper model design.

  • @giulio7288
    @giulio7288 Год назад

    hi, i have a project in mind and i'm developing with c#. are you interested to partecipate?

  • @justintime5021
    @justintime5021 Год назад +1

    This was presented way too fast. Maybe this would be useful to people who already know the information and just need a refresher but for those who are trying to learn... forget it. I got some useful information out of this but I felt like I was missing a lot of context.

  • @noralkuhlmann750
    @noralkuhlmann750 2 года назад +2

    You jump around way TOO much and I am not sure sometime where things are being added ... also shortening the typing, for say comment but there are others, throw off where we are. I have been spending more time rewinding than listening

  • @ultimaro
    @ultimaro Год назад +1

    Stay away from this tutorial unless you are very good at C# development already. First 5 videos are very good for understanding basic MVVM concept but after that its complete mess for begginers. This guy is very skilled and clever and his backend is rather over complicated for functionality than simple for tutorial. Also there are no clear explanations and lot of references to different videos.

    • @SingletonSean
      @SingletonSean  Год назад +2

      Hey I appreciate the feedback! I think your points are pretty realistic - this tutorial could be better. I hope people absorb the approach I take rather than copying the code, and then use that to influence their own MVVM style. I also blame WPF for being a tricky framework and sometimes needing unnecessarily clever solutions for things 😄 I think there is still a lot of value in this series, but I definitely want to re-think some things, listen to feedback, and create a better tutorial in the future!

  • @windowsbuilderthegreat3121
    @windowsbuilderthegreat3121 2 года назад

    Wouldn’t it be better if RoomId is a struct

    • @SingletonSean
      @SingletonSean  2 года назад +1

      I think it would have been possible to just use a struct, which would've been nice for skipping the equality override. Good point!

  • @Kliamframe
    @Kliamframe Год назад +3

    Slow down, buddy

  • @God2glorify
    @God2glorify Год назад +2

    Presented way too fast for a tutorial on introducing MVVM . I quickly got loss. This type of delivery does little to help the developer community.

    • @SingletonSean
      @SingletonSean  Год назад

      Hey Tom, thanks for the feedback. I'm sorry this wasn't helpful to you. I understand your perspective though. Honestly, I've been doing this channel for a few years and feel like I haven't quite found the right flow and style. I've finally spent the past few weeks looking for ways to improve. Hoping 2023 will be better, and I hope you have a great new year!

  • @klondikexx2831
    @klondikexx2831 Год назад +1

    Your material is good, but the pace is way to fast. Slow down, and then slow down some more :-)

    • @SingletonSean
      @SingletonSean  Год назад +1

      Thanks for the feedback Klondike! It is a bit too fast. I've secretly taken a break from recording new content for the past 3 months in order to work on pace, quality, etc. 👀

  • @tydeuujy
    @tydeuujy 2 года назад +3

    Your Example is very complicated

  • @gavinbelson3499
    @gavinbelson3499 Год назад +1

    Worse tutorial yet. The only people who could follow along at this break neck speed without detailed explanations probably don’t need this tutorial in the first place

    • @SingletonSean
      @SingletonSean  Год назад

      Yes I need to go slower 😂 I have learned this over the years, especially from the feedback I've gotten on this tutorial.
      I'm hoping this is still valuable given the lack of WPF resources out there. Can always reduce playback speed or re-watch parts if it's too fast, although that is not ideal for viewers. I also hope people are more focused on the approach I take, and not the specific code I write. But I understand everyone learns differently!
      I really just need to own up to and create a slower WPF tutorial because I get a comment like this everyday on this series 😂

  • @bozoskopljakovic5508
    @bozoskopljakovic5508 Год назад

    Hi, I would like to join to your channel is it possible make monthly payment with PayPal, thanks.

    • @SingletonSean
      @SingletonSean  Год назад

      Hi Bozo, it is possible! RUclips supports PayPal as a payment method. Let me know if you have any issues (I work at PayPal).

    • @bozoskopljakovic5508
      @bozoskopljakovic5508 Год назад

      @@SingletonSean When I click Join I got Complete your purchase where card number is required I do not see PayPal option.

  • @greendino5868
    @greendino5868 2 года назад

    Hi, nobody here use mvvm toolkit?

  • @edouardpoitras810
    @edouardpoitras810 Год назад

    Ever heard the term' Dazzle them with brilliance or Baffle them with BS'. Slow it down if you really are trying to teach and not just SHOW OFF. The work is good but useless if the people trying to learn it spend more time rewinding then learning.

  • @kushaljain-m5e
    @kushaljain-m5e 2 месяца назад

    why you explaining very fast do want to any where ?

  • @buddysnackit1758
    @buddysnackit1758 3 года назад +2

    You edited out the name of the project....:(
    Also did you dub this after editing out time?
    You owe me 14 ish minutes of my life back because this literally had 45 seconds of actual MVVM talk in it.
    If college courses were taught like this it would require 200 years to graduate.
    Good information...bad format.
    With all the extra crap the viewer forgets the 45 seconds of relevant information.

    • @SingletonSean
      @SingletonSean  3 года назад

      Thanks for the feedback Buddy! I'm not sure what you mean by editing out time and editing out the name of the project. Based on your other comments, I'm sorry this series isn't living up to your expectations.

    • @buddysnackit1758
      @buddysnackit1758 3 года назад +1

      @@SingletonSean In the video I was watching what you typed in for the project name and it looks like frames were removed. Your presentation skills are good but people read your title and expect to learn about MVVM and how to implement it using C# and xaml. Th vast majority of the content however is editing non-topic items.

  • @bruhdabones
    @bruhdabones 2 года назад

    Bring back dislikes @youtube

  • @IttehadAbdullah
    @IttehadAbdullah 9 месяцев назад

    not helpful for absolute beginners

  • @doctorrusty6494
    @doctorrusty6494 3 года назад +1

    bs