Hello, i have made a video on Object Variants and i would like if possible to receive some feedback on the video in question.
Link to the video: https://youtu.be/fi7UasgzFhQ
Looking for feedback
Not from me I guess?
Well, I regard that video as not of much value, as you describe how to create types and vars of object variants types. But the motivation is missing, and actual use cases are missing too. You said at the beginning something like "sometimes OOP is overkill, so we better use object variants in this case". That is definitely not enough for the motivation. How to create object variants types and vars is obvious from all the tutorials. The point is how to actually use them, and what are advantages compared to inheritated types in OOP design. Most important point is that all object variants have same size, so they can be stored as value types in seqs for good cache performance. But you also did not mention this important point. I know that objects variants are not the most simple part of Nim, I think my explanation in the kids books is not that good as well unfortunately. I think the name of the vars or types was also strange, was it like drawCirc? Can not remember, but I think it starts with draw, which indicates more a proc name. Maybe you can make a part two now explaining the missing parts. Have you already written some Nim programs yourself? Sometimes it helps learning and practice stuff first before teaching to others.
Well you asked for feedback. And to make it clear, I regard 99% of all youtube videos as garbage, I never watch them. Yours ones belong to the better ones.
Sometimes teaching people is a good way learn as well.
You make good points, but you've made them hard to parse.
Elaborate more on why object variants in Nim provide an advantage over OOP design.
There is a Nim-specific advantage here too: Inheritance only works well with refs (or ptrs) in Nim which then lose the mutability aspect (unless you use the new "strict funcs" feature). Object variants do no have this problem.
I agree some more talk about motivation would be good.
I know it's supposed to be a simple introduction but since you start with shape types, you could talk about the Circle-Ellipse Problem which for me highlights pretty clearly the issues with inheritance. Variants solve that by allowing one to change a circleKind to an ellipseKind.
The big thing variants let you do is have a seq of different types seq[Enemy] etc.
I agree types should be nouns not verbs.
A line needs two points (4 numbers), and a circle needs at least a centre (2 numbers) and a radius.
Inheritance only works well with refs (or ptrs) in Nim
Why is this?
Wdym not you D: ? Did you give feedback before that i ignored ? I can't remember.
Anyways good points from all of you, i will make some better examples and make an example and talk about the performance benefits and in overall make a comparison to OOP design.
I've given you feedback multiple times on your videos - yet you keep doing the exact same thing over and over again. Maybe it's working for you - but it continues to be the reason I will never watch your videos.
Your videos play like you are reciting snippets from Wikipedia articles / the Nim manual. It's like learning from someone reciting facts from a textbook. It's extremely uninteresting and I'd rather just read since I can read faster than you can talk.
If you were actually doing something interesting with the concepts presented in the video, rather than just reciting facts - maybe the videos would have some value beyond just being a different presentation format than a plain text manual. To me, they're just more youtube filler garbage - but I guess at least they're filler garbage about Nim.
Well for a lot of my videos yes it's been like reciting existing information, because some topics simply have good enough examples already. The actual words i use to explain the topics and examples, i try my best to simplify them and not reuse them unless i have no better way.
On some of my latest videos, i did go and and try to make unique examples and explanations, maybe you find those boring as well or didn't watch them, i don't know.
On the opening a new thread for feedback per video: Okay maybe it's a bit much, since #main on discord also gets notified of it. I will try your way and see, if the thread doesn't get enough feedback on a new post with a video on it, i will go back to what i am doing now.
Lastly, all of my current videos are simply not for you, 2 of the series have "beginner" in the name explicitly stated, and since you already know most of Nim, and have used it for years now, they can't provide you any value. Also i try to be as beginner friendly as possible, which obviously means going slow and focus on things you already know or find useless.
Maybe once i exhaust the easier/less complex topics they will become of value to you.
I don't think that will be the case unless your presentation / delivery format changes.
As I mentioned in my feedback - the issue isn't the content of the lessons / what you're trying to teach it's HOW you're going about teaching it that I find to be uninspiring / boring / difficult to stay tuned in to. Every time I bring this up to you however, you seem to focus on the simplicity of the subject matter and use that as an excuse for the style of teaching.
In an effort to better summarize my criticism of your video series: I think your videos would be much more interesting and popular if you picked a subject matter to explore - let's say writing a virtual machine / scripting language in Nim. Then you could explain concepts as you write your VM / scripting language and the videos are suddenly exponentially more interesting / watchable because you're not just regurgitating information that is easily googleable. That's what they are today, and this is why they are unwatchable to me, regardless of whether they cover advanced topics or how to tie my shoelaces.