Treed

Lisa in Tree

We’re practicing for our vacation. Lisa by climbing trees. I’m practicing taking pictures of her climbing trees.

At the advice of Thomas Hawk I’m thinking of biting the bullet and bringing the big and heavy Canon 5D Mark IV and an assortment of lenses (70-200, 16-35, and a fast 50). That’s about 15 pounds of gear. I was planning on taking the lighter Sony A7 but when you add the Sony lenses it’s only a pound or two lighter. Thomas says I’ll be glad I brought the Canon. Both these shots are from today using the Canon with a 16-35 f2.8 lens.

ML4A8441

So. Canon or Sony. What would you bring?

 

Galloping Galápagos!

muffinSo this is why I am so adamant about hosting your own content.

I was hoping to use Storyhouse to host pictures from my upcoming trip to South America. I’d used them to create a couple of slideshows before and I liked the mobile app and the features. But they were bought by Square last year and shutdown. My beautiful “Makin’ Muffins” story (including video and the recipe) is 404d forever.

I could use Microsoft’s Sway to do the same thing. Mary Jo Foley does and it looks great. And I don’t anticipate Microsoft will be going out of business in my lifetime (or be sold to Square) but who knows how long they’ll host my story?

So. Do you have a suggestion for a WordPress plugin or some such hostable tool for posting quick slideshows from the road. Extra points for a mobile app. Once I get home I will put my pictures on Flickr and Smugmug as per usual. I’m looking for an easy, low bandwidth solution I can use in Machu Picchu and the Galápagos.

UPDATE: After some thought I realized the best solution would be something self-hosted that allowed structured posting of pictures, video, audio, text, and, ideally, maps. In other words, an online travel journal. And if I could embed the resulting slideshow here that would be even better. Looks like there’s something just right from GIS firm Esri: Story Map Journal. Esri provides the maps and will host it free for non-commercial users, and the source is on github. I’ll be playing with it before I leave and let you know.

UPDATE 2: Esri’s Story Map Journal turns out to be way too complicated to use on the road, especially with limited bandwidth. Instead I’m going to use a Google Photos Album to do create my travel journal. This fits into my usual workflow anyway. At the end of every day I copy the photos I’ve taken from my DSLR to my Google Pixel XL (Canon and Sony provide an app to do this.) Then the phone copies the photos to Google Photos. This often takes many hours, but with Google Fi I generally have decent and inexpensive bandwidth in most countries. Once my photos are on the net I can put them into the Google Photos album I’ve already created. By the time I return I should have a decent photo album, complete with maps, to post or even print now that Photos offers photo books.

In theory I can embed the album here, too, using a plug-in.

 

Why I Fast

I’m not a doctor, and you shouldn’t consider me an authority on any health issue, but this is what I’m reading now…

It’s a new book from Canadian nephrologist (kidney doctor) Jason Fung, M.D. Much of what is in this book is also available on his YouTube channel.

Everything in here makes total sense to me and is backed by extensive human studies (Dr. Fung eschews animal studies).

I’ve been doing a 42-hour water fast three times a week for the last few weeks based on Dr. Fung’s other book…

Tbe Complete Guide to Fasting

It’s surprisingly easy. I’ll let you know how it works.

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.

Here’s an updated bash script (for The Tech Guy and Macbreak Weekly but you can change that) from Matthew Foot. Don’t forget to set your timezone before running it!

#!/bin/bash
# TWiTCap - captures TWiT show MP3 streams and saves to date/timestamped MP3 files.

# let's fix time/date and sync it - we shall be getting NO shows if the time is wrong!

# Set the timezone below to reflect your locale, eg, mine is Europe/London 

sudo timedatectl set-timezone Europe/London
sleep 1
echo "Date check in 1 second - compare to real time to confirm..."
sleep 1
date

while true
do
        hm_peta=$(TZ=":US/Pacific" date +'%H%M')
        dow=$(date +'%u')
        day=$(date +'%a')
        ymd=$(date +'%F')

        sleep 1
        if      [ $hm_peta -eq "1100" ] && [[ $dow -eq "6" ||  $dow -eq "7" ]]

        then    echo "Capturing The Tech Guy to MP3..."
                timeout 5h wget http://twit.am/listen -O TheTechGuy-$day-$ymd-$hm-US-Pacific.mp3

        elif    [ $hm_peta -eq "1100" ] && [ $dow -eq "2" ]
        then    echo "Capturing MacBreak Weekly and Security Now..."
                timeout 8h wget http://twit.am/listen -O MacBreakWeekly-SecurityNow-$day-$ymd-$hm-US-Pacific.mp3
        else    echo "Waiting for show to start..."
        fi
done

 

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.