London, Macbook

Getting Customer Service at Apple’s Regent Street Store

In terms of my Mac ownership I have had a story of two Macs. The first, an early Macbook, has had a lot of problems and if I hadn’t been able to keep taking the thing back to the Apple Store then I would probably never had bought a Mac again. The other is a MacBook Pro that I bought after the change to Santa Rosa. This machine was specced at the very high end and even included a full compliment of expensive Apple RAM. I have had no problem with this machine at all. I suspect the lesson is not to buy first wave Apple products and not to buy anything from Apple where the engineering has been compromised by price. As you are paying a premium anyway you might as well go for the best you can.

So, the latest issue with the MacBook is the power supply. The collar of the power supply split and revealed some wiring which worried me. I could have just taped it up with insulating tape and lived with it but I had read some reports that the problem can cause arcing and be more serious.

So I took the power supply into the store and showed it to one of helpers and he agreed that it didn’t look right and that it should be replaced but that I would have to make a Genius Bar appointment to do so. Genius Bar appointments are not my favourite things but I did make one and went along with my power supply and when I was seen it was agreed that the split was not good news and that it could be replaced as it was a flaw with a certain model of MacBook. However the exchange could not be done there and then as I didn’t have my MacBook with me (it’s pretty heavy so you wouldn’t take it along unless you thought you needed it) and my AppleCare records were not up to date so only my ownership of the MacBook Pro was showing up in the system. So I made another appointment, this time taking my MacBook but I foolishly let things drag on at work and didn’t make my appointment on time. The Concierge told me to make another appointment and annoyingly refused to change my Apple Care details so I would have to bring in the laptop again. All this week I failed to find any Genius Bar appointments so yesterday I was finally lucky enough to bag an evening appointment and went once more unto the breach. I made it on time, checked in and then waited half an hour. During which I reflected that when I was late I was turned down flat but when Apple runs late you are expected to suck it down. Something which all the worse because there is no system in place to be able to call or tell the store that you are running late.

So when I do get seen the MacBook’s barcode is zapped, the “floating” account is re-registered to my details. However the MacBook is out of warranty and now I am told that I cannot get a replacement. Well that would have been fine three appointments ago but now it’s poor customer service so I demand an explanation as to why I have been told contradictory things and instead I get a discretionary replacement. So I leave relatively happy with a new model power adaptor.

Here’s some things that would have made my interaction with the Apple Store easier.

  • A clear explanation of what I would need to bring in for the appointment.
  • An accurate idea of how much it would cost to buy a replacement. I was told a replacement adaptor would have cost £70 so therefore I was given an incentive to seek an exchange. Checking in the store later I found the price was between £50 to £60 depending on the model you need. I might have decided to buy a replacement straight away and saved me the multiple wasted trips and appointments. Here you are really suffering from Apple’s refusal to use commodity parts. If I had been able to buy a cheap power adaptor I would probably have done so because that is what I do with my Windows/Linux PCs.
  • I should have been allowed to call the store to explain I was running late and cancel or reschedule the appointment. Alternatively I should have been allowed to make a future appointment at the Concierge’s desk when I did arrive.
  • The customer database simply needs to be better and you should be able to update it with the Concierge. It should take a technical support appointment to update your records.

Here are some things that I learnt about dealing with Apple Store that I hope make your life a lot easier than mine was.

  • When you arrive at the store make sure the Concierge (one of the helpers at the Genius Bar) correctly registers your arrival and your name and confirms that you are going to get seen. If this part goes wrong then you just get left on the bench and never get called.
  • The Apple staff have business cards, when one of them tells you something get a card from them and if there is a dispute as to the advice given later produce the card and ask the person to contact their colleague and check things.
  • Apple staff have a huge amount of discretionary power. Although they may want to stick to a particular policy they have the power to bend the rules, particularly in the end of customer satisfaction. Remember that despite how they may act at times they are a premium electronics retailer and therefore need to retain their customers. There is not necessarily another customer coming through the door in a minute who will accept poor service.
  • Stay polite but firm. Remember that there are often two things going on in the store that are to your advantage. Firstly it is often busy and there is going to be a point where the delay in dealing with you formally is going to outweigh resolving your issue and moving on to the next customer. Secondly it is a store and if people see other customers having an unhappy or unpleasant experience then they are going to be less likely to buy something.
  • Don’t be afraid to use NLP framing techniques. Try saying things like “Can you tell me why I was told this?”, “Can you see why I am frustrated with the service I am getting here?”, “Can you explain why this has happened?”. Get them to view the experience through your eyes and see that you are being served poorly.
  • It doesn’t happen a lot but if one of the staff wanders off into technical matters remind them that whatever the cause of the problem they still need to resolve the problem for you.
  • If booking a Genius Bar appointment then try the website at several points in the day. On Saturday there were no appointments at 7am, nor at 8am but at 10am I was able to book through Saturday afternoon to Monday.
  • If you are late for an appointment just give your name to the Concierge. They will not be able to find you and will ask you when the appointment is for. Say that it was roughly for whatever time you booked. They will then hiss and tell you you are late. Explain that you were unavoidably delayed (it is London after all) and that you are here now. They can and should put you back on the list. By default you will ironically be the first person to be seen.

I wish I had known that last one! Kudos to the guy ahead of me in the queue who pulled it off.

Standard
Web Applications

Charting the Rails promise

There is a lot of swearing, pulling of hair and head scratching involved in learning Rails. It is nowhere as easy or intuitive as the hype makes out. Every now and then, though, you have a moment when the promise is lived up to in all its glory. One such moment for me has been adding the Google Charting plugin to the application, passing the new object my existing data and having it Just Work.

The only way it could have been improved would be if Google defaulted to an x-value that included all the labels. Other than that a lot of respect to everyone involved in providing a solution and allowing me to ignore a lot of code and get on with developing the parts of the application that are different from other web applications rather than the same.

If you haven’t seen the Google Charts API take a look at it because it is very cool and while you might not want to use it in production you can profitably use it everywhere else.

Standard
Java, Ruby, Web Applications, Work

Working with Rails

I have recently struggled to try and get a prototype web application done with Ruby on Rails. It has been a really great experience and like all such experiences consists of both good and bad moments. Things that are particularly striking coming from a Java Web environment:

  • Integrated console
  • No recompile/build/deploy cycle
  • No mix and match components
  • No real programming language skill required.

It is also remarkable how quickly people revert to the level of thought, planning and execution that you might use for a shell script. Even I have found myself getting caught up in “playing” with the app interactively rather than being focussed on creating behaviour and functionality in a structured way.

Elaborating on these points; in Java web development the first issue is usually building up your component stack. Some people just choose Spring  but those people are idjits! If you are working purely in a web tier without any need for any backend interaction then it is probably a good bet but generally you want to put some thought into how you are going to assemble your various stacks. You tend to have to choose your MVC web framework, your persistence framework and your service framework (if appropriate). You often have to give some thought to your caching and messaging frameworks if they are relevant.

With Rails you just use the appropriate Active Module or Rails built-in features. If there is something that is going to ease some pain for you then it is going be operating as a plugin. That’s it, no framework holy war. It also means that there are a lot of applications that are just not going to be suitable for a Rails application as all those Java components have various strengths for different environments. I certainly wouldn’t want to tackle a legacy database with ActiveRecord for example. Not that it couldn’t be done but I wouldn’t want to do it.

The zero-turnaround is impressive after the build-deploy-check cycle. It was a wow factor last year when I saw the Phobos framework being demonstrated by Sun and its not lost any of its shine. By separating its deployment environments so ruthlessly Rails is able to deliver a really positive developer experience.

The interactive console takes a bit of getting used to in terms of faking browser requests but once you get used to doing so it is another tool that you wonder how you’ve managed without for so long. It’s much more intuitive to use than setting up a remote Java debugging instance (although admittedly you do similar tasks in both). It allows you to scratch those itchy “why?” questions.

And finally that lack of programming skill? A bit controversial perhaps? Well I feel that in recent weeks what I have been learning is how to manipulate Rails. The fact that it is implemented on Ruby may allow a lot of features to be implemented in the way they that they are but you are very rarely called upon to show Ruby madskillz. Instead the majority of the time you are simply plugging little customisations into the Rails framework. It is called Rails for a reason after all, when you are on them you are amazingly productive but if you can’t package your problem into a Rails solution then you are out of luck, you’re going to have to develop your own solution and that is going to be hard work. I have been trying to develop my Ruby skills (that is a whole other story) but the truth is you can bang out something that is acceptable with very little Ruby knowledge. You can go a lot of the way purely by mastering Ruby’s hash syntax.

So have I been converted? Well for all its problems I do have a hankering to get back to my great big Java applications with their holy wars and heavyweight processing. After all being on the Rails is fine for getting things done quickly but it can feel claustrophobic. I am also really glad that after getting distracted by the whole JSF controversy the challenge Rails presents to the status quo of web development means that a lot of the Java frameworks are starting to respond to the real problems faced in web development and ensuring that the easy stuff should be easy.

Standard
Work

Entrepreneurs versus Businessmen

A discussion over SLAs recently helped me define one difference between businessmen and entrepreneurs. Entrepreneurs generally have a huge appetite for risk, they know that things might go wrong and that they might go wrong catastrophically but they go ahead and do something anyway. A businessman on the other hand waits until something is so safe that anyone could do it.

For the entrepreneur doing and doing it first is everything. For the businessman it is about doing it right and hopefully doing it better than everyone else.

Standard
Web Applications

CSS Table borders hiccup

Question: why do my HTML table cells have a space around them? Why don’t the join up like a normal table?

Answer: the border-spacing attribute is not set to zero by default. Try setting it explicitly to 0em in the style sheet.

I can’t believe this has caught me out twice! I don’t understand why you would not want the border spacing to anything other than zero by default.

I found this site to be really helpful for understanding the table model in CSS.

Standard
Macbook

Woohoo! Leopard!

Today I finally took the plunge and installed Leopard on my MacBook Pro. So far nothing seems obviously broken and so I’m pretty happy. At the same time I haven’t really noticed much difference at the moment either. Preview might be sharper and shinier. Desktop icons now have little previews. The machine is maybe a bit faster and runs cooler when doing the same tasks, particularly compiling which is probably faster than I have ever seen on a desktop machine.

Mostly though I am glad that everything has been migrated with zero pain.

Standard
Computer Games

Take Command a satisfying replacement for Sid Meier’s Gettysburg

So I finally installed Take Command: Second Manassas (TCSM) after many delays. I really loved Sid Meier’s Gettysburg (SMG) and I have been looking for a replacement for it for a while. To be honest the graphic content is not really far off its venerable ancestor but it is a satisfying game that seems to capture ACW tactics in a visually appealing way.

Some interesting features are that the battlefields seem to be bigger and therefore you are actually expected to use Road Column movement! In SMG column movement was just a way of breaking your troops unless they were reinforcements. TC: SM introduces couriers that actually ferry orders between the general and your command. That’s a really atmospheric touch.

One thing that is a bit disappointing is that barriers on the battlefield do not seem to interact with the troops in a decent way. During the tutorial I lined some troops up behind a wall, which was relatively easy, however later they decided to concentrate their fire to their left and therefore the unit AI wheeled the line left putting straight through the wall rather than anchoring on it. Apart from breaking the illusion this also gave me a UI headache as I could not easily tell whether the AI had opened itself to enfilading fire or not. Since the unit seemed to retain its defensive bonus I assume this was only graphical compromise but I would be annoyed in a tighter balanced scenario if I could not easily see that a unit had broken cover.

Standard
Software, Work

The cruel young men and their DSLs

When faced with the question about how people are meant to learn more and more languages some pundits say that perhaps people shouldn’t be programmers if they cannot learn new languages. When you’re young, bright and brilliant that may seem a reasonable answer. However the truth is that no matter how high you try to set the bar on programming, the amount of programming to be done is far in excess of the capacity of the relatively small number of brilliant people in the world who are inclined to do it. Telling the people who make a living trying to answer this demand, with less stellar qualifications perhaps, that they should shape up or ship out isn’t going to win any friends.

It’s also pointlessly antagonistic. Getting to learn many languages should be seen as a chance to broaden and enhance skills. However that is not going to be attractive if organisations continue to provide incentives in terms of pay and opportunities to specialists. To respond negatively to the suggestion that you discard your hard-won investment in your language of choice is both natural and rational if you run the risk of earning less than the single-focus individual. DSLs will die a death unless they can be incorporated within the scope of an existing big beast language or employers adopt a capability rather than knowledge-based metric for pay rewards.

I also think that DSL aficionados often fail to point out to the broader audience of programmers that learning a DSL or even a variety of languages (most probably meaning at least one functional, dynamic and object-orientated language) will not be the same experience as the current depth learning of languages. Since a DSL should be for a specific purpose and have a small syntax or grammar customised to a particular problem or domain it will not be the same as being able to answer trivia such as what the problems with the Date API are in Java and what the Calendar class sets out to address and whether it succeeds or not. Interview questions may have to revolve around applying a new syntax for dealing with a particular problem instead of the usual language pop quiz.

Advocating languages as solutions should also involve advocating changes in employer priorities. If you don’t link the two then threatening someone’s livelihood actually makes it harder to achieve the DSL’ers joyful Babel of languages that matches tool to problem.

Standard
Blogging

Why I don’t Blogger much any more

On the weekend I tweaked the blog a bit and I decided to replace the useless archives widgit with the sexy new tag cloud. No-one ever used the archive links so I think it is a more helpful tool to let people find things on the blog they want. Having done that I thought I would go over to Blogger and do exactly the same with some of my older blogs.

Nothing going. Blogger has introduced blog tags (after WordPress categories but before WordPress tags) but looking through the widgits I cannot add a pre-made simple tag cloud.

It is a story of stagnation and one that makes Blogger more and more irrelevant for me. It was the first blogging site I signed up with and I love loads of other Google applications. The people who make things like GMail and Calendar should be pointing out to the guys at Blogger how quickly they are falling behind in both function and utility.

WordPress has a vast amount of information on who is visiting your blog and why, what pages and posts are popular and what people are searching for when they visit the site. Google Analytics could do exactly the same job but you have to do the hard work yourself. You have to put the Javascript into Blogger and check the stats in Analytics. Now naturally there are privacy issues in joining up these services but if I want to view an integrated set of data on my blog (as I can in the market leading software) surely it should be made easy for me to do.

Standard