You Can Go Home Again

wordpress-logo-simplified-rgbI’m back home.

For years I ran this site as a self-hosted WordPress blog. Nearly a decade, in fact.

I set up Leoville in September, 2007 as a refugee from Vox (remember that?) That was the blogging platform that convinced me to own my own content. Many of the missing pictures and links on this site were left behind in the migration from Vox. They’re lost forever. (If anyone at Six Apart knows where the Vox content is warehoused let me know!)

Prior to Vox I had used every blogging platform under the sun (including Grey Matter, Blogger, Movable Type, and Typepad). But WordPress was the best. I won’t go into the reasons I moved away, but I’m very happy to be back. And the advantages of using wordpress.com instead of self-hosting are guaranteed to keep me here for a long time.

Disclaimer: WordPress.com is a sponsor on my TWiT network. 

 

 

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!

 

Here’s a new UWP TWiT App

 

 

Got a very nice email today from David Neptune that will make our Windows Phone 10 users happy:

Good morning!

As a long-time listener to many of the TWiT shows (Love Windows Weekly, Know How and Coding 101), and a hobbyist windows developer, I built a solution for myself to make sure I could easily get to all the live and prerecorded content you have to offer.

Using your relatively new API and the Windows 10 UWP platform, I have sent a new TWiT.tv Media Player app into the Windows 10 Store which should be up later today at https://www.microsoft.com/store/apps/9NBLGGH5Z87Z

Leo has commented many times that Dmitry Lyalin was going to update his app… he must be busier than me 😉

In any case, today’s drop is for Windows 10 and Windows 10 Mobile. I’m working out some UI input issues with Xbox One but hope to get that client out as soon as Microsoft allows.

I tried to leverage as much data goodness as I could squeeze out of the

API, but please let me know if there’s anything you like or don’t like about the app and I’ll adjust it for you.

Thanks for everything you do!

David Neptune

IF-Zone

Thank you, David! Looking good, too!

 

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:userdocumentspodcasts'

#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:userdocumentspodcastssecurity 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 = "$outputDirectoryaudiosn$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 = "$outputDirectoryshow notessn$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 = "$outputDirectorytranscriptspdfsn$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 = "$outputDirectorytranscriptstextsn$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!

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!

Hour of the Wolf Blogging

The Moon and Jupiter
The Moon and Jupiter

The moon and Jupiter are out tonight. (Shot with the Galaxy S7 – talk about low light!) Yes, that’s Jupiter!

I am up every night at this time, around 4am. Jung called it the hour of the wolf. Either I’m going polyphasic or just getting old. But… I’m thinking if I published one blog post every night at this time instead of scanning Twitter and Instagram I might actually get something accomplished. So here’s my first Hour of the Wolf post. 

  • Tip of the night: transfer.sh – a free command line based file transfer service. Written in Golang by the Dutch Coders. I’m working on getting a self-hosted version of this running on my doorstop server (more about that later). How handy!
  • 24 years ago on this night my first child was born. Happy birthday, Abby. I love you so much.
  • #JeSuisBruxelles – how heartbreaking. What’s wrong with this world?

Good night.

Fastmail Auto-Configure Chooses Wrong Port for Thunderbird

I thought I’d post this minor discovery here in the hopes that others would find it useful. I love Mozilla’s Thunderbird email client. It does everything I want it to, including PGP/GPG via Enigmail, Calendering via Lightning, and Google contacts and Tasks via the Provider for Google Calendar extension.

But I just couldn’t get it to get all my folders to sync on Mint GNU/Linux. Only the top level INBOX would download when connecting with my IMAP provider, Fastmail

Turns out a “smart” engineer at Fastmail changed the auto-configure IMAP SSL port from 993 to 992 to get Thunderbird to work better with some non-compliant email programs, including Microsoft’s Outlook and Apple’s Mail. I had tried every possible solution including subscribing to specific folders and renaming the root folder until I found this post:

Alternate Namespace in IMAP

It’s a clever hack that makes Fastmail work better for Apple, Windows, and Blackberry users but it confuses the heck out of compliant client users who allow Fastmail to auto-configure settings.

Changing SSL port 992 to 993 fixes the problem.

It’s okay to use the autoconfig – it works fine otherwise – but if you’re not getting all your mail try switching ports. 993 is standard, 992 is a hack for non-compliant clients (which, apparently, is pretty much everybody).