Ask HN: Software for producing terminal-based tutorials?
Prof here. Need to create online lectures for delivery this fall. Course is scientific computing. Plan is video of ipython shell and an editor plus audio of me blathering on. I use a Mac. Suggestions for software for the screen portion? Thx!
Edit: OBS Studio? Screenflow? Camtasia?
44 comments
[ 2.8 ms ] story [ 103 ms ] threadI still recommend demo magic. But use it with eyes open if you're mistake-prone like me.
I think it's excellent but it is limited to just the terminal. I don't think it's possible to incorporate a voiceover or soundtrack which you may sometimes want to do.
A tutorial using asciinema in action.
https://asciinema.org/a/188659
You can't add voice into asciinema itself but a asciinema recording URL would be an excellent handout material (like powerpoint) to give to students. Your students can view Terminal action with very clear text, unlike videos where reading text can be difficult.
Even if you use other method for recording/delivering your voice/audio lecture, including Asciinema replay link would be a huge benefit to students.
Here's another one I want to try for a long time but still haven't (to have a single, animated SVG file, still copy-pastable): https://github.com/nbedos/termtosvg .
[1]: https://github.com/christopher-dG/asciiscript
Also allows you to set up your layout for the video-windows, with presets/templates, iirc.
Recommend you have a second screen open on the obs, though, so you can easily manage what’s up or not.
Would also be a good idea to start experimenting early to figure out some good layouts etc depending on how you want to present the material.
Just yesterday I was researching how to connect an external camera like Canon EOS M50 to use as a overhead projector (so you can show handwriting/diagrams like a whiteboard), and it seems possible using https://github.com/v002/v002-Camera-Live but I haven't tried yet.
One last recommendation (to the OP) — keep the videos short. Video is great as the introduction material and to show more complicated bits, but if you can use text + code samples, I think you students will appreciate.
https://blog.streamlabs.com/streamlabs-is-live-on-mac-ff543b...
It can capture PNG files or record the whole screen or a portion of it and generate a video file from the whole session.
https://support.apple.com/guide/mac-help/take-screenshots-or...
Most linux systems should include script [1] and scriptreplay[2], which should suit your needs. Here's a complete example of a recorded/replayed session[3].
On MacOS it should be as easy as `script -r <filename>` to record and `script -p <filename>` to replay. YMMV, but I like it for _small_ use-cases, as it puts simplicity and portability over features.
[1] http://man7.org/linux/man-pages/man1/script.1.html
[2] http://man7.org/linux/man-pages/man1/scriptreplay.1.html
[3] https://www.tecmint.com/record-and-replay-linux-terminal-ses...
+1 for Camtasia
Lately I've been using OBS for recording because I want to use native Linux and Camtasia does not run on Linux. Using a Windows / Mac VM won't work if you want to record your Linux environment.
Then I use DaVanci Resolve to do the video editing part. It hasn't been smooth sailing though. Lots of issues with exporting mp4s when it comes to having audio artifacts that never appeared with Camtasia. It means having to do extra work to render the audio separately as a wave file and stitch together the video with it as an mp4 with a different tool.
I'd pay almost anything within reason for Camtasia on Linux. I tried asking the developers a few times. Even offered to fund the development myself or crowd source the funding with Kickstarter. They don't seem to have any intentions on ever supporting Linux.
The next best thing for screencast video editing is Davinci Resolve IMO. It works on Windows, MacOS and most distros of Linux so I'm doing everything I can to migrate to that tool. In some ways it's a lot better than Camtasia too. It's just super finicky with hardware.
For editing, Camtasia makes it almost too easy to create nice looking title overlays with backgrounds, dimming / blurring areas, highlights, zooming / panning and other basic effects. Even pretty complicated animations too, without having to mess around with key framing or needing a video editing degree.
For example, I made the intro animation for my Docker course[0] in Camtasia in like 15 minutes by screwing around by dragging sliders around until it looked cool. Of course it's not the best thing ever, but it's one of those tools where things just feel intuitive to use without having to Google anything. That whole video is done with Camtasia too btw.
DaVanci is a much more powerful editor and you can do crazy Hollywood style animations and effects, but for someone who just wants to do typical screencasting edits, it's hard to beat Camtasia's efficiency. I'm sure with enough time you could do those things with DaVinci by making your own custom scripts and effects templates but it will take a decent amount of effort to get there instead of getting all of that out of the box.
I know ScreenFlow is also quite good. Very comparable to Camtasia. Camtasia seems to have better license terms and isn't MacOS exclusive.
There's things like Kdenlive too. I super appreciate the development work they've put into it and I think it'll improve over time, but it's not comparable to Camtasia in terms of usability when it comes to creating nice looking titles, animations, etc. I don't think you'll find anyone who would disagree if they've used both tools for a while.
[0]: https://diveintodocker.com/
That is just a hack idea and I am not Camtasia user yet.
I've looked into using a 2nd GPU and doing a pass-through with KVM which would let you run a Windows VM with effectively native performance. I'm sure that would be great for editing, but it's the recording the Linux environment outside of the VM that would be the issue. Audio is super sensitive with latency, even as little as 15ms of latency could be enough to kill an audio recording.
Needless to say that's why I'm striving to get DaVinci to work for the editing side of things. It would be so nice to avoid having to do any of the above and just use native Linux straight up with no VMs or secondary machine.
I believed someone created a Python port inspired by it.
For as straightforward an application as recording a screen w/ voiceover, there aren't many bad options. Personally, what I like about Screenflow is that it is easy to record straight to a timeline. I.E. I do a take, it saves to the timeline in Screenflow, I cut out the pauses/mistakes/dead air, or split a clip to redo audio or video for a particular section. Once satisfied, I move onto recording the next chunk, it's quite streamlined compared to recording in one app and then editing in another.
Egghead.io has a few free resources for their instructors, I'd recommend checking them out for some practical tips.
https://egghead.io/courses/record-badass-screencasts-for-egg...
https://egghead.io/articles/recording-a-great-coding-screenc...
You may not want to just make one big long video - its hard to follow and then find specific key points in time. Unless you are showing a lot of interactive things and just input/output, copy and paste-able code is going to be easier for students to see and adopt. You may want more of a long tutorial document with small videos where it makes sense or you want to show something interactive.
In addition, its a lot more editing if you want something good without mistakes, etc (there are a lot of videos from big name schools online where professors do not correct themselves and just post the single unedited take). I would actually use video selectively. If you want students to easily run something you may want to utilize one of the many only IDEs that can execute code.
Depending on the tools available from your school or what you can find online you can make something very useful and interactive or you could try to use something like https://www.adaptlearning.org/
I think it's mostly specific to node, but I found this to be a great format for learning