Over the past year I’ve noticed a real, tangible decrease in my desire to do…anything. I don’t know if this a function of depression, burn out or a need for some kind of change but I can feel it.

I get up each day ready to do whatever. Do some work, then maybe later I’ll work on ControlPlane, write a blog post or tackle some single player game. Then the end of the day arrives and I just don’t care about any of it.

Often times I feel that I’m not the person I was meant to be. That I am better than I allow myself to be. Then I’m struck with guilt. Am I really so arrogant to believe I’m better than others? Am I justified in my desire for more? I let these feelings get the best of me and do nothing instead.

The thing is, I don’t actually know what it is I’m chasing. I don’t know what my end goal is. I was once asked at a conference what my goals are and I didn’t know. “That’s really sad” my partner said. This has haunted me ever since. I don’t purposely avoid setting goals, I just don’t ever stop long enough to really ask myself what do I want? I have goals but they often feel petty and meaningless or when I have my own time when I could work towards a goal, I can’t find the motivation to start something I don’t believe I’ll finish anyway. Live like that long enough and it becomes easier.

Current events don’t make things easier either. It is a struggle that I feel deep into my core being. I can’t comprehend how people don’t understand basic concepts surrounding masks and just compassion for others. I’m at a point where I must stop paying attention for my own sanity but it feels like giving up on what I believe in. Then I think I’ve given up on so many other things what’s one more?

Anyway, tomorrow is another day. Another chance. Maybe I’ll find what I’m looking for. Maybe I’ll eat a donut.

In 2004 I took delivery of a new car that was equipped with a CD changer. Until then I had only ever had cars with a single disc player so stepping up to a deck with a six disc changer was incredible. No longer did I need to keep a sleeve of CDs in the car that would get scratched or lost, I could just keep what I was listening to at the time right in the deck. It was still a time where creating and burning playlists to a burnable CD was totally acceptable and all was well in the world.

I kept that car for about ten years and during that time we saw the iPod and other music players gain tremendous popularity. And why wouldn’t they? You could put as much music onto the device as it would hold and carry it around with you anywhere you went! The original iPod even had this slick wheel based interface for getting around quickly and easily. Amazing! Unfortunately, when my car was designed, these types of players weren’t common yet and there was no way to interface an iPod or any type of music player with my deck because I didn’t have an AUX input. Bluetooth connectivity was even less of a thing at the time so that option was out as well.

So I kept on making CDs of the music I wanted to listen to and feeding them into the changer knowing that some day I would sell the car and pick one up that had a Bluetooth interface. I thought, one day I’ll finally be able to listen to all of my music at anytime and it’ll be great.

Well, as it turns out it wasn’t all rainbows and unicorns.

A few years ago I picked up a newer Mazda, one with Bluetooth and iPod connectivity, an AUX port and even Pandora! The possibilities before me seemed perfect and I got to working figuring out which method would work best for me. After much tinkering I settled on using Bluetooth because it offered wireless connectivity and worked with whatever music app I wanted to use. I loaded up Spotify with downloaded music and that was that.

After awhile though the flaws in this new system started to appear. I discovered that Mazda’s Bluetooth implementation was less than ideal. It takes a lot of time for it to connect to my phone and start playing music, sometimes over a minute. I can no longer just hop in the car and have it resume where it left off just moments after starting the car. Other times it connects but can’t tell me what is playing or just refuses to play anything at all until I visit Spotify and select something from there.

And herein lies the primary issue and why I miss the venerable CD changer. It isn’t because Mazda’s Bluetooth implementation is bad (and it is really bad), it’s that the process of selecting music is so much more involved. To select music, I have to get my phone, unlock it, open the Spotify app and go digging for the playlist or album I want…while driving. It turns out that having a large selection of music requires changes to how you interface and interact with that music. It requires that you look at a screen to scroll and make selections. All of these interactions are fine when you can spend the time doing them but in the car speeding down the highway is not the right time.

So why is the CD changer the better option here? It’s because interacting with a CD changer is fundamentally different than a music app on your phone, even if your vehicle has a stellar deck and you are able to interact with the music app using steering wheel controls or the touch screen you still need to look at a screen to know where you are. Not so with a CD changer. You put six discs into a changer and you know what slot they are in. You know, using your ears, which track you are listening, which CD it is on and from that you know what slot is it in. If you want to listen to a different disc you know how many times to press the disc change button. Listening to Taylor Swift on disc 1 and now you want to listen to the third song on your new Metallica album in slot 3? Press the disc change button twice and then press the next track button a couple of times. Done and you didn’t even have to take your hands off the steering wheel. Such an interaction isn’t an option anymore. In a music app the interface is 100% on the device, with a CD changer half the interface is in your head.

In the end, it isn’t really the CD changer I miss. It’s actually the “interface” that CD changers provided. There is no equivalent, that I’m aware of, in today’s music apps that emulates the CD changer interface. I believe the ideal solution would be to allow a user to configure a set of playlists as “slots” like a CD changer that are in a locked order. Controls are then offered on screen and the steering wheel to switch between playlists in a locked order, just like a CD changer.

I like the progress that has been made with technology. I appreciate being able to put more music than I could possibly listen to in a year in my pocket. I just wish this progress didn’t come at the expense of usability. Burning a CD was a hassle but when it was done it was done but interacting with your player happens every time.

For some time I’ve been meaning to publicly release the custom component I’ve been using to show which if my Xbox friends are online and what they are playing. There was one issue I had with my component that kept me from releasing it however, it requires access to an API endpoint I would prefer to not offer to an unknown number of people and I’m not interested in scaling it up to sell.

What I decided to do instead is allow the service to be self hosted in the form of some add-ons for hass.io that the custom component can then talk to. The service is broken out into three parts. A part to manage an auth token, a part to basically proxy Xbox Live API requests and a part that glues to two together so the auth token can be shared. The original design was meant to scale well and easily and this is basically just a 1:1 port of the setup. 

The add-ons can be installed by adding this custom add-on URL to your add-on store on your hass.io instance – https://github.com/hassio-xbox/add-ons. Add the URL, refresh and then install the services in the following order

  • Redis Server
  • Xbox Live Credentials Manager (and then configure your username/password)
  • Xbox Live API Service

Once all services are up and running you can configure the component which is installed automatically. The component needs to be given the IP address of your hass.io instance as well as a list of gamertags to keep track of. The format looks like this:

sensor:
- platform: xru
ip: <hass.io instance ip>
gamertags:
- RealAngryMonkey
- Qwik

Once configured restart Home Assistant and you’ll see the status of your friends in the form of individual sensors for each. You can then group them to create a nice panel in your groups.yml file:

xbl_friends:
name: Xbox Live Friends
view: no
entities:
- sensor.realangrymonkey
- sensor.qwik

The end result looks like this:

Valve recently released SteamOS into the wild in beta form and as soon as I could I downloaded it and got it installed on my low to mid range gaming PC.  My motherboard, CPU and RAM are newer but the GPU is a bit on the older and inexpensive side.  That said, it is very capable of running SteamOS and I imagine anyone who has built a gaming rig in the last few years will be able to run it.

Step One: Have a PC

Step One: Have a PC

Actual hardware requirements for SteamOS aren’t outlandish requiring any 64bit capable Intel/AMD CPU, 4GB memory and at least a 500GB HD.   The harder requirement is that the motherboard must support UEFI booting.  There are work arounds to this requirement but it’s beyond the scope of this post. 

Lets get started with the installation. I’m looking at this from the perspective of a Mac user to many of the tools to get things prepared are Mac based.  Here’s what you need:

  • PC meeting the above requirements
  • Flash drive larger than 1GB that can get partitioned/formatted
  • An empty hard drive or a really good backup of your current system
  • A machine to download and prepare the installer with, I’m using a Mac with OS X
  • The SteamOS installation files (http://store.steampowered.com/steamos/download/?ver=custom)

Preparing the flash drive

Insert the flash drive into an available USB port and start up Disk Utility.  Click once on your flash drive (it’ll be listed on the left side) and then click the Partition button.  From the partition layout menu choose  1 Partition.  Name the drive if you wish and ensure that the Format is set to MS-DOS (FAT).  Last, double check that the partition type is Master Boot Record by clicking on the Options… button.  Use the following screenshots as a reference:

Create 1 partition formatted in MS-DOS (FAT)

Create 1 partition formatted in MS-DOS (FAT)

 

Ensure the partition type is Master Boot Record

Ensure the partition type is Master Boot Record

 

When you are satisfied with the parameters click the Apply button and finally the Partition button.  Your flash drive is now ready to copy the SteamOS installation files to.

Copying files to the flash drive

Download the installer files and extract them if they aren’t already. I’m going to assume that the files were extracted into your Downloads directory.  If not, then you’ll need to adjust the paths used in the next command.  To copy the files to the flash drive I used rsync in terminal.  This ensures the files are copied including any hidden files. Use the following command:

rsync -av ~/Downloads/SteamOSInstaller/ /Volumes/UNTITLED\ 1/

Remember to adjust any paths depending on how you named your flash drive or if you didn’t extract the SteamOS Installer files in your Downloads directory. Also note that there IS a trailing slash on the SteamOSInstaller directory.  This is important!

Copying files to the flash drive can take some time

Copying files to the flash drive can take some time

Press enter and allow the rsync operation to finish.  Once done, eject the flash drive using Finder.

Prepare the target PC

To prepare my PC for SteamOS I unplugged all of my internal drives.  This absolutely vital if you don’t want to risk having your existing hard drives wiped clean! I happen to have an extra 500GB drive sitting around for this project and if you don’t or don’t have your PC backed up, then stop here because you’re about to lose everything.

If I haven’t scared you off, then we can continue.

In my BIOS I ensured that all of the UEFI boot options were either enabled or would occur first.  This step is going to be different on each motherboard so you’ll need to play around to make sure things are right.  Basically:

  • Ensure the system will boot using UEFI at all
  • Ensure that UEFI booting is enabled for USB ports and USB flash drives
  • Ensure the UEFI is used before any legacy option

Insert the flash drive into a USB port on your computer and boot it.  Enter your motherboards boot menu if you have one or set your system to boot from USB first.  My system allows me to bring up a boot menu and I pick the EUFI USB Hard Drive option:

Boot menu

Boot menu

You should then see the following:

I picked Express Install

I picked Automated Install

Pick Automated Install and the first phase of the SteamOS installation will get started.  You’ll be looking at a lot of these for awhile:

Progress bars

Progress bars

Allow this phase to complete.  Eventually you’ll be told the system is going to reboot. When it does, remove the flash drive. SteamOS will then reboot to a standard login screen.

Initial Configuration

At this point you are faced with a standard login screen.  Do the following:

  1. Enter steam for the username, press enter
  2. Enter steam for the password, press enter
  3. Click Activities in the upper left
  4. Click Applications
  5. Click Terminal
  6. Type in steam and press enter
  7. Accept the EULA
  8. When finished, log out
    1. Click steam in the upper right
    2. Click logout
    3. Click the logout button

Here are some screenshots for reference:

The login screen

The login screen

Starting terminal

Starting terminal

 

You must now login as the desktop user by doing the following:

  1. Enter desktop for the username, press enter
  2. Enter desktop for the password, press enter
  3. Click Activities in the upper left
  4. Click Applications
  5. Click Terminal
  6. Type ./post_logon.sh, press enter
  7. Enter in desktop as the password, press enter

The system will now perform a number of post phase 1 install routines and then reboot.  After rebooting the system will create the system restore partition. You simply answer yes to a question and the rest is automated.

Just say yes

Just say yes

Pick reboot and press enter

Pick reboot and press enter

Once completed the system will reboot again into SteamOS and finally into Big Picture Mode where you can create or log into your Steam account. The initial boot up can take some time so be patient.  You are now ready to go!

One of the great things about tent.io is how it discovers where your server is.  This is important because it is possible for you to keep your tent entity URL indefinitely but change what server is actually responsible for acting on behalf of it.  http://tent.io/docs/server-protocol details how the process works so I won’t get into here.  I’m going to quickly cover how you add this header in Apache in a VirtualHost config file or .htaccess file.  If you only have access to change your .htaccess file go ahead and do so there, if you can edit your virtual host config file you can do it there as well.  The end result will be the same.

The format is the same in either the VirtualHost config file or .htaccess file.  It is simply:

<ifModule mod_headers.c>
  Header set Link "<https://controlplane.tent.is/tent/profile>; rel=\"https://tent.io/rels/profile\""
</ifModule>

Replace “https://controlplane.tent.is/tent/profile” with the location of YOUR profile.  Place the above text directly into your .htaccess or within the <VirtualHost></VirtualHost> stanza of your virtual host config file.

If you edit your virtual host config file, you’ll need to reload or restart Apache for the changes to take affect.  Keep in mind that you can’t add headers to a redirect so if you use a redirect to add www to your site address (for example) you can’t put it in the redirect stanza.

You can test the results using curl -I <hostname> or online using http://web-sniffer.net

World IPv6 Day is fast approaching and it’s far easier to configure IPv6 than I knew, even if your ISP doesn’t provide you with IPv6 addresses.

That said, there are a few things you need in place before you get started.

  • A working internet connection
  • Either be connected directly to the internet (your host needs a public IP) or be using something other than an off the shelf broadband router.

If you mean the above requirements then simply head over to http://www.tunnelbroker.net/ and register for an account.

Once registered and logged in perform the following:

  • Click “Create Regular Tunnel” under User Functions.
  • Copy and paste the “You are viewing from:” IP address into the form field above
  • Choose the tunnel server closest to you
  • Click “Create Tunnel”
  • Once created, click on the Example Configuration tab and follow the example config options for your system

That’s it. You should now be able to access IPv6 enabled sites like ipv6.google.com and www.v6.facebook.com. On June 18, 2011 a number of large sites will be adding AAAA records for their main addresses (www.facebook.com for example) which has the potential to break connectivity for users who have an improper IPv6 setup. The best option is to be prepared for the day by ensuring you’re accessing the Internet using IPv6. You can also test your connection (with or without IPv6 enabled) at http://test-ipv6.com/.

In a future post, I’ll detail how to use this same tunnel broker service to create a Linux based IPv6 router and firewall. IPv6 will work very differently from IPv4 in how addresses are assigned to you the end user. In short, every device in your home in the future will have a public Internet address meaning steps must be taken to ensure devices inside your home are protected with a firewall.