Random Disconnected Diatribes of a p&p Documentation Engineer
So I'm still fighting to keep Media Center as the main TV system here at chez Derbyshire, despite the veritable aggro it seems to spew out at regular intervals. On top of the increasing vagueness of the program categorization in the guide (it seems to think that "The Only Way Is Essex" is a documentary), the habit of the TV tuners to go walkabout when asked to do three things at once causes huge disruption to my wife's carefully crafted soap recording schedule.
OK, so maybe the hardware is aging a little, and the TV tuner card isn't the best in the world, but I've yet to find a decent compact and quiet Media Center box to replace it. So once again this week I've been plying it with more custom kludge software in an attempt to stay ahead of the aggravation curve. So, yes, it's yet another post about how to manage Media Center...
I've tried using services that regularly reboot the machine on a fixed schedule, or that just restart hardware drivers and services, but none seemed to be the right solution. Both tend to fire up at inappropriate times (usually in the middle of a recording or when you're trying to watch something it did manage to record), and so I finally decided that a notification mechanism was the optimum answer.
Failures are not that common anyway, occurring generally a couple of times a month, so rebooting every night is overkill while rebooting once a week means an error might go on for five or six days (or until you reboot manually). I considered a system of restarting the computer only when an error is detected, but then you're back to the rebooting at inappropriate times problem - often it will continue to record most things when only one tuner has stopped working.
And, anyway, how do I detect when an error has occurred? The obvious way is to look in the Windows Event Logs. The log named Media Center (in the Applications and Services section) helpfully contains Error events when a tuner fails, and meaningful Warning events when a program fails to be recorded correctly. And I already have a utility that can read event logs, so I'm half way there.
So I set to and created a modified version of the Server Monitor service I use to monitor my main network servers by removing all of the unnecessary crud and adding a capability to specify three pairs of values for the event source name and the partial text of an event message that the service will search for in the logs. The service already supports running scripts, external programs, and sending email messages. It also writes its own events to the Application log so that you can set up Scheduled Tasks that run in the context of a specified user account (the service needs to run under the Local System account). This means that you can use batch files kicked off by an event-driven Scheduled Task to do things such as closing and restarting the Media Center UI.
Initially I played with firing off a script from the service to reboot the computer using the shutdown command, but (as noted above) it's not an ideal solution unless you need to be away from the house for a while and you need Media Center to look after itself. Instead I set it up to search twice a day for new events in the Media Center log with the source Recording or ehRecvr, and containing things like "failure" and "not recorded" in the error message, and to send an email listing all of the new warnings and errors.
You'll need an SMTP server to actually send the emails. I set up my internal IIS 6.0 SMTP Service that sends emails from the various services and devices on my network (such as UPSs, the NAS, and the server monitor services) to allow relaying for the Media Center machine, or you can probably relay through your own email provider (such as Hotmail) instead.
So far it's worked well. You can look at the recording history within the Media Center ten-foot interface and see if there really is a problem, and reboot from the Settings section of the home screen when required. All you need is a smartphone or tablet by your side that can receive emails, and you'll never need to leave your armchair again.
However, deleting the history entries in Media Center doesn't seem to delete them from the Media Center log file - I guess that Media Center just listens for new events and stores them in its own database. To prevent being repeatedly reminded of old events after restarting the computer I added a configuration setting to the service that can be set to force it to ignore any existing events. Alternatively, you can simply clear the Media Center log when you reboot the machine.
If you want to access Windows Event Logs from a remote machine, such as one that has administrative privileges on a Media Center box that's running under a user account, you'll probably need to enable the inbound Windows Firewall rules for "Remote Event Log Management" (click the Advanced link in the Windows Firewall dialog or open "Widows Firewall with Advanced Security" from the Start menu).
You can download the service I created for free, including the Visual Studio 2010 source code, from here if you want to give it a try - and maybe even adapt it to suit your own requirements. There's no limitations on how you use the code, and there's loads of configuration settings so it might be useful in other scenarios as well.
But be ready for your partner to suddenly mention in the middle of a conversation that they "just got an email from the TV"...
One of the great things about being a technology pessimist is that you don't suffer that sinking feeling when something doesn't work as expected. And, of course, you get to experience a nice ripple of surprised elation when stuff actually does work as it's supposed to. This week I've experienced a roughly equal mixture of both.
I've rambled on in the past about the rather nice Dell Latitude E4300 that's been my main portable technology plaything over the last four years or so. It's got 4 gig of memory, a reasonably fast CPU, plenty of ports for my legacy peripherals, a superb matte screen with LED backlight, and all of this lives in a rather attractive metallic red case. And it's amazingly light and compact as well – easily the best laptop I've ever owned.
However, a constant stream of bleeding-edge pre-release software and myriad updates to the underlying Vista O/S (yes, I'm still a satisfied Vista user on some old kit) has taken its toll. Several things don't work very well, and it seems to spend the first half an hour of every day trying to collect all the wayward ones and zeros into some semblance of order - instead of doing anything useful such as opening my email inbox.
So I decided to experiment with the shiny new Windows 8 to see if I can live with it on a non-touch screen. I've been using it on the Surface RT that arrived a couple of weeks ago and I actually quite like it. In fact I'm writing this post on it right now. I'm also due to receive a super-duper touchy-feely ASUS laptop from work any day now, which will be great for collecting greasy fingerprints - and even for connecting to the corporate big iron when I need to do some internally-connected stuff.
So why not see if I can frighten the old Dell back to life by installing a scary new O/S? Or, even better, see if I can give it a whole new lease of life, like I did by upgrading an old XPS laptop to Windows 7 some while back. Mind you, there seemed no point in putting all this effort into it when the hard drive was probably one of the root causes of the arthritic performance, so before anything else I ordered a 128 gig SSD to replace it. The nice people at Crucial even do a proper upgrade kit for the E4300, so the hardware installation bit was only a ten minute job – including blowing the dust out of the innards after I took all the wrong panels off before I read the instructions.
After that installing Windows 8 was a breeze, and the change in performance is startling. It boots in less than ten seconds, and loads applications like they were already running in another window. Amazing. I've always been a bit reticent about SSDs after reading reports about doubtful reliability with the early ones, but it seems that even some parts of Windows Azure datacenters use them to maximize performance, so I guess they figured out how to make them more reliable.
It wasn't long before I'd got Office 2013, Visual Studio 2012, and all the other bits and pieces I use for my daily bread-winning tasks installed as well, and by now I was almost in ecstasy as the constant ripples of surprised elation overwhelmed my technological pessimism. Until I remembered why I'd never upgraded this machine to Windows 7 before – anything later than Vista must have BitLocker turned on to be allowed onto the corporate network.
But after some firkling in the BIOS I discovered a previously undiscovered TPM chip, and figured that maybe I could get BitLocker to work on this machine. It turned on OK, and quite happily encrypted my drive. However, every third reboot produced an error that "a compatible TPM module was not found” and I had to enter the recovery key (which is 48 characters long) to get it working. By teatime I'd decided that enough was enough, and turned BitLocker off again. It only took three hours to unencrypt the drive, but at least I still had a working setup.
So it seems that this machine is destined to never see CorpNet again, even if its memory will live long in the Active Directory Users and Computers list as a tribute to many years' faithful service. I just hope the new laptop arrives before I need to get access again, though I suppose I can just drop the old hard disk with Vista on it into the Dell if needs be.
And because I won't be joining it back to the corporate domain, I decided I might as well join it to my own domain here in my remote home/office. That way it will pick up all the domain rules and configuration settings, including using my own Windows Server Update Services (WSUS) server instead of going out to Windows Update each time.
And, just to balance out the pessimism-based elation/disappointment ratio, all I got from the Windows Update dialog was the incredibly useful "Error 800b0001” message. A brief Binging revealed that the WSUS server needed an application of the KB 2720211 patch, which several people reckoned would fix the problem. Oh no, it doesn't. You also need the KB 2734608 patch, which openly advertises that it fixes the problem with talking to the new "hardened” Windows Update client in Windows 8.
So at last I have what feels and looks like a new laptop, and all I need to do now is learn the keyboard equivalents of the proddy-finger actions. I quickly figured that Windows key + Q gets you to the nearest thing to a Start menu - the Search box where you can find and start all your regular programs. And I pinned the Control Panel widget to my Start (Home?) screen, along with all the applications I use most of the time, just to make life easier.
You even get a new game in Windows 8 - shuffling the start screen tiles around to get them in the order you want is just like playing one of those old picture tile slider puzzles. You have to plan four or five moves ahead or they all shuffle around randomly when you come to move the last one, and you have to start all over again.
And I guess that, if by some remote chance you're still here, you'll now be wondering about the title of this post. What I can't figure is why, when it's to set to automatically install updates, my WSUS server didn't automatically install the updates that make it to work with Windows 8. It turns out that they aren't actually on Windows Update. They are optional service updates that can prevent WSUS from distributing any custom updates you might have created. But it would have been nice to have been warned about it. Seems you only find out when you have the same problem as me, and search the web for an answer. Or if you are interested enough in WSUS to sign up to some mailing list.
But perhaps it's a good thing that everything didn't go right at the first attempt. I'm not sure my constitution could cope with an excess of surprised elation ripples at my time of life...
Why would you want to use a "Big Data" solution? It's a question that we've been trying to answer in the first chapter of our forthcoming p&p guide to Windows Azure HDInsight. For a long while, everything we found on the web and in the original HDInsight docs on the website talked just about the volume and unstructured nature of the data as the justification.
Meanwhile the docs and presentations from Hortonworks (who created the Hadoop implementation behind HDInsight), and existing books about Big Data, all have comparison tables for a relational database and Hadoop/HDFS. And all of these concentrate on the differences in data volume, disk write speed, handling unstructured data formats, the point at which a schema is applied to the data, and how query processing is distributed.
OK, so this is valid and useful information, but it all comes back to the suggestion that you should choose a Big Data solution such as HDInsight only when a relational database just can't cut it. You know how it is - your boss just sent you 20 Petabytes of data as text strings and he's happy to wait till next Tuesday for an answer to his question. This probably happens to lots of people every week.
But when you really start to think about it, and talk to people who actually know about enterprise databases, data warehouse systems, and BI (Hi, Graeme) you discover that almost anything real people want to do is most likely perfectly possible using the kit that's already running in their datacenter. SQL Server Parallel Data Warehouse (PDW) can cope with Terabytes of data, which realistically is all that most people will have. Let's face it, the total size of the census data for the whole of the U.S. is only a few hundred GB.
And the fact that Hadoop "moves the processing to the data instead of moving the data to the database engine" doesn't mean that much if the database has fibre connections to the data store. Yes, the fact that Hadoop does it as distributed parallel tasks might speed up queries, but PDW is built to do that, and there's typically no shortage of cores in modern processors. I'll accept that you need some serious hardware for SQL Server and PDW if you are doing anything more than pretending to be a DBA, but for most organizations that already do proper BI this is pretty much the case.
So, like many people, I was starting to wonder if this Big Data thing was just another fad that would be gone in a year's time. Is it actually "Big Hype", or even an updated version of the famous old IBM misquote: "I think there is a world market for maybe five Big Data systems."
Except until I watched a presentation by Microsoft technical fellow Dave Campbell. The point he made is that it's not really about any of the comparisons related to volume, or structure, or parallel processing, or distributed storage. These are just technical details. What it's really about is getting insights from data. Which is probably why they called it HDInsight.
When your mind is wandering while you're in the shower or eating your cornflakes, and you suddenly get hit by inspiration about some question you might be able to answer by querying all that data you keep collecting, you've discovered what Big Data is all about. If you need to go and see your data architect, DBA, or data steward to implement your inspiration they'll tell you it will take two weeks to design the query, a week to update the data models, three days to cleanse and validate the source data, and a day to set up the report. And it's perfectly possible that, after all this, the report won't show anything useful. Or it will show that you should have asked a different question.
If you are a Douglas Adams fan, no doubt you are already mumbling "Deep Thought" to yourself.
In the presentation Dave talked about how you simply fire up a new cluster in HDInsight, load the data, and ask the question. If the answer is useful, then you know what query you need to get your DBA to create in your data warehouse. If the answer isn't useful, but suggests that a different question might be interesting, then you go ahead and ask that question. And if there are no questions that provide useful answers, then the only thing you've lost is a few hours of your time and the hourly cost of the "pay only for what you use" Windows Azure HDInsight cluster.
And it's fairly safe to assume there are more than five organizations in the world that would find this useful...
So we've gone from a tabletless state to a twin fondleslab-equipped household in a little under two weeks. My wife no longer has to squint at Facebook pages containing 4 point text on a tiny smartphone screen, and I don't have to wait for Windows to get started on my "downstairs laptop" when I want to check my email. Technological nirvana perhaps?
Normally, I try to standardize our household purchases. While we don't tend to wear matching shell suits (at least, not since the late 80's), I did insist that she use a Windows 7 computer in her office so I would be able to fix it. And we both have the same HTC phone so that she can use mine after hers falls onto the tiled floor, or I can use hers after I drop mine in the bath.
However, things don't seem to have worked out quite that way with the fondleslabs. She's familiar with Android on the phone, and so when she decided that the cats could buy her a tablet for Mother's Day it was inevitable that it would be a Google Nexus 7. It's had some of the best reviews of the Android-powered ones, and is about the right size - some friends have 10" iPads but she reckoned they were a bit unwieldy.
And then, out of the blue just a week later, our friendly post lady turned up with my company-issued Windows Surface RT complete with the cheaper touch keyboard. First impressions are that it's a really neat piece of kit with a glorious screen, and it's surprisingly fast for a Windows O/S equipped mobile device.
So, as we've been dual-tabletized for a couple of weeks now, what's the verdict? Obviously, as a 'Softie I need to be a bit careful here, but it's interesting to compare the two in several areas. In particular what my better half thinks of the two, based on the things she most uses a tablet for - email, Facebook, web browsing, YouTube, etc.
In terms of speed there seems to be nothing between them. Both are superbly responsive, though the Surface does seem to take a bit longer opening some applications. But strangely, perhaps because of the position of the control buttons, she instinctively uses the Nexus in portrait mode and the Surface in landscape mode; which makes the text larger on the Surface because the page is wider, but you have to scroll more. Yes, you can rotate both devices and stretch the screen to enlarge the text, but the Surface just naturally seems to be better for browsing complex web pages.
However, figuring out where to go and what to do when she suddenly ends up on the Windows desktop is confusing, though the hardware button below the screen takes you straight back to the tiled intro screen. What does seem odd to her is that you need to swipe on nothing at the edge of the screen to get the options menu, and several tasks require swiping from the top or bottom - again there is no visible "tab" to indicate this. On the Nexus there's either a tab at the edge of the screen or a button displayed in the status bar.
Navigating within applications on the Surface also seems harder sometimes, especially when going back to a previous screen. The Nexus has a "back" button in the status bar, but many Surface apps have a hidden "back" button on the page that only shows when you touch the screen. So figuring out how to stop playback of a music track on the Surface, for example, takes some getting used to.
One area where the Surface does score well with my wife is the sound quality through the built-in speaker; it seems clearer and more rich than on the Nexus. The Surface also has an onscreen keyboard that feels more usable because of the size in the default landscape mode, but she hates the clip-on physical Surface keyboard with its lack of feedback and floppiness. And I find that, unlike a laptop, it's almost impossible to use the Surface on your lap with the physical keyboard. The screen angle with the fold-out stand seems wrong when you put it on the table or a desk.
After playing with both, my wife has gravitated to the Nexus for the familiarity of the applications and navigation (it's much like her HTC phone), and because it seems to be easier and more natural to hold in one hand while prodding and swiping with the other. She also seems to prefer the default portrait orientation - perhaps, again, because it is similar to the phone. But she's impressed with the Surface, especially apps such as the weather (much better than the Nexus one) and the availability of a proper back-facing camera (the Nexus only has a webcam).
Which is the better one as far as I'm concerned? I like the Nexus because it's neat and handy, and quite happily integrates with our own private email providers. But I hate it because it doesn't recognize the format of all our stored music and video files (WMA and WMV). I suppose this isn't surprising, and probably I should have used MP3 and MPEG when I ripped and stored them. The Surface, of course, does recognize WMA and WMV.
But what's won me over to the Surface is Windows 8. I never thought I'd like it (and maybe I won't so much on a non-touch laptop or desktop when I get around to upgrading), but on the tablet it's really good. The tiled interface is perfect, especially after a bit or reorganization around the apps I use most often. And, best of all, I can drop into the desktop where everything is familiar. If I want, I can fiddle with settings in the same way as all the other computers in our house.
Even better, it does proper networking with my Windows domain through the wireless router. By setting it up with a local account rather than a Microsoft (Live ID) account I can access any of the read-only shares on the network where we store music and video, so copying them onto the machine was easy compared to plugging the Nexus into a USB port of another computer. And I can save files I create in Word (such as these rambling blog posts) to a shared folder on the server that is backed up each night.
What's clear, I guess, is that the Surface is really a touch-enabled Windows laptop without a keyboard; and almost a laptop when you clip on the touch keyboard. OK, so you can't install standard Windows applications, but it has everything we typically use for non-work activities already installed. Plus Word, which to me is the most useful of all. The only real limitation I've found so far is that, unlike my Android phone, it can't connect to Microsoft corporate email servers because it doesn't meet the remote security requirements.
So, the final decision? With the very limited range of uses my wife has for the device, the Nexus seems to do it all except handle her favorite music videos that are in WMV format. And it's half the price of the Surface. Yet, after using the Surface for a while, I find the Nexus awkward and I miss having the familiarity and power of real Windows underneath. It's like I know what's happening with the Surface, even if I'm still struggling with some parts of the new tiled interface, whereas I'm never quite sure what the Nexus is doing.
It looks very much as though I'll be Surfacing the web, while my wife is sitting Nexus me...