Thursday, May 03, 2012
Ode to Ed Fiberesima
Ed a towering young man bustling with ideas but calm on the surface.
Gentle giant you were who was well spoken of and liked among his peers.
Shame we shall never again share a pint but I am proud to have made your acquaintance.
Proud son of Fiberesima sleep with the sages and smile as the stars upon your mother's house.
Tuesday, March 13, 2012
Nigeria Immigration Service - living up to a name
Every now and then I rant about a topic that is close to my heart. Not that I assume anyone is listening but just because I find that blogging can be therapeutic. Sometimes.
Today's spot of bother is the Nigeria Immigration Service. As you may have noticed, customer service is a subject that is close to my heart. Whether it concerns coffee, developer support, mobile telecommunications etc.
I happened to have business at the Nigeria High Commission in London today and was not satisfied that the Nigeria Immigration Service took the Service part of their name very seriously. From the lack of information regarding the visa application process to the customer experience on the ground at the consular section of the embassy, it was a trying process.
The first thing you notice once you get to the embassy is the queues. They may be unavoidable but some effort should be made to reduce them. I personally find them dispiriting. The next issue you are confronted with is the way the front-line staff address customers. Condescending in some of the cases I witnessed. I believe the higher-ups need to take a step back and consider the benefits of friendly customer service and the fact that customers appreciate it and would sometimes pay a premium for it.
Some questions came to mind: What would the customer service be like if they had competition? Why can't there be competition? What is the complaints procedure? How would customer service be affected if front-line staff knew their bonuses depended on customer satisfaction?
The other thing I had to contend with was a lack of information access points. The website doesn't have all the information required to get an application from start to finish. On-site information from front-line staff is patchy and conflicting in some cases. The whole communication package for the service needs to be revisited, as it is missing a few tricks.
My experience entailed filling out a form online, making payment and then turning up on the day and having to fill the same form out yet again, because I didn't bring a printed copy of the online form. All this is in addition to being chided for daring to turn up without a printed copy like other good citizens. The other soul-destroying part of the saga was making the trip (and braving the queue) thrice to the post office about 5 minutes away because the service refuses to streamline its processes. Cards are permissible online but one still needs to pay some 'admin' fees in person via postal orders. Why not simplify the process for the customer so that both payments can be made online as a single transaction? Why even use postal orders in 2012?
I hope someone is listening. If not my ranting has helped restore my usually zen-like calm. Now all is well with the world.
Till the next rant...
Cobertura Goodness for Groovy code in Gradle builds
cobertura {
coverageSourceDirs = sourceSets.main.java.srcDirs + sourceSets.main.groovy.srcDirs
}
Sunday, February 26, 2012
Gradle Grails Plugin for Grails 2.0.x
Sunday, January 15, 2012
Retort to Paul Collier
Saturday, December 03, 2011
Musings on improving customer experience at MTN and MTN Connect centres
Last week I made my usual trip to the connect center for MTN. As usual the staff were courteous and helpful but I came away unhappy.
It is my belief that some of the reasons that customers come in to the center can be better addressed via a careful blend of self service and better empowered customer service personnel.
On the days I have visited you get customers who have come in for a varying number of reasons from topping up their prepaid accounts to registering their SIM and signing up to one of the increasingly popular BlackBerry bundles.
It turns out that with careful construction of self service applications MTN could reduce the number of customers feeling the need to come in. Take a scenario where a customer needs to top up their account: they should be able to do so at the now ubiquitous ATMs in major city centers.
Having more staff empowered with smartphones running key applications that, for example, allow them to take card payments for a vareity of services - it is a mobile communications company afterall - would help manage the load at the connect centers. Second level customer service operatives can then better spend their time helping customers with more complex requirements. This would be consistent with the level of customer experience you would get at an Apple Store or Wagamama where tills are attached to roving and attentive customer service personnel.
My pet peeve at the moment is my current issue where I need a statement of expenditure on my prepaid mobile account for accounting purposes. Front line staff at these locations are not empowered to solve my problem and as a customer there are no self service options. So I am stuck with the lengthy and soul destroying process of writing a letter along with applying for a police report just to get a statement on my account.
I am hopeful that a customer-focused someone in the MTN hierarchy reads this and sets the train in place to make the necessary adjustments for improved customer experience.
Peace and Love.
Monday, August 01, 2011
Enabling Xpather Firefox Plugin in Firefox 5 on Windows 7 after upgrading from Firefox 3.x
- To get it working update the install.rdf file which can be found in your Windows 7 install at the following location:
\Users\
Do adjust your username and actual profile directory to take into account your install specifics.\AppData\Roaming\Mozilla\Firefox\Profiles\lszvse7r.default\extensions\{636fd8b0-ce2b-4e00-b812-2afbe77ee899} - Restart your Firefox and Xpather 1.4.5 should be now be re-enabled.
Thursday, June 30, 2011
WebDriver querying Text Nodes - Lessons learnt
I can hear you ask why this should be a problem. It was because the link looked as follows:
It turns out the usual WebDriver incantations along the lines of findElement(By.xpath("arbitrary-xpath")).getText() was returning nothing for the link's text. I looked around for a while and found that the only solution I had was to look things up via Javascript seeing as there were no ids to fallback on.
In the end it worked out that document.evaluate became the saviour of the day, since it allowed me to make xpath queries on a document. The result is a java step definition and cucumber feature file that look as follows:
UPDATE: Changed the step definition file so that the xpath lookup is done in WebDriver instead of in the javascript seeing as xpath lookups cannot be relied upon in Internet Explorer.
Monday, April 18, 2011
Nigeria Decides Results so far
All Party Votes so far - Front Runners
All Party Total Votes so far
Katsina
Rivers
Delta
Zamfara
Niger
Abia
Kano
Bauchi
Benue
Bayelsa
Kwara
Ebonyi
Plateau
Kaduna
Edo
Nasarawa
Oyo
Ekiti
Imo
Akwa Ibom
Sokoto
Lagos
Anambra
Kogi
Osun
Ondo
Enugu
FCT
Ogun
Tuesday, March 29, 2011
Neighbourhood surgeries - how can mine be improved?
Sunday, March 06, 2011
Cucumber DSL for Selenium Testing - Take 2
Tuesday, March 01, 2011
Cucumber DSL for Selenium Testing - Take 1
I have set it up so that it can be built in Maven. The pom.xml file can be located here. The project structure is pretty simple and can be structured as follows:
|-features
|-brandhub.feature (source can be found here
|-src
|-test
|-java
|-sample
|-BrandHubSteps.java (full source can be found here)
|-pom.xml (source can be found here)
All you then need to do once you have the above structure is run mvn clean integration-test and you should be on your way. Your test results can be found in target/surefire-reports. I have included html and junit reports. You will also find that there is a pretty console log of your features and your scenarios.
Peace and Love.
Tuesday, January 18, 2011
Thoughts on collaborative consumption
My dilemma? Buy or borrow. Now don't get me wrong, it is an interesting book now but I know it won't be once I am done reading it.
THe Buy or Borrow question would have been easy one to answer if we had parity in the utility of digital and conventional assets.
With a 'real' book you could easily buy it and resell it online without any qualms. You could loan it to a friend of family member in a heartbeat.
Not so with a digital/e-book. There is a lending feature on Amazon that allows you to lend out books for up to 14 days but is not enabled on all books.
Well what if I wanted to resell an eBook after I had read it? How does one put a value on a transaction like that? Is anyone even considering that model?
These questions have now come to the forefront of my consciousness after I watched Rachel Botsman's TED talk on collaborative consumption. Is anyone thinking along the same lines?
I'll buy the digital version of the book because its lighter and is a greener choice but I'd like to get more utility AND value from doing so.
Thursday, January 06, 2011
Oracle JDBC Driver wahala - the conclusion.
Turns out that the problem was that when running the script in Continuous Integration builds, embedded SQL92 syntax escape processing was enabled by default.
In the end, the solution was to turn off escape processing so that code behaviour is the same whether run via Continuous Integration or as a standalone SQL script in SQL Developer.
In conclusion, I still think the guys at Oracle should implement better error messages, as this would have saved me loads of time.
Be well.
Wednesday, January 05, 2011
Oracle JDBC Driver wahala.
The problem? There is a stored procedure on a project that I am able to run successfully via Oracle SQL Developer but have been unable to get working as part of the build. Currently, the Oracle JDBC Driver spits out the following nondescript SQL exception message: Non supported SQL92 token at position: x. X in this case seems to be some arbitrary location in the script ( this currently resolves to end of the file, meaning it has been misdiagnosed), which I cannot decipher as being an invalid token.
What would have been useful in the exception message, and I hark back to the days of Oracle SQL*plus, is a line number and column number with some mention of the errant token.
I am still trying to manually debug this problem in the hope that I am able to resolve it, as no successful build means no check-in. My suspicion is that the driver is doing something nasty or is unable to properly deal with a token that should ordinarily pose no problem.
I am using a v10.x Driver.
If you are reading this, have you encountered a problem like this recently? Any light you can shed is appreciated.
Thanks
Friday, December 24, 2010
Holiday Thoughts
See you on the other side!
Saturday, November 13, 2010
British Gas nightmare - resolved
Turns out that, as I suspected, there was a systemic error that meant I was billed when I shouldn't have been. So where telephone calls and emails failed to get me a foot in the door, blogging (macro and micro) kicked the door in. In the end, I got the bill rescinded and also an apology for my troubles. All is well again in the world.
It is an encouraging trend that folks at British Gas are listening to and talking with the groundswell. I think more companies need to be doing so. They also need to ensure that conventional customer service channels are a lot less of a pain to use. A happy customer is a repeat customer.
Saturday, November 06, 2010
British Gas nightmare
We moved into our current home just before autumn kicked in and it was still warm. As the days started getting colder we discovered that we didn't know how to work the heating. After a few botched attempts at looking into ourselves we decided it was best to get folks whose job it was. So we called British Gas and explained the problem. They told us we there was a home care agreement under the previous occupant's name and if we wanted to take out a similar one, we said yes and asked them to close the other account to which they responded that only the owner could do so. We were informed that an engineer would look into the issue and carry out tests on our boiler and heating system to ensure that they could still find parts for them.
Engineer shows up and much to our shame, as it turns out, the thermostat was off. He turned it back on, did his tests and went on his way.
Fast forward a few weeks and I get a pay-now-or-else letter saying I owe £210 for services rendered by British Gas. I call them up and try to ascertain what the bill was in relation to. The operative informs me that it is with regard to the engineer's visit. I inform him that we have a care agreement in place. He says it has been cancelled. I say by whom? He says he needs to get back to me. But he demands that I pay. That irks me and I tell him to find out why my account has been cancelled and that I think £210 is a lot to pay for someone turning on a thermostat. We have a stalemate and he says I might have court proceedings brought against me to which I respond: bring it!
A few weeks after that I get the second letter demanding payment. This is after I had reinstated the care agreement on being told by another operative that it was closed due to an error by British Gas.
On getting this letter, I decide that this is bullying. Corporate Goliath trying to trample on average David. It cannot be anything else, as had they taken time to look into the issue maybe they'd have found that I don't owe them. In the event that they needed to charge for the engineer's visit, as some companies do, £210 for an hour's work, if that, is no where near fair.
I have also received further communication relating to this dispute in form of a solicitor's letter urging me to pay or face a county court judgement and all the evil that brings. In response to this I have mailed the complaints department at British Gas and will be hoping that British Gas does what it should have done weeks ago and looks into this issue. I will be posting updates in the coming days and weeks.
All I can say is that from my experience, so far, it is becoming increasingly difficult for consumers to hold service providers accountable and easier for their rights to get trampled upon. I am one customer but on this occasion I have decided that on principle I will follow this to a logical conclusion and take on the giant that is British Gas. Hopefully, the values entrenched in British society will mean that there is a victory for common sense and the little guy.
Thursday, September 16, 2010
Customer care rant
You might ask why this is important but today a gas engineer was scheduled to take a look at the boiler (winter is in the winds) and our plans changed.
No one was going to be home. I had only one choice: get on the dog and bone and ask the company (one of Britain's corporate titans) to reschedule the appointment.
For anyone who has ever called to speak to customer care assistants for anything, it is dead time and you are paying for it.
And depending on the time of day and the load it could cost you an awful lot of time AND money.
My ideal scenario? How about if I was given the option to re-schedule the appointment online and not need to talk to anyone? I know some will say that there are folks who the online thing doesn't come naturally to. But I think those who can should be given the option to do things that way. I also think it would have saved me and the service provider time AND money, as the customer care assistant I spoke to could have spent his time trying to sign a new customer.
End of moan.
PS: Given that folks working within the day is almost now the norm, would it be so bad for service providers to have products that appealed to the market? Another rant. Another day.
Tuesday, July 20, 2010
Thoughts on EyeQL
One of the conventions we use at work is to have Atlassian JIRA ticket numbers as part of the commit comments. They came in handy today because all the changes that needed to be merged had ticket numbers associated with them.
The problem? An easy way to retrieve all the SVN revision numbers associated with those tickets so that we find it easy merge said revisions to the target branch. Luckily we have Atlassian Fisheye at work and with it comes an interesting DSL (EyeQL) for querying your codebase. I had know about it for sometime but didn't know where it could be used. This was such a case.
The following EyeQL query when run will return the revision numbers I was looking for:
select revisions
from dir /svn/directory/path
where comment =~ "^.*(JIRA-1|JIRA-2|JIRA-3).*$"
group by changeset
return revision
The query goes through all revisions currently indexed by Fisheye and retrieves the revision(s) grouped by changeset that have either or all of JIRA-1, JIRA-2 and JIRA-3 in their commit comments.
Armed with this list of revisions it was easy to go through and merge them from the source branch to the target branch.
We would like to hear your thoughts on whether you have been in similar shoes and how you have gone about solving your problem.