Su Tech Ennui

Monday, January 21, 2008

Good customer service experience with Netflix

The overall theme of this blog is that there's really no excuse for crap software and the needlessly wasted hours we spend working around it. So I felt a blog post coming on this morning when I discovered that Netflix "Watch Now" wasn't working on my laptop, and I had spent several hours researching the problem on the net, and of course on the Netflix web site.

Getting nowhere, I finally gave up and tried the last resort of all techies - calling the support line (something you never expect to work...) and of course, what should happen but an hour and a quarter later I hung up the phone, tired of waiting for someone to pick up.

Well, while researching the problem, I had accidentally come across the blog of Netflix's CIO, and I'd noticed that a couple of people had posted requests there for help with netflix problems and appeared to have received satisfactory help. So somewhat apologetically I did the same because I'd pretty much spent the day on this problem (my day off work - MLK) and was getting somewhat frustrated.

I was much surprised and delighted when later that afternoon Netflix called me and a very competant young man, Matthew, worked out exactly what my problem was and pointed me at the solution.

Good work, and credit due to Netflix.

Now, for anyone else who bought the Walmart "Black Friday" Acer portable (model 5315-2153) who finds that they get a blank screen when watching Netflix Watch Instantly (and for the benefit of other Googlers looking for a solution, 'black screen' when watching 'Netflix Watch Now'), here's the cause and the solution:

At some point you've updated your Intel 965 Chipset driver, and picked up the October 2007 one. This breaks Watch instantly and apparently some other things such as Second Life!

A later driver (10th Jan 2008) can be found as follows:

Start with Googleing for upgrade intel 965 driver acer aspire 5315 which will take you to an Intel support page.

Select the drop-downs: graphics/laptop graphics controllers/965 express chipset family/advanced windows users

This takes you to a form for email requests - but we're only interested in the link to "download" which is above the form.

Select "Windows vista home basic 32 bit", and download "Intel graphics
media accelerator driver for windows vista 32 (exe)
"

Running this exe (as Administrator) installs smoothly, and on reboot, Netflix Watch Instantly is now working just fine.

Kudos to netflix for knowing the problem; minus several thousand brownie points to Intel (and Acer) for releasing a driver update that breaks stuff.


G
PS Matthew explained that the delays in answering the support line were uncharacteristic and due to a huge influx of new folks all trying Watch Instantly for the first time.

Friday, December 7, 2007

Get on the train!

I'm beta-testing a new Google service at the moment which isn't all that well known yet: Grand Central. It's a web-based voicemail system and like many of the VOIP services on the net, it lets you select a phone number from almost anywhere in the US - you're not limited to your local calling area.

When I picked my number, I started with a few words that might make good phone numbers when spelled out, and worked out the area code that corresponds to the first 3 digits - there aren't that many area codes out there that make sense as words so I was lucky when I found that "TOA" mapped to a valid one. Then they gave me a choice of a couple of dozen numbers, so I narrowed that list down to ones which started with an exchange code beginning with '5' so that my number would then be dialable as "TOAL nnnnnn". From there it was trivial to feed the handful of proferred numbers into a "phone to word" lookup program, and find which of them made a sensible word! Bingo! - a personalised phone number for free! :-)

The GC service sports some pretty nice features; the only downside is that it looks like it'll be free only during the beta test - that wasn't obvious until *after* I'd signed up. So there's a serious risk I might get hooked on this stuff (or have too many people using my new number to be willing to cancel it after the beta) and so end up paying for yet another phone line.

Still, it is nice. Really nice. Sign up at their web site - I put my name on the waiting list around 11pm one evening and had an invitation to join in my mailbox by midnight. Once you're in, it's like the early days of GMail where you get 10 invitations to pass on to friends, and they in turn get 10 more, ad infinitum.

G

Tuesday, December 4, 2007

Why Linux isn't ready for the desktop

My Linux at work (OpenSuSE 10.3) stopped working for no apparent reason the other day - well, not entirely, but it wouldn't start X-Windows and gave me the totally content-free error message "The display server has been shut down about 6 times in the last 90 seconds. It is likely that something bad is going on."

This was a major problem because I was running another server on that system under vmware, and when I tried to start up the virtual machine from the command-line instead of the usual GUI, that failed too. (I suspect it never had worked, I just hadn't tried it before now.)

Fortunately I have some experience of unix and after much net research I finally found the solution:

touch /var/cache/fontconfig/stamp
/usr/bin/fc-cache -f

but can you imagine what would happen if a typical home user hit a problem like that? It would be "Honey, where's the WinXP install disk?"...

As much as I love unix, it just isn't ready for prime time on the desktop. Which is why I do all my own work from the command-line still...

G

Monday, November 19, 2007

like a phoenix, risen from the ashes...

This post is dedicated to anyone Googling for "overheating problems for HP Pavilion dv4000"...

For a couple of weeks now, my HP portable has been getting very hot underneath at the back, at which point it unceremoniously powers down. I searched for other people with the same problem and found many.

Well, I'm delighted to report that the problem is trivial to fix, and cheaply too!

The idiots at HP designed the portable so that the intake to the cooling fan is on the underside of the machine, so if you put it down on a bed, or a particularly plush carpet, it blocks. The fan also gets blocked if - like me - you've had it for over a year, and have never once blown out the dust bunnies!

So that's the fix... just grab a can of compressed air (or your home vacuum) and blow through the inlet and outlet cooling vents. The outlet is at the rear left as you face the keyboard, and the inlet is on the underside about three inches in from the back.

Now my machine is nice and cool again, and I saved myself the cost of a new portable :-) (Although truth be told, I did actually buy myself one of the Walmart pre-black-friday specials for about $350 last week, thinking I was going to be needing a backup soon...)

By the way the Walmart machine is quite nice, though there are odd things about it that you have to do a fair bit of net.homework to master. Also it's not a good choice if you want a Linux portable. If you do, put vmware on it and get your linux fix that way for now.

Circuit City was selling a similar machine this morning for $270. At this rate we'll be hitting One Laptop Per Child prices with regular portables soon :-)


G

Sunday, November 4, 2007

Quick hack #17 in a series of 42: inlining LaTeX "\newcommand" macros

A poster on the TeXhax mailing list asked how he could pre-process his LaTeX file to remove his own macros (created using \newcommand) because his typesetter for some reason does not allow user-defined macros. It turns out that TeX/LaTeX doesn't have the ability to output the de-macroed source, so I hacked up a macro processor in C that's compatible with LaTeX's syntax and leaves anything it doesn't recognise untouched.

I was quite surprised how hard it was to get right. It took me about 3 hours to write rather than the 30 minutes I expected, and here's why: in previous code where I've needed to do macro expansion, I've done it as a filter on reading the source stream, and as a result, if a macro definition included a call to another macro, it was trivially expanded on the fly before being fed into the new definition. This implementation falls out in the wash with no explicit effort, and for the sort of things I've needed it for in the past (such as an alias mechanism for a command-line shell, or for a cpp-like source-code preprocessor) it's actually what you want, because aliases chain correctly when redefined (eg alias ls = ls -l - you don't need to worry if ls is already an alias or not).

However for TeX's mechanism, the generated text is then reprocessed for recursive macro expansion. This is useful in TeX because it lets you use a macro to generate other macros, but it does complicate the business of writing the macro expansion code.

The solution I used was one that I had first come across in 1977 in an implementation of the POP2 language, called "Wonderpop". Wonderpop treated its input stream as a list like any other list. The last element of the list was a function call to fetch data from the input file (or console), and if that was all that was left in the list, then it was just like normal I/O ... but if you joined some other elements in front of the list, the next time you read from it, you'ld get those elements before you'ld get the remaining data in the source file. In C terms it was something like ungetc(), but far more powerful because the list could be manipulated. As well as pushing text back on the head of the input stream, you could pull out the Nth item from the input stream, and if that item had not been read yet, the next N items from the input stream would be fetched and converted to list cells, and the object at the end of the list would be the lazy evaluation function which would read the rest of the stream only when needed.

In fact, I believe you could append items to the end of these lists (though I hadn't ever done that myself) - in which case, once the function to fetch new data had exhausted the real file, it would return items from the appended list elements.

Wonderpop made great use of this modifiable input stream facility, by allowing the user to modify PROGLIST, which was a stream containing the source of your program itself. By using syntax-directed macros, you could add new keywords to the language which were implemented by manipulating your source code as a list. For example, if the base language only supported LOOP/IF ... BREAK/ENDIF, you could build your own implementation of WHILE or FOR on top of it. This made Wonderpop into a user-extensible language for very little added complexity in the compiler. Very cool.

So a simple version of the POP2 model was what I used for this TeX-like preprocessor: it has a large buffer in front of the actual stream object, to which you can push data back and have it be re-read before you get to the following data from stdin. And of course to avoid multiple buffer copies (shunting up data after a read if you didn't want your array to grow indefinitely), it uses a cyclic buffer. One advantage of a cyclic buffer that I hadn't thought of before I started implementing the code was that you could push back items to either end of the buffer, so they would be read either instantly or after the current expansion was finished. Turned out to be useful and necessary.

Being a quick hack so that the guy could get his document printed, I haven't made it ultra robust yet, but with the exception of a couple of deliberate shortcuts that I already know about, I think the code turned out pretty nicely. Here it is: http://www.gtoal.com/src/newcommand/newcommand.c.html

G

Saturday, November 3, 2007

Lesser artists borrow; great artists steal.


Remind you of anyone?

I was reading this post by Adam Finley claiming that a 1948 Startling Comics cover was the inspiration for Bender in the wonderful Futurama cartoon, and it brought to mind a children's toy my wife keeps in her jewelry box... she picked this up in a packet of Fritos somewhere around 1968 give or take a year. About the same time that Matt Groening would be in his formative years, given that he's about the same age as us. I think it's much more likely that the youthful Groening had a penchant for potato chips than a collection of 1940's comics!

The robot's carrying a spanner, fer gossake! How much more Bender-like can you get? Don't you think it's a stronger resemblance than the more he-man-ly robot from Startling #49..?

I can easily imagine that the image stuck in Groening's mind without him explicitly remembering that he'd seen it elsewhere.

It's a cool toy. Fifty bucks and it's yours, Matt, or I'll trade you for a signed Bender drawing ;-)

G

Saturday, October 27, 2007

Myer and Sutherland's Great Wheel of Reincarnation


Back in the early 70's, Myer & Sutherland (the latter of Evans & Sutherland high-end graphics fame) suggested that trends in graphics workstations (and by extension, computing in general) followed the 'great wheel of reincarnation' principle; an example being the zugzwang between diskless workstations and local storage, which in my lifetime has gone back and forth I think about three times. (We're currently in the 'migrating away from local storage' phase, with both data files and applications moving to some generic cloud on the net.)
I was reminded of this when about a week ago I was given access to a compute cluster through my job - a farm of about 6000 CPUs (4 per chip and 1 chip per box) of which I can use up to 512 CPUs at a time, dedicated to me alone, for up to 48 hours. Generally the wait to run a job is less than a day. Pretty damned good fun, I can tell you.
Anyway, back to our story... I won't bore you with the details, but the essence of it is that this cluster is being run extremely similarly to the way that mainframes were run in the 60's; batch queues, no interactive work, and no multitasking.
For those of you who've grown up with Moore's Law (probably better called Moore's Postulate, but who am I to argue), we're starting to wonder if it will bottom out soon as there has to be a limit to the feature size and speed you can get on a chip as we finally approach atomic levels - we've improved performance until now by increasing CPU speed, and in the last few years, by trading huge RAMs for CPU power in our algorithms, and by trading expanding disk storage for CPU (eg Rainbow Tables)... but to continue doubling space X time perfomance every 18 months into the future, I'm convinced (and have thought this for some years now) that the next big step will have to be more CPU cores. I don't mean just 4 or 8 on a chip, I mean desktops where the owners are bragging 'Yeah, I've got 16K in mine' and they're referring to CPUs, not memory.
Which brings us back to my original subject: supercomputing using multiple desktop computers as a replacement for the mainframes of yore. If the Texas supercomputer cluster is anything to judge the state of the art by, there needs to be a major wakeup call in terms of operating systems, multitasking, multi-user use and interactive response if the desktop systems of ten years from now are to be built using what is basically the architecture of today's supercomputer clusters.
In other words, we need to parallel the progress from 1960's mainframes through 1970's multiuser systems, ending up with 1980's desktops which were as powerful as the mainframes of the 60's and as usable as the OS's of the 70's.
It's time for Myer and Sutherland's Great Wheel of Reincarnation to go round again.