Rant: Printers

October 4th, 2011

Printers – second only to fax machines in the “technology that gives me hassle” category.

I needed to make a quick copy of a receipt, so I scanned it in then selected “Print”. A warning popped up saying that magenta was very low. This wasn’t a problem, because I only needed a quick black and white copy. I buried down in the printer settings, set it to grayscale then hit the button to start printing. The printer immediately jumped into action.

When I say “action”, I don’t mean actually printing. To be honest, I’m not really sure what it’s doing at this point. I think it’s cleaning the heads in preparation to print. The clunks and whirs coming from the machine indicate some kind of movement in the head vicinity, but it’s not reached for paper yet.

After a minute, it goes quiet. Too quiet. I lean around to see if anything’s flashing, and search the desktop for hints about what’s going on, but there’s nothing. Before I start pushing buttons, it suddenly starts moving again.

Two minutes in, and it still hasn’t reached for paper. I’m starting to wonder if that’s what some of the whirring is — maybe the paper is stuck or out of reach, but I don’t want to interrupt it at this point because for all I know, it could be about to spit out the page.

After nearly three minutes of teasing, the whirs and clunks subside and a message box pops up on the screen. During all this activity, the last bit of magenta ink has mysteriously evaporated, so it can’t possibly print my grayscale image, even though the two black cartridges are brand new.

Oh well, about time I inserted that replacement cartridge I bought a while ago. The box had been left on my bedside table by dearest daughter, and it had been living there for a couple of weeks. I went to fetch it, only to find it’s been moved. It’s literally been there for weeks, up until the moment I actually need it, and now I’m out of luck.

Back at the computer, I’m sure there must be a way of convincing it to continue printing in black and white. Sure enough, the empty ink error goes on to say that if I press continue, it will attempt to print without the magenta, but threatens me with damage to the printer. I’m a little dubious of this claim, but seeing as the image doesn’t contain any magenta, it’s not a problem. What is a problem is that there’s no continue button: the dialog has a “buy ink” button and a “cancel printing” button only. Maybe it means the button on the front of the printer with the flashing light? I press it, and the whirring starts again…

…then stops. And nothing happens. The printer queue window tells me my document is printing, but it’s telling lies.

Maybe the age old fix for everything will work. I turn the printer off, then on again. The printer whirs a bit once more, then claims to be ready for action. Unfortunately, turning the printer off caused the print job to be cancelled and deleted, so I track down the scanned image and select print again, making sure it’s still set to grayscale and all that. More whirring, then nothing.

After much swearing and threats, I resume the hunt for the replacement cartridges. I eventually find the box hidden at the back of the bathroom drawer. Obvious, really, when you think about it. I replace the magenta cartridge and try again. Still no luck.

I unplug the printer and reconnect it using one of the USB ports on the rear of the machine. I have a thumb drive I use for ReadyBoost, and Windows was only happy to use it when I used a rear USB port rather than one of the front ones. I’m not sure why there’s a difference, but it was worth a shot. Nothing.

It’s giving me a warning that the yellow ink is also low, so I try replacing that one, too. We’re long past the point of things making sense now. Still nothing.

In an act of half desperation and half clicking to do something while wondering what to try next, I click the troubleshoot button in the printer settings. Windows sits and thinks for a while, then decides the USB driver is at fault and restarts it, declaring the issue fixed. Yeah, right, says I, clicking Print again before watching the printer pick up a piece of paper and print out my document. Wait, what? The troubleshoot button actually troubleshot and fixed an issue? Apparently so, and that’s the first time I’ve ever seen it do that.

It’s times like this I wish I still had my old Canon BJ10ex. It’s relatively slow at the actual printing, and black and white only, but I seem to remember a whole bunch less lead-in time and general messing around.

Rant: Wells Fargo

August 2nd, 2011

A few months ago, I bought a couple of items using a 0% interest credit plan the store was offering. The credit was provided by Wells Fargo. Everything went through ok.

Shortly afterwards, I started receiving emails with someone else’s name but to my email address, encouraging me to sign into my account on the Wells Fargo online banking site. I don’t have online banking, just a store credit card, and that’s handled through a different site. I figured I should let them know. It’s probably just a simple data entry error, but might be a symptom of something more serious. In the small print at the bottom of the email, I found the line

Wells Fargo Online® customers, Sign On to your secure banking session and click ‘Contact Us’.
If you are not a Wells Fargo Online customer, contact us here.

As I’m not a Wells Fargo Online customer, I clicked “contact us here”. It redirected me to a customer service page, where it listed the email contacts as

  • Online Banking Customer?
    Sign On to send a secure email.
  • Not an Online Banking customer?
    Enroll Now to send a secure email.
Basically, there’s no way to contact them by email if you’re not a customer. Feel free to attempt calling the phone line or mail a letter.

Rant: Verizon

May 13th, 2011

If I buy a new phone before 10am, and pay extra for overnight delivery, don’t email me the next day to tell me order has been received and will be dispatched soon, estimating delivery as next week.

I’d be a little annoyed if you tried that.

Rant: Adobe

May 13th, 2011

We had a copy of Photoshop CS2 for Windows, and wanted to upgrade to Photoshop CS5 for Mac. Not an incredibly unusual event, I would imagine.

Adobe calls this a “cross-platform upgrade”. There’s a variation on this theme called a platform-switch  - switching platform on the same version with no upgrade; a process that seems to involve faxing promises that you won’t use the previous platform anymore. But no, it’s the cross-platform upgrade I’m after. Read the rest of this entry »

Missing MSVCR80.DLL, MSVCM80.DLL, MSVCP80.DLL

May 27th, 2010

I ran into a problem yesterday that took a few hours to decipher. I thought I’d share it here, in case Google manages to lead someone with a similar problem this way.

I made a minor change to a DLL in a program I’ve been working on and distributed it to the end users. The user that had requested the fix was happy with the result, and everything was fine for a couple of hours. Then I received an email from another user complaining the program was failing to load, reporting the error

System.IO.FileLoadException: Could not load file or assembly 'MyLIB, Version=1.0.3798.19982, Culture=neutral, PublicKeyToken=null' or one of its dependencies. This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem. (Exception from HRESULT: 0x800736B1)

I’d seen this type of error before; typically it means MyLIB.dll requires another DLL that isn’t present. I checked his program folder, but everything was present – no missing DLLs. Tried re-patching and tried re-installing, and still no luck. I ran the dependency walker to see exactly what it was that it was missing. Turns out to be MSVCR80.DLL, MSVCM80.DLL and MSVCP80.DLL – the MS Visual C++ runtime.

Wait, what?

That didn’t make any sense, as he’d had the program running happily a few hours before. I tried re-installing the runtime, but that didn’t seem to help. Much scratching of heads and gnashing of teeth followed.

It turns out that the new build of MyLIB.DLL that I’d built had tied itself to the specific runtime version I had on my PC – 8.0.50727.4053. These runtime DLLs were installing into C:\Windows\WinSxS, where different versions of the same DLLs live side by side in an uneasy truce. I don’t pretend to fully understand what’s going on in there, but anyway. The different versions of runtimes were in different subfolders, the names of which contained the version number. When we checked the machine that the program was failing to run on, the .4053 version wasn’t there. We had to find that specific C++ redistributable version on microsoft.com as install it, which fixed the problem. The version of the runtime I had tried reinstalling earlier was an older version. It was then I realized that I have a new PC, and this is the first time I’ve rebuilt that particular DLL on this machine. Those with older machines were less likely to have the newer runtime installed.

Many sources on the interwebbings were simply saying “get the dll from here, and stick it in your Windows\System32 directory”. This is exactly wrong in this instance.

It would be nice if I could find an option in the project build configuration that says “Use runtime version X or later”, rather than it requiring the specific version it finds on my machine.

ImageList and .NET leaks

April 14th, 2010

Even with garbage-collected managed memory systems like those found in C#/.NET applications still suffer from leaks.

Most of the time, the “leak” is an object that has a reference to it being held by a static object. These can be a pain to identify, and near impossible in a large application without the aid of additional memory tracking tools. SciTech’s .NET Memory Profiler software is such a tool, and has proven itself invaluable in detecting these problems.

It surprises me how often leaks come back to (mis)use of the innocent looking ImageList object. For example, I have an ImageList object that contains a set of icons for different document types, and use it for ListViews, TreeViews, and anywhere else in the UI where I’m presenting collections of documents. It’s all too easy to set the image list:

myListView.SmallImageList = MyApp.DocumentIcons;

…then assume that when this particular UI goes away, all the contents go away too.

Under the surface, pointing a ListView control at an ImageList also causes the ImageList to store a reference back to the ListView. This way, if an icon is modified in the ImageList, all the ListViews and other controls that are using it can be updated too. The downside is when you forget to reset the SmallImageList property in the ListView control when the control containing the ListView is being disposed. Because the ImageList refers to the ListView, the ListView won’t go away. The ListView refers to the parent UI, the parent UI refers to the document, the document refers to the data, and so on. So when we set our document reference to null, while we might expect the whole lot to be disposed, they continue to persist in memory,  accessible only through the ImageList object.

SciTech’s tool allows me to take snapshots before and after opening and closing a document or particular UI, and compare them to see what objects have been created but not freed. I’ve been using it for a few days and have already found a couple of commonly used UserControls in a UI-heavy application that weren’t being disposed of correctly.

Natural order

February 24th, 2010

Being a parent is an awesome responsibility. The choices and guidance I provide to my kids now can have a huge impact on the adults they become. Sometimes this can be daunting, especially when you realize you only have one shot at some elements.

One such element is something I’ve been wondering about for a while now. I’ve asked a couple of people for input, and for the most part, they just laughed. I don’t think they realize the magnitude of the issue. So here it is:

In what order should we watch the Star Wars films?

Should we go for released order, i.e. New Hope, Empire Strikes Back and Return of the Jedi (the original trilogy), then episodes  1-3? This was the order I grew up with. This way, you get the surprise that Darth Vader is Luke’s father. This is what I’m familiar with.

Alternatively, we could go in story order, with episodes 1-3 first.  It’s impossible for me to truly understand how the original trilogy will be interpreted already having the back story of episodes 1-3, beyond superficial observances like half way through the story, the effects are toned way down and suddenly there are characters running around the films.

You’re laughing at me now, aren’t you?

Binary Thumbs

February 24th, 2010

I tried playing Halo 3 the other night. Oh dear.

I thought I’d start off gradually and selected difficulty mode “Easy”. “The game practically plays itself”, claimed the description of the easy mode setting. Nevertheless, I still managed to die.

Now, ok, I should have been wearing my glasses. My original comfy seat on the sofa, about 10′ away from my 40″ tv, was quickly replaced by perching on the edge of a seat about 3′ away, but still my right eye was tearing from trying to make sense of all the detail. But never mind all that. The ultimately frustrating thing about the game I found was the controls.

For those who have never played, it seems that the left analogue stick controls movement left/right/forward/back, while the right analogue stick turns you left/right and causes you to look up and down. These are all pretty crucial when trying to shoot some alien creature ducking behind a tree, 20 yards in front of you. That’s kind of what the game is about.

I’m afflicted with the terrible physical disability thumbus binaris – possibly as a result of hundreds of keyboard based games and over exposure to Playstation 1 games. My thumbs don’t do analogue. It’s left or right or nothing. There’s no slightly-little-bit-to-the-left-but-not-too-much, often required to nudge the sights just past the edge of the tree ready for the alien. No, I swing around at full force like a drunken muppet on ice. And usually while staring at the sky or the ground, leaving me wondering where the heck I am now.

This isn’t a new discovery. I seem to remember having the same kind of “fun” with Goldeneye on N64. This may also explain why I’ve been less inclined to invest in PS2, PS3 or XBOX gaming, compared to PC games. I’m ok with a keyboard and mouse.

Am I getting too old for these games? Maybe I should just quit whining and try it again.

I’m certainly not going to venture online in this game just yet!

Groundhog Day

February 9th, 2010

Last week was Groundhog Day, and almost inevitably, Bill Murray’s Groundhog Day movie was showing on TV. It reminded me of articles I’d read last year, where the author attempted to work out how long Mr Murray spent repeating the same day over and over, by estimating the time required to learn to play a piano, speak French, etc. Opinions differ, ranging from 8 to 40 years. Either way, this is a seriously long time.

Even at the low end of the scale, I imagine 8 years would be enough time to get over the horror of the situation and accept the new lifestyle. It has it’s advantages for sure. Most importantly, you’re presented with potentially unlimited free time to spend doing whatever you want. Although you can’t take anything physical along with you day to day, knowledge and skills persist, so you can learn to play instruments, speak new languages, learn how to paint. I guess if you can get to an airport, you could learn to fly, too – especially as any fatal crashes are resolved at 6am the following morning.

There’s a ton of things you no longer have to worry about. You don’t have to worry about going to work any more. You don’t have to worry about money – your bank account replenishes every morning and you can always rack up credit cards without worrying about repayments. You don’t have to worry about mortgage payments or utilities. You can eat or drink whatever you want, seeing as your body also resets every morning – yay, no hangovers! You don’t have to worry about illnesses or crime, and you can be secure in the knowledge that everyone you care about is safe because the world resets every morning.

Sounds appealing* when you think of it like that.

Now imagine you’ve spent 8, 10, 20, or 40 years like that, and suddenly you get snapped out of it into a normal timeline. All those worries come back in a flash, and you’re not ready for it. Suddenly, you have no idea what’s going to happen that day, and now your actions have consequences.

I think that’d scare the life out of me. I picture Bill Murray wandering out into the snow covered street after the end of the movie and suddenly realizing, potentially for the first time in decades, that he has no idea what it going on in the town around him.

“Aaaaaaaaaargh!”

* Ok, the downsides might balance this out a bit. It must get pretty lonely after a while when no-one remembers the previous day’s interactions and you can’t talk about anything you’ve been doing without them thinking you’re crazy.

Caprica, disbelief unsuspended.

February 3rd, 2010

I watched the second episode of Caprica last night. This is the prequel to Battlestar Galactica, tracing the development of the Cylons. So far, I’m enjoying it, but in this episode I noticed something that kind of broke the suspension of disbelief.

It wasn’t the appearance of the Cylon prototype. There is something that’s not quite right about the CG animated Cylon; it doesn’t seem to settle in the scene like it’s actually there. I can’t put my finger on what’s wrong, though. Maybe it’s rendered too shiny? Maybe it’s too sharp in contrast to the rest of the scene? Maybe there’s something wrong with the animation – not weighted correctly, perhaps? Maybe the appearance of an eight foot tall battle robot sitting in a teenager’s bedroom is just not right to start with.

But no. The thing that caught my eye was this:

A VGA cable in the back of a monitor in the lab where they’re working on the Cylon.

Elsewhere in the show they have video playing on the interior surface of house windows. They have video playing on a sheet of paper. Super hi-tech stuff. But down in the lab, they have a monitor with a familiar blue VGA connector plugged in the back. I wouldn’t be surprised if there was a Dell logo on the front.

It brought me right back down to Earth, in all senses of the phrase!

Alright, I’m a nerd.