Archive for June, 2007

Sony Vaio Support (Day 5)

Friday, June 29th, 2007

After being picked up on Wednesday, I see the computer arrived at the repair place in Germany at about 10am today. (The UPS tracking website works, in contrast to Sony's).

That's 2 days to transport a laptop from the capital of Austria to Germany! That's hardly quick, or the overnight delivery they always advertise on TV!

So presumably Sony chose to save some money when selecting which UPS delivery speed to use.

Sony Vaio Support (Day 3)

Wednesday, June 27th, 2007

OK It's all gone well. It's 14:43 and the UPS guy has come and collected my notebook.

He didn't seem to have any packaging materials with him (in contrast to what the woman said on the phone). So he took my unscratched laptop and just carried it off without packing it. Presumably he has some packing stuff in his van? Or maybe he'll just not pack it so it gets really scratched? Well, I'll see when I get it back.

Sony Vaio Support (Day 2)

Wednesday, June 27th, 2007

OK Tuesday was much better.

The girl from Monday said she'd (try to) ring me, even if nothing happened. She did ring me, at about 5pm (which made me a little worried that she wasn't going to call), and said that the laptop could be collected the next day. They hadn't resolved the warranty issue, but they were prepared to accept that I had one (on the grounds of the invoice that I faxed to them, which they sent to me originally confirming my purchase), so were prepared to pick up and repair the laptop for free.

Concerning the pick-up,

  • Obviously they couldn't give me an exact time, only 9am-5pm.
  • So I chose my office address. It's not easy to find me in this office, so I told her to tell them to go to the address and give me a call. She said they have a limit on how many calls they can make, so they might not be able to call me.
  • So I gave an incredibly detailed and complex description of how to find me. Then she said she only had a small text field to type the instructions in, so she'll abbreviate them, and hope the guy understands.

Someone really has decided to make this as challenging as possible!

So here I am, Wednesday, Day 3, in the office, at 9am, waiting for the laptop to be picked up. How do people do this every day?

Sony Vaio Support (Day 1)

Monday, June 25th, 2007

So my laptop is broken. No problem, when I bought it, about a year and a half ago, I paid about €150 extra to get the warranty extended from 1 year to 3 years, and them pick it up if something goes wrong. I'm glad I did that; now it's time to use it.

Hmm, not as simple to use the warranty as it was to order it, it turns out. (Although, to be honest, ordering it wasn't very easy either.)

Here's what happened:

  1. At 11am, I call Sony for the first time. I could only find their sales number on the web and on the invoice, so I called that. Helpful sales person informed me "I'm only a sales person" and gave me a support number.
  2. I called the number. Automated system wanted the serial number of the Laptop. No problem. Then it informed me I had to "register" the laptop either over their website or via a 0900 premium number. I tried the website.
  3. Nowhere could I find how to register.
  4. Trying the "site map" on the website, I found some register page. I enter my data.
  5. Then it wants an (optional) "warranty number". I typed in all the numbers I found on the invoice, none of them were accepted. I was worried there might have been some extra document which I'd lost. I searched everywhere. Couldn't find it. So left the field blank.
  6. Rang the number again, it said the same as it said last time: I wasn't registered, I should either go to the website or use the premium number.
  7. Tried to register again.
  8. This time I saw some link "open a support issue online". I tried that. It informed me I was not registered. It had a big friendly "register" button. Clicking it went to the same registration page I'd been on before, with all my data filled out. So the registration page knew I was registered, but the "open a support issue" page could not continue as I was not.
  9. So I called the 0900 number. Got through to a human. Very helpful. He also noted I was not "registered" and tried to register me on his computer system. It didn't really work, he noted. But no matter.
  10. He wanted the guarantee number. He told me where it should be on the invoice (thankfully there was no lost extra document!). But it wasn't there. I jokingly said I could scan the invoice and email it to him. He said no he believed me; we chatted some more.
  11. He said he needed the guarantee number. He suggested I scan it and send it to him. Once that had been done, courier people would ring me in the afternoon to arrange a pick-up. That call was 17 minutes long.
  12. I emailed it to him. It was a central email address, but he assured me if I put the case number in the subject line, it would get to him.
  13. No reply. And no telephone call in the afternoon. And no way to contact him.
  14. I go online and find some "information on your support case" page. I enter my name, the laptop's serial number and the case number. Click submit. Results page is an advertisement for Windows Vista and nothing else.
  15. Thinking I must have done something wrong, I go back and do it again, same result.
  16. I ring the telephone number (the non-premium one). Automated voice asks me for my case number. I enter it. Automated voice informs me that I'm outside the warranty period (presumably the free one) and hangs up on me.
  17. What to do now? Only option is the 0900 number. I ring it. Wait listening to music. Then it hangs up on me. That was 5 minutes.
  18. What to do now? Only option is the 0900 number. I ring it. This time get through to someone after about 10 minutes of waiting. (I put it on speakerphone so that my colleagues know I am wasting my time listening to canned music while paying nearly €1/minute, to access the support I paid €150 for).
  19. Finally I get through to someone. They say that the email with the invoice wouldn't have worked (so I'm glad I rang and didn't just wait for them to ring me). I should fax the invoice to them. She gives me a fax number. I ask her to ring me in about an hour to tell me if she got it or not (as I have no way to contact her). That call was 20 minutes.
  20. I fax her the document, and write her name on it, to try and maximize the chance she gets it.
  21. Note that this document, which I am trying to communicate to them, is the invoice. This document comes from them, not me. I am trying to fax them back their own document.
  22. She calls me back (I was pleased about that). Tells me she got the fax, and that she has to speak to a colleague. I ask her when that will be. Well, she says, she posted a post-it note on her monitor.
  23. I ask her to call me back tomorrow in any case, even if there is no progress. I have no way to contact them, and if they just don't contact me, I'm stuck.
  24. She freely admitted that, until the warranty issue was resolved, I had no option than to use the 0900 phone number. The other cheaper number was only for laptops "in warranty". The fact that the laptop is in warranty, the only way in which it's not is that their system seems to have forgotten it, and that is something which is neither my fault nor over which I have any control, seemed not to alter the situation much in her opinion.
  25. She said she'd try to call me tomorrow. I said "what do you mean try?". She said she can try to contact me if I'm available. I said I'm available. OK, she said, then she'll try.

So that's it. So what has happened?

  1. I have spent 42 minutes on a premium phone line, costing €0,71/minute, that's €29.82.
  2. I spent €150 on a warranty (that was a while ago)
  3. I spent over €2000 on the laptop in the first place (that was a while ago)
  4. The laptop is still in my possession, broken.
  5. One day has passed, so the duration of me not being able to use my laptop has, thanks to Sony, been increased by (at least) one day.

I've really never heard of using an 0900 number as the only way of contacting support, after one has paid for a warranty. I mean it's so outrageous. And the website doesn't work (registration didn't work, viewing ones support case didn't work). One is so powerless.

Sony is not doing well especially in the laptop market. They must be wondering why. I bet the top management don't know that this sort of thing is going on. It's just because their company, apart from producing great products, is just completely broken.

Let's see what happens tomorrow…

Back in Vienna

Sunday, June 24th, 2007

I spent a lovely 3 weeks with my girlfriend, doing work at her flat during the day.

Working at home in a different timezone has its advantages and disadvantages, but for developing really complex modules without getting distracted, and upon reflecting upon what one’s doing, it’s really great.

My laptop bag’s really rubbish. It has a habit of falling over in unexpected ways. (But I bought it for about €150 at Harrods so I expected it to be really good. I suppose one should never buy the cheapest of a set of products, even if the cheapest is still really expensive.)

By falling over in unexpected ways, I mean it’s like one of those objects one studies in Applied Mathematics like Weebles which just don’t do what one expects. So I placed it propped against a wall on a shelf at 30 degrees to the vertical, and it promptly fell over in the other direction, i.e. rotated 120 degrees including going through being vertical. But the shelf not being the floor meant the bag then fell off the shelf onto the floor, dropping about 50cm.

Laptop was completely unscratched. Anyone who knows me know how much care I take of my laptop, and despite being over 15 months old, and having been taken daily to all manner of different offices, having been in Thailand, Italy, Macau, Hong Kong, China, Dubai, Doha, UK and used as my main computer more or less every day of those 15 months, still gets comments that it looks essentially new and unused. So you can imagine my joy at seeing the fact that fall didn’t scratch it.

However, the laptop now no longer works. I would say, from the sound it makes (or rather doesn’t make) that the hard disk isn’t spinning up.

Amazingly I actually have a warranty for the computer. I took more than the minimum duration, and choose the more expensive they-collect as opposed to the default you-send-to-base; this can only be a sign of my feeling of decadence at the time I bought the laptop (the fact I opted for a €100 upgrade of blue reflective paint on the lid, which one can hardly see, and bought the matching leather Vaio bag, which I never use, being others).

And my Chello internet at home doesn’t work. I think the cable modem’s broken. It wouldn’t be the first time (nor probably the last). So despite having two computers (home mac and laptop) and two internet connections (Chello and UTMS for the notebook) with the explicit goal of never being without a computer and internet, I’m writing this from an internet cafe.

Paper jams

Friday, June 15th, 2007

Why does my printer always assert it has a paper jam? Why do other (personal) printers actually have paper jams the entire time?

Most cheap lasers, and now cheap inkjets (the one I have at home in Macau) seem not to be able to handle paper correctly. More expensive lasers (like at offices) and more expensive inkjets (the one I have at home in Vienna) seem not to have this problem.

In fact with the ink jet printers, I must observe that the printers are from the same manufacturer and are essentially the same printer (this was not by accident). The difference being the design isn't as nice on the cheap one, it feels cheaper when you open the lid, and it has a single digit LCD display, whereas the expensive one has a colour pixel LCD display which has error messages in a language of the user's choice. But the print quality is the same (according to the specifications and in reality). And the software one installs on ones PC is the same.

The paper jam isn't even really a paper jam. After printing about 1 or 2 sheets, it claims to have a paper jam (although everything is physically fine), and instructs you to press the "ok" button. Once the "ok" button is pressed, it continues printing. I mean this paper jam is essentially a software paper jam:

  If product = cheap Then
    If (rand mod 2) = 0 Then
      Call paper_jam
    End If
  End If

I used to have a dot-matrix printer with a tractor feed. I could buy A4 paper with holes on the side. I could print A4 from the software. After it had printed I could separate the pages and tear off the holes left and right and there would be perfect pages of A4. It never had paper jams (how could it?)

Surely tractor feeds are a better solution? Why has the world chosen to have paper jams instead?

Email Boxes need to be stored in DB, but also call IMAP, APIs, etc.

Wednesday, June 6th, 2007

I find myself often modelling the situation that there are rows in the database (e.g. “email boxes” for a user), and these rows represent things that exist elsewhere as well (e.g. IMAP accounts to back up these email boxes). There can be multiple ways of accessing these external resources, e.g. to delete an email box one does an deletes files on some server, to find out how much space is used there is an http-based protocol. And in the case of creation and deletion (and changing of password) these operations should not be done synchronously from the web interface, but are queued. This is not a contrived example, I am programming exactly this right now. All of the above are givens.

To not just stuff all the various API clients and other functionality into one huge class, there needs to be different objects representing:

  • The “email box” row in the database (and a persistence mechanism)
  • A “filesystem” object to represent operations on the filesystem such as “delete email box”. This object knows the directory layout used. This object can be shared between other objects which need to perform filesystem operations, such as a filestore accessible via FTP accounts (in this case). It’s convenient to program all these filesystem operations in one object.
  • A client for the HTTP-based protocol, to find out the box’s used size. In this case the protocol can do other functions, such as finding the space used in the FTP filestore. Again, it’s convenient to put all these operations in one class: one can create private methods to connect to the server, or for common API requirements such as response parsing which will be the same for all the commands, etc.
  • Persistable Queue objects, and QueueProcessor objects representing the programs or tasks to change the password, create/delete the boxes, etc.
  • Some Facade object to simply access to all the above?

Once one has come up with this objects in the system, there are a number of possibilities for how to combine them. E.g.

  • When one asks the HTTP protocol client object to find out the space used for a box, should one pass the parameter (of which box) as a Box object, or the name of the box and password as a String?
  • Should an application program (e.g. web interface) instanciate and use the HTTP protocol client object directly, to find the space used? Or should it call a method on the Box object, which calls the HTTP protocol object? Should both possibilities be available?

On the one hand, to simplify all objects, it would make sense to have the application program talk to the HTTP protocol object, and not to have this code in the Box object at all. And to always pass Box object, as this encourages strict typing.

However, I have found time and time again that the following solution works best:

  • Not have multiple ways of performing the same action.
  • Have a main “Box” object, which acts as a Facade. This represents a particular box. (i.e. not a BoxService stateless facade object, which each time takes a BoxId as a parameter to every function.)
  • Optionally have other objects to delegate to, concerning persistence of the box and its attributes to the database (although I prefer not)
  • A Box object knows the life cycle of a Box, and knows when to write things to queues etc. This will also need to be exposed in its interface (e.g. addCreationRequestToQueue) and explained in the class Javadoc. If this lifecycle changes (e.g. queue introduced for a certain operation) the interface will change and clients will have to be updated. But that’s OK, as probably there will be a requirement in the front-end to display “performing…” as long as the operation is in the queue. So lots will have to change if you change the life cycle.
  • This object also knows how to perform the operations which are normally queued, e.g. “delete”, in terms of simply calling the “filesystem” object. It may also need to update some internal flags to note that the filesystem no longer exists. These methods are normally only called from QueueProcessor objects, but are also handy to call from JUnit test scripts (e.g. in case of “create”), to put the system in some state that is necessary for further tests. The QueueProcessor does not do much, apart from just call the methods on the Box to perform the operation.
  • Applications call Box for all its requests and never call Filesystem. That way if the implementation changes (no longer direct “rm” but now over the HTTP API) the application does not need to change (note that such changes are ones which do not affect the life cycle of the Box, or introduce extra states such as “in queue but not done yet”). But more importantly I just think it’s a lot more readable to say “Box b = getBox(); b.getUsedSizeBytes(); b.deleteFromFilesystem()”.
  • The individual objects such as the “filesystem” object take Strings not Boxes as parameters. This makes those classes marginally simpler. More importantly one doesn’t feel right when there’s a two-way dependency, i.e. Box needs Filesystem (to call it to implement “delete” methods) and Filesystem needs Box (in its method signatures). And the only place that the Filesystem is going to be called is from Box instance methods, and the Box has all the information such as username, password, and any other information, within its instance variables.

Macau in June

Sunday, June 3rd, 2007

I have just arrived at Hong Kong airport. I will be in Macau (working from home) until around the 23rd June, when I shall be back working in Vienna.

I am contactable via my normal Austrian telephone number (I can get voicemail), gmail email address, skype, and so on.