I was recently asked to describe the workflow I use when preparing my tutorial videos. This included the software I use, and whether I create a script ahead of time.
The truth is: I don’t have a definitive process for each video.
I do have a foundation I work from. This starts with the hardware I use, which is always the same for every video.
The Hardware I Use
Probably the most important piece of equipment I use is a Heil PR-40 microphone.
I confess to knowing next to nothing about microphones. I bought the one that I saw recommended by Cliff Ravenscraft – the Podcast Answer Man.
I bought the microphone, a boom arm, a pop filter, and the matching shock mount for $774 which at the time seemed like extremely good value as the pound / dollar was favourable. Also, none of this kit was available in the UK. This was about 8 years ago.
- Boom arm – the thing that allows me to move the microphone freely around the desk.
- Pop filter – stops plosive sounds: ‘p’, ‘t’, ‘k’, ‘d’, ‘g’, and ‘b’ from sounding nasty.
- Shock mount – acts as a cradle for the boom arm, and stops accidental noise from me knocking the desk when recording.
Anyway, I ordered it all and then FedEx sent me a friendly note that I was going to be stung for a large amount of cash in import duty. That sucked. I can’t remember exactly how much that cost me, but it was a slap in the face on top of the $169 I was already paying for shipping. Hey ho.
All of this clobber is connected to a Mackie VLZ3 mixer. I forget how much this cost, but it was found via eBay if I recall. I think this is no longer in production, and have no idea what the equivalent replacement would be.
An assortment of cables are required to make this setup work. I needed an XLR cable to go from the mic into the mixer, and then an RCA phone to phone cable (hope that’s correct) to go from the mixer to my soundcard.
Originally I had a fancy soundcard in my desktop PC which did a good job. And originally I recorded everything on my desktop.
However, when travelling up and down the country on work I couldn’t reasonably lug my desktop around, but I did have a laptop – a MacBook Pro – with me.
I found a Numark USB adapter which allowed me to go from the mixer to the USB widget thing, which then plugged into the Macbook via USB. Still lots of stuff to lug around, but better than a desktop 🙂
The truth is the hardware is an expensive up front cost. My idea when buying the microphone was to start a podcast. I did, it was quite successful (~20,000 downloads an episode, which to me was a much great success than I had imagined), but I never truly enjoyed podcasting.
Having spent so much of my money on all this kit, I was reluctant to shove it all in a box and be done with it. I decided I would try creating some programming tutorials and put them up on YouTube.
That was the start of the process that ultimately led to where I am and what I do today.
The Software I Use
To begin with, when on the desktop, I used Windows 7.
I would use Camtasia for recording both screen and voice. It worked well. Being on the desktop meant rendering was also fairly fast.
I also toyed with Dragon Dictate for dictation which worked really well for voice-blogging more general content, but less well for technical posts.
Dragon Dictate has something that other programs I tried did not – a way of training the voice recognition system how to understand my accent. Recently I’ve tried Google Dictate which is still nowhere near as good.
Switching to the Mac, I opted for Screenflow for video, and tried their Dictation app as an alternative for Dragon Dictate. Unfortunately this has been truly disappointing even compared to Google Dictate.
I rarely do any dictation work as of late. There is little time saving to be done.
I generally set the screen recording and run until I’m done. I don’t stop unless forced to do so. This generally means that what you see on the screen happened that way in real life. I prefer this, as showing an edited ‘perfect’ scenario is not how real development works. At least, not for me.
I don’t make a script.
Typically I make a prototype of the finished project ahead of time, and then use a combination of git branches and tags to go over when actually recording the videos.
All videos are filmed at 1280×720 pixel resolution. For this I use a utility for the Mac called RDM. I have a separate user profile for CodeReviewVideos which keeps the environment clean and free of my day to day laptop use.
That said, I don’t use OSX as my primary desktop outside of CodeReviewVideos. I use Ubuntu Linux for my dev work. I have never tried recording screencasts from Ubuntu so have no experience in this area. I’m greatly looking forwards to Ubuntu adopting Gnome as the primary desktop environment.
I bump up the font size in the terminal by at least 4x. There’s nothing worse than tiny text, or having to watch brilliant content that was unfortunately filmed in 4k, but you’re watching it on your mobile phone screen :/
I do use post-production techniques inside Screenflow to cut out the gaps, and fast forward any slow parts. I’m getting better at not saying “uhm”, and “err” quite so much now.
I would estimate recording a 5 minute video segment takes ~30-60 minutes of footage before editing.
The editing process takes ~1-2 hours per video.
Rendering, unfortunately, is a relatively slow process being on the laptop. Each video takes 10-20 minutes to render. Uploading takes another ~5 minutes per video.
I write up each of the videos using Sublime Text 3, with the Google Spell Checker plugin regularly saving my bacon.
Writing up the videos takes another ~2 hours per video.
I’m constantly trying new things when recording. I try to make the best use of my recording time by limiting myself to a set amount of hours per week. This forces me to focus down and create content.
My mantra has been to buy the best piece of kit I can afford and hopefully, that means I only ever need to buy it once and use forever.
I’d love to answer any questions that you may have – so feel free to fire them over. I’m really not an audio nut by any means.
This week there have been three new videos added to the site.
First up we finished the “Symfony 3 For Beginners” course with an opinionated video on why I don’t like the typical PHP-framework way of dealing with POST in controller actions.
I’d love to get your opinion on this.
Next, we start a new series.
In this series we are going to build a Wallpaper or Desktop Background website from scratch.
I know, I know, these wallpaper websites aren’t quite as cool as they were about 10 years ago. But they do make an excellent topic for a tutorial series.
There’s a bunch of topics being covered in this series:
- Controllers, routing, and Twig
- Doctrine queries, results, and repositories
- Creating console commands
- Forms, file uploads, and form theming
- Event Listeners
- Symfony Services
- Bootstrap 3
The idea here, by the way, is that this follows on nicely from the “Symfony 3 For Beginners” course we’ve just finished.
You could, without much effort, adapt this idea to make a bunch of different types of sites.
If you’re that way inclined, you could even find ways to monetise a site like this with Google Adsense or similar. I’ve found a little extra beer money coming in from a website spurs me on to build it up further, and that has only benefited my programming skills, not to mention additional confidence in having seen a site through from concept to production.
This series is going to be split into three parts.
In this first part we build out the MVP (minimal viable product). This is the bare bones site that is “good enough” to launch.
Next, we will improve the site by covering things that need to be done once the site goes into a real world environment.
Finally, we’re going to re-do the whole thing using TDD. Seems a bit backwards in a way, but in my opinion, learning TDD is much easier this way. Stay tuned for more info on this one.
I’m not linking to the final video from this week as it’s a follow on from the one above.
Lastly, no, I haven’t forgotten about the Deploying with Docker course. I’m putting this one through the in-house assault course (i.e. I’m dogfooding this) before I put it out there. It’s working well so far, but it’s not quite there just yet.
Thanks for reading, have a great weekend, and as ever, happy coding.