Training videos are a great way to share your knowledge and skills with your audience, whether they are your employees, customers, students, or followers. However, creating training videos can be time-consuming and challenging, especially if you don’t have the right tools and techniques.
Here, I’ll give you an overview of the steps and best practices for creating training videos quickly and easily. In later blog posts, I’ll show you how to do each of these steps.
Step 1: Plan your content. Before you start recording your video, you need to plan your content:
Identify your target audience.
Define their learning objectives.
Structure your content to meet each objective.
Step 2: Choose your tools. The next step is to choose the tools you will use to create your video. You will need the following items:
Recording location
Camera or webcam
Microphone
Screen recorder
Video editor
Step 3: Record your video. Once you have your tools ready, you can start recording your video.
Step 4: Edit your video. After recording your video, edit it to make it more polished and professional.
Step 5: Share your video. The penultimate step is to share your video with your audience. You can upload your video to online platforms like YouTube, Vimeo, Udemy, Skillshare, or Wistia. You can also embed your video on your website or blog.
Step 5: Reach out to your audience and iterate. It’s not enough to publish your training video and wait for folks to find it. You have to find your audience, show them your content, gather their feedback, and improve the content.
rolfedh@rolfedh-HP-Z2-Mini-G3-Workstation:~$ minikube start
π minikube v1.23.0 on Linuxmint 20.3
β¨ Using the podman driver based on user configuration
π£ Exiting due to PROVIDER_PODMAN_NOT_RUNNING: "sudo -k -n podman version --format " exit status 1: sudo: a password is required
π‘ Suggestion: Add your user to the 'sudoers' file: 'rolfedh ALL=(ALL) NOPASSWD: /usr/bin/podman'
π Documentation: https://podman.io
Looking at line 5, I see that starting minikube bombed. I must enable a non-root user like minikube to run podman. How do that?
From line 6, I copy the suggestion, rolfedh ALL=(ALL) NOPASSWD: /usr/bin/podman and open /etc/sudoers by using the visudo command, which uses vim by default:
$ sudo visudo
If you prefer nano over vim, you can use `$ sudo EDITOR=nano visudo` instead:
With /etc/sudoers open in the editor, I write the following comment for my future self, paste the suggestion, and save the changes:
# Added the following line so minikube can run podman
rolfedh ALL=(ALL) NOPASSWD: /usr/bin/podman
I start minikube again:
$ minikube start
π minikube v1.23.0 on Linuxmint 20.3
β¨ Using the podman driver based on user configuration
π Starting control plane node minikube in cluster minikube
π Pulling base image ...
πΎ Downloading Kubernetes v1.22.1 preload ...
> preloaded-images-k8s-v12-v1...: 515.04 MiB / 515.04 MiB 100.00% 4.25 MiB
> gcr.io/k8s-minikube/kicbase: 355.82 MiB / 355.82 MiB 100.00% 2.75 MiB p/
E0501 20:01:53.791150 1379766 cache.go:200] Error downloading kic artifacts: not yet implemented, see issue #8426
π₯ Creating podman container (CPUs=2, Memory=7900MB) ...
π³ Preparing Kubernetes v1.22.1 on Docker 20.10.8 ...
βͺ Generating certificates and keys ...
βͺ Booting up control plane ...
βͺ Configuring RBAC rules ...
π Verifying Kubernetes components...
βͺ Using image gcr.io/k8s-minikube/storage-provisioner:v5
π Enabled addons: storage-provisioner, default-storageclass
π Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
And it works!
Some things I noted upon reviewing the cheery output, above:
On line 6, I see minikube is running kubernetes v1.22. How do I get kubernetes v1.24, which is coming out next week? (topic for a future blog post)
Reading TBD, I see minikube overwrote .kube/config file to make getting started easier. However, this overwrote the previous configuration, which I was using to connect to a kubernetes cluster I am running on Linode. No worries…I can easily get my hands on the *kubeconfig.yaml file for the Linode cluster. But I wonder, what’s the best way to manage multiple config files for multiple clusters? (topic for a future blog post)
To verify that things are running, I use kubectl to get the names of running pods (po) across all (-A) namespaces.
$ kubectl get po -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-78fcd69978-7bvgw 1/1 Running 0 42m
kube-system etcd-minikube 1/1 Running 0 42m
kube-system kube-apiserver-minikube 1/1 Running 0 42m
kube-system kube-controller-manager-minikube 1/1 Running 0 42m
kube-system kube-proxy-p6gqj 1/1 Running 0 42m
kube-system kube-scheduler-minikube 1/1 Running 0 42m
kube-system storage-provisioner 1/1 Running 1 (41m ago) 42m
Now, having accomplished my goals of getting minikube up and running, and having published this post, I can stop minikube and go hang out with my family.
$ minikube stop
β Stopping node "minikube" ...
π Powering off "minikube" via SSH ...
β Stopping node "minikube" ...
π Powering off "minikube" via SSH ...
β Stopping node "minikube" ...
π Powering off "minikube" via SSH ...
β Stopping node "minikube" ...
Side note
I’m evaluating Nigel Poulton’s “Kubernetes Quick Start” for team training and want to establish alternatives to the tech stack in the book:
Building images with podman and/or buildah instead of Docker Engine
Running a cluster on my local machine by using minikube or microk8s instead of running one remotely on Linode.
Problem: After installing podman, I my sistem can’t find it:
$ podman
Command 'podman' not found, did you mean:
command 'pod2man' from deb perl (5.30.0-9ubuntu0.2)
Try: sudo apt install <deb name>
Uninstalling and reinstalling podman in a variety of ways didn’t didn’t fix the problem. The output always included a podman is already the newest version statement:
$ sudo apt install podman
[sudo] password for rolfedh:
Reading package lists... Done
Building dependency tree
Reading state information... Done
podman is already the newest version (100:3.4.2-1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Solution: Finally, I found one particular way of reinstalling podman that worked:
$ sudo apt-get install podman --reinstall
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not upgraded.
Need to get 0 B/17.7 MB of archives.
After this operation, 0 B of additional disk space will be used.
(Reading database ... 472048 files and directories currently installed.)
Preparing to unpack .../podman_100%3a3.4.2-1_amd64.deb ...
Unpacking podman (100:3.4.2-1) over (100:3.4.2-1) ...
Setting up podman (100:3.4.2-1) ...
Processing triggers for man-db (2.9.1-1) ...
Now, podman just works. For example:
$ podman
Error: missing command 'podman COMMAND'
Try 'podman --help' for more information.
Side note: Why am I installing podman?
I’m evaluating Nigel Pouton’s “Quick Start Kubernetes” book as a team training tool. Nigel’s great story-telling skills make learning kubernetes fun. He cuts away the fluff and really tells you the important things in a very engaging way.
Although his website offers a variety of purchase options, I’ve had trouble getting or updating to the latest 2022 edition on Amazon Kindle. Therefore, I strongly recommend purchasing the book on Leanpub: https://leanpub.com/quickstartkubernetes (this is not an affiliate link) where you can always get the latest edition.
With Vale Server, you can use Vale CLI’s style-checking capabilities in editors such as Visual Studio Code, Atom*, Sublime Text, Google Docs, and Chrome.
On your system, you run Vale CLI and Vale Server. In your editor, you run a Vale client that connects to Vale Server and displays style feedback while you’re editing the content.
For example, without using Vale Server, if you run Vale CLI and use the Google style to check some newsletter content in a markdown file, the output looks like this:
With Vale Server, checking the same content in Microsoft Visual Studio Code looks like this:
Hovering my mouse pointer over line 8 displays the same warning message about sentence-style capitalization. Unlike the CLI, this message in the editor gives me a link to docs for the Google.Headings style rule. And if the issue has an automatic “quick fix”, I can click a button to make that change.
In terms of writing and editing, that’s how Vale CLI and Vale Server are different! The other differences have to do with how you configure and administer each one.
Footnote: I haven’t been able to get Atom to work with Vale Server.
Vale CLI is a free open-source style linter you can use to improve the quality of your writing. It’s somewhat like (but different from) the grammar and spell-checkers you find in Google Docs, Microsoft Word, or Grammarly.
Unlike those tools, Vale is designed to work with simple text files that contain a variety of common markup formats. These formats, such as HTML, markdown, and asciidoc, are widely used by developers and technical writers to document software.
You can use Vale CLI from the command line to check individual files or whole directories of files.
Vale CLI output on the command line.
You can also use it in editors that have plug-ins for Vale, such as Microsoft Visual Studio Code, Atom, or Sublime Text.
You can also get community-maintained styles such as these on GitHub. Most importantly, you can customize the styles you download or create one from scratch. For example, at Red Hat, the technical documentation group I’m part of has created a style called Vale at Red Hat, that contains rules from a variety of style guides our organization uses.
Homebrew is a command line utility that makes installing software easier because it does a good job of installing any dependencies for you. Unfortunately, users sometimes run into trouble while installing Homebrew. Here, I show you how to perform the “default” installation that Homebrew recommends on the home page of its website.
Open Terminal and confirm that Homebrew is not installed by running the brew --version command. If it isn’t installed, the output returns Command 'brew' not found. For example.
username@laptop:~$ brew --versionCommand 'brew' not found.
Visit the Homebrew website, https://brew.sh/, and copy the installation command by clicking the copy icon:
In Terminal, paste the command by pressing the Ctrl+Shift+V keys at the same time. Then, press Enter to run the command.
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
You must install Git before installing Homebrew. See:
https://docs.brew.sh/Installation
username@laptop:~$ git
Command 'git' not found, but can be installed with:
sudo apt install git
If your system doesn’t have git, the output prompts you to install it. So you do that.
$ sudo apt install git
[sudo] password for username:
Reading package lists... Done
Building dependency tree
[...]
Processing triggers for man-db (2.9.1-1) ...
Note: Whenever prompted, enter y to continue the installation process.
Note: I use [...] to indicate that I’ve omitted many lines of output.
Rerun the command that installs Homebrew. You can get the command back by pressing the up arrow key a couple of times until the command reappears.
This automated installation process can take several minutes. When it finishes, the installer suggests “next steps” for you to complete the installation:
[...]
==> Next steps:
- Run these two commands in your terminal to add Homebrew to your PATH:
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> /home/<username>/.profile
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
- Install Homebrew's dependencies if you have sudo access:
sudo apt-get install build-essential
For more information, see:
https://docs.brew.sh/Homebrew-on-Linux
- We recommend that you install GCC:
brew install gcc
- Run brew help to get started
- Further documentation:
https://docs.brew.sh
Copy/paste these next steps to a file in a text editor so that you can paste and run the commands one at a time.
As noted in the “Next steps,” add Homebrew to your PATH:
Chris Metz is a freelance solutions architect and tech writer with cloud and emerging technologies based in Danville, California, near the San Francisco Bay Area.
In “A brief demonstration of Mermaid.js,” Chris shows us how to use Mermaid.js to add diagrams to your documentation.Β
Chris recently added the Diagram Guide to the Kubernetes.io website, where he is a regular contributor.
To me, this diagrams-as-code has several benefits:
It separates the content of the diagrams from how they are presented, which means that all your diagrams have a consistent look.
The search results will include your diagrams when you edit and search your docs.
Writers and developers can directly create diagrams without using specialized tools or creating asset files that get lost.
In this podcast, I talk with Jim Angel, who volunteers as a Kubernetes Member/Contributor and Cloud-Native Ambassador and leader in the Kubernetes Docs SIG. In this podcast, he describes how he got started in tech, talks about the localization program for Kubernetes docs, and discusses changes in the leadership of the Kubernetes Docs SIG.
Mermaid is a Javascript-based diagramming and charting tool that uses Markdown-inspired text definitions and a renderer to create and modify complex diagrams. The main purpose of Mermaid is to help documentation catch up with development.
Notably, this guide shows how to code diagrams using mermaid.js in a live editor!
“Mermaid lets you create diagrams and visualizations using text and code.“
This notion of diagrams-as-code has tremendous appeal for me! To illustrate why, let me tell you a quick story.
A few years back, I enlisted the help of THE primary graphic designer where I worked to create an information-rich diagram for some product documentation. Because of her talent and organization’s size, she was very much in demand. Using specialized tools, she designed a beautiful and informative diagram and exported it to a graphics file, which I published. A few weeks after publication, the software engineering team made a software change, and just like that, the diagram became outdated!
That approach was much better than the ad-hoc approach that had preceded. At least now, our diagrams were expertly designed, correctly branded, and consistent across all our products.
Unfortunately, that new approach could not be scaled up to meet the customer demand for properly-illustrated documentation, which I estimate at a minimum of 5000 new or updated diagrams per year. I arrived at this figure by estimating ten-plus diagrams per product, times fifty-plus products, times ten-plus additions/updates per product per year. (10+ x 50+ x 10+ = 5000+)
With that backdrop, the benefits of having diagrams-as-code seem significant:
Unlimited contributors can create and maintain diagrams using free and open-source software.
Teams can store and manage the code for diagrams alongside the documentation source.
The tooling separates content from presentation to give all diagrams a consistent look and feel.
Moreover, having source code for diagrams makes it is easier to search for specific terms when updating diagrams and conducting peer reviews.
I think it would make sense to give this new approach a try.