<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-11560160</id><updated>2012-01-30T13:25:11.008Z</updated><category term='collaborative consumption'/><category term='couchdb'/><category term='classpath hell'/><category term='tssjs europe 2008'/><category term='SQL-92'/><category term='france'/><category term='maven'/><category term='gtalk'/><category term='pidgin'/><category term='selenium'/><category term='xpather'/><category term='jquery.autocomplete'/><category term='service'/><category term='consumer rights'/><category term='firefox'/><category term='grails'/><category term='escape processing'/><category term='results'/><category term='MTN'/><category term='Chelsea FC'/><category term='British Gas'/><category term='open standards'/><category term='greed'/><category term='spock framework'/><category term='IM'/><category term='rant'/><category term='bonus culture'/><category term='cuke4duke'/><category term='nigeriadecides'/><category term='tech'/><category term='java'/><category term='customer service'/><category term='politics'/><category term='random'/><category term='cucumber'/><category term='migration'/><category term='webdriver'/><category term='xmlparsers'/><category term='sorrow'/><category term='Nigeria'/><category term='tip'/><category term='tssjs'/><category term='oracle'/><category term='JDBC'/><category term='infographic'/><category term='wlst'/><category term='jquery'/><category term='alcohol'/><category term='blogger'/><category term='groovy'/><category term='functional testing'/><category term='weblogic'/><category term='unit testing'/><category term='prague'/><category term='JavaScript'/><category term='plugins'/><category term='googlechartapi'/><title type='text'>LHFVille</title><subtitle type='html'>The life and times of the LHF</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>46</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-11560160.post-6401035798547707748</id><published>2012-01-15T12:16:00.004Z</published><updated>2012-01-15T12:22:04.069Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='Nigeria'/><title type='text'>Retort to Paul Collier</title><content type='html'>&lt;div&gt;Hi &lt;a href="http://www.businessdayonline.com/NG/index.php/analysis/columnists/31853-should-nigeria-be-ruled-by-the-street"&gt;Paul&lt;/a&gt;,&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Nigeria's current administration might have received a legitimate mandate but their actions since their ascent has been anything but.You only need look at the budget and its constituent executive and legislative expenditure which has incensed the masses, and is anything but responsible, to give you an idea of the reasons behind Nigerian's mistrust. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;All we have heard from the government are the same tired platitudes of how our biggest problem as a nation is the subsidy. No problem however straight-forward has a single solution and at times the march to durable solutions begins with critical and radical reasoning. What we need are creative solutions but our leaders seem to be unwilling to solicit them or even consider suggestions all in the hope that the people will soon be distracted so they can get their way. Well, democracy is about listening and inclusion and Nigerians have begun to talk. Shouldn't our elected government listen? &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The government claim to have offered palliatives but how does more buses after a hike in fuel prices help with the consequent price increase of everything from food, to power generation costs? Just so you can process and contextualise it, a fitting analogue to what the Nigerian government has done by artificially hiking the prices of petroleum products would be the UK government deciding without consultation and alternatives to scrap a service as vital as the NHS. Such an action would understandably be met by resistance, as its effects would be far-reaching. Fine-tuning the mechanics of the current subsidy regime with a view to increasing accountability and then working on solutions to fill the vacuum once it is eventually removed might have been the place to start.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As a Nigerian who has seen both sides of the coin I know the pangs of Nigerians and understand the mistrust. I have benefitted from appalling roads, the epileptic and largely DIY power supply and the abysmally funded education and health-care systems. Oh and did I mention the non-existent social security? To crown all this Nigerians have increasingly and of recent been served incessant helpings of violence by politically motivated mercenaries. In the years past there has been trillions spent on white elephant projects only for those funds to be trousered by the ruling elite and their cohorts so is it any surprise we don't trust them? If they couldn't deliver with all those trillions what good will a paltry $8bn a year do?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At a time like this what we would love to hear from intelligent media isn't that Nigerians are being manipulated. It is patronising but also lazy reasoning to think that Nigerians who have had to contend with 50 years of suffering and smiling are incapable of articulating how they feel. I think what good folk like yourself need to be doing is actually gaining a firm grasp of the issues at play and, if you are so inclined, proffering solutions. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Nigerians are among the most resilient and resourceful people I know. It is time our leaders stopped taking advantage of that great trait and started doing their jobs.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-6401035798547707748?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/6401035798547707748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=6401035798547707748' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/6401035798547707748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/6401035798547707748'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2012/01/retort-to-paul-collier.html' title='Retort to Paul Collier'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-941251558183080667</id><published>2011-12-03T13:47:00.002Z</published><updated>2011-12-03T13:51:36.171Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='MTN'/><category scheme='http://www.blogger.com/atom/ns#' term='customer service'/><category scheme='http://www.blogger.com/atom/ns#' term='Nigeria'/><title type='text'>Musings on improving customer experience at MTN and MTN Connect centres</title><content type='html'>&lt;p&gt;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.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;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.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;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.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;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. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;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.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;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. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;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.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Peace and Love.&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;div style="clear: both; text-align: center; font-size: xx-small;"&gt;Published with Blogger-droid v2.0.1&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-941251558183080667?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/941251558183080667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=941251558183080667' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/941251558183080667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/941251558183080667'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2011/12/musings-on-improving-customer.html' title='Musings on improving customer experience at MTN and MTN Connect centres'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-3207410017191717691</id><published>2011-08-01T19:03:00.007+01:00</published><updated>2011-08-02T00:18:26.777+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='plugins'/><category scheme='http://www.blogger.com/atom/ns#' term='xpather'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>Enabling Xpather Firefox Plugin in Firefox 5 on Windows 7 after upgrading from Firefox 3.x</title><content type='html'>&lt;div&gt;I have been messing around with the Selenium Testing. Again. I think if you have spent any amount of time trying to construct functional tests for your web applications you will have found that &lt;a href="www.mozilla.com/firefox/"&gt;Firefox&lt;/a&gt; developer tools like the &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/xpather/"&gt;Xpather&lt;/a&gt; plugin indispensable. Well, I do. My problem recently was the fact that with an upgrade to Firefox 5 from 3.x this most useful of plugins was disabled.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Its original developer &lt;a href="http://www.linkedin.com/in/viktorzigo"&gt;Viktor Zigo&lt;/a&gt;, much respect for his efforts, is taking time off so while wondering what to do to get it working in Firefox 5, I stumbled upon the plugin &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/xpather/reviews/"&gt;reviews&lt;/a&gt;&lt;/div&gt;&lt;div&gt;page and a &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/xpather/reviews/199584/"&gt;particular&lt;/a&gt; comment stood out for me. It led me to a useful solution on how to get this plugin enabled on Firefox 5. Without further ado, here it is.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This part of the post assumes that you had the plugin installed and working previously in Firefox 3.x and are on Windows 7.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;To get it working update the install.rdf file which can be found in your Windows 7 install at the following location:&lt;pre&gt;\Users\&lt;username&gt;\AppData\Roaming\Mozilla\Firefox\Profiles\lszvse7r.default\extensions\{636fd8b0-ce2b-4e00-b812-2afbe77ee899}&lt;/username&gt;&lt;/pre&gt;Do adjust your username and actual profile directory to take into account your install specifics.&lt;/li&gt;&lt;li&gt;Restart your Firefox and Xpather 1.4.5 should be now be re-enabled.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-3207410017191717691?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/3207410017191717691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=3207410017191717691' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/3207410017191717691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/3207410017191717691'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2011/08/enabling-xpather-firefox-plugin-in.html' title='Enabling Xpather Firefox Plugin in Firefox 5 on Windows 7 after upgrading from Firefox 3.x'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-4624882553786588254</id><published>2011-06-30T19:14:00.010+01:00</published><updated>2011-07-02T18:04:02.259+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='functional testing'/><category scheme='http://www.blogger.com/atom/ns#' term='webdriver'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='selenium'/><title type='text'>WebDriver querying Text Nodes - Lessons learnt</title><content type='html'>Earlier on today I ran into an odd problem while using &lt;a href="http://seleniumhq.org/docs/03_webdriver.html"&gt;WebDriver &lt;/a&gt;as part of my ongoing &lt;a href="http://lhfville.blogspot.com/2011/03/cucumber-dsl-for-selenium-testing-take.html"&gt;foray&lt;/a&gt; into &lt;a href="http://cukes.info/"&gt;Cucumber &lt;/a&gt;as a DSL. I was to trying write automated tests that verified that a link (a tag) had a text node. I could locate the link by an xpath locator.&lt;br /&gt;&lt;br /&gt;I can hear you ask why this should be a problem. It was because the link looked as follows:&lt;br /&gt;&lt;script src="https://gist.github.com/1056874.js?file=linknode.html"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;In the end it worked out that &lt;a href="https://developer.mozilla.org/en/DOM/document.evaluate"&gt;document.evaluate&lt;/a&gt; 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:&lt;br /&gt;&lt;br /&gt;&lt;script src="https://gist.github.com/1056864.js?file=linknode.feature"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="https://gist.github.com/1056841.js?file=linknodelookup.java"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;UPDATE:&lt;/b&gt; 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.&lt;div&gt;&lt;br /&gt;&lt;div&gt;I suppose you could argue that the html could be changed to be better. True, but atimes that might not be an option. The purists will argue as they do &lt;a href="http://groups.google.com/group/webdriver/browse_thread/thread/8c1a7eb47ce236b1/a281260541a0a177"&gt;here&lt;/a&gt; that it isn't a feature that should be provided by WebDriver but I think it would help to have a way of traversing the DOM once you have looked up an element. I should like to read about other creative solutions to a problem of this nature.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-4624882553786588254?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/4624882553786588254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=4624882553786588254' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/4624882553786588254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/4624882553786588254'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2011/06/webdriver-querying-text-nodes-lessons.html' title='WebDriver querying Text Nodes - Lessons learnt'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-4911458975502153514</id><published>2011-04-18T03:19:00.004+01:00</published><updated>2011-04-18T03:26:27.094+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='infographic'/><category scheme='http://www.blogger.com/atom/ns#' term='googlechartapi'/><category scheme='http://www.blogger.com/atom/ns#' term='nigeriadecides'/><category scheme='http://www.blogger.com/atom/ns#' term='results'/><title type='text'>Nigeria Decides Results so far</title><content type='html'>Just got hold of the data for this weekend's Nigeria Presidential elections from the electoral body's &lt;a href="http://www.inecnigeria.org/results/"&gt;website&lt;/a&gt; and I thought I'd share the same data in graphical form.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Enjoy.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt; &lt;em&gt;All Party Votes so far - Front Runners &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:28.0066833700,62.2706848400,6.2526309300,2.2873567100,1.1826441400&amp;amp;chs=450x200&amp;amp;chl=CPC|PDP|ACN|ANPP|OTHERS&amp;amp;chds=0,300" title="Front runners" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt; All Party Total Votes so far &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:28.0066833700,62.2706848400,6.2526309300,2.2873567100,0.0998734800,0.1960280000,0.1260088400,0.0800122800,0.1314141700,0.0540051600,0.0647100200,0.0424250700,0.0363561000,0.0526842900,0.1401409100,0.0545533900,0.0272574600,0.0281647600,0.0200728000,0.0289374100&amp;amp;chs=450x200&amp;amp;chl=CPC|PDP|ACN|ANPP|BNPP|PDC|PMP|FRESH|PPP|NMDP|NCP|NTP|MPPP|APS|ADC|UNPD|HDP|ARP|LDPN|SDMP&amp;amp;chds=0,300" title="Share of the vote moi moi" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;em&gt; Katsina &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:70.99,26.13,0.67,0.39,0.24,0.23,0.20,0.16,0.15,0.14,0.11,0.10,0.10,0.07,0.07,0.06,0.06,0.05,0.04,0.04&amp;amp;chs=450x200&amp;amp;chl=CPC|PDP|ACN|ANPP|BNPP|PDC|PMP|FRESH|PPP|NMDP|NCP|NTP|MPPP|APS|ADC|UNPD|HDP|ARP|LDPN|SDMP&amp;amp;chds=0,300" title="Share of the pie - Katsina" /&gt;&lt;br /&gt;&lt;br /&gt; &lt;em&gt; Rivers &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:98.04,0.88,0.71,0.09,0.08,0.04,0.04,0.02,0.02,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01&amp;amp;chs=450x200&amp;amp;chl=PDP|ACN|CPC|PDC|ANPP|PMP|PPP|HDP|FRESH|ADC|NCP|LDPN|BNPP|NMDP|NTP|UNPD|SDMP|APS|MPPP|ARP&amp;amp;chds=0,300" title="Share of the pie - Rivers" /&gt;&lt;br /&gt;&lt;br /&gt; &lt;em&gt; Delta &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:98.59,0.64,0.20,0.11,0.09,0.09,0.06,0.05,0.03,0.03,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01&amp;amp;chs=450x200&amp;amp;chl=PDP|CPC|ANPP|FRESH|ACN|PDC|PMP|PPP|NCP|ADC|UNPD|NTP|BNPP|LDPN|MPPP|ARP|NMDP|HDP|APS|SDMP&amp;amp;chds=0,300" title="Share of the pie - Delta" /&gt;&lt;br /&gt;&lt;br /&gt; &lt;em&gt; Zamfara &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:66.25,25.35,4.94,1.91,0.27,0.20,0.16,0.15,0.15,0.14,0.10,0.07,0.06,0.06,0.05,0.04,0.04,0.02,0.02,0.02&amp;amp;chs=450x200&amp;amp;chl=CPC|PDP|ANPP|ACN|BNPP|PDC|PPP|FRESH|PMP|ADC|APS|NCP|NMDP|NTP|MPPP|ARP|HDP|UNPD|SDMP|LDPN&amp;amp;chds=0,300" title="Share of the pie - Zamfara" /&gt;&lt;br /&gt;&lt;br /&gt; &lt;em&gt; Niger &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:64.03,31.54,1.31,0.70,0.32,0.31,0.31,0.28,0.20,0.14,0.13,0.13,0.12,0.11,0.11,0.07,0.06,0.06,0.04,0.03&amp;amp;chs=450x200&amp;amp;chl=CPC|PDP|ACN|ANPP|PDC|BNPP|PPP|PMP|FRESH|NMDP|ADC|NCP|NTP|APS|MPPP|HDP|UNPD|ARP|SDMP|LDPN&amp;amp;chds=0,300" title="Share of the pie - Niger" /&gt;&lt;br /&gt;&lt;br /&gt; &lt;em&gt; Abia &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:98.96,0.37,0.31,0.12,0.04,0.03,0.03,0.02,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.00&amp;amp;chs=450x200&amp;amp;chl=PDP|ACN|CPC|ANPP|PMP|PPP|FRESH|NCP|SDMP|ADC|NMDP|PDC|UNPD|NTP|LDPN|BNPP|MPPP|HDP|APS|ARP&amp;amp;chds=0,300" title="Share of the pie - Abia" /&gt;&lt;br /&gt;&lt;br /&gt; &lt;em&gt; Kano &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:60.77,19.69,16.48,1.58,0.21,0.20,0.16,0.15,0.12,0.12,0.10,0.10,0.07,0.05,0.04,0.04,0.04,0.03,0.03,0.02&amp;amp;chs=450x200&amp;amp;chl=CPC|ANPP|PDP|ACN|BNPP|ADC|PDC|PPP|FRESH|APS|PMP|NMDP|NCP|NTP|ARP|MPPP|HDP|UNPD|SDMP|LDPN&amp;amp;chds=0,300" title="Share of the pie - Kano" /&gt;&lt;br /&gt;&lt;br /&gt; &lt;em&gt; Bauchi &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:81.69,16.05,1.04,0.55,0.17,0.09,0.08,0.05,0.05,0.04,0.04,0.04,0.03,0.02,0.02,0.02,0.02,0.01,0.01,0.01&amp;amp;chs=450x200&amp;amp;chl=CPC|PDP|ACN|ANPP|BNPP|FRESH|PDC|PMP|PPP|NCP|NMDP|ADC|NTP|APS|ARP|HDP|MPPP|LDPN|UNPD|SDMP&amp;amp;chds=0,300" title="Share of the pie - Bauchi" /&gt;&lt;br /&gt;&lt;br /&gt; &lt;em&gt; Benue &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:66.31,21.29,10.47,0.82,0.25,0.18,0.16,0.08,0.07,0.07,0.06,0.04,0.04,0.03,0.03,0.03,0.02,0.02,0.02,0.01&amp;amp;chs=450x200&amp;amp;chl=PDP|ACN|CPC|ANPP|PDC|ADC|PMP|PPP|NCP|UNPD|BNPP|APS|NTP|FRESH|MPPP|NMDP|ARP|SDMP|HDP|LDPN&amp;amp;chds=0,300" title="Share of the pie - Benue" /&gt;&lt;br /&gt;&lt;br /&gt; &lt;em&gt; Bayelsa &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:99.63,0.14,0.07,0.05,0.03,0.03,0.01,0.01,0.01,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00&amp;amp;chs=450x200&amp;amp;chl=PDP|CPC|ACN|PDC|ANPP|PMP|PPP|FRESH|ADC|UNPD|NCP|MPPP|SDMP|LDPN|NMDP|ARP|NTP|HDP|BNPP|APS&amp;amp;chds=0,300" title="Share of the pie - Bayelsa" /&gt;&lt;br /&gt;&lt;br /&gt; &lt;em&gt; Kwara &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:64.68,20.16,12.64,0.40,0.38,0.27,0.20,0.16,0.15,0.12,0.11,0.11,0.11,0.10,0.09,0.08,0.07,0.06,0.06,0.06&amp;amp;chs=450x200&amp;amp;chl=PDP|CPC|ACN|ANPP|PDC|PMP|PPP|ADC|UNPD|NCP|NMDP|NTP|BNPP|FRESH|MPPP|APS|LDPN|ARP|SDMP|HDP&amp;amp;chds=0,300" title="Share of the pie - Kwara" /&gt;&lt;br /&gt;&lt;br /&gt; &lt;em&gt; Ebonyi &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:95.57,2.84,0.36,0.26,0.22,0.20,0.09,0.08,0.06,0.05,0.04,0.04,0.03,0.03,0.03,0.03,0.02,0.02,0.02,0.02&amp;amp;chs=450x200&amp;amp;chl=PDP|ANPP|PDC|PMP|ACN|CPC|ADC|PPP|APS|NTP|MPPP|NMDP|ARP|UNPD|NCP|BNPP|HDP|SDMP|LDPN|FRESH&amp;amp;chds=0,300" title="Share of the pie - Ebonyi" /&gt;&lt;br /&gt;&lt;br /&gt; &lt;em&gt; Plateau &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:72.98,25.27,0.72,0.37,0.18,0.12,0.06,0.05,0.04,0.03,0.03,0.03,0.03,0.02,0.02,0.01,0.01,0.01,0.01,0.01&amp;amp;chs=450x200&amp;amp;chl=PDP|CPC|ACN|ANPP|PDC|PMP|PPP|BNPP|FRESH|NCP|ADC|NMDP|APS|NTP|UNPD|ARP|HDP|SDMP|LDPN|MPPP&amp;amp;chds=0,300" title="Share of the pie - Plateau" /&gt;&lt;br /&gt;&lt;br /&gt; &lt;em&gt; Kaduna &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:51.92,46.31,0.67,0.44,0.13,0.12,0.07,0.07,0.05,0.05,0.03,0.03,0.02,0.02,0.02,0.02,0.01,0.01,0.01,0.01&amp;amp;chs=450x200&amp;amp;chl=CPC|PDP|ANPP|ACN|BNPP|PDC|PMP|FRESH|PPP|NCP|ADC|NMDP|NTP|APS|ARP|HDP|MPPP|SDMP|LDPN|UNPD&amp;amp;chds=0,300" title="Share of the pie - Kaduna" /&gt;&lt;br /&gt;&lt;br /&gt; &lt;em&gt; Edo &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:87.28,8.73,2.86,0.35,0.19,0.10,0.10,0.09,0.05,0.05,0.03,0.02,0.02,0.02,0.02,0.02,0.02,0.01,0.01,0.01&amp;amp;chs=450x200&amp;amp;chl=PDP|ACN|CPC|ANPP|PDC|PMP|ADC|PPP|NCP|FRESH|UNPD|BNPP|NTP|NMDP|APS|MPPP|LDPN|ARP|SDMP|HDP&amp;amp;chds=0,300" title="Share of the pie - Edo" /&gt;&lt;br /&gt;&lt;br /&gt; &lt;em&gt; Nasarawa &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:58.89,40.08,0.20,0.17,0.15,0.10,0.07,0.06,0.05,0.04,0.03,0.03,0.02,0.02,0.02,0.02,0.01,0.01,0.01,0.01&amp;amp;chs=450x200&amp;amp;chl=PDP|CPC|PDC|ACN|ANPP|PMP|PPP|NCP|FRESH|ADC|NTP|NMDP|MPPP|BNPP|ARP|APS|HDP|UNPD|LDPN|SDMP&amp;amp;chds=0,300" title="Share of the pie - Nasarawa" /&gt;&lt;br /&gt;&lt;br /&gt; &lt;em&gt; Oyo &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:56.14,29.21,10.70,0.83,0.76,0.38,0.36,0.34,0.24,0.20,0.15,0.13,0.09,0.09,0.08,0.08,0.07,0.07,0.05,0.03&amp;amp;chs=450x200&amp;amp;chl=PDP|ACN|CPC|ANPP|ADC|PDC|PPP|UNPD|PMP|NCP|APS|SDMP|NMDP|FRESH|BNPP|NTP|ARP|MPPP|HDP|LDPN&amp;amp;chds=0,300" title="Share of the pie - Oyo" /&gt;&lt;br /&gt;&lt;br /&gt; &lt;em&gt; Ekiti &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:51.56,44.67,1.03,0.57,0.50,0.31,0.31,0.23,0.20,0.19,0.07,0.06,0.05,0.05,0.04,0.04,0.04,0.03,0.03,0.02&amp;amp;chs=450x200&amp;amp;chl=PDP|ACN|CPC|ANPP|ADC|PDC|UNPD|PMP|PPP|APS|SDMP|NCP|NMDP|NTP|MPPP|ARP|BNPP|HDP|LDPN|FRESH&amp;amp;chds=0,300" title="Share of the pie - Ekiti" /&gt;&lt;br /&gt;&lt;br /&gt; &lt;em&gt; Imo &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:97.98,1.05,0.54,0.18,0.07,0.03,0.03,0.02,0.02,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.00&amp;amp;chs=450x200&amp;amp;chl=PDP|ACN|CPC|ANPP|PDC|PMP|FRESH|PPP|ADC|NCP|LDPN|UNPD|SDMP|NMDP|NTP|MPPP|BNPP|ARP|APS|HDP&amp;amp;chds=0,300" title="Share of the pie - Imo" /&gt;&lt;br /&gt;&lt;br /&gt; &lt;em&gt; Akwa Ibom &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:94.58,4.39,0.43,0.16,0.10,0.07,0.05,0.04,0.04,0.02,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01&amp;amp;chs=450x200&amp;amp;chl=PDP|ACN|CPC|ANPP|PDC|ADC|PMP|UNPD|PPP|NCP|NTP|NMDP|APS|MPPP|BNPP|FRESH|LDPN|ARP|SDMP|HDP&amp;amp;chds=0,300" title="Share of the pie - Akwa Ibom" /&gt;&lt;br /&gt;&lt;br /&gt; &lt;em&gt; Sokoto &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:59.44,33.97,2.21,0.56,0.46,0.44,0.41,0.35,0.32,0.30,0.26,0.22,0.21,0.20,0.16,0.12,0.10,0.10,0.09,0.08&amp;amp;chs=450x200&amp;amp;chl=CPC|PDP|ACN|ANPP|PMP|PPP|PDC|FRESH|BNPP|NMDP|ADC|APS|MPPP|NTP|NCP|HDP|ARP|UNPD|SDMP|LDPN&amp;amp;chds=0,300" title="Share of the pie - Sokoto" /&gt;&lt;br /&gt;&lt;br /&gt; &lt;em&gt; Lagos &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:65.90,21.96,9.77,0.46,0.38,0.38,0.27,0.15,0.14,0.10,0.09,0.07,0.06,0.05,0.05,0.04,0.04,0.03,0.03,0.02&amp;amp;chs=450x200&amp;amp;chl=PDP|ACN|CPC|ANPP|PPP|PDC|ADC|PMP|NCP|FRESH|UNPD|BNPP|APS|SDMP|NMDP|ARP|NTP|HDP|MPPP|LDPN&amp;amp;chds=0,300" title="Share of the pie - Lagos" /&gt;&lt;br /&gt;&lt;br /&gt; &lt;em&gt; Anambra &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:98.96,0.36,0.30,0.11,0.08,0.05,0.03,0.02,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.00,0.00,0.00&amp;amp;chs=450x200&amp;amp;chl=PDP|CPC|ACN|PDC|ANPP|PMP|PPP|ADC|NCP|FRESH|NTP|APS|UNPD|MPPP|LDPN|NMDP|BNPP|ARP|HDP|SDMP&amp;amp;chds=0,300" title="Share of the pie - Anambra" /&gt;&lt;br /&gt;&lt;br /&gt; &lt;em&gt; Kogi &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:71.17,23.53,2.94,1.16,0.22,0.17,0.12,0.11,0.11,0.08,0.06,0.06,0.06,0.05,0.04,0.03,0.03,0.02,0.02,0.02&amp;amp;chs=450x200&amp;amp;chl=PDP|CPC|ANPP|ACN|PDC|PMP|PPP|NCP|ADC|BNPP|APS|FRESH|NMDP|UNPD|NTP|MPPP|ARP|HDP|LDPN|SDMP&amp;amp;chds=0,300" title="Share of the pie - Kogi" /&gt;&lt;br /&gt;&lt;br /&gt; &lt;em&gt; Osun &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:58.46,36.75,1.36,1.01,0.71,0.34,0.25,0.25,0.19,0.12,0.10,0.07,0.06,0.06,0.06,0.05,0.05,0.04,0.04,0.02&amp;amp;chs=450x200&amp;amp;chl=ACN|PDP|CPC|ADC|ANPP|UNPD|PPP|PDC|PMP|SDMP|APS|NCP|NMDP|NTP|ARP|MPPP|BNPP|FRESH|HDP|LDPN&amp;amp;chds=0,300" title="Share of the pie - Osun" /&gt;&lt;br /&gt;&lt;br /&gt; &lt;em&gt; Ondo &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:79.57,15.25,2.44,1.38,0.39,0.18,0.16,0.11,0.08,0.06,0.05,0.05,0.04,0.04,0.04,0.03,0.03,0.03,0.03,0.02&amp;amp;chs=450x200&amp;amp;chl=PDP|ACN|CPC|ANPP|PDC|ADC|PMP|PPP|UNPD|NCP|NMDP|NTP|APS|SDMP|BNPP|MPPP|FRESH|LDPN|ARP|HDP&amp;amp;chds=0,300" title="Share of the pie - Ondo" /&gt;&lt;br /&gt;&lt;br /&gt; &lt;em&gt; Enugu &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:98.54,0.46,0.32,0.22,0.14,0.08,0.05,0.03,0.02,0.02,0.02,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01&amp;amp;chs=450x200&amp;amp;chl=PDP|CPC|PDC|ACN|ANPP|PMP|PPP|FRESH|ADC|NCP|NTP|UNPD|LDPN|SDMP|BNPP|MPPP|NMDP|APS|HDP|ARP&amp;amp;chds=0,300" title="Share of the pie - Enugu" /&gt;&lt;br /&gt;&lt;br /&gt; &lt;em&gt; FCT &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:63.66,33.05,0.80,0.58,0.51,0.37,0.17,0.16,0.15,0.11,0.10,0.06,0.06,0.05,0.04,0.04,0.04,0.02,0.02,0.01&amp;amp;chs=450x200&amp;amp;chl=PDP|CPC|ANPP|ACN|ADC|PDC|BNPP|PPP|PMP|NCP|FRESH|NTP|APS|NMDP|ARP|MPPP|HDP|UNPD|LDPN|SDMP&amp;amp;chds=0,300" title="Share of the pie - FCT" /&gt;&lt;br /&gt;&lt;br /&gt; &lt;em&gt; Ogun &lt;/em&gt; &lt;img src="http://chart.googleapis.com/chart?cht=p3&amp;amp;chd=t:56.86,36.70,3.25,0.55,0.43,0.38,0.38,0.32,0.30,0.20,0.09,0.08,0.08,0.08,0.06,0.06,0.05,0.05,0.04,0.03&amp;amp;chs=450x200&amp;amp;chl=PDP|ACN|CPC|ANPP|ADC|PPP|PDC|PMP|UNPD|SDMP|APS|NCP|MPPP|NTP|NMDP|BNPP|ARP|FRESH|HDP|LDPN&amp;amp;chds=0,300" title="Share of the pie - Ogun" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-4911458975502153514?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/4911458975502153514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=4911458975502153514' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/4911458975502153514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/4911458975502153514'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2011/04/nigeria-decides-results-so-far.html' title='Nigeria Decides Results so far'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-174025237778982193</id><published>2011-03-29T08:44:00.004+01:00</published><updated>2011-03-29T08:57:24.918+01:00</updated><title type='text'>Neighbourhood surgeries - how can mine be improved?</title><content type='html'>&lt;div&gt;This just feels like it could be better. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I call to make an appointment at the surgery this morning and am told all morning slots are gone. So what about afternoon slots then?&lt;/div&gt;&lt;div&gt;Well, new slots are released at 2.30pm and you you can't book till then. This is after spending about 15 minutes in an automated telephone queue. Did I tell you that &lt;a href="http://lhfville.blogspot.com/2010/09/customer-care-rant.html"&gt;I hate them&lt;/a&gt;? What is the guarantee that I will be allotted a spot if I call in at 2.30pm? What if everyone also wants to call in at the same time? Sounds like a lottery arrangement. On a health service. &lt;strong&gt;BAD&lt;/strong&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the end I think an automated service should be put in place. I also think surgeries firstly should operate like normal businesses. What do the folks at the big golden arches do when loads of customers consistently walk through the door at an outlet? They scale up the site by hiring new hands and when this doesn't help they open a new one nearby. What has my friendly neighbourhood surgery done? They have resorted to handing out a 0844 number along with instituting an appointment lottery scheme. &lt;strong&gt;BAD&lt;/strong&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the end of the day, the lady on the other end of the line offers to have a doctor phone in some advice sometime in the day. She has made a judgement call that the condition doesn't warrant my being bothered to see a doctor. I am grateful for the offer but there is something faintly worrying about some lady at the other end of the phone deciding over the state of a surgery client's health (or access they get) without the proper experience. Might I add without the training for it. &lt;strong&gt;BAD&lt;/strong&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Three strikes!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Enough ranting for one morning. I just thought I'd let it all out. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Be well.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;UPDATE: They have called me back with an appointment. Result! That usually helps but I can't help thinking that some other guy might have been unlucky this time.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-174025237778982193?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/174025237778982193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=174025237778982193' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/174025237778982193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/174025237778982193'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2011/03/neighbourhood-surgeries-how-can-mine-be.html' title='Neighbourhood surgeries - how can mine be improved?'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-5573724121792507518</id><published>2011-03-06T13:11:00.004Z</published><updated>2011-03-06T13:31:47.518Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='cucumber'/><category scheme='http://www.blogger.com/atom/ns#' term='selenium'/><category scheme='http://www.blogger.com/atom/ns#' term='cuke4duke'/><title type='text'>Cucumber DSL for Selenium Testing - Take 2</title><content type='html'>After poking around with Cucumber, Cuke4Duke and Selenium, I liked what I saw and started digging around for more interesting bits. I have moved from selenium 1 to Webdriver(Selenium 2). &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One of the minor problems I have had so far is that the browser windows don't get closed after my tests completed.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I saw a number of attempts at solving this including having a tagged @After hook on the last scenario in the last Feature. None of them really jumped out at me until I read a &lt;a href="http://groups.google.com/group/cukes/browse_thread/thread/37927296ec11a0f8"&gt;question&lt;/a&gt; to the &lt;a href="http://groups.google.com/group/cukes"&gt;group&lt;/a&gt; and that led me to give a JVM shutdown hooks a go (equivalent to Kernel#at_exit in Ruby land). That seems to work quite well and lives well away from the features and steps making for cleaner code. It also means that we will have a clean suite of features that don't get polluted by technical detail.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Do take a look at the full thing on &lt;a href="https://github.com/ck1125/cuke4dukewebdriver"&gt;GitHub&lt;/a&gt;. Let me know what you think.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-5573724121792507518?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/5573724121792507518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=5573724121792507518' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/5573724121792507518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/5573724121792507518'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2011/03/cucumber-dsl-for-selenium-testing-take_06.html' title='Cucumber DSL for Selenium Testing - Take 2'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-3812146133098184809</id><published>2011-03-01T19:13:00.008Z</published><updated>2011-03-01T19:58:06.236Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='functional testing'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='cucumber'/><category scheme='http://www.blogger.com/atom/ns#' term='selenium'/><category scheme='http://www.blogger.com/atom/ns#' term='cuke4duke'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'>Cucumber DSL for Selenium Testing - Take 1</title><content type='html'>I have had a few hours to play with &lt;a href="http://cukes.info/"&gt;Cucumber&lt;/a&gt; tests using &lt;a href="https://github.com/aslakhellesoy/cuke4duke"&gt;cuke4duke&lt;/a&gt;  by &lt;a href="https://github.com/aslakhellesoy"&gt;Aslak Hellesøy&lt;/a&gt;, a very useful addon to Cucumber which makes it possible to write step definitions in several JVM languages. I have gotten it to the point where I can write Cucumber Features and Scenarios for very basic tests. I hope to write in more detail about my full findings and thoughts later on.&lt;br /&gt;&lt;br /&gt;I have set it up so that it can be built in &lt;a href="http://maven.apache.org/"&gt;Maven&lt;/a&gt;. The pom.xml file can be located &lt;a href="https://gist.github.com/849671"&gt;here&lt;/a&gt;. The project structure is pretty simple and can be structured as follows:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;project dir=""&gt;&lt;br /&gt;|-features&lt;br /&gt; |-brandhub.feature (source can be found &lt;a href="https://gist.github.com/849681"&gt;here&lt;/a&gt;&lt;br /&gt;|-src&lt;br /&gt; |-test&lt;br /&gt;   |-java&lt;br /&gt;    |-sample&lt;br /&gt;      |-BrandHubSteps.java (full source can be found &lt;a href="https://gist.github.com/849685"&gt;here&lt;/a&gt;)&lt;br /&gt;|-pom.xml (source can be found &lt;a href="https://gist.github.com/849671"&gt;here&lt;/a&gt;)&lt;br /&gt;&lt;/project&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;All you then need to do once you have the above structure is run &lt;span style="font-weight:bold;"&gt;mvn clean integration-test&lt;/span&gt; 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.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Please note that the first time you run you will need to append the following system property to your maven command line: &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;/div&gt;&lt;div&gt;-Dcucumber.installGems=true &lt;/div&gt;&lt;div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This will make sure that the cuke4duke Ruby gem and its dependencies are installed. If you don't do this, you will most definitely get an error along the lines of: &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;Error opening script file: &lt;mavenl_local_repository&gt;/.jruby/bin/cuke4duke &lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Let me know what you think.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Peace and Love.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-3812146133098184809?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/3812146133098184809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=3812146133098184809' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/3812146133098184809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/3812146133098184809'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2011/03/cucumber-dsl-for-selenium-testing-take.html' title='Cucumber DSL for Selenium Testing - Take 1'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-959376332722158887</id><published>2011-01-18T12:58:00.003Z</published><updated>2011-01-18T13:01:20.196Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='collaborative consumption'/><category scheme='http://www.blogger.com/atom/ns#' term='random'/><title type='text'>Thoughts on collaborative consumption</title><content type='html'>Last night I read the excerpts from an interesting book on parenting, &lt;a href="http://amzn.to/dMqAyh"&gt;the Chinese mother way&lt;/a&gt; and thought it was an interesting book and wanted to read the full thing.&lt;br /&gt;&lt;br /&gt;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. &lt;br /&gt;THe Buy or Borrow question would have been easy one to answer if we had parity in the utility of digital and conventional assets.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;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.&lt;br /&gt;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?&lt;br /&gt;&lt;br /&gt;These questions have now come to the forefront of my consciousness after I watched &lt;a href="http://bit.ly/euCkSH"&gt;Rachel Botsman's TED talk&lt;/a&gt; on collaborative consumption. Is anyone thinking along the same lines?&lt;br /&gt;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 &lt;span style="font-weight:bold;"&gt;AND&lt;/span&gt; value from doing so.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-959376332722158887?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/959376332722158887/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=959376332722158887' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/959376332722158887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/959376332722158887'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2011/01/thoughts-on-collaborative-consumption.html' title='Thoughts on collaborative consumption'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-7798652951254444635</id><published>2011-01-06T13:12:00.006Z</published><updated>2011-01-06T13:22:53.924Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='JDBC'/><category scheme='http://www.blogger.com/atom/ns#' term='escape processing'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL-92'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle JDBC Driver wahala - the conclusion.</title><content type='html'>Yesterday, I told you about &lt;a href="http://lhfville.blogspot.com/2011/01/oracle-jdbc-driver-wahala.html"&gt;my ordeal&lt;/a&gt; with the &lt;a href="http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html"&gt;Oracle JDBC Driver&lt;/a&gt; and the cryptic&lt;span style="font-weight:bold;"&gt; Non supported SQL92 token at position: x&lt;/span&gt; message I was getting.&lt;br /&gt;&lt;br /&gt;Turns out that the problem was that when running the script in &lt;a href="http://en.wikipedia.org/wiki/Continuous_integration"&gt;Continuous Integration&lt;/a&gt; builds, embedded SQL92 syntax escape processing was enabled by default. &lt;br /&gt;&lt;br /&gt;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 &lt;a href="http://www.oracle.com/technetwork/developer-tools/sql-developer/index.html"&gt;SQL Developer&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In conclusion, I still think the guys at &lt;a href="http://www.oracle.com"&gt;Oracle&lt;/a&gt; should implement better error messages, as this would have saved me loads of time.&lt;br /&gt;&lt;br /&gt;Be well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-7798652951254444635?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/7798652951254444635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=7798652951254444635' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/7798652951254444635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/7798652951254444635'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2011/01/oracle-jdbc-driver-wahala-conclusion.html' title='Oracle JDBC Driver wahala - the conclusion.'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-8082059797220416896</id><published>2011-01-05T02:24:00.004Z</published><updated>2011-01-05T02:38:34.510Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='JDBC'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle JDBC Driver wahala.</title><content type='html'>Happy New Year, folks. My year has started rather eventfully, as I have spent the most productive part of my day trying to resolve a problem with a DDL statement being executed as part of a product &lt;a href="http://en.wikipedia.org/wiki/Continuous_integration"&gt;CI&lt;/a&gt; build.&lt;br /&gt;&lt;br /&gt;The problem? There is a stored procedure on a project that I am able to run successfully via &lt;a href="http://www.oracle.com/technetwork/developer-tools/sql-developer/index.html"&gt;Oracle SQL Developer&lt;/a&gt; but have been unable to get working as part of the build. Currently, the &lt;a href="http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html"&gt;Oracle JDBC Driver&lt;/a&gt; spits out the following nondescript SQL exception message: &lt;span style="font-weight:bold;"&gt;Non supported SQL92 token at position: x.&lt;/span&gt; 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.&lt;br /&gt;&lt;br /&gt;What would have been useful in the exception message, and I hark back to the days of &lt;a href="http://www.oracle.com/technology/docs/tech/sql_plus/index.html"&gt;Oracle SQL*plus&lt;/a&gt;, is a line number and column number with some mention of the errant token.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;I am using a v10.x Driver.&lt;br /&gt;&lt;br /&gt;If you are reading this, have you encountered a problem like this recently? Any light you can shed is appreciated.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Thanks&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-8082059797220416896?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/8082059797220416896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=8082059797220416896' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/8082059797220416896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/8082059797220416896'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2011/01/oracle-jdbc-driver-wahala.html' title='Oracle JDBC Driver wahala.'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-3789608768115572122</id><published>2010-12-24T10:08:00.005Z</published><updated>2010-12-24T10:12:50.484Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='random'/><title type='text'>Holiday Thoughts</title><content type='html'>This is just wishing everyone Happy Holidays (Christmas and New Year). Its been a good year, a hard year. I am glad that we have come to this point in the year. I am looking forward with a lot of excitement to all the fun things that can be achieved in 2011.&lt;br /&gt;&lt;br /&gt;See you on the other side!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-3789608768115572122?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/3789608768115572122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=3789608768115572122' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/3789608768115572122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/3789608768115572122'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2010/12/holiday-thoughts.html' title='Holiday Thoughts'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-2831257443039505445</id><published>2010-11-13T15:14:00.004Z</published><updated>2010-11-13T15:26:05.761Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='service'/><category scheme='http://www.blogger.com/atom/ns#' term='consumer rights'/><category scheme='http://www.blogger.com/atom/ns#' term='British Gas'/><title type='text'>British Gas nightmare - resolved</title><content type='html'>Things happened very quickly after I posted &lt;a href="http://lhfville.blogspot.com/2010/11/british-gas-nightmare.html"&gt;this&lt;/a&gt; and tweeted about it. I got followed by the proactive folks at &lt;a href="http://www.britishgas.co.uk/"&gt;British Gas&lt;/a&gt; customer relations department. They took up the matter and ensured that an investigation was indeed carried out.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;It is an encouraging trend that folks at &lt;a href="http://www.britishgas.co.uk/"&gt;British Gas&lt;/a&gt; are listening to and talking with the &lt;a href="http://www.forrester.com/groundswell/book.html"&gt;groundswell&lt;/a&gt;. 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.&lt;br /&gt;&lt;br /&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-2831257443039505445?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/2831257443039505445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=2831257443039505445' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/2831257443039505445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/2831257443039505445'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2010/11/british-gas-nightmare-resolved.html' title='British Gas nightmare - resolved'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-4517742155499015640</id><published>2010-11-06T10:14:00.004Z</published><updated>2010-11-06T10:37:56.395Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='service'/><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='consumer rights'/><category scheme='http://www.blogger.com/atom/ns#' term='British Gas'/><title type='text'>British Gas nightmare</title><content type='html'>For weeks now I have been doing  battle with &lt;a href="www.BritishGas.co.uk/HomeCare"&gt;British Gas Home Care&lt;/a&gt; regarding an engineer visit. Here's my story.&lt;br /&gt;&lt;br /&gt;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 &lt;a href="www.BritishGas.co.uk"&gt;British Gas&lt;/a&gt; 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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;Fast forward a few weeks and I get a pay-now-or-else letter saying I owe £210 for services rendered by &lt;a href="www.BritishGas.co.uk"&gt;British Gas&lt;/a&gt;. 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!&lt;br /&gt;&lt;br /&gt;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 &lt;a href="www.BritishGas.co.uk"&gt;British Gas&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;I have also received further communication relating to this dispute in form of a solicitor's letter urging me to pay or face a &lt;a href="http://www.direct.gov.uk/en/MoneyTaxAndBenefits/ManagingDebt/CourtClaimsAndBankruptcy/DG_10013083"&gt;county court judgement&lt;/a&gt; and all the evil that brings. In response to this I have mailed the &lt;a href="mailto:BGS.CustomerRelations@centrica.com"&gt;complaints department&lt;/a&gt; at &lt;a href="www.BritishGas.co.uk"&gt;British Gas&lt;/a&gt; and will be hoping that &lt;a href="www.BritishGas.co.uk"&gt;British Gas&lt;/a&gt; does what it should have done weeks ago and looks into this issue. I will be posting updates in the coming days and weeks.&lt;br /&gt;&lt;br /&gt;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 &lt;a href="www.BritishGas.co.uk"&gt;British Gas&lt;/a&gt;. Hopefully, the values entrenched in British society will mean that there is a victory for common sense and the little guy.      &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-4517742155499015640?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/4517742155499015640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=4517742155499015640' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/4517742155499015640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/4517742155499015640'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2010/11/british-gas-nightmare.html' title='British Gas nightmare'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-7144017003575398652</id><published>2010-09-16T13:04:00.004+01:00</published><updated>2010-09-16T13:11:48.997+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><title type='text'>Customer care rant</title><content type='html'>I was just thinking today about how sweet it would be to have self-service on things like booking a home installation or engineer visit.&lt;br /&gt;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.&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;For anyone who has ever called to speak to customer care assistants for anything, it is dead time and you are paying for it. &lt;br /&gt;And depending on the time of day and the load it could cost you an awful lot of time &lt;span style="font-weight:bold;"&gt;AND&lt;/span&gt; money.&lt;br /&gt;&lt;br /&gt;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 &lt;span style="font-weight:bold;"&gt;AND&lt;/span&gt; money, as the customer care assistant I spoke to could have spent his time trying to sign a new customer.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;End of moan.&lt;br /&gt;&lt;br /&gt;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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-7144017003575398652?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/7144017003575398652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=7144017003575398652' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/7144017003575398652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/7144017003575398652'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2010/09/customer-care-rant.html' title='Customer care rant'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-3277436764899690713</id><published>2010-07-20T18:45:00.002+01:00</published><updated>2010-07-20T19:12:51.647+01:00</updated><title type='text'>Thoughts on EyeQL</title><content type='html'>Today we had a small challenge at work which revolved around taking certain changes from one of our code branches and merging them into another branch. Now the keyword here is &lt;span style="font-weight:bold;"&gt;certain&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;One of the conventions we use at work is to have Atlassian &lt;a href="http://www.atlassian.com/software/jira/"&gt;JIRA&lt;/a&gt; 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. &lt;br /&gt;&lt;br /&gt;The problem? An easy way to retrieve all the &lt;a href="http://subversion.tigris.org/"&gt;SVN&lt;/a&gt; revision numbers associated with those tickets so that we find it easy merge said revisions to the target branch. Luckily we have Atlassian &lt;a href="http://www.atlassian.com/software/fisheye/"&gt;Fisheye&lt;/a&gt; at work and with it comes an interesting &lt;a href="http://en.wikipedia.org/wiki/Domain-specific_language"&gt;DSL&lt;/a&gt; (&lt;a href="http://confluence.atlassian.com/display/FISHEYE015/4.+EyeQL+Reference+Guide"&gt;EyeQL&lt;/a&gt;) 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.&lt;br /&gt;&lt;br /&gt;The following &lt;a href="http://confluence.atlassian.com/display/FISHEYE015/4.+EyeQL+Reference+Guide"&gt;EyeQL&lt;/a&gt; query when run will return the revision numbers I was looking for:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;select revisions &lt;br /&gt;from dir /svn/directory/path&lt;br /&gt;where comment =~  "^.*(JIRA-1|JIRA-2|JIRA-3).*$"&lt;br /&gt;group by changeset&lt;br /&gt;return revision&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;Armed with this list of revisions it was easy to go through and merge them from the source branch to the target branch. &lt;br /&gt;&lt;br /&gt;We would like to hear your thoughts on whether you have been in similar shoes and how you have gone about solving your problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-3277436764899690713?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/3277436764899690713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=3277436764899690713' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/3277436764899690713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/3277436764899690713'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2010/07/thoughts-on-eyeql.html' title='Thoughts on EyeQL'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-3704253787868630810</id><published>2010-06-10T03:02:00.009+01:00</published><updated>2010-06-10T03:30:37.209+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spock framework'/><category scheme='http://www.blogger.com/atom/ns#' term='unit testing'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>Loving Spock Framework</title><content type='html'>I have been following the progress of the &lt;a href="http://code.google.com/p/spock"&gt;Spock Framework&lt;/a&gt; for sometime and today decided to take the plunge.&lt;br /&gt;&lt;br /&gt;As a &lt;a href="http://junit.org"&gt;JUnit&lt;/a&gt; user and having used mocking frameworks like &lt;a href="http://easymock.org"&gt;EasyMock&lt;/a&gt; and &lt;a href="http://mockito.org/"&gt;Mockito&lt;/a&gt;,  I set to work trying to convert a test I had written earlier. &lt;br /&gt;&lt;br /&gt;One of the things I found hard to get past was the need to inherit from a given class, namely the Specification. Once I had looked around the code and found that it was built to work in that way, I got down to it. I like the way in which tests are expressed. &lt;br /&gt;&lt;br /&gt;I found the interactions/mocking slightly different, especially the syntax. I like the way in which you can use wild card matchers for parameters and number of calls but returning values from a mocked object's interactions was less than intuitive. &lt;br /&gt;&lt;br /&gt;Where in the EasyMock world you would say something like&lt;br /&gt;&lt;br /&gt;&lt;code lang="java"&gt;&lt;br /&gt;  expect(mockedObject.calledMethod()).andReturn(value);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;In Spock it would look something like the following &lt;br /&gt;&lt;br /&gt;&lt;code lang="groovy"&gt;&lt;br /&gt;   mockedObject.calledMethod() &gt;&gt; {value}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I am hoping that at some point there might be a different way to express that expectation as it currently looks a bit cryptic.&lt;br /&gt;&lt;br /&gt;All in all I like that  beyond your feature/test name you can self document tests to the extent that it becomes readable for non developers, so a heavy plus there. I also like the fact that &lt;a href="http://www.jetbrains.com/idea/"&gt;IntelliJ&lt;/a&gt; and &lt;a href="http://maven.apache.org/"&gt;Maven&lt;/a&gt; all understand and can run Spock Specifications without any trouble.&lt;br /&gt;&lt;br /&gt;In the coming days I will be using the Spock Framework a bit more, especially as I would love to discover other features like Unroll. Will let you know how I get on.&lt;br /&gt;&lt;br /&gt;Peace and Love.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-3704253787868630810?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/3704253787868630810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=3704253787868630810' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/3704253787868630810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/3704253787868630810'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2010/06/loving-spock-framework.html' title='Loving Spock Framework'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-2781032043304965794</id><published>2009-11-27T15:53:00.005Z</published><updated>2009-11-27T16:02:32.893Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='couchdb'/><title type='text'>Installing couchdb on CentOS 5</title><content type='html'>Installing on CentOS 5 i386&lt;br /&gt;&lt;br /&gt;(Note: &lt;a href="https://issues.apache.org/jira/browse/COUCHDB-315"&gt;COUCHDB-315&lt;/a&gt; has an attached patch for the CouchDB README which adds instructions for RHEL 5.)&lt;br /&gt;&lt;br /&gt;1. Install prerequisites. You will need EPEL for js and erlang (or build those from source).&lt;br /&gt;&lt;pre name="code"&gt;&lt;br /&gt;yum install ncurses-devel openssl-devel icu libicu-devel js js-devel curl-devel erlang libtool gcc&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You also require curl (7.19.7 worked for me).I had to build it locally though because of some weird libcomm_err.so missing dependency.&lt;br /&gt;&lt;br /&gt;2. Install CouchDB&lt;br /&gt;&lt;br /&gt;The configure line below is for 64-bit, adjust for your arch (or leave out --with-erlang if configure can find out for itself). You can use a release tarball instead of a checkout, in that case skip right to the ./confgure line.&lt;br /&gt;&lt;pre name="code"&gt;&lt;br /&gt;svn checkout http://svn.apache.org/repos/asf/couchdb/trunk couchdb&lt;br /&gt;cd couchdb&lt;br /&gt;./bootstrap&lt;br /&gt;./configure --with-erlang=/usr/lib/erlang/usr/include &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;3. Edit config file to suit&lt;br /&gt;&lt;pre name="code"&gt;&lt;br /&gt;vi /usr/local/etc/couchdb/local.ini&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;4. Create user, modify ownership and permissions&lt;br /&gt;&lt;br /&gt;Create the couchdb user:&lt;br /&gt;&lt;pre name="code"&gt;&lt;br /&gt;adduser -r --home /usr/local/var/lib/couchdb -M --shell /bin/bash --comment "CouchDB Administrator" couchdb&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;See the README for additional chown and chmod commands to run.&lt;br /&gt;&lt;br /&gt;5. Launch! In console:&lt;br /&gt;&lt;pre name="code"&gt;&lt;br /&gt;sudo -u couchdb couchdb&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;or as daemon:&lt;br /&gt;&lt;pre name="couch"&gt;&lt;br /&gt;sudo /usr/local/etc/rc.d/couchdb start&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;6. Run as daemon on start-up:&lt;br /&gt;&lt;pre name="code"&gt;&lt;br /&gt;sudo ln -s /usr/local/etc/rc.d/couchdb /etc/init.d/couchdb&lt;br /&gt;sudo chkconfig --add couchdb&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-2781032043304965794?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/2781032043304965794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=2781032043304965794' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/2781032043304965794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/2781032043304965794'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2009/11/installing-couchdb-on-centos-5.html' title='Installing couchdb on CentOS 5'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-4769974194751140037</id><published>2009-03-01T04:00:00.003Z</published><updated>2009-03-01T04:09:45.980Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery.autocomplete'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><title type='text'>JQuery AutoComplete - Lessons Learnt</title><content type='html'>I can actually go to bed tonight after resolving my bugbear of the past few days: &lt;a href="http://docs.jquery.com/Plugins/Autocomplete"&gt;jquery.autocomplete&lt;/a&gt;. I usually stay away from &lt;a href="https://developer.mozilla.org/en/JavaScript"&gt;JavaScript&lt;/a&gt; development in my day job but the past few days has seen me trying to do some work that requires autocomplete functionality. Never knowingly backing away from a challenge, I rolled up my sleeves and got to work.&lt;br /&gt;&lt;br /&gt;It wasn't very difficult finding resources to get me started on this very useful plugin to the jquery framework library. Where I met my challenge was the use case which I sought to implement. I was going to be populating the lookup elements dynamically and this data would be supplied by the server-side in &lt;a href="http://www.json.org/"&gt;JSON&lt;/a&gt; at that. JSON being a subset of JavaScript made sense and I figured this would work out of the box....untrue. Thanks to Firebug I found that the JSON data coming back from the server side wasn't understood.&lt;br /&gt;&lt;br /&gt;After a few days of sulking, I found some succour in the form of a jquery autocomplete implementation which actually speaks JSON. I had to tweak it to do my bidding in the end of the day but this was a better match for my problem and I am grateful to the &lt;a href="http://codeassembly.com/Unobtrusive-jQuery-autocomplete-plugin-with-json-key-value-support/"&gt;codeassembly&lt;/a&gt; guy(s).&lt;br /&gt;&lt;br /&gt;A few points to note:&lt;br /&gt;It would be nice if the JSON functionality is brought into the main jquery.autocomplete.&lt;br /&gt;It would also be nice to have a user defined formatItem function like the main jquery.autocomplete that is called after the JSON data is returned(this is the part of the codeassembly implementation I had to tweak to do my own thing).&lt;br /&gt;&lt;br /&gt;All in all an interesting experience. I have a few more things to do in JavaScript land and will let you know how I get on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-4769974194751140037?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/4769974194751140037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=4769974194751140037' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/4769974194751140037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/4769974194751140037'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2009/03/jquery-autocomplete-lessons-learnt.html' title='JQuery AutoComplete - Lessons Learnt'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-7186371336551111782</id><published>2009-02-23T23:27:00.007Z</published><updated>2009-02-24T16:02:56.510Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='tip'/><title type='text'>Source code in blogger posts.</title><content type='html'>UPDATE: I am pleased to tell you that I have just installed the Groovy &lt;a href="http://code.google.com/p/syntaxhighlighter"&gt;syntaxhighlighter&lt;/a&gt; from the trunk of that project.&lt;br /&gt;&lt;br /&gt;I am glad I finally found a solution to my problem. I think the guys at blogger need to write up something in their FAQs about having source code in blog posts. Most of the Google searches I undertook came out with nothing until I found this &lt;a href="http://pleasemakeanote.blogspot.com/2008/06/posting-source-code-in-blogger.html"&gt;gem&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I am hoping to find some form of blogger plugin that does this in the future, like what the &lt;a href="http://wordpress.org/"&gt;WordPress&lt;/a&gt; guys have done. I will also be hoping that the &lt;a href="http://code.google.com/p/syntaxhighlighter"&gt;syntaxhighlighter&lt;/a&gt; guys will provide &lt;a href="http://groovy.codehaus.org/"&gt;Groovy&lt;/a&gt; support soon ;)&lt;br /&gt;&lt;br /&gt;More later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-7186371336551111782?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/7186371336551111782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=7186371336551111782' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/7186371336551111782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/7186371336551111782'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2009/02/source-code-in-blogger-posts.html' title='Source code in blogger posts.'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-544658953390384391</id><published>2009-02-19T00:58:00.007Z</published><updated>2009-02-24T16:05:24.232Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='classpath hell'/><category scheme='http://www.blogger.com/atom/ns#' term='xmlparsers'/><category scheme='http://www.blogger.com/atom/ns#' term='grails'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle XMLParser and Grails - Lessons learnt</title><content type='html'>A few days ago I was trying to integrate the work of a colleague into a light Grails application I am currently maintaining but experienced classpath hell with &lt;a href="http://www.oracle.com/technology/tech/xml/xdkhome.html"&gt;Oracle's XMLParser V2&lt;/a&gt;. A better description of the problem can be found in the &lt;a href="http://www.atlassian.com/software/jira"&gt;JIRA&lt;/a&gt; for the &lt;a href="http://grails.org/"&gt;Grails&lt;/a&gt; project &lt;a href="http://jira.codehaus.org/browse/GRAILS-2131"&gt;here&lt;/a&gt;. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The steps prescribed didn't seem to work so I thought I'd do some digging again. I'll disappoint you by telling you that the JIRA issue remains unresolved and I was only able to come up with a work around. I looked into the script for RunWar and it would appear that for some reason, Grails defaults to a non-validating parser before kicking off &lt;a href="http://www.mortbay.org/"&gt;Jetty&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The following lines in the RunWar.groovy script for Grails-1.0.3 is telling:&lt;br /&gt;&lt;pre name="code" class="Groovy"&gt;&lt;br /&gt;System.setProperty('org.mortbay.xml.XmlParser.NotValidating','true')&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This single line of code ensures that you use a non-validating parser to start up Jetty and parse your application's web.xml. Maybe if there was another means for configuring your xml parsing for Jetty in Grails it would solve the problem.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I also tried other hacky things like replacing the SAXParserFactory as suggested &lt;a href="http://www.jroller.com/hasant/entry/how_to_change_oracle_xml"&gt;here &lt;/a&gt;but that didn't work. In the meantime I have had to make do with refactoring my classes so that they don't exchange data of xmlType directly with the database. For now Strings/Clobs will suffice until I can find an  unobtrusive way of starting Jetty from Grails that will condone Oracle's XmlParser on the classpath.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Your suggestions are very welcome.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-544658953390384391?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/544658953390384391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=544658953390384391' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/544658953390384391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/544658953390384391'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2009/02/oracle-xmlparser-and-grails-lessons.html' title='Oracle XMLParser and Grails - Lessons learnt'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-8169027281731680512</id><published>2009-01-30T02:31:00.004Z</published><updated>2009-01-30T02:41:12.138Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='grails'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>Grails Testing Tip</title><content type='html'>I had always wondered how to run individual types of tests in &lt;a href="http://grails.org"&gt;Grails&lt;/a&gt;. In order words I wanted to be able to run unit tests only or integration tests only. I did some digging in the TestApp.groovy script that ships with &lt;a href="http://grails.org"&gt;Grails&lt;/a&gt; and found that all you needed to do was specify it as an option on the command line.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;grails test-app -unit&lt;/div&gt;&lt;div&gt;or&lt;/div&gt;&lt;div&gt;grails test-app -integration&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This works as far as I know with &lt;a href="http://grails.org"&gt;Grails&lt;/a&gt; 1.0.3 not sure of 1.0.4 and 1.1-betas but I assume they won't be decommissioning this feature in a while since it is important. &lt;/div&gt;&lt;div&gt;Never really got individual tests working though, as I have been unable to find anywhere that says how to run an individual test class.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Pointers to this will be appreciated.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the coming days, I'll say something about mocking in &lt;a href="http://groovy.codehaus.org"&gt;Groovy&lt;/a&gt; using the 'as' feature.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-8169027281731680512?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/8169027281731680512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=8169027281731680512' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/8169027281731680512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/8169027281731680512'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2009/01/grails-testing-tip.html' title='Grails Testing Tip'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-1822884260870204053</id><published>2008-12-15T03:37:00.004Z</published><updated>2008-12-15T04:22:43.037Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='open standards'/><title type='text'>Be Open</title><content type='html'>I usually am the kind of guy that is easy going and is willing to bend my principles for good reason. But I was greatly annoyed today at instances around the internet where content providers still put content out there in closed formats.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In this day and age of open systems, collaboration and standards, I wonder why this is so. There I was trying to go through my mailbox and sort the chaff from the important stuff. I stumbled upon an email from &lt;a href="http://www.springsource.com"&gt;SpringSource&lt;/a&gt; and I was interested in seeing a past &lt;a href="http://springsource.com/node/1116"&gt;webinar&lt;/a&gt; about their tweaks to the &lt;a href="http://tomcat.apache.org/"&gt;Tomcat&lt;/a&gt; application server that we all know and love. Err wrong! I couldn't or lost the appetite to continue, as they had decided in their infinite wisdom that we all had to be Windows users or that our playback kit on our computers had to understand &lt;a href="http://www.microsoft.com/windows/windowsmedia/default.mspx"&gt;Windows Media Video&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Why they couldn't support a format like &lt;a href="http://en.wikipedia.org/wiki/MPEG-4"&gt;MPEG-4&lt;/a&gt; beats me. They had in making this decision put up a hurdle to my use of the webinar content, along with any sales they may or may not have made as a result of my accessing it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My advice to them would be, to become a bit more open and aware of the content they put out there, especially seeing that they play in a market that prides itself on open, collaborative standards. I will be assuming this is an oversight, unlike a similar oddity from &lt;a href="http://www.yahoo.com"&gt;Yahoo!&lt;/a&gt; with their &lt;a href="http://new.music.yahoo.com/"&gt;launchCAST&lt;/a&gt; offering (rebranded as Yahoo! Music), which one would expect they would have redesigned as well to support Flash and standard JavaScript.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;They lost the chance to turn me into a user of the past webinars part of their site. To turn 1st time users of your application (web site and other content included) into return/repeat users, take Joshua Porter's advice in &lt;a href="http://tinyurl.com/56xboh"&gt;Designing for the Social Web&lt;/a&gt; - get out of their way! In this specific case getting out of their way is being open.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;'Nuff said.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-1822884260870204053?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/1822884260870204053/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=1822884260870204053' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/1822884260870204053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/1822884260870204053'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2008/12/be-open.html' title='Be Open'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-8921614244177961356</id><published>2008-10-30T00:04:00.003Z</published><updated>2008-10-30T00:06:10.834Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Chelsea FC'/><title type='text'>BLIP</title><content type='html'>Just to say that after the uncomfortable loss to Liverpool FC @The Bridge over the weekend, we are back to winning ways. There were a few wasted chances but all in all...great result!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-8921614244177961356?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/8921614244177961356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=8921614244177961356' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/8921614244177961356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/8921614244177961356'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2008/10/blip.html' title='BLIP'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-5753879824401584423</id><published>2008-10-22T02:27:00.005+01:00</published><updated>2008-10-22T02:37:25.236+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='greed'/><category scheme='http://www.blogger.com/atom/ns#' term='bonus culture'/><title type='text'>The depth of human greed</title><content type='html'>I read with disgust, incredulity and complete confusion the &lt;a href="http://www.guardian.co.uk/business/2008/oct/22/executivesalaries-banking"&gt;guardian article&lt;/a&gt; about the  securities firm exec whom awarded himself £1.3m from a £1.4m pot and still had the effrontery to sue his firm for deducting/not paying £92,000. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I am not sure if I am upset because 92,000 pales in comparison to £1.3m or the fact that the court is being dragged in to settle issues like these, given other pressing needs. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Whatever happens, I think he has just shown how mean and crass we can be as humans once our greed is in full gear.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I shall be commenting on the outcome of the judgement.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-5753879824401584423?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/5753879824401584423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=5753879824401584423' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/5753879824401584423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/5753879824401584423'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2008/10/depth-of-human-greed.html' title='The depth of human greed'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-8056479297703537118</id><published>2008-06-23T00:59:00.005+01:00</published><updated>2008-06-23T01:23:54.124+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='tssjs europe 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='tssjs'/><title type='text'>TSSJS Prague - Days 2 &amp; 3</title><content type='html'>Days 2 and 3 have been a breeze.  There have been all sorts of interesting things that have been spoken about from &lt;a href="http://groovy.codehaus.org/"&gt;Groovy&lt;/a&gt; and &lt;a href="http://grails.org/"&gt;Grails&lt;/a&gt; to JPA 2.0 new features to really cool testing in &lt;a href="http://jruby.codehaus.org/"&gt;JRuby&lt;/a&gt;. A lot of buzz is being generated in the community by DSLs and I also think Behaviour Driven Development as epitomised by &lt;a href="http://jtestr.codehaus.org/"&gt;JTestr&lt;/a&gt;, &lt;a href="http://jbehave.org/"&gt;JBehave&lt;/a&gt; and &lt;a href="http://easyb.org/"&gt;easyB &lt;/a&gt;are all things to look into. Some interesting catch phrases are that XML is deprecated (in favour of DSLs of course). All slides for the presentations are available @ the &lt;a href="http://wiki.javasymposium.com/"&gt;JavaSymposium Wiki&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A few more things caught my attention and I will be looking at them in more detail in the coming weeks. I will hope to share my joys or...tears as I try them out.&lt;br /&gt;&lt;a href="http://www.scala-lang.org/"&gt;Scala&lt;/a&gt;&lt;br /&gt;&lt;a href="http://servicemix.apache.org"&gt;ServiceMix&lt;/a&gt; + &lt;a href="http://servicemix.apache.org/servicemix-camel.html"&gt;Camel&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mule.mulesource.org/display/MULE/Download"&gt;Mule 2&lt;/a&gt;&lt;br /&gt;etc.&lt;br /&gt;&lt;br /&gt;I thought the &lt;a href="http://www.zeroturnaround.com/javarebel/"&gt;JavaRebel&lt;/a&gt; class re-loading agent thing was quite cool and can be a productivity booster but seeing that its not free...(the freeloader that I am), I'll be giving it a miss for now.&lt;br /&gt;&lt;br /&gt;All in all I'd say that my time in Prague was extremely interesting, especially with the chance I got to catch up with old colleagues and meet new friends that one can rub minds with. Its been well worth it and I will be headed off to the next European even next year.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-8056479297703537118?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/8056479297703537118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=8056479297703537118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/8056479297703537118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/8056479297703537118'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2008/06/tssjs-prague-days-2-3.html' title='TSSJS Prague - Days 2 &amp; 3'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-5510501079965423660</id><published>2008-06-19T00:45:00.005+01:00</published><updated>2008-06-19T01:17:41.683+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='prague'/><category scheme='http://www.blogger.com/atom/ns#' term='tssjs europe 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='tssjs'/><title type='text'>TSSJS Prague - Day 1</title><content type='html'>The &lt;a href="http://javasymposium.techtarget.com/"&gt;TSSJS Europe conference&lt;/a&gt; has begun in earnest in the lovely city of Prague. Between swinging alfresco dining and lovely continental beer I have regarded the 1st day of the conference as intellectually rewarding. There were quite a few talks that stood out for me.&lt;br /&gt;&lt;br /&gt;First of all the introductory but well thought out talk by Nati Shalom of &lt;a href="http://www.gigaspaces.com/"&gt;GigaSpaces&lt;/a&gt; on Cloud computing. There was informative eye candy on his slides and his talk brought to the fore-front of my consciousness the fact that capacity planning and scalability are thorny issues in general. I will be investigating the GigaSpaces stack, as before now it has been on my radar but hasn't been high priority enough.&lt;br /&gt;&lt;br /&gt;There was the double whammy of Spring talks one of which was by Costin Leau. It raised important questions in my mind on things I could be doing better. The fact that &lt;a href="http://www.springsource.com"&gt;SpringSource&lt;/a&gt; is re-aligning, re-inventing and re-positioning itself with offerings like Spring DM (which plays quite well with OSGi), Spring Batch and Spring Integration has not gone unnoticed and personally from the capabilities demoed today, I'd advise anyone to give the new Spring stack a look in. I have already started to look into some OSGi bundling tools like &lt;a href="http://www.aqute.biz/Code/Bnd"&gt;aQute&lt;/a&gt; and will be sharing my thoughts in a while.&lt;br /&gt;&lt;br /&gt;The SCA talk by Mike Keith of Oracle to my mind raised more question than  answers. Not the least the fact that some of the issues it addresses like assembly, overlap with other product sets in the market like ESBs and even the JBI spec. I have resolved to go away from that talk and&lt;br /&gt;undertake more research to see if there's more to this shining new spec.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.grails.org"&gt;Grails&lt;/a&gt; talk was well articulated but gave very little in terms of TDD support in Grails. Issues of this nature are close to my heart and I hope improvements will be made for future talks.&lt;br /&gt;&lt;br /&gt;With regards to organisation, I'd like to see a conference where the video content of presentation is available to attendees by close of play everyday, even if in a raw/unedited form (a-la &lt;a href="http://www.parleys.com"&gt;Parleys.com&lt;/a&gt; and JavaPolis). This can help if you are torn between two sessions you desperately want to attend.&lt;br /&gt;&lt;br /&gt;All in all 8 out of 10 for Day 1. Bring on day 2.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-5510501079965423660?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/5510501079965423660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=5510501079965423660' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/5510501079965423660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/5510501079965423660'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2008/06/tssjs-prague-day-1.html' title='TSSJS Prague - Day 1'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-3562952568087642614</id><published>2008-05-12T08:43:00.004+01:00</published><updated>2008-05-12T08:52:07.585+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='alcohol'/><category scheme='http://www.blogger.com/atom/ns#' term='france'/><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Affirmative action</title><content type='html'>It is with some glee and a bit of confusion that I&lt;a href="http://news.bbc.co.uk/1/hi/world/europe/7395401.stm"&gt; read&lt;/a&gt; this morning about France breathalysing citizen at pubs. The idea is to preempt accidents which are caused by drink-and-drive patrons. Noble. It beats hiking the prices as has been done on the other side of the Channel.&lt;br /&gt;But I have a few questions:&lt;br /&gt;Will this apply to all punters?&lt;br /&gt;How will this be funded: as in will the test equipment be provided in partnership with vendors?&lt;br /&gt;What happens to a punter whose breath is deemed un-Kosher?&lt;br /&gt;Will there be some enforcement to ensure that they won't drive...in fact how do you determine punters who have driven to the pub?&lt;br /&gt;&lt;br /&gt;Nice concept though. This is the kind of creative thinking that is required of politicians. Is it ready for prime time? Not quite sure but we'll see.&lt;br /&gt;&lt;br /&gt;Enjoy the week ahead!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-3562952568087642614?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/3562952568087642614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=3562952568087642614' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/3562952568087642614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/3562952568087642614'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2008/05/affirmative-action.html' title='Affirmative action'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-163673375882605108</id><published>2008-03-27T17:11:00.005Z</published><updated>2008-03-27T17:31:59.497Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='pidgin'/><category scheme='http://www.blogger.com/atom/ns#' term='gtalk'/><category scheme='http://www.blogger.com/atom/ns#' term='IM'/><title type='text'>GTalk rant</title><content type='html'>I upgraded my IM client lately. I had been using Pidgin 2.2.2 for a few months and decided to move up to 2.4.0. I had a number of work mates and just friends on Gtalk but Pidgin just wouldn't work with my previous settings.&lt;br /&gt;Finally I found some &lt;a href="http://www.manast.com/2007/05/11/how-to-configure-pidgin-to-work-with-google-talk/"&gt;blog entry&lt;/a&gt; which inspired me. Notice how I have qualified its effect...it didn't really solve my problem but changed the way I thought about it.&lt;br /&gt;The solution? Click on the images on the below.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__cqUKJLxvL0/R-vXGv26K0I/AAAAAAAAAWA/RlW72qV0APg/s1600-h/pidgin-page1.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/__cqUKJLxvL0/R-vXGv26K0I/AAAAAAAAAWA/RlW72qV0APg/s200/pidgin-page1.JPG" alt="" id="BLOGGER_PHOTO_ID_5182472307145845570" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__cqUKJLxvL0/R-vYG_26K1I/AAAAAAAAAWI/V-fKQo3O9A4/s1600-h/pidgin-page2.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/__cqUKJLxvL0/R-vYG_26K1I/AAAAAAAAAWI/V-fKQo3O9A4/s200/pidgin-page2.JPG" alt="" id="BLOGGER_PHOTO_ID_5182473410952440658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="file:///C:/DOCUME%7E1/eezeugoh/LOCALS%7E1/Temp/moz-screenshot-1.jpg" alt="" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-163673375882605108?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/163673375882605108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=163673375882605108' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/163673375882605108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/163673375882605108'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2008/03/gtalk-rant.html' title='GTalk rant'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/__cqUKJLxvL0/R-vXGv26K0I/AAAAAAAAAWA/RlW72qV0APg/s72-c/pidgin-page1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-9119724290629042810</id><published>2008-02-05T09:47:00.000Z</published><updated>2008-02-05T14:51:37.900Z</updated><title type='text'>Environment specific properties - the spring way.</title><content type='html'>This problem is easily solved via the use of 2 Spring IoC bean post-processor classes viz:&lt;br /&gt;&lt;br /&gt;org.springframework.beans.factory.config.PropertyPlaceholderConfigurer&lt;br /&gt;org.springframework.beans.factory.config.PropertyOverrideConfigurer&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To use this functionality you would need to have them declared in your app-context config files&lt;br /&gt;as follows:&lt;br /&gt;&lt;bean id="ppConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"&gt;&lt;property name="order" value="1"&gt;&lt;property name="locations"&gt;&lt;list&gt;&lt;/list&gt;&lt;/property&gt;&lt;/property&gt;&lt;bean id="poConfigurer" class="org.springframework.beans.factory.config.PropertyOverrideConfigurer"&gt;&lt;property name="location" value="classpath:poc-sample-${my.env}.properties"&gt;&lt;property name="order" value="10"&gt;&lt;property name="ignoreResourceNotFound" value="true"&gt;&lt;/property&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;       &amp;lt;bean id="ppConfigurer"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;           class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;           &amp;lt;property name="order" value="1" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;           &amp;lt;property name="locations"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;               &amp;lt;list&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                   &amp;lt;value&amp;gt;classpath:ppc-sample.properties&amp;lt;/value&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;               &amp;lt;/list&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;           &amp;lt;/property&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;       &amp;lt;/bean&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;       &amp;lt;bean id="poConfigurer"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;           class="org.springframework.beans.factory.config.PropertyOverrideConfigurer"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;           &amp;lt;property name="location"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;               value="classpath:poc-sample-${my.env}.properties" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;           &amp;lt;property name="order" value="10" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;           &amp;lt;property name="ignoreResourceNotFound" value="true" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;       &amp;lt;/bean&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;                       &lt;br /&gt;&lt;br /&gt;They are like any other bean definitions but there are few properties in their definitions that need special attention&lt;br /&gt;as they are responsible for the magic. They are order, location and ignoreResourceNotFound.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;order - determines how these post processors are loaded or applied to beans via Spring IoC.&lt;br /&gt;location - (atleast in the case of the PropertyOverrideConfigurer bean) matters because of the use of an ant/JSTL/groovy property.&lt;br /&gt;This is where the PropertyPlaceholderConfigurer comes in. It is used to define the default value for the &lt;span style="font-weight: bold;"&gt;my.env&lt;/span&gt; environment variable. Without this the PropertyOverrideConfigurer will have problems when Spring tries to load it.&lt;br /&gt;ignoreResourceNotFound - makes sure there are no complaints by Spring when initialising the PropertyOverrideConfigurer bean.&lt;br /&gt;&lt;br /&gt;Any bean where you want to use environment specific values can now be defined in your poc-sample-${my.env}.properties file.&lt;br /&gt;Given the following bean configurations where you wish to use this functionality&lt;br /&gt;&lt;br /&gt;     &lt;bean id="myBean" class="com.lhfville.sample.POC" init="true"&gt;&lt;bean id="myBean" class="com.lhfville.sample.POC" init="true"&gt;&lt;property name="prop1" value="hi"&gt;&lt;/property&gt;&lt;span style="font-size:85%;"&gt;         &amp;lt;bean id="myBean" class="com.lhfville.sample.POC"&lt;br /&gt;          lazy-init="true"&amp;gt;&lt;br /&gt;          &amp;lt;property name="prop1" value="${prop1}" /&amp;gt;&lt;br /&gt;      &amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;br /&gt;      &amp;lt;bean id="myBean" class="com.lhfville.sample.POC"&lt;br /&gt;          lazy-init="true"&amp;gt;&lt;br /&gt;          &amp;lt;property name="prop1" value="hi" /&amp;gt;&lt;br /&gt;      &amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;you can have poc-sample-dev.properties poc-sample-test.properties poc-sample-prod.properties files in your classpath with varying values for &lt;b&gt;myBean.prop1&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Thats pretty much it.&lt;/bean&gt;&lt;/bean&gt;&lt;/property&gt;&lt;/property&gt;&lt;/bean&gt;&lt;/bean&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-9119724290629042810?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/9119724290629042810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=9119724290629042810' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/9119724290629042810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/9119724290629042810'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2008/02/environment-specific-properties-spring.html' title='Environment specific properties - the spring way.'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-5051084862463857984</id><published>2008-02-04T08:46:00.000Z</published><updated>2008-02-04T08:52:52.149Z</updated><title type='text'>Facebook Foray - dead in the water</title><content type='html'>Like any fairy tale this one has come to a screeching halt looking more like a nightmare. Well my facebook app will be dying a natural death as a consequence of the woeful display by my team in the Africa nations cup. I thought they'd have the balls to march all the way to the finals after surviving the scare of a horrid first round. Even after the lifeline of a penalty and a sending off for their opponents...they still lost.&lt;br /&gt;&lt;br /&gt;Well at the very least this dilettant has enjoyed working with the Facebook API. Who knows I might do something with it again in the near future.&lt;br /&gt;&lt;br /&gt;Have a swell week!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-5051084862463857984?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/5051084862463857984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=5051084862463857984' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/5051084862463857984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/5051084862463857984'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2008/02/facebook-foray-dead-in-water.html' title='Facebook Foray - dead in the water'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-6252703335024781210</id><published>2008-01-30T23:21:00.000Z</published><updated>2008-01-30T23:23:27.693Z</updated><title type='text'>Facebook foray - extended</title><content type='html'>As promised, I am happy to tell you that my team DID progress to the next stages of the competition. This means that the motivation to keep @ my facebook application has been rekindled. The coming days will see me trying to implement the features as promised.&lt;br /&gt;&lt;br /&gt;Stay tuned.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-6252703335024781210?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/6252703335024781210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=6252703335024781210' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/6252703335024781210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/6252703335024781210'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2008/01/facebook-foray-extended.html' title='Facebook foray - extended'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-935427922206384240</id><published>2008-01-29T07:55:00.001Z</published><updated>2008-01-29T08:00:21.272Z</updated><title type='text'>Facebook Foray</title><content type='html'>Decided to build a facebook&lt;a href="http://www.facebook.com/apps/application.php?id=6736308607"&gt; app &lt;/a&gt;for the african cup of nations. Not sure that it was a useful exercise now that the fate of my favorite team hangs in the balance. For now all the application does is to allow users make predictions on the games in the first round. Features to come include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Placing stories in the user's mini feed after a prediction has been added.&lt;/li&gt;&lt;li&gt;Making predictions about the highest goal scorer, number of cards etc.&lt;/li&gt;&lt;/ul&gt;I'll tell you if I get around to doing it after the fate of my team is decided today. Stay tuned.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-935427922206384240?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/935427922206384240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=935427922206384240' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/935427922206384240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/935427922206384240'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2008/01/facebook-foray.html' title='Facebook Foray'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-1976123971582513871</id><published>2007-09-20T08:02:00.000+01:00</published><updated>2008-01-30T23:34:53.586Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='sorrow'/><category scheme='http://www.blogger.com/atom/ns#' term='Chelsea FC'/><title type='text'>Adieu Jose</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm2.static.flickr.com/1255/1411574886_3d5c52b154.jpg?v=0"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://farm2.static.flickr.com/1255/1411574886_3d5c52b154.jpg?v=0" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This is to mourn the loss of a great manager..the best that Chelsea FC has ever had. Now I definitely know that the board is decidedly crazy and has no ambitions. My last post as a Chelsea FC fan. Jose we will miss you. Over and Out!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Photo Credits:&lt;/span&gt;&lt;br /&gt;http://pinker.wjh.harvard.edu/photos/Iceland/pages/iron%20grave%20marker.htm&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-1976123971582513871?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/1976123971582513871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=1976123971582513871' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/1976123971582513871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/1976123971582513871'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2007/09/this-is-to-mourn-loss-of-great-manager.html' title='Adieu Jose'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-4608292117641468543</id><published>2007-07-15T08:55:00.003+01:00</published><updated>2009-02-24T15:45:57.098Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='migration'/><category scheme='http://www.blogger.com/atom/ns#' term='wlst'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>Groovy Weblogic Migration</title><content type='html'>This is a bit of a change in direction being that I prefer to rant about football and other such easy-on-the-eye material but I thought I'd bore you a bit with techie stuff...read on.&lt;br /&gt;&lt;br /&gt;In the past few months I have begun to re-acquaint myself with Scripting/Dynamic languages and would say that they have become quite sexy and even more expressive than I remembered. I have had cause to look at &lt;a href="http://www.ruby-lang.org/"&gt;Ruby&lt;/a&gt; and &lt;a href="http://groovy.codehaus.org/"&gt;Groovy &lt;/a&gt;in more detail and they each have unique selling points for me. Ruby because of its expressive nature and its wicked cohort &lt;a href="http://www.rubyonrails.org/"&gt;Rails &lt;/a&gt;and Groovy for its near Java syntax and its inherent support for all things &lt;a href="http://java.sun.com/"&gt;Java&lt;/a&gt;. Blessings like &lt;a href="http://www.jcp.org/en/jsr/detail?id=223"&gt;JSR 223&lt;/a&gt; and more support in the JVM for dynamic languages (JRuby and Jython) seem to have helped.&lt;br /&gt;&lt;br /&gt;So you can imagine that the first chance I got to make something really helpful with a scripting language I decided to give Groovy a spin. I will say that it has good documentation and is quite mature. My use case? I needed to migrate a number of system resources (DataSources and Mail Sessions) from Weblogic 8.1 to Weblogic 9.2.&lt;br /&gt;&lt;br /&gt;I had heard from a team member on my project about &lt;a href="http://e-docs.bea.com/wls/docs92/config_scripting/wlst_faq.html"&gt;WLST&lt;/a&gt; (Weblogic Scripting Tool) and the administrative magic you could do with it..so my head started ticking. I bet there are a number of ways I could have gone about migrating these resources (I welcome suggestions) but a notion had formed in my mind about the path I would go.&lt;br /&gt;&lt;br /&gt;The change in configuration information structure was much between the two versions so I decided I was going to read a WLS 8.1 config.xml, then generate WLST scripts to recreate interesting elements from it in WLS 9.2. Initially I wrote the first rough sketch in Java (being a masochist :-D ) but after it became unmanageable, I had written XSLT code in lieu of JAXP or XSD and JAXB, I decided to re-implement in Groovy and I am loving every minute of it..&lt;a href="http://groovy.codehaus.org/Reading+XML+using+Groovy%27s+XmlSlurper"&gt;XmlSlurper &lt;/a&gt;rocks! I made sure to pepper my script with &lt;a href="http://en.wikipedia.org/wiki/Closure_%28computer_science%29"&gt;closures&lt;/a&gt; right Groovy-newbie that I am. I have put up a copy of the code here for your viewing....free gift eh?&lt;br /&gt;So without further ado here is the code. Enjoy!&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="Groovy"&gt;&lt;br /&gt;class Migrator {&lt;br /&gt;&lt;br /&gt;static void main(args) {&lt;br /&gt;def domain = new XmlSlurper().parse(new File(args[0]))&lt;br /&gt;def msClosure = {ms -&gt;&lt;br /&gt;new PrintWriter(new FileOutputStream("c:\\stuff\\migration\\"+ms.@Name.text().replaceAll(" ","")+".py")).withWriter {writer -&gt;&lt;br /&gt;  writer.println("connect('${args[1]}','${args[2]}','${args[3]}')")&lt;br /&gt;  writer.println("edit()")&lt;br /&gt;  writer.println("startEdit()")&lt;br /&gt;  writer.println("myMailSession = create('${ms.@Name.text()}','MailSession')")&lt;br /&gt;  writer.println("myMailSession.setJNDIName('${ms.@JNDIName.text()}')")&lt;br /&gt;  writer.println("myMailSession.setProperties(makePropertiesObject('${ms.@Properties.text()}'))")&lt;br /&gt;  writer.println("myMailSession.addTarget(getMBean('Clusters/${ms.@Targets.text()}'))")&lt;br /&gt;  writer.println("save()")&lt;br /&gt;  writer.println("activate(block='true')")&lt;br /&gt;  writer.println("dumpStack()")&lt;br /&gt;  writer.println("disconnect()")&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;def dsClosure = {ds -&gt;&lt;br /&gt;def wlstOut = new PrintWriter(new FileOutputStream("c:\\stuff\\migration\\"+ds.@Name.text().replaceAll(" ","")+".py")).withWriter {writer -&gt;&lt;br /&gt;       def poolInfo = domain.JDBCConnectionPool.find{it.@Name.text() == ds.@PoolName.text()}&lt;br /&gt;       def startPos = poolInfo.@Properties.text().toString().indexOf("user=")&lt;br /&gt;       if (startPos &gt; -1) {&lt;br /&gt;           def userName = poolInfo.@Properties.text().substring(startPos+5)&lt;br /&gt;           writer.println("connect('${args[1]}','${args[2]}','${args[3]}')")&lt;br /&gt;           writer.println("edit()")&lt;br /&gt;           writer.println("startEdit()")&lt;br /&gt;           writer.println("jdbcSR = create('${ds.@Name.text()}','JDBCSystemResource')")&lt;br /&gt;           writer.println("theJDBCResource = jdbcSR.getJDBCResource()")&lt;br /&gt;           writer.println("connectionPoolParams = theJDBCResource.getJDBCConnectionPoolParams()")&lt;br /&gt;           writer.println("connectionPoolParams.setConnectionReserveTimeoutSeconds(25)")&lt;br /&gt;           writer.println("connectionPoolParams.setMaxCapacity(100)")&lt;br /&gt;           writer.println("connectionPoolParams.setTestTableName('SQL SELECT 1 FROM DUAL')")&lt;br /&gt;           writer.println("dsParams = theJDBCResource.getJDBCDataSourceParams()")&lt;br /&gt;           writer.println("dsParams.addJNDIName('${ds.@JNDIName.text()}')")&lt;br /&gt;           writer.println("driverParams = theJDBCResource.getJDBCDriverParams()")&lt;br /&gt;           writer.println("driverParams.setDriverName('oracle.jdbc.OracleDriver')")&lt;br /&gt;           writer.println("driverProperties = driverParams.getProperties()")&lt;br /&gt;           writer.println("proper = driverProperties.createProperty('user')")&lt;br /&gt;           writer.println("proper.setValue('${userName}')")&lt;br /&gt;           writer.println("driverParams.setPassword('${userName}')")&lt;br /&gt;           if (args.length &gt; 4) {&lt;br /&gt;           writer.println("driverParams.setUrl('${args[3]}')")&lt;br /&gt;           writer.println("jdbcSR.addTarget(getMBean('Clusters/${ds.@Targets.text()}'))")&lt;br /&gt;           } else {&lt;br /&gt;               writer.println("driverParams.setUrl('${poolInfo.@URL.text()}')")&lt;br /&gt;               writer.println("jdbcSR.addTarget(getMBean('Clusters/${ds.@Targets.text()}'))")&lt;br /&gt;           }&lt;br /&gt;           writer.println("save()")&lt;br /&gt;           writer.println("activate(block='true')")&lt;br /&gt;           writer.println("dumpStack()")&lt;br /&gt;           writer.println("disconnect()")&lt;br /&gt;       }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;domain.JDBCTxDataSource.collect dsClosure&lt;br /&gt;domain.JDBCDataSource.collect dsClosure&lt;br /&gt;domain.MailSession.collect msClosure&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-4608292117641468543?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/4608292117641468543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=4608292117641468543' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/4608292117641468543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/4608292117641468543'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2007/07/groovy-weblogic-migration.html' title='Groovy Weblogic Migration'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-117164343228905414</id><published>2007-02-16T16:21:00.000Z</published><updated>2007-02-16T16:30:32.300Z</updated><title type='text'>Valentine Splash</title><content type='html'>Woah! Its was that time of the year a few days ago when you have love songs crooning on the radio, the gift shops swirling with most folks trying to surprise..or at the very least impress their lovers, restaurants all trying to out-do each other. Well yours truly was not about to be left out but, being of the regular and boring sort, I went down the safe gift route (don't ask dont tell).&lt;br /&gt;&lt;br /&gt;I am sure that most folks know the saying that Diamonds are a girl's best friend but I daresay that conventional piece of wisdom was challenged in Gloucestershire this Valentines. How? Well the laudable Herr Jasin Boland gave as a token (though that would be an understatement) of his love a £500,000 shrink-wrapped house to his fiancee (&lt;a href="http://news.bbc.co.uk/1/hi/england/gloucestershire/6356597.stm"&gt;BBC Story&lt;/a&gt;). I know there have been sensational gifts in the past but this one was gob-smacking. He put me and my boring gift idea to shame and that has got me thinking.....next year!&lt;br /&gt;&lt;br /&gt;I bet his only problem now is how to beat this achievement next year.  What in your opinion will knock that gift next valentines? A wedding in Rome? ;) What love luxury did you splash out on? Are you looking to better it?&lt;br /&gt;&lt;br /&gt;Have a great weekend!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-117164343228905414?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/117164343228905414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=117164343228905414' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/117164343228905414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/117164343228905414'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2007/02/valentine-splash.html' title='Valentine Splash'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-117072376291153510</id><published>2007-02-06T00:52:00.000Z</published><updated>2007-02-06T01:02:42.926Z</updated><title type='text'>Hairapy</title><content type='html'>Its amazing the lengths people will go to actually get their hair looking all shiny and pretty. I was reading somewhere in the &lt;a href="http://www.metro.co.uk/news/article.html?in_article_id=35685&amp;in_page_id=34"&gt;metro&lt;/a&gt; last week that there is a new hair treatment using bull semen. It actually costs £55 a pop and allegedly brings body and shine to your hair. Wow!&lt;br /&gt;Who knows what next people will be trying out on their hair. In my uni days,  some of my pals with hairlines receding faster than that of their contemporaries were partial to honey. They had to answer to ants though seeing that we were based in a tropical town.  Some have used hemp, eggs...all sorts.&lt;br /&gt;&lt;br /&gt;What are you willing to do for your hair?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Have a great week ahead!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-117072376291153510?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/117072376291153510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=117072376291153510' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/117072376291153510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/117072376291153510'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2007/02/hairapy.html' title='Hairapy'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-114180564579171018</id><published>2006-03-08T08:06:00.000Z</published><updated>2006-03-08T08:14:05.806Z</updated><title type='text'>Read the little print</title><content type='html'>Something strange caught my attention this morning. I picked up a pack of mango juice and after taking a swig looked at the labelling. It reads: "free from artificial flavorings, sweetners..." and then when I was just starting to believe them, I looked at the &lt;span style="font-style: italic;"&gt;Ingredients&lt;/span&gt; section. Lo and behold it reads: Mango,...,&lt;span style="font-weight: bold;"&gt;flavorings&lt;/span&gt;,... Well that came as a shock but well it seems that we can expect more wordplay/blunders/deception like this, unless agencies set up to check excesses of this nature become more effective.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The moral: always read the little print.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-114180564579171018?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/114180564579171018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=114180564579171018' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/114180564579171018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/114180564579171018'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2006/03/read-little-print.html' title='Read the little print'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-114177225117599995</id><published>2006-03-07T22:51:00.000Z</published><updated>2006-03-07T22:57:31.190Z</updated><title type='text'>Sad day for Chelsea</title><content type='html'>All of the Chelsea FC faithful who couldnt make it to the game at the Nou Camp will have been  religiously glued to their sets earliet tonite. I was one of them and was sad to see Chelsea crash out of the competition on the back of the sending off of Del horno two weeks ago.&lt;br /&gt;I guess its not yet time for the English champions to move ahead in the Champions league..but no doubt we rule the roost here at home so that is something to be grateful for.&lt;br /&gt;&lt;br /&gt;For the records Barca is yet to beat us 11 against 11 ;)...we will be back in ferocious form next season.&lt;br /&gt;&lt;br /&gt;See ya&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-114177225117599995?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/114177225117599995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=114177225117599995' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/114177225117599995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/114177225117599995'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2006/03/sad-day-for-chelsea.html' title='Sad day for Chelsea'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-111568284728093433</id><published>2005-05-10T00:44:00.000+01:00</published><updated>2005-05-10T01:01:02.630+01:00</updated><title type='text'>Yet another day</title><content type='html'>Today was uneventful..got to work late and funny enough met my project manager on my way to work this morning...nabbed! Well i guess we all do it atimes - get to the office late and fib on our timesheets. In anycase the day went by without stopping.&lt;br /&gt;&lt;br /&gt;Saw pictures of a grim-looking Jose Mourinho in the papers on my way home. I wish they didnt lose to Liverpool but I guess atimes you win some and then you lose some. Talking of changing fortunes our dear Prime Minister has selected his new cabinet and this is raising some dust plus most folks think he should resign...hmmmmm..dunno only time will tell. In the midst of all the news in the papers and some book I have been trying to read for some days now I managed to fall asleep on the tube ride home ;)...we all do it once in a while. My candid advice? Don't get caught! Atleast not by a pretty dame.&lt;br /&gt;&lt;br /&gt;Met FA Brims online today was actually nice chatting with the lad atleast he's broken his silence. I am tryin hard to study tonight and its going to be hard so wish me luck!&lt;br /&gt;&lt;br /&gt;Curtains......................&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-111568284728093433?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/111568284728093433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=111568284728093433' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/111568284728093433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/111568284728093433'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2005/05/yet-another-day.html' title='Yet another day'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-111555950138933866</id><published>2005-05-08T15:27:00.000+01:00</published><updated>2005-05-08T14:38:36.850+01:00</updated><title type='text'>Been away</title><content type='html'>Its close to 2months now since I last blogged! Why? Ok i'll tell you. Have been a bit choked up trying to strike the ultimate balance between work and other facets of my life and believe me its been like some form of high wire act.&lt;br /&gt;Between the last blog and today there has been a wide range of activities from a day out to a theme park (Alton Towers), to being invited to Passover Seder, to preparing for my exams, to installing a new OS on my laptop...(on which I am posting now) to .....well just being lazy.&lt;br /&gt;I have touched base with some members of the crew. FABrims and Skai have been quiet though..but spoke to Poombah some days ago. Called K earlier to say Happy birthday...time flies right? Its already May.&lt;br /&gt;In any case it has been an eventful 2months which went pretty fast....havent had time to see any movies of late and havent  been slushing either. Have grown a beard though and my afro is beginnning to take shape. Think i should keep the beard??? tell me in your responses to this post.&lt;br /&gt;I promise not to keep away from you for that length of time again. Before I forget, the general elections have come and gone and well...Blair is still here.&lt;br /&gt;&lt;br /&gt;Aloha&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-111555950138933866?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/111555950138933866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=111555950138933866' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/111555950138933866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/111555950138933866'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2005/05/been-away.html' title='Been away'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-111158909846274096</id><published>2005-03-23T14:39:00.000Z</published><updated>2005-03-23T14:50:48.700Z</updated><title type='text'>Mad Week</title><content type='html'>Gosh the past few days have rushed by pretty quickly. The holidays are near once again and in most parts of the world there's the usual step up in the rate of commercial activity at times like this. Its no exception here.&lt;br /&gt;&lt;br /&gt;Well I havent really been a holiday freak and so its pretty much business as usual. Events in the past few days have also taken a strange turn as yesterday there was yet another case of under-aged gun violence in the US. Its distasteful and I can imagine what it feels like for all those families who lost lives to the reckless outburst of a certain 15-year-old. Hard pill to swallow I am sure.&lt;br /&gt;&lt;br /&gt;Away from the sadness, theres set to be a relaunch of the sci-fi series &lt;b&gt;"Dr Who"&lt;/b&gt; here and I cant tell what to make of it. I always loved the program and wonder if this remake will be as good as the original. For one thing the good doctor is younger now.&lt;br /&gt;&lt;br /&gt;I wonder what to do for the holiday period especially now that the gloomy weather has given way to a bold pretty new phase. I guess I should get out and enjoy the pretty weather.&lt;br /&gt;I look forward to my swimming classes this evening, as I have been away for a while now. Am yet to master the breast stroke and hope my instructor will take it easy with me today.&lt;br /&gt;&lt;br /&gt;I will have more to tell you once I am in later this evening 'cause I know I have been away from you for two days and I am sorry. Will make it up to you when I get back. Did I mention that &lt;i&gt;Skai the great Lolo&lt;/i&gt; touched bases with me earlier this week? Oh before I rush off the man Ziggi is at it again...he has sent me yet another set of images which I believe keep him amused...maybe I'll show you some. Then again I think not.&lt;br /&gt;&lt;br /&gt;Ciao.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-111158909846274096?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/111158909846274096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=111158909846274096' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/111158909846274096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/111158909846274096'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2005/03/mad-week.html' title='Mad Week'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-111140300204579118</id><published>2005-03-21T10:56:00.000Z</published><updated>2005-03-21T11:10:53.980Z</updated><title type='text'>Hello! People!</title><content type='html'>Guvnor great one there yet another tool out of that assorted hat of yours. Never mind how long it took me to throw in a comment on this guys.&lt;br /&gt;&lt;br /&gt;Well on the Fabian (no relationship there) Osuji saga i don't think it should come as a surprise to anyone cos this na Naija we dey talk about. I have no doubt in my mind that everyone whose been in government somehow must have got himself involved in some shady stuff past or present.I guess we should just forget about things gone by and face the present cos all the mumbo-jumbo will amount to nothing what has happened to the Objs,IBBs,Buharis, Abachas....... whose clean. Pass Abeg.&lt;br /&gt;&lt;br /&gt;The past weekend was well just alright, most of it i spent indoors except on Sunday when i went to Church not much is happening down here except that NEPA continues to be a pain in the ...... Surely i'll have something juicier for the house next time.&lt;br /&gt;&lt;br /&gt;Have a positively filled week ahead everyone.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:#33cc00;"&gt;A Bientot!&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-111140300204579118?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/111140300204579118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=111140300204579118' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/111140300204579118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/111140300204579118'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2005/03/hello-people.html' title='Hello! People!'/><author><name>FA_Brims</name><uri>http://www.blogger.com/profile/18202280644027895465</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-111136311456137834</id><published>2005-03-20T23:48:00.000Z</published><updated>2005-03-20T23:58:34.563Z</updated><title type='text'>Chill-pill Sunday</title><content type='html'>Today has been a day of relaxation and rest. Cleaned up this morning, did some washing as well. Read "The Punch" online and saw some gory tales that I'd rather leave untold.&lt;br /&gt;&lt;br /&gt;Started reading Clinton's bio, "My Life" and already am engrossed in it....well that was until I had to do lunch/dinner 'cause I had a rather dishevelled eating pattern today. But its all good. Caught up with the OC, kinda like watching it atimes. Another pointer to weddings was shown today :)) "The wedding planner"...had seen it before but saw it yet again.&lt;br /&gt;&lt;br /&gt;It would appear that my period of hibernation is finally over! The rat-race begins yet again tomorrow. Gosh I dread going on the tube on my way to work but its just got to be done. Ah well I'll try and sleep as much as I can 'cause the day ahead is going to be an exercise in tedium :) trust me I know what I am talking about.&lt;br /&gt;&lt;br /&gt;Ok I'll leave you in peace.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-111136311456137834?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/111136311456137834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=111136311456137834' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/111136311456137834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/111136311456137834'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2005/03/chill-pill-sunday.html' title='Chill-pill Sunday'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-111128160841128197</id><published>2005-03-20T01:03:00.000Z</published><updated>2005-03-20T01:23:11.253Z</updated><title type='text'>Hitch weekend</title><content type='html'>Went to see a movie but before I tell u about that guess what?. I had an argument with my partner. Its sufficient for you to know she's nick-named after her A-list chocolate...Ferrero. We made up eventually ;) and had Italian for dinner...great way to make up init?&lt;br /&gt;&lt;br /&gt;Hmmm yeah mentioned I was going to see a movie. I saw "HITCH"...yeah thats the one. A great movie about a date doctor. Its a hilarious romcom that promises value for your money. I think Will Smith did justice to his part and Eva Mendes is mighty fit.&lt;br /&gt;&lt;br /&gt;Thought about Timon and Poombah earlier on and wonder how they'll be finding camp. Guess they'll both cope quite well. It was a chilly Heineken-ny close to the evening. Not bad when u think about it...Tomorrow is the start to the week...Monday's around the corner but well theres still about 24 hrs in the weekend so I am safe....Sleep safe.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-111128160841128197?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/111128160841128197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=111128160841128197' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/111128160841128197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/111128160841128197'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2005/03/hitch-weekend.html' title='Hitch weekend'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11560160.post-111125737620318101</id><published>2005-03-19T18:13:00.000Z</published><updated>2005-03-19T18:36:16.203Z</updated><title type='text'>Its been a long week</title><content type='html'>Men its been a hectic week just gone by. Have had to tackle pressure on more than three fronts but yet I survive. Actually spoke to Ziggi and Mademan today and we shared a couple of laffs and some gist about future plans and getting married :). Imagine me talking about marriage and the like a few years ago...it was impossible.&lt;br /&gt;&lt;br /&gt;Also spoke to K and she's preparing for her pageant...pray she wins cos that would give her a boost. Shes always wanted a career in modelling and all, this might well be her chance.&lt;br /&gt;Hmm will go to the movies tonight seeing that i have lazed about all day.&lt;br /&gt;&lt;br /&gt;Am new to blogging and might sound a bit off or incoherent but forgive me I guess u only get better with time. I'll tell u what movie I saw and how I found it when i get back. Till then.....&lt;br /&gt;&lt;br /&gt;Sayonara.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11560160-111125737620318101?l=lhfville.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lhfville.blogspot.com/feeds/111125737620318101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11560160&amp;postID=111125737620318101' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/111125737620318101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11560160/posts/default/111125737620318101'/><link rel='alternate' type='text/html' href='http://lhfville.blogspot.com/2005/03/its-been-long-week.html' title='Its been a long week'/><author><name>LHFVille</name><uri>http://www.blogger.com/profile/16757702387075838952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
