My 2016 Audible Reads

I posted the entire list of audiobooks I've bought from our sponsor, Audible.com, in November 2015. But here we are more than a year later, and I've listened to quite a few more books. Here's an update in reverse chronological order...

  1. A People's History of the United States: 1492 to Present    Howard Zinn    34 hrs and 12 mins
  2. Jerusalem    Alan Moore    60 hrs and 41 mins
  3. Man's Search for Meaning    Viktor E. Frankl    4 hrs and 47 mins
  4. Testimony    Robbie Robertson    18 hrs and 38 mins
  5. Death's End    Cixin Liu, Ken Liu - translator    28 hrs and 56 mins
  6. A Night Without Stars: A Novel of the Commonwealth: Chronicle of the Fallers Series, Book 2`Peter F. Hamilton    26 hrs and 29 mins
  7. The Romanovs: 1613-1918    Simon Sebag Montefiore    28 hrs and 47 mins
  8. Born to Run    Bruce Springsteen    18 hrs and 16 mins
  9. Masters of Doom: How Two Guys Created an Empire and Transformed Pop Culture    David Kushner    12 hrs and 43 mins
  10. The Master and Margarita    Mikhail Bulgakov    16 hrs and 51 mins
  11. Blood Meridian: Or the Evening Redness in the West    Cormac McCarthy    13 hrs and 10 mins
  12. Doomsday Book    Connie Willis    26 hrs and 26 mins
  13. My Life in France    Julia Child, Alex Prud'Homme    11 hrs and 17 mins
  14. The Confidence Game: Why We Fall for It...Every Time    Maria Konnikova    12 hrs and 33 mins
  15. Between the World and Me    Ta-Nehisi Coates    3 hrs and 35 mins
  16. Alexander Hamilton    Ron Chernow    36 hrs and 2 mins

I also worked on completing my collection of titles in Patrick O'Brian's Aubrey-Maturin series. I'd rented (and returned) the first 15 on cassette from Recorded Books but I wanted to own them on Audible. Now  I'm almost caught up - just a few more titles to add this year.

  1. The Reverse of the Medal: Aubrey/Maturin Series, Book 11    Patrick O'Brian    10 hrs and 15 mins   
  2. The Far Side of the World: Aubrey/Maturin Series, Book 10    Patrick O'Brian    14 hrs and 30 mins
  3. Treason's Harbour: Aubrey/Maturin Series, Book 9    Patrick O'Brian    12 hrs and 48 mins
  4. The Ionian Mission: Aubrey/Maturin Series, Book 8    Patrick O'Brian    15 hrs and 6 mins
  5. The Surgeon's Mate: Aubrey/Maturin Series, Book 7    Patrick O'Brian    14 hrs and 59 mins
  6. The Fortune of War: Aubrey/Maturin Series, Book 6    Patrick O'Brian    13 hrs and 5 mins
  7. Desolation Island: Aubrey/Maturin Series, Book 5    Patrick O'Brian    12 hrs and 59 mins
  8. The Mauritius Command: Aubrey/Maturin Series, Book 4    Patrick O'Brian    13 hrs and 51 mins
  9. H.M.S. Surprise: Aubrey/Maturin Series, Book 3    Patrick O'Brian    15 hrs and 40 mins
  10. Post Captain: Aubrey/Maturin Series, Book 2    Patrick O'Brian    19 hrs and 9 mins

It Was 40 Years Ago Today...

On this day 40 years ago I took the train into New York City and sat for the exam for my third class ticket, the then required license for working in radio. The original certificate is long gone -- probably lost in the archives at my first station, WYBC New Haven -- but this is the card I got five years later on renewal.

I'm a licensed professional

I'm a licensed professional

It's been an amazing 40 years. And I'm still in love with radio.

A Grand Experiment

The latest debacle over the "forced" upgrade to Windows 10 and Apple's increasingly locked-in ecosystem has got me thinking. Do I really need to use a proprietary operating system to get work done? And while I'm at it, do I need to use commercial cloud services to store my data?

I've always used Linux since the first time I tried installing Slackware in the mid-90s. In 1998 we were the first national TV show to install Linux live (Red Hat). And I've often advocated Ubuntu to people with older computers. I usually have at least one computer running Linux around, in the past couple of years Dell XPS laptops have been great choices. And a couple of months ago I bought a 17" Oryx laptop from System76, an Ubuntu system integrator, for use in studio. 

But as time went by, even Ubuntu began to seem too commercial to me, and I've migrated to community supported Debian testing and the Arch-based Antergos distros for everything. (i use Antergos on my Oryx on the shows.)

Using these Linux systems and the Chromebook Pixel have convinced me I don't really need to use commercial operating systems for anything I do. And for almost everything Linux is faster, better, and more reliable. At this point the only reason I can see for NOT using an open-source OS is a lack of software for something you need to do, like video or photo editing, music making, and rocket launching. But in the 20 years I've been using Linux, great alternative libre software has evolved to replace those commercial solutions. I think the time is right to make the switch.

So now for the grand experiment. Is it possible, I wonder, to do everything I need to do on an even more venerable, more robust system: a true UNIX OS, FreeBSD? Here are my requirements:

1. Stability - everything works even after updates
2. Security - no viruses, no exploits, no snoops or spooks
3. Usability - the UI has to look good and not get in my way
4. Speedy - I don't like to wait

And the tasks I need to do:

1. Browsing
2. Email with PGP signing and encryption
3. Coding - I'm a hobbyist programmer requiring support for lisp/scheme/racket, rust, and python (and maybe forth and clojure and meteor and whatever else is cool and new)
4. Writing
5. A password vault. I currently use Lastpass because it syncs with mobile but eventually I'll need to find a FOSS replacement for that, too
6. Photo editing - this is the toughest to replace. I love Photoshop and Lightroom. Can I get by with, say, GIMP and Darktable?

Why not Linux? After reading an excellent article on the differences between Linux and FreeBSD by Matthew D. Fuller and playing with both over the past few months I've come to believe BSD would be the better choice for me. In Matthew's words:

BSD is what you get when a bunch of Unix hackers sit down to try to port a Unix system to the PC. Linux is what you get when a bunch of PC hackers sit down and try to write a Unix system for the PC.
— https://www.over-yonder.net/~fullermd/rants/bsd4linux/01

I love Linux and will continue to use it on my laptops, but for my main workhorse desktop I think FreeBSD will be a better choice. I also look forward to learning and administering a true UNIX system. All the userland apps I currently rely on with Linux are also readily available on FreeBSD. Why FreeBSD not OpenBSD, or NetBSD, or PC-BSD, etc? FreeBSD has the largest community of all the BSDs and the FreeBSD handbook is quite impressive. That said, I think any BSD would suit just as well, but I had to choose one. 

I do have a contingency plan. I'm not throwing away my Windows and Mac laptops, in fact, I'll probably buy a new Macbook Pro the second it comes out, so if need be I can use them when I need commercial software. I'm also stuck using proprietary mobile devices for the moment. And for that reason, a good cloud architecture is important. Can I, for example, replace Lastpass and Evernote with a self-hosted, open source alternative? More on my planned self-hosted cloud later. 

There's another reason for this experiment, it's going to be fun! 

I've ordered a beast of a machine from ABMX.com, a FreeBSD system integrator. That way I know all the hardware will work with my shiny new OS. 

Based on their W19S11T Whisper Quiet Workstation case:

• Supermicro X11SAT-F Motherboard (Socket 1151)
• Intel Xeon E3-1275V5 4-Core 3.60 GHz
• 32GB DDR4 ECC Un-buffered Memory
• 1 512GB Samsung 950 Pro NVMe m.2 boot drive
• 2 x 1.0 TB Samsung EVO 850 SSDs (supplemented with two I already have for a total of 4)
• DVD burner (I've ordered the FreeBSD DVDs to support them even though you can download everything from freebsd.org.)

(I'm planning on using ZFS with two pools - one OS pool on the m.2 and a data pool using ZRAID on the 4TB of SSD storage, giving me 3.5GB total storage. ZFS is one very strong reason to use FreeBSD.)

• NVIDIA GeForce GTX 960 GPU

(Timing is not great here, I'd prefer the new GTX 1060 but it's not available yet. I'm not gaming on this - that's what the Xbox and PS4 are for - but I will be driving several high res displays and I don't want any lag or tearing when I scroll.)

• 450Mbps Wireless N Dual Band PCI-e Adapter w/ 3x 2dBi Antennas

(Yes, sad to say, unless I rewire my house I'll have to use Wi-Fi with this beast. I'll probably rewire my house.)

Dell UltraSharp U3415W 34-Inch Curved Monitor
dasKeyboard 4 Professional
Some old Microsoft mouse I have lying around.

I shall dub this system, The Beast. Nothing flashy here, it's more yak than gazelle, but that's what I want for my desktop. Total cost is, well I'd prefer not to dwell on it. But to quote Steve Gibson, I'm hoping this will be the last computer I'll buy in my lifetime. (hah!)

I've also ordered a small NUC-style box from System76 to act as a server for my self-hosted cloud. I'm planning to run sandstorm.io on Debian stable behind a Ubiquiti EdgeRouterX on my Comcast Business Class cable modem. More on that next time.

And I'll continue to chronicle my journey into the land of FOSS here when The Beast arrives. But in the meantime, please excuse me, I've got some reading to do. 

I welcome your thoughts below!

 

Using Scripting to Download TWiT Shows

Once again the TWiT Army rides to the rescue. A number of you have been looking for automated ways to download every single Security Now episode. I've received tweets and emails from several listeners who have provided their own scripts. I haven't tried them, but a cursory glance tells me they'll probably work and are non-lethal.

Finally, thanks to to Gary Nevills for the following two Powershell scripts. Gary writes:

I thought I’d share my PowerShell scripts I use to download TWiT podcasts every week (and build up my library of shows). The download scripts work best in PowerShell 5.0 (Windows 10).

This one’s for downloading various shows in audio or video from TWiT’s website, you can also use it to view the download links (without downloading the shows), and highlight links that don’t redirect through PodTrac (see line 16).

Download TWiT Shows

###########################
##### Begin Functions #####
###########################
Function find-url {
    param
    (
        [Parameter(Mandatory=$true)]
        [string] $DownloadType
    )
    #parse the webpage for the appropriate url
    $fileUrl = "$DownloadType not available for episode $num"
    $results | foreach {Select-String -InputObject $_ -Pattern "download>$DownloadType</a>"} | foreach {$fileUrl = $_}
    $fileUrl = $fileUrl -replace '.*(http.*\.mp[3|4]).*', '$1'

    #uncomment below to show each url that doesn't go through podtrac
    #if ($fileUrl -notlike "*podtrac*" -and $fileUrl -notlike "$DownloadType not available for episode $num") {Write-Host $fileUrl}
    #uncomment below to display each url
    Write-Host $fileUrl
    
    #download the file if it is available and download was set to true
    if ($fileUrl -notlike "$DownloadType not available for episode $num" -and $downloadShow) {
        download-show -URL $fileUrl
    }
}
Function download-show {
    param
    (
        [Parameter(Mandatory=$true)]
        [string] $URL
    )
    #get the filename from the url and format it
    $fileName = [System.IO.Path]::GetFileName($fileUrl)
    $fileName = $fileName -replace "(.*[a-z]).*[0]($num).*(\.mp[3|4])", '$1$2$3'
    #create the full output filename
    $outputFile = "$outputDirectory\$DownloadType\$fileName"

    #check if the directory to save file in exists, create it if necessary
    $fileDirectory = [System.IO.Path]::GetDirectoryName($outputFile)
    if (!(Test-Path $fileDirectory)) {New-Item -Path $fileDirectory -ItemType Directory | Out-Null}
        #test if file has already been downloaded, skip if it has
        if (!(Test-Path $outputFile)) {
           #download and save the file
           Invoke-WebRequest $URL -OutFile $outputFile
        }
}
##############################################
###############Begin Parameters###############
##############################################
#Set episode range
$numOfEpisodes = 1 .. 20

#Pick 1 show at a time
$show = 'Security Now'
#$show = 'Windows Weekly'
#$show = 'TWiET'
#$show = 'Coding 101'

#Set the output directoy
$baseOutputDirectory = 'E:\user\documents\podcasts'

#choose which formats to download
$audio = $true
$videoSdSmall = $false
$videoSdLarge = $false
$videoHd = $false

#Download shows true/false - useful if just auditing download URL's
$downloadShow = $true

##############################################
##############End Paraemeters#################
##############################################
################ Begin Script ################
##############################################

$outputDirectory = "$baseOutputDirectory\$show"

foreach ($num in $numOfEpisodes) {

switch -regex ($num)
{
    {1..9 -contains $num} {$num = "{0:D1}" -f $num}
    default {$num = "{0:D2}" -f $num}
}
$searchResults = $null
$downloadPage = $null

switch ($show) {
    'Security Now' {$showUrl = "https://twit.tv/shows/security-now/episodes/"+$num+"?autostart=false"}
    'Windows Weekly' {$showUrl = "https://twit.tv/shows/windows-weekly/episodes/"+$num+"?autostart=false"}
    'TWiET' {$showUrl = "https://twit.tv/shows/this-week-in-enterprise-tech/episodes/"+$num+"?autostart=false"}
    'Coding 101' {$showUrl = "https://twit.tv/shows/coding-101/episodes/"+$num+"?autostart=false"}
}

Try {
    $downloadPage = Invoke-WebRequest $showUrl
    $results = $downloadPage.Content -split "`n"
}
Catch {
    Write-Error "Unable to find $showUrl"
    Continue
}
if ($audio) {find-url -DownloadType "Audio"}
if ($videoSdSmall) {find-url -DownloadType "SD Video Small"}
if ($videoSdLarge) {find-url -DownloadType "SD Video Large"}
if ($videoHd) {find-url -DownloadType "HD Video"}
}

And this one's for getting all of the files from grc.com for security now:

Download A Range of Security Now episodes from grc.com

$numOfEpisodes = 554 .. 557
$outputDirectory = 'E:\user\documents\podcasts\security now\'


foreach ($num in $numOfEpisodes) {

$num3Digit = "{0:D3}" -f $num
$num4Digit = "{0:D4}" -f $num
Write-Host $num3Digit
#Write-Host $num4Digit

$url = "http://www.podtrac.com/pts/redirect.mp3/twit.cachefly.net/audio/sn/sn$num4Digit/sn$num4Digit.mp3"
$outputFile = "$outputDirectory\audio\sn$num4Digit.mp3"
try {if (!(Test-Path $outputFile)) {Invoke-WebRequest $url -OutFile $outputFile}}
catch {Write-Host "$num3Digit not available in audio"}

$url = "https://www.grc.com/sn/sn-$num3Digit-notes.pdf"
$outputFile = "$outputDirectory\show notes\sn$num3Digit.pdf"
try {if (!(Test-Path $outputFile)) {Invoke-WebRequest $url -OutFile $outputFile}}
catch {Write-Host "$num3Digit not available in show notes"}

$url = "https://www.grc.com/sn/sn-$num3Digit.pdf"
$outputFile = "$outputDirectory\transcripts\pdf\sn$num3Digit.pdf"
try {if (!(Test-Path $outputFile)) {Invoke-WebRequest $url -OutFile $outputFile}}
catch {Write-Host "$num3Digit not available in pdf transcript"}

$url = "https://www.grc.com/sn/sn-$num3Digit.txt"
$outputFile = "$outputDirectory\transcripts\text\sn$num3Digit.txt"
try {if (!(Test-Path $outputFile)) {Invoke-WebRequest $url -OutFile $outputFile}}
catch {Write-Host "$num3Digit not available in txt transcript"}

}

Thanks, Gary! I haven't tried these, but I want to put them here so you Powershell gurus can access them and use them for yourselves. 

The Road to NAB

We're headed to NAB for three days of shows next week. John "jammerb" Slanina heads out tonight for the long drive to Las Vegas. Load out is Saturday. I'll be doing Triangulation from the LiveU booth at 11a Pacific on. Monday with Skywalker sound engineer (and the voice of General Grievous), Matthew Wood. Megan Morrone and I will host iOS Today at 1:30p with a look at iOS-based content creation tools. Later it's TNT with news from NAB and we'll continue with shows on Tuesday and Wednesday. 

Burke begins to pack the van for the trip to NAB. 

Burke begins to pack the van for the trip to NAB. 

See you in Las Vegas. Or at the very least I hope you'll see us!

Sheer Oculus Joy


 

Editor Anthony Nielsen tries the Oculus Rift while a visiting team from CUNY, Annie Berman and Tim Whitney, look on. 

Editor Anthony Nielsen tries the Oculus Rift while a visiting team from CUNY, Annie Berman and Tim Whitney, look on. 

Talk Less, Blog More

Lisa bought me this spoon on Etsy. I love it! 

Lisa bought me this spoon on Etsy. I love it! 

I don't need another iPad. No one does. That's probably why sales are plummeting. But I bought the new 9.7 inch iPad Pro anyway. Hey, it's my job. I also have a secret agenda. I'm betting it will be the perfect blogging platform.

Two new features intrigued me.

It's the first iPad to have a real camera. The same excellent camera, in fact, that comes in the iPhone 6s. That means I'll be able to shoot stills and videos right from my blogging tool. I've tried that with the iPhone 6s plus and the Galaxy S7, but typing on those things is impossible for those of us with sausage finger syndrome (SFS).

And that's where the new iPad's itty bitty keyboard comes in. Now I can actually type my posts. It's too early to tell whether it's workable for SFS sufferers, but I'm using it right now and it's not too bad. If I were an artist like Serenity Caldwell I'd even be able to sketch a little. I had hoped to do the same thing with Google's Pixel C and the skinny Macbook before that, but neither quite suited.

With the Smart case the new iPad still is small enough to fit into my man bag, and light enough that I won't mind carrying it all the time. And that means I'll have the means to mash those keys wherever I am.

I can use the tiny Shure Motiv microphone to record high quality audio right into the beast. Which means I can audio blog, too. And I find it much easier to talk than type.

As the good book says, Alexander Hamilton wrote "like he was running out of time." And, as a result, we know more of his thoughts and life than any of the other founding fathers. Hearing that has inspired me to talk less, blog more. Or maybe do both and in a couple of hundred years someone will write a hit musical about me. Maybe I should challenge Dvorak to a duel? Nah. I am not throwing away my shot!