I'm thinking about doing a series of screencasts using Nim. The target audience will be programmers with some basic experience with programming, but who haven't necessarily used Nim before.
The end goal is to illustrate how Nim expresses certain concepts in programming, with the intent that the viewer will learn the syntax along the way.
I currently have content planned relating to iterators, with the following sub-sections:
Video 1:
Video 2:
Besides iterators, do you guys have any ideas for videos?
More specifically: what's your favorite thing about Nim, and what are some ways that I could demonstrate it in a screencast?
I was looking for stuff more closely tied to the language itself, as opposed to tools related to it. That said, the tools and ecosystem are very important, and I think there ought to be increased awareness of the tools out there (on a related note: people's aversion to style insensitivity seems to partially arise from a lack of awareness of nimgrep).
Unfortunately, I'm not really the most qualified person to be talking about Nim IDEs or the most popular/powerful/whatever Nim tools. I use a bunch of stuff that I've modified to my liking (my fork of NimKate and modified version of Sam from plan9port). I will be using Kate for the videos, since the lack of syntax highlighting in Sam might be a turn-off to some viewers.
I've been mulling over the possibility of doing a video on concepts, probably starting with the AtMost concept I use in one of my nimble packages, then working upward to more sophisticated examples. I'll also do a video illustrating how macros can be used to create useful new syntaxes, and will probably use my ladder logic package as an example with that. If anyone has cool examples of macros and concepts in action, please send them to me!
I will be using Kate for the videos
Here's one (ok, two) small technical advice:
people don't watch the videos in full screen mode, make sure you use large font size so the content is easily viewable
Yup- that's one nice thing about Kate I didn't really mention. I can very easily have one tab zoomed in so that it shows up nicely on video, and then another tab off-screen with a normal text size where I'll keep my script and notes.
please make sure that your keyboard is not louder than your voice ;)
This is a big issue that I've been thinking about. I have an okay-ish tabletop mic, so sound quality should be acceptable. I'll dig up my old membrane keyboard just to be safe.
This is a big issue that I've been thinking about. I have an okay-ish tabletop mic,
One think you could/should do is put a towel underneath your mic-stand. It reduces vibrations, killing some loud unpleasant keyboard sounds.
And since @ryukoposting didn't do it himself, I must do it for him :)
Here is his first video: http://ryuk.ooo/videos.html - very nice presentation and explanations, I'm looking forward to the next ones!
How about some screencasts about how to work with objects. Nim's class-less way of "OOP" is quite different than most languages people may be familiar with. Even though Nim's syntax is "pythonesque", its model is quite different.
For example I tried to follow https://www.destroyallsoftware.com/screencasts/catalog/a-compiler-from-scratch which is in Ruby. I've tried to follow something similar written in Go, and I always get tripped up on "damn, this is all classes and objects, how to I do the same thing in Nim?".
I always get tripped up on "damn, this is all classes and objects, how to I do the same thing in Nim?"
You need to change the perspective of the definition from AS to HAS, but ref object of is kinda AS too, cmiiw. Thanks for link video btw :)
@ryuukoposting , 1st video is nice, waiting for the next videos :D
How about some screencasts about how to work with objects.
Not to hijack your thread, but I'd like to know what the plan is, if any, with OOP in future Nim (v2 or whatever). method and generics don't work well together in Nim, or at least it's been a disaster for me when I've tried to use them together.
I was reading about the Delphi descendant 'Modern Pascal' which is very Nim-like (OK, I like Nim syntax better and it is lacking Nim's metaprogramming) and I noticed that they settled on a Java like model for OOP.
I'm not an OOP enthusiast, and in a rich language like Nim it's not as necessary as in a language like Java, but I do think Nim should have decent OOP support that blends well with other features in the language. I don't think Nim is there yet, and I wish that rather than trying to patch up method Nim just adopts a fairly boring but well understood system.