
Ask HN: Software for producing terminal-based tutorials? - plg
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!<p>Edit: OBS Studio? Screenflow? Camtasia?
======
tpaschalis
Since you mentioned terminal-based tutorials, here's a terminal-based
solution.

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](http://man7.org/linux/man-pages/man1/script.1.html)

[2] [http://man7.org/linux/man-
pages/man1/scriptreplay.1.html](http://man7.org/linux/man-
pages/man1/scriptreplay.1.html)

[3] [https://www.tecmint.com/record-and-replay-linux-terminal-
ses...](https://www.tecmint.com/record-and-replay-linux-terminal-session-
commands-using-script/)

~~~
moonchild
See also ttyrec -
[https://en.wikipedia.org/wiki/Ttyrec](https://en.wikipedia.org/wiki/Ttyrec)

------
nickjj
I've created around 400+ video tutorials with Camtasia, it works well enough
and IMO is one of the best all-in-1 screencast recording and editing tools
you'll find if you're on Windows or MacOS.

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.

~~~
imhoguy
Have you tried HDMI to USB video capture? If you computer has enough power you
may pass-thru USB3 and audio into VirtualBox with Windows guest running
Camtasia. To avoid extra hardware maybe even VNC would be enough.

That is just a hack idea and I am not Camtasia user yet.

~~~
nickjj
I haven't. Do you mean setting up a 2nd computer to run native Linux as my
main box and sending that stream over to Windows to record using a capture
card? I was hoping to avoid such a set up because it makes things a lot more
complicated and uses much more desk space. It does work tho, I've heard of
gamers using that set up for streaming on Twitch.

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.

------
thdn
Never used it, but saw it on a couple of tutorials,
[https://asciinema.org](https://asciinema.org)

~~~
degraafc
I'll also plug a little tool I wrote to supplement asciinema: asciiscript [1].
Basically if you get tired of watching yourself fix typos in your recordings,
you can script stuff ahead of time and then record it automatically with
asciinema. Although I don't think it works with programs that take input, like
a REPL unfortunately.

[1]: [https://github.com/christopher-
dG/asciiscript](https://github.com/christopher-dG/asciiscript)

~~~
Arkanosis
I need this! Thank you!

------
photonemitter
I like OBS as it allows a good amount of customization.

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.

~~~
ivan_ah
+1 for OBS. It's very easy to use (add different inputs and click record).
External monitor is a must. A good (as in > $20) microphone is worth investing
in to avoid annoying noises, in particular computer fan noise which is likely
to be an issue given you'll be recording video.

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](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.

------
mmoez
By default, macOS ships with a Screenshot utility (Applications > Utilities >
Screenshot).

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...](https://support.apple.com/guide/mac-help/take-screenshots-or-screen-
recordings-mh26782/mac)

------
bobwaycott
If you want to stick with what’s on your Mac, you can screen record with
QuickTime. If you need to speak during the recording, there’s an option for
capturing audio while you record the screen. Alternatively, you can record the
screen with QuickTime, import the video into iMovie, then add an audio track
after the fact. This can be a particularly nice approach if you’re good at
scripting your way through a video, plus it allows you the ability to add some
freeze-frames when you need more time to explain than you have video.

------
egsec
In addition to recording, you may want to make some stills for download or for
custom formatting, highlighting, etc. You can use Carbon -
[https://carbon.now.sh/](https://carbon.now.sh/) \- which will do some auto
formatting, but allow you to override. This is a bit better than just screen-
shooting the IDE.

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/](https://www.adaptlearning.org/)

------
jonchurch_
I record with Screenflow. It is much simpler (read: slimmer feature set) than
Camtasia as well as cheaper.

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/courses/record-badass-screencasts-for-egghead-io)

[https://egghead.io/articles/recording-a-great-coding-
screenc...](https://egghead.io/articles/recording-a-great-coding-screencast)

------
haar
I've given some live showcasing/presentations with the help of
[https://github.com/paxtonhare/demo-magic](https://github.com/paxtonhare/demo-
magic) to smooth over parts that are either time consuming, or not error-proof
(e.g. networking and such). It might be useful here as well?

~~~
Bob_LaBLahh
Demo magic is a good tool. I used it for recording a video course. But here's
one minor caveat: there's no hint for what command will be executed next.
Sometimes I would start talking about a subject, then hit ENTER to auto-type
the next command, only to find that my words were off topic from the current
command. My fault, but it was always a pain to recover from.

I still recommend demo magic. But use it with eyes open if you're mistake-
prone like me.

------
ha-ckernews
Asciinema might be a good fit.
[https://thatskindofneat.blogspot.com/2020/04/record-and-
shar...](https://thatskindofneat.blogspot.com/2020/04/record-and-share-
terminal-sessions-with.html)

------
sixhobbits
I've used OBS Studio and Camtasia. They both get the job done, but Camtasia
has some nice features that I would miss if I went back to OBS (unless OBS has
evolved a lot since 2014).

+1 for Camtasia

------
lanna
Shameless plug, and a little tangential to your question, but I created an
interactive training/presentation tool based on the Scala REPL:
[https://github.com/marconilanna/REPLesent](https://github.com/marconilanna/REPLesent)

I believed someone created a Python port inspired by it.

------
schwartzworld
[https://nodeschool.io/building-
workshops.html](https://nodeschool.io/building-workshops.html)

I think it's mostly specific to node, but I found this to be a great format
for learning

------
whoatethedonut
Streamlabs OBS is amazing, it looks like they just had a release for Mac!

[https://blog.streamlabs.com/streamlabs-is-live-on-mac-
ff543b...](https://blog.streamlabs.com/streamlabs-is-live-on-mac-ff543b7f4a35)

------
tomatohs
For code + video, check out Paircast:
[http://paircast.io](http://paircast.io). Unfortunately no terminal support
yet.

------
_448
VideoLan has a screen capture function. You can capture terminal window with
VLC.

------
vira28
I have using loom and its working fine so far. Very easy to share.

------
champagnepapi
hmmm can't you screen record using Quicktime? Although, if this is for a
lecture, you might have to overlay a layer of audio on top. But i'm not 100%
sure about this, best of luck.

------
mister_hn
ncurses library for sure!

~~~
gldev3
love ncurses! :D

------
coherentpony
Do you need audio?

