How I made Plex work for me

As I’ve written before, I run a Plex Media Server at my home, and have run many different configurations of set ups for almost 4 years. We originally ran the client off of our XBox 360 until the App was obsoleted, and now we enjoy it on desktops, mobiles, and on our Samsung TV, delivering high-quality content to our family.

Our current Plex Media Server is run on a 4-core/4GB laptop with an external USB-attached 6TB hard drive complete with a library of 1708 Movies and 111 TV Shows. It’s not an expensive set up and has paid itself off time and time again.

For the longest time i’ve used plex.tv to access my Plex Media Server remotely, and painfully have had to endure poor quality streaming because I wasn’t really aware about how Plex works behind the scenes. After some time I’ve learned the “why” and the “repairs” to be able to take my remote Plex Viewing up a notch.

Read More

Smaller mkv with ffmpeg

When you run a Plex Media Server you know that family and friends ask for specific content to be placed on it so they can watch it. It comes down that a “popular” series just finished up all 9 of their episodes and the wanted it to exist on our Plex. I was able to find the asked content, but was a bit surprised when the video content was a spectacular 1080p but the audio content defaulted to Brazilian Portuguese.

Lucky for me there was an English audio stream as well, but I felt it annoying that if I wanted to start watching this and have to swap to the secondary audio track every time. With the power of ffmpeg[static] and a couple smart command-line parameters I was able to re-make my videos with English as the default language and cut out all the unnecessary data.

Read More

Learning Docker: Take 1

It was time. I’ve been waiting for enough time to learn Docker and begin to get familiar with it. I’ve heard of it, seen it in action, and thought it was the coolest thing in the world and I had to learn it. I decided to take the dive off the actual Docker ship and descend into the depths.

So, I found a YouTube video from the Docker YouTube video channel (link: https://youtu.be/iqqDU2crIEQ). Albeit it provided me some terminology and knowledge, it didn’t really tell me everything I wanted to know, like some under-the-core or how docker did the docker thing. I learned how to build, ps, port forward, docker hub, and a Dockerfile, but then they went to docker-compose and I got lost.

So, after sitting on that video and registering all the information I decided to set a goal: Load minecraft in a docker container. This shouldn’t be difficult, as it requires java, some source files, and that should be simple.

Read More

SimpleSAMLphp / quick&ez

Background: For about 5 years at my place of work we have used a software called SimpleSAMLphp to help offer identity solutions to TVE (TV Everywhere) customers. In essence I have been one of a team of 20th century cable people.

This software, in it’s current version has been heavily customized to offer quick deployment solutions for new customers. All I can say is that it’s awesome running an Identity Stack with 50+ IdPs and 5000+ SPs.

I decided to see how quick I could set up a SAML SP -> IdP relationship between two Centos 7 Virtual Computers:

Read More

.meta-json

One of my “projects” was to be able to store all my data and be able to add information to it. I gave it some crazy name, and let it sit and pickle away in my mind until it matured.

In comes .meta-json. With every file that would be stored (such as file_name.ext) , there would exist a separate file stored alongside that original file that would have the additional extension of .meta-json.

.meta-json is meant to be a common, easily indexable and searchable format that gives files a raison d’être. the format is rooted in json with specifics that helps to define the metadata of the file.

The proposed format comes down to:

{
   'author': 'unknown',
   'type': 'image',
   'title': '',
   'description': {
      'en': 'something'
   },
   'date': '',
   'source': '',
   'location': '',
   'people': [''],
   'checksum' {
      'sha256': 'xxxx'
   },
   'mimetype': '',
   'creation-date': '',
   'filesize': ''
}

This format pretty much breaks down to key/value pairs. Every key can either have a string or an array/object as a value, depending on the name of the key.

Key Value Types Description
author string|array A list of people who participated in creating this file
type string A generic name for what the file is (image, video, archive, document, etc)
title string|object A visible summary of what this items is.
As an object, the key:value is localization:summary
description string|object A full description of the item. This can be akin to “a picture is worth 1000 words”, but for any kind of media.
date string A parseable date/time identifying when the item “happens”, not typically the same as the creation or modification dates, but it very well could match.
source string How this item was acquired. Typically images are either via Camera or Scanner, Audio would be via Radio, Microphone, Telephone, etc. Documents could be OCR.
location string|object A parseable location where the item “exists”. As a string it could be a general location such as “around the corner from Joes Diner” or an intersection. If placed as an object, this identifies specificity as it could be “gps”: “”, “address”: “”, etc
people array Whom is depicted. Comes down to names or Identifiers of whom is presented in the items is called, such as “person 1”, “person 2”, or “Mick Jagger”.

Additional fields can be defined and exist, but a majority of the data should be present in the metadata for each file to complete it.

This is the initial spec of the .meta-json format.