Showing posts with label tech nerd. Show all posts
Showing posts with label tech nerd. Show all posts

Friday, March 22, 2019

The History of the Future by Blake J. Harris

The History of the Future: Oculus, Facebook, and the Revolution That Swept Virtual RealityThe History of the Future: Oculus, Facebook, and the Revolution That Swept Virtual Reality by Blake J. Harris
My rating: 3 of 5 stars

The History of the Future tells the story behind the virtual reality (VR) company Oculus. The first three quarters of the book is largely about the people behind the building of the company, and the often harrowing process of getting it off the ground. The last part is much the opposite, about dissolution rather than building - specifically the exit of co-founder Palmer Luckey.

Starting up any company is a challenge, and focusing on virtual reality had extra hurdles since it had been tried before...and failed. From a present-day perspective, it's easy to forget that less than a decade ago, VR was considered to be either impossible or so expensive as to be useless to consumers. There is a ton of detail in this book about the difficulty that the Oculus founders faced in convincing anyone that they could actually make VR work, as well as some of the technical aspects that had caused that skepticism in the first place. In almost every case, the disbelief was overcome by getting someone to actually try their prototype, which from all accounts was good enough to make a believer of practically anyone who tried it.

Of course, simply having a good prototype isn't enough, so The History of the Future dedicates plenty of pages to the process of figuring out the logistics behind production of a product. Both in terms of the actual physical production process, and building a company that can make it happen. As with many start-ups, the question of how to pay for the whole process was a major struggle. Until Facebook came into the picture and bought Oculus, which more or less solved the money issues but brought along a whole different set of problems.

The last 25% or so of the book feels quite a bit different than what comes before, largely because it's about things coming apart. Luckey gets into trouble when he supports a pro-Trump political organization and it goes public in the media. Oculus and its founders are sued for infringement of intellectual property. Eventually, Luckey is let go from Oculus. This section is presented as Luckey being railroaded for his political beliefs, the company losing big money in court to a baseless lawsuit (though much of that was overturned on appeal), and Facebook using the situation as an excuse to get rid of Luckey and avoid paying him a large chunk of money due to him as an Oculus founder. It's hard to tell how accurate this depiction is, since it's basically just one side of the story. Whether it's the absolute truth or not, I have to say I wasn't particularly surprised. It's a cutthroat business world out there, and it doesn't take much of a misstep...real or overblown...to lead to a fall from grace.

Harris has gathered a ton of information from the individuals involved in this whole process. Not only about the facts of what happened and when, but the way those people were feeling at the time. I found the whole thing fascinating, because I'm interested in pretty much every aspect of the story: VR itself, the tech start-up culture, dealing with corporate acquisition, and the various interpersonal dynamics along the way. But it does make for a very long and detailed account that may be difficult to get through for someone who doesn't share all those interests. If you do, it's worth taking the time it takes to read through The History of the Future.

Sunday, January 21, 2018

Plex DVR - Not Quite There Yet

Plex is a media center application that I've had my eye on for some time as an option for live TV recording. It looks great and it's a whole lot less complex than my Kodi/MythTV DVR setup. I tried it out, and it's certainly easy to use, but just doesn't have enough functionality for me.
There are two major strengths to Plex, from my perspective. One: It's really easy to set up. Installation on my Linux box was extremely simple, there's a nice web user interface for configuring the system, and there's an app for my Fire TV. Even detection of my HDHomeRun TV tuner for the DVR functionality was seamless. Two: The interface is beautiful and very simple to use.

Sadly, all that simplicity means that there's a lack of functionality. In no particular order:

  • The program guide is extremely limited. There's no grid-style guide to browse. You can see what's currently on, and search for specific future shows. But if you want to browse to see what's coming up tonight, or tomorrow, or next week, you're out of luck.
  • No option for recording a specific time and channel. This means that if the program guide is wrong for some reason (which happens regularly when there's special programs like live sports or news specials), there's no way to record the program even if you know when it will air.
  • Playback on the Plex Fire TV app is inconsistent. Some shows play fine, others are extremely choppy. I looked at all the settings and did some web searching, but all I could find was something about needing to transcode the video. Which makes no sense considering that the shows are all being recorded by the same Plex TV backend, so they should all be in the same format. No reason that some would need transcoding and others would not.
  • Moving around within a recording is limited. You can skip ahead 30 seconds or back 10 seconds. I've tried hitting the skip ahead multiple times to go 3-4 minutes ahead, but it doesn't always work. There's also a delay on audio after you skip ahead.
  • There's a beta option for commercial skipping, but it doesn't work very well. Worse, it actually cuts the "commercial" that it identifies out of the video file, so if it makes a mistake and cuts some of the actual program, it's gone.

On top of the limited functionality, the DVR functionality requires that you subscribe to Plex Pass. It's $40/year, roughly double what I pay for my current setup. (MythTV and Kodi are free, but I pay for program guide updates.)

So for now, I'm sticking with Kodi and MythTV. It's more complicated to set up (but I've already done that) and has some issues of its own, but it works much better for my needs.

Monday, November 27, 2017

Moto X4 and Project Fi

I took advantage of one Black Friday deal this year, for a new phone and carrier service.
My old phone was a Samsung Galaxy S5, which was starting to show its age. I got it last year as a refurbished sale, which was cheap but I knew it wouldn't last for long. It's been acting up recently, with battery issues and needing reboots regularly. As my carrier, I was using H2OWireless, a budget outfit which only cost me about $10/month. It mostly worked, but I had occasional connect troubles, especially when traveling. And I had to very carefully watch every MB of data to avoid high usage charges, which got annoying sometimes.

Google has a fairly new phone service offering called Project Fi, which seems to cover exactly what I'm looking for. It's a bit more expensive at $30/month, but has much better coverage and significantly more data allowance. They credit your next month if you don't use all your data, which I expect will be the case for me more often than not.

I don't need a high-end phone, so I went with the budget option that Google recommends: the Moto X4. $400 with a Black Friday sale giving $100 credit on the Project Fi service. The reviews of the X4 are good for a budget smartphone - some small issues, but nothing that will affect that way I plan to use it.

The hardware arrived today and everything's working as expected so far. I'll be testing the new phone and service out over the next few months, but I don't expect any significant issues. And if anyone decides to try out Google's Project Fi as a service, let me know and I'll share a ref link that gives us both some credit.

Thursday, October 26, 2017

From Eeebox to ThinkCentre

The tiny little computer I bought back in 2011 finally gave up the ghost last week. It did yeoman's work for six years as a proxy and file server. This week, I spent a few hours setting up a replacement.
That little computer was an ASUS "Eee box" that I picked up from Newegg for less than $200 (of course, I named it Eeebox). Very low-powered - didn't use much electrical power, didn't have much processing power. I put Ubuntu Linux on it, added a couple of external drives for storage space, and used it as a file server at home. It also did duty as a proxy server, routing traffic over a VPN connection for security. For a while it was also my MythTV server, but it really didn't have the power for that, and eventually I moved MythTV over to another machine.

I've had a few problems over the last year or so, with the machine occasionally rebooting itself or locking up. So I'd kept an eye out for a replacement, and back in February there was a sale on Woot for a Lenovo ThinkCentre tiny desktop (obviously, this one is Thinkbox). About twice as expensive as Eeebox had been, but more than twice as powerful in pretty much the same small footprint and with similar low power usage. So when the Eeebox hard drive started making seriously disturbing noises last week, I was ready to make the switch.

Ubuntu works fine as an operating system, so I saw no reason to change to anything new. Installation was straightforward via a USB drive, using the server version of Ubuntu since I don't plan to use any desktop applications. It was pretty obvious right away that Thinkbox is a much faster machine - installation and updates went much more quickly than just about anything I'd done on Eeebox. Recovering my file shares was as simple as plugging in those external drives and copying over the filesystem and sharing entries.

The bulk of my setup time was spent making sure that my VPN and proxy configuration was correct. The VPN software I use is openvpn, which is a standard package for Ubuntu, and my VPN provider has an easy download package with all the configuration files. The tricky part is that I use a three-network setup: my local home network, a US VPN connection, and a European VPN connection. (Why two VPN connections? Some things only work with one or the other.) It's easy to configure openvpn to start both connections - just put both in /etc/default/openvpn and put unique port numbers/device names in their configuration files - but then you need to make sure network traffic goes to the correct connection.

The way I accomplished this is using iptables. First, I configured both VPN connections so they don't try to take over the system's default routing with the route-noexec directive in their configuration files. Then, using this blog post as a guide, I created two sets of rules that enforce routing for each network interface. Using the route-upup, and down directives in the VPN configuration files, those rules are updated every time the VPN connections start or stop. This means that I can still use my default network for basic stuff (like checking for OS updates or installing new software), but the two VPN connections can always be available at the same time. Finally, I use the dante proxy server to bind to the VPN network interface.

So what does all this do for me? The end result is that any machine connected to my local network can use a VPN connection simply by setting the proxy server. I can even have two different applications on the same machine (say, Chrome and Firefox) using separate connections at the same time. Depending on what I'm doing, I might use my normal Internet connection, the US VPN, or the European VPN - all I have to do to switch is update the proxy settings. No need to have VPN software installed on multiple machines or worry about turning the connections on and off.

Thinkbox has been up and running for a few days now and seems to be functioning just fine. With any luck, it will last at least as long as Eeebox did.

Thursday, April 27, 2017

Using the Echo Dot

I've had my Amazon Echo Dot for a couple of weeks now (since I won it in a raffle). I like the concept, but I just can't get it to do much of use for me.
The main draw for the Echo is voice recognition, used to command the voice assistant Alexa. That part works pretty well. As long as there isn't too much background noise, Alexa recognizes my commands almost every time. When there is a failure, I can use the Alexa phone app to provide feedback and improve the system.

Where I run into problems is finding things that I want to tell Alexa to do. My first thought was to hook up my Amazon Fire TV to the Echo, so I could use voice commands when watching TV. But despite both being Amazon devices, the Echo and Fire TV won't talk to one another. It's possible to use voice commands directly on the Fire TV, but only with a microphone-equipped remote control. If I've already bothered to find the remote and pick it up, I probably don't need voice commands any more.

OK, if video is out, how about audio? The Echo Dot has a speaker, but it's pretty weak, not suitable for much of anything but short responses. Hooking up an external speaker is supported, and I was able to do that with the stereo in my media center. But that doesn't work well, either. If I switch the stereo's input to something else (I also use it with the Fire TV and my PC), then the Echo is useless since it has no output. It's not smart enough to switch back to the internal speaker when the external one isn't available. I suppose I could switch the stereo input every time I want to listen to something, but if I'm doing that, then it would be easier to just use whichever other device is already connected.

If I did work around the speaker issue, what could I listen to? Alexa will recognize podcast names and play the latest episodes, but I'm often a episode or two behind. Plus, it doesn't know what I've already listened to on my phone or PC. Easier just to listen on those other devices than to manually mark which ones were played somewhere else. There's a MLB At-Bat skill for listening to baseball games, but it doesn't work with the Echo Dot. Music works fairly well - I mostly use Spotify these days, and there's a Spotify Alexa skill that works just fine - but with that speaker issue the sound quality is poor. About the only thing I do find useful is the ability to occasionally ask for the latest NPR news headlines.

What about home automation? I have a Logitech Harmony remote for my media center, and it was very easy to link that to the Echo. I can ask Alexa to turn on and off my various preset configurations, but that's not very useful. For instance, I can ask Alexa to turn on the Fire TV, but then I still need the remote to actually do anything (see above about Amazon devices not talking to one another). Same thing for playing DVDs. Might as well just use the remote in the first place.

I also tried lighting control, with TP-Link smart plugs and bulbs which are advertised as working with the Echo with no need for a hub. Getting those connected was fairly easy, but after a few hours, the connection stopped working. Alexa would say that the device wasn't responding, and I'd have to manually turn the device on and off to reconnect. Kind of defeats the purpose of a smart device if you're manually cycling it on a regular basis! I suspect it would work better if I got one of the hub-based systems rather than connecting to the devices individually, but that's a ridiculous expense for a tiny condo like mine.

I love the idea behind the Echo, and I do occasionally find a reason to ask it a question. But it just doesn't do quite enough to make it a reasonable replacement for what I already use.

Wednesday, April 19, 2017

Updating to Kodi v17 "Krypton"

It's been a while since Kodi released their most recent major update: version 17 "Krypton". I finally got around to installing it on my Fire TV recently.
I waited a while to install v17 largely because I was pretty happy with the older version. Since I upgraded to v16 a bit over a year ago, I haven't had any significant issues. So there wasn't a lot of reason to change. Also, I wanted to allow plenty of time for the add-ons that I use to be updated for the new version. So when v17 was released in early February, I didn't jump right in. In March, v17.1 was released with some minor fixes and that's what I used for my upgrade.

The actual upgrade process went very smoothly. I downloaded the Android version from the Kodi site and installed it using adbLink. Started it up and was greeted by the new user interface featuring the Estuary skin. It's different, but I didn't have any trouble finding everything that I'm used to using.

Everything carried over fine from the previous version except for Trakt.tv scrobbling of MythTV shows. That's not much of a surprise, since my modifications to the Trakt.tv add-on required some pretty specific data from Kodi and the MythTV PVR add-on. This upgrade changed how that data was presented, and for the most part the changes are for the better. It's much easier now to get information about which TV show is being played (specifically, some of the Kodi InfoLabels are being populated by the MythTV add-on). Updating my code was fairly easy, and I submitted the modifications to the Trakt.tv add-on maintainer so other people will get the same changes. Only took a couple of hours for the whole process.

The only real problem I had after the upgrade has nothing to do with Kodi itself. Around the same time, Amazon also updated the Fire TV user interface. Kodi stopped showing up on the home screen of the Fire TV, which means I had to go through the Settings menu to start it. Back in the day I used an app called Firestarter to get around this, but that's no longer an option. Fortunately, there are solutions for this. I had to try several of the things in that list but eventually I got Kodi back onto the Fire TV home screen.

This latest version of Kodi is working out fine thus far. With luck, I'll have another year before it's time to change again.

Thursday, April 6, 2017

An Unexpected Upgrade

I bought a new video card yesterday. I hadn't planned on doing so, but when your old card dies, it's time for a new one.
Sometimes you can tell when computing equipment is on its last legs, and sometimes failure is pretty much a complete surprise. This was the latter. My screen flickered once early on yesterday, which seemed odd but everything kept working. Then an hour or so later, the screen went black and nothing I did brought it back. A single screen flicker isn't much in the way of warning.

I didn't know right away that the video card was the problem, but it was a pretty high-percentage guess. That earlier flickering screen was a giveaway, as well as the fact that I could see keyboard and case lights come on when attempting a reboot. Motherboard or power problems would likely not show any lights at all, and drive- or memory-related issues should show something on the screen (even if only an error). Just to be sure, I broke out an old video card (from several years ago before my last upgrade) and tried it out. That worked, confirming that the video card was the issue.

The card that just died was a NVidia GeForce GTX 650 Ti Boost. It's just over three years old, which is pretty ancient in terms of computing technology. I hadn't had any complaints in terms of performance, and three years is pretty decent in terms of life of a video card that's used regularly on a gaming machine. Using that old card wasn't an option - way too underpowered, which is why it had been replaced in the first place - so I needed a new one. I figured my best bet was to go with a similar card in hopes of the same kind of lifespan and performance.

The 650 is way out of date now, but NVidia makes a GeForce GTX 1050 Ti that's basically a later version of the same thing. I poked around on various shopping sites and found that it was pretty affordable, around $160. That's right in the sweet spot for gaming video cards, at least in my opinion. A bit more than the super-cheap cards with short lives and/or bad performance due to cheap manufacturing, and a lot less than the high-end cards that provide way more power than necessary for my needs.

I do a lot of shopping online, but when I want something quickly it's nice to have local stores. Best Buy had the card I wanted for basically the same price as I could get at online retailers, and they have a store about 15 minutes away. I used their in-store pickup option to place the order, and drove up to pick it up about an hour later.

Back in the day, installing a new video card was a major pain, but these days it's a pretty painless process. Honestly, the hardest part was lining up the screws to hold the card in place against the back of my case. Even driver installation was no trouble, just a quick download from the NVidia site. I did make sure to choose the clean install option so it would remove the old drivers, just in case, but even that was likely unnecessary.

Everything I've done on the computer in the last day or so has worked fine, so I believe the new card has settled in nicely. With luck, it'll be another three years before I have to worry about it again.

Sunday, April 2, 2017

Office 365 Day

I spent part of this weekend attending Office 365 Day, a professional event focused on Microsoft's Office 365 software. The event took place at Davenport University's main campus, just up the road from where I live in Caledonia. It's a smallish campus as universities go, but well designed and only a few years old.
The event was created by Andy Tabisz, a Microsoft MVP from here in Michigan. He and the other organizers did a fine job pulling together sponsors, gathering speakers, and all the other details needed to make an event like this happen. About 30 people attended, which is on the small side, but that's normal for a regional event that isn't part of an ongoing series.

You might ask why a retired guy is spending eight hours on a weekend to attend an information technology event. Primarily it's because I'm still an IT worker, just on a volunteer basis now rather than as a paid job. Much shorter hours and less stress, but the same general knowledge base. In addition, this particular event made sense because it was about 5 minutes drive from home, free of charge, and one of the speakers was an ex-co-worker of mine from my consulting days. And besides, I'm enough of a technology nerd to enjoy keeping up with what's happening in the IT world.

There were 15 different sessions available across the day, organized into 5 blocks of 3 concurrent presentations. The five that I attended dealt mostly with administration topics, such as security and how to organize SharePoint sites. I figured those are the kinds of things that no one else is likely to know at the small organizations where I'm spending my IT support time these days.

In addition to the Office 365 information, a chance to talk with some other IT folks from around the area, and free food, I was one of the fortunate ones to win a raffle prize. (These events always have raffle prizes at the end - encourages people to stick around all day.) I'm now the proud owner of an Amazon Echo Dot, which is one of those techno toys that I'm not likely to buy for myself, but I'm sure I'll love playing with now that I have it. 

Thanks to Andy and all the others who organized the Office 365 Day event. It was informative, a good networking opportunity, and going home with a new toy was a nice bonus!

Wednesday, September 28, 2016

Phone Update

A few weeks after my old phone died, I am once again phone positive.
The new phone is a Motorola Moto E, which is definitely on the lower end of the smartphone spectrum. Low amount of memory, not particularly impressive camera, and it can be slow. But I don't need much, and it didn't cost a lot, so it fits my needs right now.

On the plus side, the Moto E is smaller and lighter than my old phone, so it's easier to carry around. Especially handy when I'm out running, since it fits much easier in the armband I use.

All I really need on the phone is:
  • Google Voice/Hangouts for incoming calls and texts. This lets me use my Google Voice number, so the actual phone number doesn't really matter.
  • GMail for email.
  • Player FM for podcasts.
  • Runkeeper for tracking workouts.
  • Google Maps for navigation.
Unsurprisingly, there's a whole lot of unnecessary stuff installed by default. I spent a while going through and disabling extra apps. On a more powerful device it might not be necessary, but on this one I want to make sure that I'm only spending resources on apps that I'll actually use.

I may upgrade if a great deal on a better phone comes along, but it's no problem to wait. For now, this one does what I need.

Wednesday, September 21, 2016

Tablet Down

It's been a bad month for my electronic devices. First the phone death, now my tablet gave up the ghost.
Ignore all that gunk on the screen. Just haven't cleaned it since it doesn't work anyway. The crack is the problem.
Unlike the phone, which just stopped working without obvious reason, the tablet was totally my fault. A couple of weeks ago, I accidentally dropped it when getting my stuff out of the car. The lower left corner cracked, which you can see in the picture. Everything still worked at that point, but it obviously weakened the screen, because yesterday a big crack appeared across the entire screen. At that point, the touch functionality stopped working.

I used this tablet almost exclusively for two things: reading comics with ComicRack/Comixology, and playing games like Star Realms and Cthulhu Realms. In both cases, the only thing I really need is a good-sized screen. 9 inches is the minimum to be able to read most comics without constantly having to zoom in and out. This one was 10.1 inches, so it worked well for that.

This wasn't an high-end device to begin with. It's an ASUS Transformer TF300T, which I bought almost exactly 18 months ago. Not a lot of memory, fairly slow processor speed, mediocre camera, etc. Your basic low-end Android tablet. I'd rather have something nicer like a Google Nexus 10, but the low-end device worked for me.

Since I have other options for both the comics and gaming - using my PC - I'm in no hurry to replace this particular electronic device. Probably keep an eye on sales coming my way (I certainly get enough emails about such things) until a good deal comes along. Or better yet, wait until Christmas time. Maybe someone will replace it for me.

Tuesday, September 20, 2016

Silent Running

Since my phone died, my jogging outings have been sans audio distraction. Hasn't been as problematic as I'd expected.
It's not really silent, of course. Lots of stuff going on in the world, after all. But I'm used to having either music or podcasts going while I'm out exercising, so it feels very quiet. Except when I have to go along a busy road, when the traffic noise is pretty overwhelming. I avoid that as much as possible. Fortunately, the area around my place is pretty quiet, and I can range across a pretty wide area with minimal distance spent alongside heavy traffic.

Having something to listen to has always seemed like a requirement for exercise. Figured that I'd get too focused on being tired/sore/etc if I didn't have something to distract me. But it turns out that as long as I'm constantly busy, it doesn't bother me to be without something else to focus on. I think I'd have a bit more trouble if I was doing weight training or something else that requires downtime as part of the process. For the constant effort of jogging, though, I find that I do all right with the silence.

The thing I miss most about not having the phone while running isn't the audio, but the distance and time tracking. I've been trying to go about 10k on each outing, and I know it takes me around an hour. It's easy to lose track of your pace with no guide, though. I know more or less what routes to take, so I'm still somewhere in the neighborhood on distance. Time is harder to gauge, though I have some idea based on my pace. I'm certainly looking forward to having a GPS-capable device again for more accurate tracking.
About that dead phone...I actually ordered a new phone from Amazon, and got it in the mail. Opened it up only to discover that it wouldn't recognize a SIM card. A bit of online searching showed that other people had seen the same issue and had to get a replacement phone. So I'm doing that, at no cost to myself thanks for Amazon's easy return/replace policy, but it does delay the new phone timeline. Annoying, but I knew it was a possibility going in...the disadvantage to going cheap on technology. I still think it's the right move, since I really need very little from a phone and paying for features I won't use seems silly. Just going to take a bit longer to get set up.

I suspect things will be different when the weather turns colder, and I have to resort to running on the treadmill in the exercise room. Then I will definitely need something to listen to. I certainly plan to have the phone issue resolved before then, though.

Monday, September 12, 2016

Happy Programmer Day!

The 256th day of the year is Programmer Day in Russia. Good idea for the rest of the world to follow.
Per Wikipedia, Programmer Day was first proposed by Valentin Balt and Michael Cherviakov back in 2002. It took until 2009 for the idea to catch on sufficiently that the Russian government recognized it officially. This year, 256 days falls on September 12. (That's because of the leap year...on non-leap years, it's September 13.)

Why the 256th day of the year? In programming, powers of 2 are very important numbers. 2^8 is 256, the largest power of two that's less than the number of days in year. It's especially important because 256 is also the number of values represented by a byte, one of the most basic units of memory in a computing environment.

The Programmer Day logo shows a full byte's worth of binary digits: "1111 1111". Those familiar with binary have probably noticed that's actually the value 255, not 256. That's because zero is also represented by a byte - "0000 0000" - giving a total of 256 values. This is called zero-based numbering and is used extensively in computer science. It's a common mistake for novice programmers to forget the zero value, so their total count ends up being off by one.

That logo could just have easily used hexadecimal (or "hex") as binary. Hex is a base-16 numbering system, using 0-9 and A-F as digits. It's often used as shorthand rather than writing out full binary values. The full byte value is "FF" in hex. Anyone who spends much time learning what's under the hood of computers will encounter hex sooner rather than later.

I don't do a lot of programming any more, but there were times in the past when it was pretty much my whole life. And I still dabble occasionally. I applaud the Russians for their official recognition of my fellow programmers!

Thursday, September 8, 2016

Phone Death

In June 2015, I got a new smartphone. It had a one year warranty. Fifteen months later, it's non-functional.
The Huawei P8 Lite is a pretty nice piece of equipment, with all the usual things you expect in a smartphone these days. Not at the top end, of course, but plenty for my needs. More, really - I don't really need a front-facing camera, or a 4G connection, or dual SIM cards. When I was able to get it for $200 last year, with a $50 airtime credit toward a pay-as-you-go plan, I jumped on the chance.

For a year, everything worked great. The battery lasted through a day without any trouble. With a set of bluetooth wireless headphones and an arm-band to carry it, the phone was great for taking along on runs. Worked fine in the car as a music and podcast player, and GPS device.

About a month ago, the GPS inexplicably stopped working. I ended up doing a full factory reset of the phone, and that fixed the problem. I assumed at the time that the problem came from some sort of faulty software update. I suppose that's still possible, but it seems more likely now that some of the hardware was already failing.

This morning when I went out for an hour run, everything seemed fine. But as I was finishing up and tried to unlock the phone to stop my run tracker app, my touch didn't register. I tried rebooting the phone a couple of times, no luck. Without the ability to use the touchscreen, you can't do anything other than reboot the phone, so there's not much else in the way of troubleshooting to try.

I took it to a local phone repair shop, thinking maybe there was some simple solution that I just didn't know about. No such luck - the guy there said that he'd seen similar things before, and it meant replacing the digitizer (the "touch" part of the touchscreen). Since the warranty was expired, the cost would be high enough that the phone is effectively dead. Easier to just get a new one.

I'm going much lower-end with my next phone purchase. Amazon has a Motorola Moto E for less than $100. Fewer features, but since all I really need is the ability to run a few Android apps and hook up my headphones, that's fine. If this one only lasts a year like the last one, well, at least I only paid half as much.

Monday, August 29, 2016

Ubuntu Upgrades for MythTV Server

I recently upgraded LittleDell, my Ubuntu Linux box running MythTV, to the 16.04.1 "Xenial Xerus" LTS release.
When I first set up this machine, I used Ubuntu 14.04.5 LTS (server version). The LTS stands for Long Term Support, and is supported for 5 years. Using an LTS version minimizes the need for major upgrades, though it's still important to keep up with minor security patches regularly.

The initial version of 16.04 was released back in April, but I didn't see any need to upgrade right away. Why run the risk of problems? In July, 16.04.1 was released with some minor updates, and shortly thereafter I got a notification that the upgrade was available. I could have skipped this one as well, since 14.04.5 is supported until 2019. But at the same time, one of the hardware drivers used by my machine under 14.04.5 was also going out of support. I figured this was a good time to upgrade and avoid any potential driver issues, as well as getting onto the latest Ubuntu version.

The actual upgrade process is very simple: you log into the machine, and run "sudo do-release-upgrade" at the command prompt. I did it over an SSH connection, though that runs a minor risk since you might lose the connection in case of any problems. The installer is kind enough to set up a backup SSH port just in case, but fortunately I didn't need it. The process took a couple of hours, though most of that was just waiting, so I just left it running while I did other things.

The upgrade made extensive changes: according to the installer, it installed 252 new packages, upgraded 907 more, and removed 32. 695 MB of downloads were required. Most of that consists of behind-the-scenes system changes, of course. Everything it did was logged in /var/log/dist-upgrade, just in case I need to look back at it later.

The installer also told me that 13 packages were no longer supported. I went ahead and did the upgrade, but was curious afterward about those packages. After a bit of searching, I found the list in the installer log (grep "demoted" /var/log/dist-upgrade/main.log), but didn't recognize any of them. Several were related to perl, which I'm not using extensively anyway.

After the upgrade and a reboot, everything started up normally. But of course it couldn't be perfectly smooth - I ran into trouble with MythTV when I tried to access my recorded programs. The upgrade had caused two problems:
  1. The PHP-MySQL interface used by the MythWeb browser interface wasn't installed by the upgrade. Easily solved by "sudo apt-get install php-mysql" and a restart of the Apache server.
  2. MySQL changes from the upgrade caused an error when getting the list of recorded programs from the MythTV backend. I had to do some Google searching to resolve this one, and eventually found a solution. In the /etc/mysql/conf.d/mythtv.cnf file, add the line "sql_mode=NO_ENGINE_SUBSTITUTION", then restart MySQL and MythTV. Apparently that line is needed to force the upgraded MySQL to work more like the older version that MythTV was expecting.
At this point, everything seems to be working normally. Assuming no additional issues crop up, this machine shouldn't need a major upgrade for another few years.

Tuesday, August 9, 2016

Delta's System Outage

It's been all over the news that Delta Airlines had a system outage yesterday that delayed or cancelled flights affecting thousands of passengers.
According to Delta's news page on the issue, the original issue was a power outage in Atlanta around 5 AM. Several hundred flights ended up being cancelled, and full system operation wasn't restored until 3:40 PM. Delta's CEO had to issue an apology to customers, and more flights on Tuesday were affected as Delta's operations reset after the outage.

My first reaction when I heard about this was "gee, glad I'm not flying anywhere today." Followed immediately by sympathy for the IT people who are having to deal with all of this. And shortly after, incredulity that an organization the size of Delta wasn't better prepared.

I never did any work directly for an airline, but during my IT career I worked with a lot of mission-critical systems for large corporations. The IT department of every good-sized organization has plans for disaster recovery and business continuity. Basically, these are meant to handle situations where something outside your control shuts down your computer systems. I'm sure Delta had those plans like everyone else, but they certainly weren't adequate to this challenge.

I don't have any direct knowledge of Delta's systems, but I'm pretty sure I know the general gist of how this happened. I've seen it in several other industries. They've got a bunch of old systems that have been around for decades which were never modernized. Either it's too expensive to do so (and thus never attempted), or modernization attempts were made and failed. Over time, a bunch of newer systems have been added that integrate with the old stuff, relying heavily on networked communication. The newer infrastructure might be designed to be redundant and deal with outages, but the older parts are not.

So when an outage hits, the old systems don't handle it well. They crash right in the middle of whatever they were doing, resulting in bad data writes and other unexpected states that the system can't handle. The newer systems might keep running, but that can be just as bad - they'll start getting errors when trying to communicate with the older stuff, likely causing a cascade of failures. Error logs fill up, bad data might be written to databases, filesystems get full, etc. All of these things require a human to troubleshoot and fix manually, so simply turning everything back on after the outage doesn't work. It can take hours or even days to get everything back to normal.

If handling system outages is a high enough priority in the organization, there are ways to deal with these situations. When new systems are put into place, they need to deal gracefully with outages from the older systems. Even the oldest systems can be put into some sort of redundant configuration - one place I worked ran two parallel AS400 systems, and switched back and forth every few months. We knew for sure that we could recover from one of them going out, and the users never knew it was happening. Most importantly, someone high up in the organization has to champion all of this, putting their foot down when someone tries to cut a corner and move forward without the disaster recovery in place.

I suspect Delta will be making some pretty major changes in their IT organization after this fiasco. It won't be easy or quick, though. Whether they stick with it and get it right...well, we'll know when the next power outage hits.

Thursday, July 21, 2016

UNU AI Swarm

I recently learned about the UNU beta site through a post on the QT3 forums.

UNU was created by a company called Unanimous AI. Per their website, "UNANIMOUS A.I. develops technologies for Swarm Intelligence, allowing groups to combine their thoughts and feelings in real-time, to answer questions, make decisions, or just have fun." What that means is that they're making use of the idea that asking a large group of people to answer questions is generally going to lead to the best answer, regardless of how much the individuals know about the subject matter.

The site itself is pretty easy to use. You can participate as a guest at first, or create a free account which allows greater participation. There are various rooms to choose from on topics of all kinds, from sports to politics to investing. Once in a room, there's the usual chat room functionality as well as the ability to ask a question to the room at large. Questions are answered by everyone in the room pulling a "puck" onto the answer they like best, using their mouse as a magnet.
Example question. You can see the "puck" in the upper left being moved around by various people's magnet icons.
Like all Internet chat rooms, the UNU rooms have a low signal-to-noise ratio. Dropping into a random room for a few minutes isn't likely to yield anything particularly interesting, but when there's an organized event asking coherent questions some useful answers can be obtained. The UNU blog has quite a few examples of the swarm picking winners in sports, politics, finance, etc.

Since this is only a beta at the moment, the participation is fairly low. Most rooms are capped at 100 participants, and they rarely fill up even during the peak hours of 8 PM to midnight (US Eastern time). I hope they're able to get through this beta period and scale up, because I think it would be much more interesting to see answers generated from a swarm of a few thousand participants. Even with fairly small groups, though, it's an interesting experiment that deserves a look.

Thursday, June 23, 2016

Kodi Add-On for Trakt.tv Update

I've been updating my customized version of the Kodi add-on for Trakt.tv fairly regularly. Each time the original add-on changes, I have to re-apply my modifications. I finally decided recently that it was time to try to get my changes included in the base add-on.
The first thing I wanted to do was make sure my modifications were completely optional. My updates provide two added features: attempt to scrobble MythTV PVR recordings, and do a Trakt text search by show name if the show can't be found on the first attempt (which was part of my original Crunchyroll integration changes). So I added two new options in the add-on configuration screen, under the Scrobbling section, one for each feature. By default, they'll be disabled. Thus when my additions get pushed out to the general public, nothing will change for anyone unless they specifically enable the new options.
Having tested and committed those changes, I submitted a request to pull my modifications into the base add-on. The maintainer had a few suggestions, which were easy to implement. He also asked me to rebase my changes, which basically means to consolidate all the different updates I've made, so that it looks like a single change from his perspective. That makes sense, so that it's simple to see everything that I'm asking to add in one place.

Unfortunately, this rebase process isn't as simple as it sounds. Git has a rebase command, and I tried to use it against the base add-on branch. But it kept giving me errors that no amount of Google searches explained, so clearly I was doing something wrong. In the end, I finally realized that I was able to simply ignore the error and override it with a forced push to the repository. Generally that's a very bad thing, since you can lose changes that way, but in this case it's what I wanted to do.

Once I got past the learning curve on the rebase command, the rest was fairly simple. The post-rebase changes were broken into two pieces, one for each new feature, and submitted as a pull request. Those features are now part of the main repository, listed as part of the version 3.1.8 update.

It's nice to have these features in the standard distribution for the Kodi add-on for Trakt.tv. I'll still have to make updates to it when something changes in the way Kodi and/or Trakt.tv works, but at least now unrelated changes to the add-on won't require me to re-apply my modifications.

Friday, May 27, 2016

Wireless Headphones for Jogging

My old pair of wireless headphones gave up the ghost a while back. They'd lasted a couple of years, not a great lifetime, but I got good use while they lasted. Time for a new pair.
I've found over the years that I simply cannot use basic earbuds, at least not while moving around. Every type I've tried falls out during any kind of major movement, often just walking, let alone jogging outside or on a treadmill. So when shopping for new headphones, some kind of over-the-ear design is essential for me.

For a long time, I used wired headphones because wireless was just too unreliable. Static, disconnections, etc happened all the time, particularly while running outside. But things have changed in the last 4-5 years, and just about any Bluetooth headset these days provides pretty decent sound. Every once in a while you still run into an area where some kind of interference will cause static or stuttering, but it's rare. And it's so much more convenient not to have to worry about the wire getting caught on something, or reaching far enough to plug into your phone.

After some poking around the internet for reviews, I settled on the Plantronics Backbeat Fit. They're not cheap at a suggested price of $129.99, but Amazon had them for about 2/3 of that price. I got everything I was looking for: wireless, over-the-ear stability, and even a phone holder armband to use when jogging. The sound quality is great, and the battery will last several hours on a full charge.

So I'm all set with the new equipment, which will see heavy use while I'm out jogging around this summer. I'm happy with the performance, and time will tell if they're sturdy enough to last more than a couple of years.

Saturday, April 30, 2016

Less Uninterruptible

Woke up this morning to an unfamiliar beeping noise. My first thought was that it must be time to change a fire alarm battery, but those sound a bit different. Turns out it was the UPS behind my computer desk.
That's UPS as in uninterruptible power supply, not brown delivery trucks. I've had this one for years...maybe 8? 10? I don't remember exactly, and I'm too lazy to go look it up. A good long while, anyway. A decent UPS is a long-term device that you don't even notice is there, ideally. At least, until the power goes out. I had this one connected to just about all my media center electronics. The beeping was because the battery had finally given up the ghost and was no longer holding power.

Originally I got this UPS because the power in my condo would flicker on a fairly regular basis. Not every day, but probably once or twice a month. That doesn't sound like much, but if you've got electronics that are always on (particularly computers), that kind of inconsistency can really mess with the system. Fortunately, that problem has gone away as of a few years ago, when the local electric company upgraded the various power delivery systems in my area. I haven't seen a power flicker since, and full outages are rare as well.

The other major reason for having the UPS was that I would occasionally want to access my home system when I was traveling, and for that it needed to always be on. If there was a power outage, everything would turn off, and there was no one at home to turn it back on. With the UPS, as long as the power outage was a fairly short one (under a half hour or so), everything would keep running. Since I rarely do extended travel any more, this isn't really a concern any more either.

The UPS was also a surge protector, again a very important component for sensitive electronics. Especially during the summer, when thunderstorms are in the area. Everything important is plugged into power strips, though, with their own surge protector functions. Short of a direct lightning strike, which would fry anything regardless of surge protection, it should be pretty safe.

So I think I'll just do without a replacement UPS, at least until something changes that makes it necessary to have one again. I'll find a recycling center where I can take the old one - it's got a big, heavy battery so you don't want to just toss it in the garbage - and stick with basic power strips to power and surge protect my various electronic devices.

Tuesday, April 12, 2016

Miscellaneous Media Center Updates

A few minor changes have hit my media center in the last couple of weeks. Herein, a quick round-up.
Amazon released an update to the Fire TV operating system (5.0.5.1) which blocks the Firestarter application. Firestarter just disappeared overnight, with no explanation or warning messages, which was a very unfriendly-to-the-user action. I tried re-installing it, which silently failed, again with nothing to tell me why. Eventually I found an explanation on the Firestarter issues list, but it was a frustrating experience.

I kind of understand why Amazon would want to block Firestarter. It takes over the home screen of the Fire TV, which means I don't see Amazon's ads. Not that I pay attention to them anyway, of course, but I do understand why they'd care. But there's no good excuse for the terrible user experience that I had from this update. At the very least, they could have some kind of pop-up message, or send me an email, explaining what had happened.

That update wasn't all bad news, though. I was using Firestarter as an easy way to launch applications that didn't show up on the Fire TV main screen (mostly Kodi). The Fire TV is now showing those applications in the Recently Used application list. So I can get by without Firestarter, as long as Amazon doesn't change that behavior.

Another minor update applies to the Trakt.tv Kodi add-on. I had recently expanded the episode lookup code that I use with my MythTV DVR recordings. Part of that change involved making an API call to Trakt for every episode of a show, which is terribly inefficient. Thanks to an update by the maintainer of the trakt.py Python API module, I was able to replace that with a single API call to get all episodes at once. It's still not as good as a real search-by-show-and-episode-name function would be, but it's an improvement.

It'll take a little while for that change to work its way through the various levels of code maintenance. The main branch of the trakt.py module needs to be updated, then the script.module.trakt Kodi add-on package, plus my own modified version of the Trakt add-on. Eventually it'll all be in place.