linux

The problem with XBMC and why it doesn’t make sense anymore.

Posted on

Here’s the problem in a nutshell. People like me who drooled over XBMC for years did so because it did an incredible job of dealing with local media files.  We then got really excited because XBMC did an adequate job of dealing with streaming services that started to creep into our lives, like Hulu, Spotify, Amazon Video etc.

That was a while ago – but here we are now, and the world has changed. If you are anything like me, you’ve gone through this evolution:

1) EVERYTHING was local media, acqured by whatever means necessary.
2) Streaming services crept into my life, but still – 90% local, 10% streaming
3) Today.. > 50% streaming, < 50% local.

That’s BAD for XBMC.

It’s not XBMC’s fault.. it’s a great product, created and maintained by a great bunch of open source guys, but the real problem is the plugins.  Hulu could give two shizzles about the XBMC market.. likewise for all the rest. They just don’t care.. and that means that the plugin creators have an uphill battle.

It’s one thing to be a part of that battle when the plugins account for 10% of viewing pleasure, but when it’s more than 50% (for me 90!) then it gets really painful.  Put that a different way, 3 years ago, XBMC did 90% of what I wanted really well – and I had to fight with plugins for the other 10%.  Now It does 10% well – and I have to fight with plugins for the 90%.

MAKES NO SENSE ANYMORE!

For me, the nail in XBMC coffin was a little bundle of joy called Plex. Plex server in it’s current incarnation is all kinds of sexy. It runs on pretty much anything (and for me that’s the only remaining linux Desktop in the house) and merrily does things very very well. In a way it’s XBMC center without the center. It scans specific folders for specific media, works out what it is, adds cover art, and then joy of all joys, makes that content available through a browser.. and.. to Plex Clients.

What Plex clients are there I here you ask? Well that’s where things get really nice..

– Android
– Roku
– Others (including iProducts)

I’m just going to leave the “others” up to you, because as far as I’m concerned that’s already mindblowing.

Let’s switch gears for a sec and talk about Roku. Roku IMHO is the Apple TV for non fanboys. I didn’t realize how astonishingly awesome it was until the Plex server features made stop and say, “Hey.. wait a minute” and  take off my XBMC tunnel vision goggles.

Roku Rocks. The Roku 3 is a powerful little beast in the palm of your hand, with a great interface and a nifty little idea – headphone socket on the remote. Love it. But can it really make all of these big PCs go away that I have scattered around the house connected to TVs?

Hell yes.. because of Plex. Thanks to the Plex plugin for Roku, that shrinking yet vital media set that one acquires through various means (because it’s not yet on  Hulu, Amazon or Netflix) is still right there in a beautiful package, as is your entire music and photo collection.

Nuts and bolts.. here’s the choice:

XBMC
– great support for local media
– buggy support for Hulu
– buggy support for Amazon
– ugly support for Spotify
– buggy smartphone remotes
– various fun things
— great people out there working hard to provide plugins in an uphill battle against service providors e.g. PBS

ROKU
– beautiful support for local media through Plex
– flawless support for Hulu
– flawless support for Amazon
– flawless support for Netflix
– flawless support for Spotify
– excelent Roku smartphone app
– adequate stream from smartphone apps
— service providors falling over themselves trying to work with Roku to add channels e.g. PBS.

I’m sad to say that for me XBMC is dead. I’ve gone from 2 hefty XBMC  to two Roku 3s I picked up for less than the price of the PC video cards running XBMC and I couldn’t be happier.

XBMC. RIP.

 

Advertisements

Build your own Linux / Ubuntu System and Network Health Monitor Application – Part I

Posted on Updated on

At home I have various devices doing various things.. and it’s important to me that I know they are working. There are many tools out there designed to keep an eye on server health, but they don’t do everything that I want in the way that I want, and I’m a big believer that coding = creating, so there’s nothing wrong with reinventing the wheel just for the sake of it.

For me it started recently when I repurposed an old android phone as an IP webcam pointing out the front window. After that it was a natural progression to install the excelent linux app Motion to pick up movement from that feed, and store images and mpegs to disk – for security. Well no point in storing the images on the nice machine that is likely to be stolen in event of a break in.. so let’s store them on an old EEE-Box that’s running headless in a hidden corner of the basement 😉

Well there you have it. Definite needs for a frequent health check:

– is the camera working?
– is the EEE nfs mount mounted?

I wrote a ruby script and cron to solve that problem, but then it just grew. Now I have the system running on multiple machines:

– checking each other
– making sure all my websites are responding to ping
– validating that certain URLs are giving a 200 response
– making sure that disks aren’t filling up
– checking that certain processes / background applications are running

On top of that:

– my laptop knows if I’m at home or away and tests accordingly
– the system creates Desktop icons for each problem (and removes them when problems resolve)
– it can generate Ubuntu desktop notifications
– it can notify me of issues with a text message
– each machine manages hostname|issue style files on Dropbox so whereever I am my laptop can tell me what’s  going on at home.
– it shuts up at night
– for every problem it finds, it checks to see if there are instructions to try to correct it

All this is achieved with:

– 200 lines of core ruby methods that perform all the tests
– 50 lines of code relating to specific issue resolution
– 100 lines of control code –  one liners which are basically “If you are this machine, then do this test”

In Part II we’ll take the very basics of that code, and create a simple single ruby script to keep an eye on a machines own health.