Saturday 18 July 2009

Really clever music mash up - Christina Milan and Jim Hendrix "Dip it Joe"

Almost seamless.... fantastic



and probably the weirdest mash of the year to date that I have heard with way to many folk to mention including the late great Bill Hicks

Friday 17 July 2009

Flex,Domino and Web Services 101

Okay Dokey, the last 2 Flex posts used JSON from a Web Agent, which is fine if that is your cup of tea, but Domino comes complete with easy to use and deploy WebServices and it would be a shame not to use them.

I will take it as read you know all about web services but for those that don't a Web Service is a way of letting applications written in languages like FLEX's MXML or Java interact with your data with the minimum of fuss and bother. You define the webservice and it gets published by domino as a WSDL which is a formal XML data stream. Your application then knows what methods and data your webservice offers for getting data, posting data etc and you app can use the methods it finds in the WSDL data to interact with the back end data.

Anyway I have a simple Notes database with 1 form called STOCK with the following fields
ItemKey
Category
SubCategory
ItemName
OnHandQuantity

I have a view sorted (but not categorised) by ItemKey the view is called MyStockView

So I go to the CODE section in the DDE and open the "Web Services Providers Section"

On the Web Services Properties Dialog I do the following:

I Give the WebService a NAME of StockService
I give it a PORT TYPE CLASS of getStock
I give it a PROGRAMMING MODEL of RPC
I give it SOAP MESSAGE FORMAT of DOC/LITERAL
I include "Operational Name in SOAP Action"
The PORT TYPE NAME is getStock
The SERVICE ELEMENT NAME is getStockService
The SERVICE PORT NAME is Domino

In the "Declarations" section i put this code
Dim ThisSession As NotesSession
Dim ThisDB As NotesDatabase
Dim StockDoc As NotesDocument
Dim StockView As NotesView

Class getStock
Sub New
Set ThisSession = New NotesSession
End Sub

Public Function getStock(stockKey As String) As String

If StockDoc Is Nothing Then
result=getStockDoc(stockKey)
getStock=result
End If
End Function

End Class
This is a VERY VERY basic web service!
Web Services are defined in CLASS objects and this service contains one class called getStock, it contains 1 method that instansiated the getStock object. It is passed one parameter stockKey
which is passed to a function called getStockDoc which does the actual work of geting and returning data.

I then have to create the getStockDoc() function in the Web Service object .. like this
Private Function GetStockDoc(stockKey As String) As String
Set ThisDB = ThisSession.CurrentDatabase
If Not (ThisDB.IsOpen) Then
GetStockDoc= "Error opening database"
Exit Function
End If
'Check that view exists in the database
Set StockView = ThisDB.GetView("StockByKey")
If StockView Is Nothing Then
GetStockDoc = "Error in search"
Exit Function
End If
'Get a document by provided search key
Set StockDoc = StockView.GetDocumentByKey(stockKey, True)
If StockDoc Is Nothing Then
GetStockDoc = "Cannot find Stock"
Exit Function
End If
GetStockDoc= StockDoc.ItemName(0)
End Function
This does what it says on the tin.. it checkes the DB exists, the view exists and then goes and gets the document found using the stock key. the function returns either an error message if something goes wrong or the Item Name if it succeeds.

Having done all this I try out my webservice by going to this URL

http://www.unseenuni.com/mystock.nsf/StockService?wsdl

And if every thing goes according to plan i should get some nicely formatted XML. The content of the XML is very interesting if you are a real geek, but the domino server does all the interesting shit so as long as you get lots of XML your web service is working and you can they create applications that can "consume" it.

OH very important this.. DOMINO will take all the important bits of your server and make them UPPER CASE!! so getStock will become GETSTOCK

OK I fire up the other side of the coin now and create my MXML file called WS1.mxml in this case and i open the application with the normal Application tags
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
</mx:application>
inside these tags I create my webservice definition
<mx:WebService
id='myservice'
wsdl="http://www.unseenuni.com/mystock.nsf/stockservice?wsdl">
</mx:WebService>
You will not that i have given it an ID so i can refer to it in my MX code later on
and I define where the web service object can get the WSDL XML from the server. This will be loaded from the server automatically when the application is loaded at run time.

Inside the mx:WebService tag i create the following code
<mx:operation name='GETSTOCK' result='myresult(event)'>
<mx:request>
<STOCKKEY>
{mykey.text}
</STOCKKEY>
</mx:request>
</mx:operation>


Although the WSDL defines the method GETSTOCK in the webservice I have to define an MX object to interact with it. So I create an mx:operation which has the same name as the WSDL (note the upper case !!) and it also defines an mx function myresult(event) which will be fired when the webservice operation returns data.

The STOCKEY tag defines the data that will be passed to the method again note the UPPERCASE! In this case I have defined this as the bindable value of a Text input box which I will define in a moment... but first i will define the script for the result handler myresult();

<mx:Script>
<![CDATA[
import mx.controls.Text;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent
[Bindable]
private var msg:String
private function myresult(event:ResultEvent):void
{
msg = (event.result as String)
mx.controls.Alert.show(msg)
}
]]>
</mx:Script>


As you can see when the myresult() function is triggered it will display the content s of the Event result as text in an alert box.. not very exciting i know but I want to keep the code down to a minimum.

lastly I create a text input box and button.

<mx:TextInput x="25" y="10" id="mykey"/>
<mx:Button x="25" y="40" label="Button" click='myservice.GETSTOCK.send()'/>
The text input box is called mykey and use {mykey.text} in the STOCKKEY tag of the Webservice Operation definition earlier..

The Button calls the Webservice's GETSTOCK's method by calling .send(), this then calls the webservice method passes it to the server and waits for some data to come back when the function myresult() will be triggered and processed.

So when i compile up my flex project it looks like this on the screen



and if i type in a valid Item Key and click the button .. this happens



Easy Peasy!

Now webservices are usually way way way more complex than this one, but you get the idea :-) and it only took 31 lines of MXML to define the process that consumed it. In the next post I will use Web Services to Update data on the server.

Tuesday 14 July 2009

More Flexy loveliness = Categorized with Summaries

In the last post I popped up an example of categorized views and in this we will add the additional functionality of Summaries.

To recap the last post

01. Create a GroupCollection object

02. Assign a source property of the Group Collection object to the AdvancedDataGrid's dataProvider

03. Create a New Grouping Object

04. Create a new GroupingField Object or Objects that specify the field(s) on which to group

05. Assign the Grouping property of the GroupingCollection to the Grouping Object

06. Refresh the Grouping Collection

07. Assign the GroupingCollection to the Dataprovider or the AdvancedDataGrid.

But what if you want to have some summarised .. well that is relatively easy too. Lets try for this.. With summary data at the end of each category


Ok Lets go.

01. I go to the GroupingField definitions I created yesterday
Originally it looked like this <mx:GroupingField name="cat"/>

02. I drop the / from the end and create a tag pair
<mx:GroupingField name="cat">
&lt/mx:GroupingField>

03. Inside this tag pair I create a <mx:summaries> and </mx:summaries> tag pair

04. Inside the summaries Tags i create a <mx:SummaryRow summaryPlacement="last"> tag pair.. Note the SummaryPlacement attribute. "last" will place it at the end of the category and "first" will put it and the start.

05. Inside the SummaryRow i create a <mx:fields> tag pair

06. Inside the fields tag pair i create
<mx:SummaryField dataField="qty" operation="SUM" label="summary" />
The source of the data is set in dataField which in this case is the "qty" field in the XML pulled from the domino agent.
The Operation is "SUM" (or totalise all the QTY values in the category) other options can be MIN, MAX, AVG and COUNT

07. I repeat 1-6 for the other field "subcat" that I am summarising on

08. Your code will now look like this.

<mx:Grouping>
<mx:GroupingField name="cat">
<mx:summaries>
<mx:SummaryRow summaryPlacement="last">
<mx:fields>
<mx:SummaryField
dataField="qty"
operation="SUM"
label="summary" />
</mx:fields>
</mx:SummaryRow>
</mx:summaries>
</mx:GroupingField>
<mx:GroupingField name="subcat">
<mx:summaries>
<mx:SummaryRow summaryPlacement="last">
<mx:fields>
<mx:SummaryField dataField="qty" operation="SUM" label="summary" />
</mx:fields>
</mx:SummaryRow>
</mx:summaries>
</mx:GroupingField>
</mx:Grouping>
09. Now i am going to use a flex function called a rendererProvider, which is a MXML component that is used to render a particular item in your project.

10. I create a new MXML file called SummaryText.mxml in a subdirectory called Renderers off the directory i have my main MXML file in.

11. The code looks like this and basically all it is , is a LABEL component the which will display the total that is calculated for the category. Note the {data.summary} the .summary refers back to the LABEL I used in the <mx:SummaryField> statement above

<?xml version="1.0" encoding="utf-8"?>
<mx:Label xmlns:mx="http://www.adobe.com/2006/mxml"
text="Total Quantity {data.summary}">
</mx:Label>
12. Having saved the SummaryText.mxml file I return to the AdvancedDataGrid definition in my main MXML file. Just above the closing </mx:AdvancedDataGrid> tag I create a new set of tags that attach the renderer to the AdvancedDataGrid. the code looks like this

<mx:rendererProviders>
<mx:AdvancedDataGridRendererProvider
dataField="summary"
columnIndex="1"
columnSpan="2"
renderer="Renderers.SummaryText"/>
</mx:rendererProviders>
Of note here is the the dataField attribute points at LABEL I used in the <mx:SummaryField> definition (and beware it IS case sensitive)
Also if i set the columnSpan to "0" it will span all columns in the grid. I have chosen 2 here cos it looks better in the finished application.
Also the renderer attribute is made up of [the path to the renderer MXML file].[File name without extenstion] beware this too is case sensitive.

13. Once that is done ... compile up your app and there you have it.. summary values in your view. Note this is all done by FLEX as I have NOT changed the agent that supplies the data from the Domino application.

I have Popped this into a NSF and zipped it up with the Flex Builder 3 project files if you want to have a look see.. This is the same file as yesterday.. except the summarised page is FlexView2 ad the SWF is called CategoryView2.swf.. you can get it here .. Same provisio as yesterday, This will NOT work on your server as you need to change the URL for the HTTPService object and recompile the SWF for it to work!!! Enjoy and again if you have any questions drop me an email :-)

Categorised Views in Flex - It's really easy

OK .. a Flex Post for youse in Domino land.

First some stuff about the what I used.

Flex 3 SDK
Notepad ++
Domino 8.5.0 server
Domino 8.5.0 DDE

I was asked recently how I would FLEX a multi-category expand/collapsible view which is admittedly dead easy in the Notes Client. Well it is almost as easy in Flex.

This is what I did to illustrate the method.

01. I created a form that looks like this


02. I created a view that looks like this

03. I created an agent that does this
04. I opened Notepad++ and created a file called CategoryView1.mxml and typed up these 47 lines of code
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="myData.send()">
<mx:HTTPService id="myData"
url="http://www.unseenuni.com:81/flexview.nsf/getdata?openagent"
result="dataResult(event)"/>
<mx:Script>
<![CDATA[
import mx.controls.Text;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent
import mx.collections.ArrayCollection
[Bindable]
private var items:ArrayCollection = new ArrayCollection
private var msg:String
private function dataResult(event:ResultEvent):void
{
items= event.result.items.item;
myGroup.refresh(true)
}
private function dostuff(event:MouseEvent):void
{
if(event.target.data.key)
{
msg = event.target.data.key
mx.controls.Alert.show(msg)
}
}
]]>
</mx:Script>

<mx:AdvancedDataGrid x="10" y="10" id="Grid1" designViewDataType="tree" width="719" height="343" creationComplete="myGroup.refresh()">
<mx:dataProvider>
<mx:GroupingCollection id="myGroup" source="{items}">
<mx:Grouping>
<mx:GroupingField name="cat"/>
<mx:GroupingField name="subcat"/>
</mx:Grouping>
</mx:GroupingCollection>
</mx:dataProvider>
<mx:columns>
<mx:AdvancedDataGridColumn headerText="Item" dataField="item"/>
<mx:AdvancedDataGridColumn headerText="Qty" dataField="qty"/>
<mx:AdvancedDataGridColumn headerText="Price" dataField="price"/>
</mx:columns>
</mx:AdvancedDataGrid>

</mx:Application>

05. I compiled up the mxml to a SWF using the SDK (a lot easier if you use FLEX BUILDER!)

06. I Imported the resulting file CategoryView1.swf as a File Resource in my NSF

07. I created a Page in my NSF with this Passthru HTML
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
id="CategoryView1" width="100%" height="100%"
codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
<param name="movie" value="CategoryView1.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#869ca7" />
<param name="allowScriptAccess" value="sameDomain" />
<embed src="CategoryView1.swf" quality="high" bgcolor="#869ca7"
width="100%" height="100%" name="CategoryView1" align="middle"
play="true"
loop="false"
quality="high"
allowScriptAccess="sameDomain"
type="application/x-shockwave-flash"
pluginspage="http://www.adobe.com/go/getflashplayer">
</embed>
</object>

08. I fired up a browser and went to the page's I just created URL and this is what appeared.



It really is that easy... So lets look at this in detail.

The Domino agent returns nice simple XML - have a look at ../flexdata.nsf/getdata?openagent and you will see it in "raw" form, althought the parent view is sorted it is not categorised it is an ordinary flat view. We will let Flex do the sorting and grouping once it gets the data.

The MXML is only 47 lines long and was created as follows :-
(replace [] with < adn >)
01. I created an application

[mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"]

[/mx:Application]


This defines the application and it is always like this, note the tag pair is closed!


02. Inside the application tags I place a definition of the HTTPService I am going to use to provide the data to the application


[mx:HTTPService id="myData"
url="http://www.unseenuni.com:81/flexview.nsf/getdata?openagent"
result="dataResult(event)"/]


This breaks down into
id this is the id by which I will refer to the service later in the code
url this is the URL which will provide the data
result this is the actionscript code that will run when data is recieved from the url

03. The next section is the Actionscript code that my flex application will use

<mx:Script>
<![CDATA[
import mx.controls.Text;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent
import mx.collections.ArrayCollection
[Bindable]
private var items:ArrayCollection = new ArrayCollection
private var msg:String
private function dataResult(event:ResultEvent):void
{
items= event.result.items.item;
myGroup.refresh(true)
}
]]>
</mx:Script>


Firstly I import the various Adobe Supplied libaries that i will need
Then I create a Bindable ArrayCollection object call items, this will store the returned data.
Then I define the dataResult() function that I attached to the HTTPService object. Remember this code gets executed when the URL in the HTTPService recieves data from the URL. In this instance the items ArrayCollection is loaded with the data returned from the URL. FLEX will see it as XML and I can access it through the event.result object by name.

04. Now I define my on screen objects

<mx:AdvancedDataGrid x="10" y="10" id="Grid1" designViewDataType="tree" width="719" height="343" creationComplete="myGroup.refresh()">
<mx:dataProvider>
<mx:GroupingCollection id="myGroup" source="{items}">
<mx:Grouping>
<mx:GroupingField name="cat"/>
<mx:GroupingField name="subcat"/>
</mx:Grouping>
</mx:GroupingCollection>
</mx:dataProvider>
<mx:columns>
<mx:AdvancedDataGridColumn headerText="Item" dataField="item"/>
<mx:AdvancedDataGridColumn headerText="Qty" dataField="qty"/>
<mx:AdvancedDataGridColumn headerText="Price" dataField="price"/>
</mx:columns>
</mx:AdvancedDataGrid>


I use the AdvancedDataGrid because it has support for Grouped (read Categorised Objects) you will not I do not ascribe a datasource to the AdvancedDataGrid Object. Instead I create a DataProvider object INSIDE the AdvancedDataGrid Tag pair! very important than!

Inside the DataProvider Object I create first a GroupingCollection object, I would do this even if I had only one category. Inside that I define a Grouping object and then as manu GroupingField objects as I need. In this instance the Fields Cat and SubCat.

I then define the Columns I want to display. Note i do NOT include the columns that will be my groups!

And that is it... compile it up, stick it in your NSF and Robert is your mother's brother.

I have uploaded the NSF and FLEX BUILDER PROJECT here.. but the NSF will not work on your server unless you change the URL in the MXML from my server to your own, recompile the SWF and delete the orginal SWF from the NSF and attach the new one as a new file resource.. i include it only so you can see the code not run it :-)

If you have any questions just drop me a line ... enjoy

Sunday 12 July 2009

Tinariwen - New Album Companions - 5 Star wonderful!

I discovered the Tuareg Poet / Guitarist legends Tinariwen last year and YIPEE a new album is out.. This is Lulla from the new album "Companions" If you like new exciting sounds give it a listen close your eyes and think desert ... enjoy

Some thoughts on Tradition

I have recently returned from a business trip to the far east and arrived back just in time for the annual tradition of the 12th of July. The "Glorious Twelfth" as it is known in some circles is the traditional celebration of the The Battle of Boyne in 1690 when the Protestant King William of Orange gave the Catholic King James a bloody nose. Now it was far from the simple matter of two denominations of Christianity being belligerent, it was more about the power of the royal families in Europe at the time. In fact Pope Alexander VIII lent King William troops for the war against King James. King William and the Pope and several other countries were in the League of Ausburg which was set up to defend the Palatinate of the Rhine from the French. A fact sadly lacking from the history expounded by organisations like the Orange Order who much prefer the world view that the Battle of the Boyne was a "Protestant Victory for a Protestant People" which is in fact a load of revisionist knob cheese, but what is a bit of revisionism when it is the absolute right given by God and justified by Luther, Calvin, Knox and the tooth fairy to be a raving bigot at the drop of a bowler hat each July.

I overheard a conversation at the airport where a grandmother was telling her grandchildren of the "good old days" when her grandfather paid her 1 old penny each time she sat on his knee and shouted "To hell and the flames with the pope and all Catholics". Ah yes the good old days of vitriol and hatred ... such a fine gift to pass on to one's children!

When I was a teenager if you travelled outside the streets where you were known it was inevitable that you would be asked "What are you?". Now for other traditional forms of hatred like racism it is easy to pick your targets by visual cues alone. Picking which person to abuse is harder when based on religion hence the blunt interrogative method. It became second nature for most to quickly work out who was doing the asking and switch sides accordingly, this whilst being ethically suspect was a sure fire way to avoid getting a black eye or worse. Needless to say one had to learn the responses to the follow up questions of "Well sing the Sash" or "Say the hail Mary" but that was a small price to pay.

You could not answer "neither", that was not an option, you could not sit on the fence. You had to plant yourself firmly on one side or the other and be prepared to defend that position from all comers, needless to say expressions of distrust or outright hatred of the "other" side were mandatory if you were to be believed.

As a callow youth the painful experience of having to fight off both sides soon lead to the my questionable position of variable allegiance, although in hindsight I was put in the position of having to repeat parrot like the vitriol of one side or the other, something I could not and hopefully would not allow myself to do now.

Now do not get me wrong, tradition can be a wonderful thing. The traditions of openness, friendship, philanthropy and generosity of spirit are fine things to pass on to the next generation. Such traditions are the glue that holds societies together and makes them work. However on the other side of the coin are the traditions that are divisive, that are driven by the sure and certain knowledge that your tradition is the ONLY one that is right, the only one that is useful and in this case that it is the only one that is God Given to you and your side only.

Traditions are dangerous when they are the only thing that defines who you are. I do not define myself by the country that I live in, nor do I wrap myself in the dubious comfort of a flag, as this only succeeds in hiding me from others. If I was holding that tightly onto a flag how could I hug a stranger or extend them the hand of friendship?.. and there is the rub ... i do not think that is part of the traditions I see unfolding each July. There are no hands of friendship, no hugs expect for those in your tribe. It is all inward looking, incestuous, foetid reinforcement of generationally transmitted regligious hatred and distrust.

Tomorrow, tens of thousands of bowler hatted, white gloved men will march behind banners that display their commitment to the British monarch (but ONLY with the strict condition that the monarch is Protestant, or more exactly, not Catholic) and commitment to the Bible (the protestant one not the catholic one). The banners they march behind will be flanked by men carrying swords and pikestaffs in rememberance of those that were killed and the fact that they needed to be killed to protect the faith. There will be marching bands playing military marching tunes mixed with sectarian anthems, some of which will have words that call the listener to arms to defend with violence the God given right to be Protestant. There will be acts of worship in which ministers will pillory the "church of rome" and declaimed it as the worst evil in the world. There will be speeches where the leaders of the Orange tribes will extole their members to stick together for God and Country at all and any cost.

This is not a tradition I want any part of.

Monday 22 June 2009

Oh Joy .. here comes July :-( or "The Joy Of Flags"

I am sat here in my front room watching some chaps who don't live on the estate hang flags on the lamp posts. This is because it is only a couple of weeks until that annual orgy of all things "orange" and "protestant" gets under way.

This year there are a lot less flags, mainly due to the fact that when the wee toerags whose appear to communicate in monosyllabic grunts, groin scratching and positioning of a Burberry/Rangers FC baseball cap at varying angles upon their echoingly empty heads, came to the door and asked "wannagiveussomemoneyfurdeflagseh?" I, like many of my neighbours when we had taken a moment or two to decrypt this strange request replied "Ah no". This could be because folks are a bit strapped for cash this year or it could be that being surrounded by 100's of flags all flapping in the ever present Norn Iron wind roughly level with your bedroom window was just a bit intrusive. "Tradition" or not, sleep deprivation can be a right royal pain in the arse.

Now it has to be said we have a plethora of flags and for some it is a requirement equivalent with breathing that they fly every fecking one from every lamp post in the province.

At the top of the heap the Union Jack, the flag of the "United Kingdom of Great Britain and Northern Ireland" to give it the full rather boring name.. this one
Then you have the "Government of Northern Ireland Flag" which is the sort of official flag of the six counties
Then you have the "Alternate Northern Ireland Flag" Which has no crown and a wee union jack in the top corner. This is perceived to be a UDA (Ulster Defence association - an illegal paramilitary/terrorist/drug dealing group)

Then you have the flag of the Orange order, a protestant religious organisation famed for it's bowler hats, sashes and it's unofficial war cry of "Fuck the Pope" (i am being crass here, however on the 12th july when certain songs are played at the BIG parade you will hear this with a monotonous regularity and on walls in Belfast you will see FTP scrawled on walls and it is not the work some underground group of TCP/IP graffitioso)


Then there is the King Billy Flag .. another sort of Orange order flag



Not to be left out the UVF (Ulster Volunteer Force - Another illegal paramilitary,terrorist organisation) and the YCV (Young Citizen Volunteers - Much the same as the UVF but without the moustaches)

And here are more.. including Dutch flags (King Billy was Dutch) Scottish flags and even Israeli flags (The Meyer & Cohen Hassidic Loyal Rising Sons of William temperance and Ohi Vey Battalion perhaps??) Anyway there are lots and lots and lots of flags on BOTH sides and as they fly in estates all over the north each flutter picks at the scabs of a 1000 insults both real and imagined.

So here I sit watching a plethora of flags flutter in the stiff breeze and there in the background several of young Ulster Protestantism's finest are singing along to the not terribly well played battle flute. "We are... We are... We are the billy boys! We are up to our necks in Fenian blood, surrender or you die" whilst necking a bottle of Buckfast tonic .. well after all it is traditional so it must be right... isn't it?

Thursday 18 June 2009

The "YEC " scientific method

I recently had a run in with some anti-Darwin YEC (Young Earth Creationists) I am a card carrying "Grumpy Old Atheist Fart" and as I get older my capacity to put up with the tawdry dribbling of the wilful ignorant gets less and less.

In a perfect proof of Godwin's Rule of Nazi Analogies i was sent this

"However, the Western nations have not learned the lessons of the horrific wars and genocides this century. Evolution is today entrenched in our universities even more than it was in Nazi Germany. "

and a sentence later not satisfied with reductio ad hitlerum, Darwin is up to his evil ways again 150 years after his death.

.. our report of the Columbine High School massacre documents the on-going effects of evolutionary thinking in the young

This load of advanced gobshitery set me to thinking and I believe I can now reveal that YEC's have adapted the standard Scientific Method the orginal one goes like this

1. Observation and description of a phenomenon or group of phenomena.

2. Formulation of an hypothesis to explain the phenomena. In physics, the hypothesis often takes the form of a causal mechanism or a mathematical relation.

3. Use of the hypothesis to predict the existence of other phenomena, or to predict quantitatively the results of new observations.

4. Performance of experimental tests of the predictions by several independent experimenters and properly performed experiments.

And this has evolved (ooops sorry strike that) stayed the same into the YEC METHOD which goes like this

1. Observe the scientists observing Phenomena, look grumpy, pray a bit, blame Darwin for the Holocaust.

2. Start mining "The Sunday Sport" and "The National Enquirer" for phenomena that could be useful later on. "Aircraft buried under 1000 years of ice" is a good one.
The startling news that the Piltdown Man was a fake is another. Stop looking grumpy and try looking saintly for a while, grow a Moses-esque beard, pray some more, twiddle thumbs and wait for a scientist to publish something you don't like. Blame Darwin for Columbine, Pol Pot,the third world debt and the disappearance of Orange Smarties.

3. Have a good long pray, fleece some true believers of a few more quid, wonder why scientists bother with all this work since they are wrong all the time ... blame Satan ... Jesus tells you that Darwin IS Satan and he hid his horns using genetic manipulation.

4. Form a "ministry", start a web site, make a documentary about how Darwin IS actually Satan . Prove beyond doubt that Darwin's Beard is a portent of the end of times. Form a hypothesis that affirms that the Man and, consequently, the Earth, is in the centre of the creation, prove hypothesis using bible verses ,repeal Copernican celestial model because Copernicus was a Catholic and very probably a relative of Darwin and therefore the second cousin twice removed of "the beast" .. underline this by showing their beards were VERY similar.

5. Ban Science for being always wrong, co-opt the Orange Order as the NEW Protestant Inquisition, burn Richard Dawkins at the stake even if he does recant.

Friday 12 June 2009

Shock Horror Coding Pencil High level Probe - I am speaking at UKLUG

Well it had to come sometime. ILUG, UKLUG, DNUG, Lotusphere all have a long and rich history of excellent speakers covering topics of interest with alacrity, elegance, wit and vigour. Well for an hour during UKLUG on the 8th or 9th of October that is all due to change, for tis on one of those days I will take the stage to deliver with my compadre in arms "Will" Bill Buchan an hours worth of fun filled romping around the world of RIAs.

So if you are coming to UKLUG in October , please stop by and heckle, we may be providing things to throw and Bill and I promise to make it more difficult by moving around a lot and filling the silence with geek chat delivered in a variety of strange accents at great speed. (Subtitles will be provided)

We will be expecting a certain amount of audience participation and if you are planning to attend you should start practising the following catchphrases now ...

"OOOOOOOH My life!"

"FECK! ARSE! DRINK! GURLS!"

"Could'nt find his arse with both hands and a Tom Tom"

"Flex? With this waistline I should cocco!"

"Warren ... I'm really an admin...honestly....please let me out"

You can find out more about what is going on here on the UKLUG SITE if you haven't made you mind up yet I would advise you to get your skates on as the books are is very nearly full which is testimony to the fact that the rest of the speakers are way way better than me!

Panda Bear - a Boon for Quickr Users from SNAPPS

There are dozens of links to this already, however just in case you don't follow the Notes Yellow Blogs.. This is just out from those awfully nice people at SNAPPS
Panda Bear which is a nice alternative to the "Quickr Connectors" supplied with Quickr and because it is an ADOBE Air App, much less
intrusive when installed on your PC.

I was lucky enough to have been using it for a while now, the folks at SNAPPS called it "testing" .. but I managed not to break it, which for me is strange and for Panda Bear a ringing endorsement of it's stability and fragility.

If you have a mainly file share Quickr Installation and need a quick and easy method of getting files into and out of your Quickr Places, Panda bear is the tool for you.

Take a trip over to the SNAPPS site and check out and A+ Gold Star cracking app!

Notes Client Tip - Dragging and Dropping documents into a calendar

I was asked today the following question,
Why can't we drag a customer from a customer list onto our Customer Visit Calendar and make an appointment with them that way?
Good question. We already have that functionality on the web interface. Popup a customer list, select the customer or customers from the list and drag them to the day you want to schedule the visit and it auto creates the document for that customer on the day you dragged the document(s) onto.

I sucked my pencil for a bit, scratched various bits of my anatomy that would not be misconstrued by my colleagues as offensive and hummed and ahhed. I pinged Julian Robichaux and bounced the idea off him. Can I drag docs which are not calendar docs from an embedded view on a page (or form) onto calendar view embedded on the same form and create a document or documents based on the QueryDragDrop event of the calendar based on the documents that I had dropped.

Julian confirmed my initial thoughts that this was a non-runner because when a view is embedded you can't seem to access the drag drop events - BUMMER! So I then mentioned a word not mentioned in polite society much these days and to give Julian credit it didn't finch or berate me in any way. "What about Framesets?" I said

After a bit of futtering about we discovered that yes you could accecss the Drag and Drop events from FrameA to FrameB and Joy of Joys the CurrentView in the UIWorkspace FrameB's QueryDragDrop event was the view from FrameA! _ YIPEE!

I took my leave of Julian with much thanking and promises of beer and proceeded to have a bit of a debug to see what I could do.

I created a wee test NSF with two forms CUSTOMER and CALENT
Followed by a View of just the CUSTOMER forms and a Calendar view of the CALENT forms
A Frameset was created and in the LHS frame I popped CUSTOMER view and in the RHS frame CALENT calendar view.

On the CALENT view's QueryDragDrop I entered some code and had a ferret about in
what was an what was not passed, this is what I found out.

If you grab one doc from the CUSTOMER view and drop it over the calendar, then there are no documents in the UIView.Documents collection, there is a CaretNoteID that links to the dragging document in the UIView.

If you select more than one document from the CUSTOMER view and drag it over the Calendar then the UIView.documents collection contains the documents you selected.
If you actually select (the wee tick in the gutter) one document the UIView.documents will contain that one document, but you cannot count on users doing that.

Sub Querydragdrop(Source As Notesuiview, Continue As Variant)

Dim ThisSession As New NotesSession
Dim ThisDB As notesdatabase
Dim ThisUI As New NotesUIWorkspace
Dim ThisUIV As NotesUIView
Dim ThisDC As notesdocumentcollection
Dim OldDoc As NotesDocument
Dim NewDoc As NotesDocument

Set ThisDB = ThisSession.CurrentDatabase
Set ThisUIV = ThisUI.CurrentView
' *** Test to see if the view I am dragging from is the calendar or the customer list
If ThisUIV.ViewName <> "Calendar" Then
Set ThisDC = ThisUIV.Documents
'*** Well you must have dragged SOMETHING to fire the event so get it from
'*** from the CaretNoteId
If ThisDC.Count = 0 Then
Set OldDoc = ThisDB.getDocumentById(ThisUIV.CaretNoteID)
Set NewDoc = New NotesDocument(ThisDB)
NewDoc.Form = "CalEnt"
NewDoc.Customer = OldDoc.Customer(0)
NewDoc.City = OldDoc.City(0)
NewDoc.Date = Source.CalendarDateTime
NewDoc.Time =Format(Now,"hh:mm")
NewDoc.Status = "Planned"
Call NewDoc.Save(True,False)
Else
Set OldDoc = ThisDC.GetFirstDocument
Do While Not (OldDoc Is Nothing)
Set NewDoc = New NotesDocument(ThisDB)
NewDoc.Form = "CalEnt"
NewDoc.Customer = OldDoc.Customer(0)
NewDoc.City = OldDoc.City(0)
NewDoc.Date = Source.CalendarDateTime
NewDoc.Time =Format(Now,"hh:mm")
NewDoc.Status = "Planned"
Call NewDoc.Save(True,False)
Set OldDoc = ThisDC.GetNextDocument(OldDoc)
Loop
End If
Else
'*** This is the calendar and I am moving docs around inside it
Set ThisDC = ThisUIV.Documents
If ThisDC.Count = 0 Then Exit Sub
Set OldDoc = ThisDC.GetFirstDocument()
Do While Not (OldDoc Is Nothing)
OldDoc.Date = Source.CalendarDateTime
Call OldDoc.Save(True,False)
Set OldDoc = ThisDC.GetNextDocument(OldDoc)
Loop
End If
Call ThisUI.ReloadWindow()

End Sub


This code allows the user to drag a customer (with or without tick selction) or customers from the customer list in the left hand frame onto the calendar and create a calendar entry for that customer on the dropped on date. The user can also safely drag and drop calendar entries around inside the calendar.

Useful and cool. :-)

I have popped the NSF up here so if you are interested in seeing it in action you can have a go.

Enjoy ...

Monday 8 June 2009

Be sure to tell your Flash Drives you love them



In September 1956 IBM launched the 305 RAMAC, the first computer with a hard disk drive and that beauty is it The HDD weighed over a ton and stored 5 MB of data.
So send some love to your 32gb Memory stick right now!

International "NotesBeer'n'Tweetup" Invite Hong Kong

I am off on my travels again this month, and I will be in Hong Kong (well Kowloon to be exact) from the 25th June until the 3rd July. So if any local Notesgeeks or allied trades from the Hong Kong/Kowloon area want to get together for a few beers and a bit of a laugh during that time leave a comment here or drop me an email to mcdonaghs[at]utvinternet[dot]com and we can arrange something.

Thursday 4 June 2009

An Alternate way of embedding a configurable Video player in an NSF

I recently came across a nice open source video player that is dead easy to build into your Notes Applications. The player is called FLOWPLAYER and has been released under a GPL license. There are commercial and multi-domain versions which you have to pay for, but the base app is free to build into your apps.

You can download it here and once you have the zip file unzipped you have two SWFs and an example directory. I embedded it in my app like this.

01. I embedded FlowPlayer-3.1.1.swf into the RESOURCES / FILES section of the nsf

02. I embedded FlowPlayer.controls-3.1.1.swf into the RESOURCES / FILES Section of the nsf

03. I embedded the Flowplayer-3.1.1.min.js inot the RESOURCES / FILES section of the nsf

04. I added the flowplayer-3.1.1.min.js as an external JS file to the form I wanted the player to be on

05. I added a RT field into which a Video file could be attached

06. I added this code to the form
<a href="'http://www.unseenuni.com:81/flowplay.nsf/new/[ComputedText1]/$File/[ComputedText2]?openelement' style='display:block;width:400px;height:300px' id='player'></a>

<script language="'javascript'"> flowplayer("player","http://www.unseenuni.com:81/flowplay.nsf/fp311.swf?openfileresource")</script></pre>


[ComputedText1] = @documentUniqueID and
[ComputedText2] = @attachmentnames

07. I created the form .. attached an MP4 opened it in the browser and it worked like a charm and looked like this



So if you have a need for a very clean, easy to use adaptable player for free (we like for free) then you can't go far wrong with Flowplayer ... check it out here

Saturday 30 May 2009

Saturday Walk in the woods

 
Posted by Picasa

Famous Cousin Andy is Playing WOMAD this year

YEAH .. just got the news that my cousin Andy White is playing WOMAD again this year !!!!

KUDOS Cousin!! :-) You da Man!

From the WOMAD Site

Northern Irish songwriter Andy White plays WOMAD Charlton Park, Sunday July 26, before taking the songwriting strand of the WOMAD Summer School at Bath Spa University, July 27-31. At the festival, Andy will preview his forthcoming album 'Songwriter' (Floating World), on release this September.


It's been twenty three years since Andy burst onto the UK music scene with his debut album 'Rave On'. "Yer Man's Brilliant" proclaimed Melody Maker, and the singer the UK press called 'Belfast's Bob Dylan' or alternately 'Ireland's Billy Bragg' was born.

Since then, Andy has become very much his own man. His lyric-driven acoustic rock, which owes as much to David Gray or the Waterboys as Dylan or Bragg, has become more engaging-and his social commentary more relevant-each year.


Andy has been closely involved with WOMAD for a number of years, sharing its core values and appearing at many WOMAD festivals worldwide. In 2000, the WOMAD Select label released 'Speechless', a live performance album featuring Andy's best-known songs and poems.


Lead track on Peter Gabriel's current album 'Big Blue Ball' is 'Whole Thing', a song Andy wrote with Peter, Karl Wallinger, Geoffrey Oryema and others at a Real World recording week.


Andy's career highlights include winning Ireland's Hot Press Songwriter of the Year award, recording and touring as the A in ALT along with Liam O Maonlai and Tim Finn, and working and writing with the some of the great names in the music world-the Finn Brothers, Sinead O'Connor, Van Morrison.


Andy's new album 'Songwriter' was co-written over the past few years with a number of collaborators, and recorded live in the studio in Vancouver, with a rootsy all-star line-up. A shift from the layered textures of his current album 'Garageband' which was recorded in Andy's new home of Melbourne, Australia, and Real World, and mixed by old friend and national treasure John Leckie.

As MOJO magazine said about Andy, "From rage to sage, it's not too late to discover one of our best kept secrets."


Friday 29 May 2009

Blue Sky Evening in May


DSC00663, originally uploaded by DarkRedSpiral.

A Pretentious title for a photo i took on my phone.. and it is just.. well it is just "right" .. well i think so ;-)

Thursday 28 May 2009

BBA - Breeding Bananas for Anguilla


The ravages of the Anguilla Banana Famine continue. I encourage all you folk on the interweb to start breeding Bananas now to ease the suffering

Tuesday 26 May 2009

Two Tribes forever at each others throats?

On Sunday a man was murdered not 5 minutes from where I sit writing this post. His wife was beaten, a neighbour a woman several months pregnant who tried to stop the beating was attacked and another man was beaten so badly around the head that he remains in a critical condition in hospital.

The reasons why this happened are not clear, however it seems that tensions in the area rose when Glasgow Rangers won the Scottish league. For those of you not familiar with the sectarian nature that surrounds some football teams. Glasgow Rangers is regarded as a Protestant team and their neighbours Glasgow Celtic are nominally a "Catholic" team. The management of both teams have done much to try and shake themselves of this sectarian image, however some of their supporters hold tightly to the old ways. If you are a "Prod" (as protestants are known) you support Rangers, if you are a catholic you support Celtic, simple as that, or it is to those people who enjoy beating people with baseball bats because they support the other team.

There will be as is always the case in Northern Ireland a lot of "what-about-ery" as people with vested interests in staying firmly on one side of the sectarian divide try to blame the other side. They supported the "other" football team, they wore the other teams shirts, they flew a flag I am insulted by, they sang sectarian songs, they called us rude and hateful names , they acted in a provocative manner etc etc etc, trotting out the same tired old shite I have heard for my entire adult life from one side or the other.

For me it is simple ... no football team, no flag, no song, no injured national pride and no percieved insult to my religion is a valid excuse to beat a man to death, beat another to near death, beat a wife and mother and beat another pregnant woman.

The people that did this are scum.

The politicians that wriggle and squirm and attempt to justify and excuse are scum

Religions that propagate division by claiming their way is the "only true way" and all others are false and thus not even worthy of the hand of friendship are scum.

... and then there is me ... when faced with sectarianism in my life did I challenge it or opt for the way that caused me least problems? I suppose there is scum in me too :(

I didn't know Kevin McDaid, our paths crossed from time to time, Coleraine is not a big place.
My thoughts are with his family this evening and the relatives of the other victims, I hope for their full recovery ... although that I suspect is little comfort.

Perhaps one day instead of two tribes at each others throats, we will be two tribes that can share and become more that the sum of our parts ... that day I fear is still a long way away.

Sunday 24 May 2009

Irish Government, The Catholic Church and abuse

There are paragraphs and links in this post that are not easy to read ...

In Ireland for decades children were systematically abused, physically , sexually and psychologically by agents of the Catholic Church in Ireland. When they did report the abuse the children were ignored, when the complaints got to great to ignore the church simply moved the nuns, priests and brothers to other parts of the world out of the jurisdiction of the state ... not that they would have done a whole hell of a lot about it if they had got their hands on the abusers.

Justice Ryan a senior Irish Judge was tasked with investigating the 1000's of claims of abuse and his report was published this week all 5 volumes of it. The Christian Brothers went to court and won an injunction which means that Justice Ryan's report could not name the abusers in his report even when evidence exists that abuse did take place.

The head of the Catholic Church in Ireland Cardinal Brady, a mealy mouthed useless stream of piss is "saddened and sorry" by the report. SADDENED BY THIS?

from the Ryan Report ...
Physical abuse
More than 90% of all witnesses who gave evidence to the Confidential Committee reported being physically abused while in schools or out-of-home care. Physical abuse was a component of the vast majority of abuse reported in all decades and institutions and witnesses described pervasive abuse as part of their daily lives. They frequently described casual, random physical abuse but many wished to report only the times when the frequency and severity were such that they were injured or in fear for their lives. In addition to being hit and beaten, witnesses described other
forms of abuse such as being flogged, kicked and otherwise physically assaulted, scalded, burned and held under water. Witnesses reported being beaten in front of other staff, residents, patients and pupils as well as in private. Physical abuse was reported to have been perpetrated by religious and lay staff, older residents and others who were associated with the schools and institutions. There were many reports of injuries as a result of physical abuse, including broken bones, lacerations and bruising.

Sexual abuse
Sexual abuse was reported by approximately half of all the Confidential Committee witnesses. Acute and chronic contact and non-contact sexual abuse was reported, including vaginal and analrape, molestation and voyeurism in both isolated assaults and on a regular basis over long periods of time. The secret nature of sexual abuse was repeatedly emphasised as facilitating its occurrence. Witnesses reported being sexually abused by religious and lay staff in the schools and institutions and by co-residents and others, including professionals, both within and external to the institutions. They also reported being sexually abused by members of the general public, including volunteer workers, visitors, work placement employers, foster parents, and others who had unsupervised contact with residents in the course of everyday activities. Witnesses reported being sexually abused when they were taken away for excursions, holidays or to work for others. Some witnesses who disclosed sexual abuse were subjected to severe reproach by those who had responsibility for their care and protection. Female witnesses in particular described, at times, being told they were responsible for the sexual abuse they experienced, by both their abuser and those to whom they disclosed abuse.
The Irish Tax payer is fronting up a billion euros in compensation for their part in the conspiracy of silence over decades of abuse. The prime offenders, the catholic church has managed to find a paltry 128 million euro, obviously the shame of allowing the systematic abuse of children and then covering it up is worth 128 million.

The perfidious devils in the church that allowed this to happen and covered it up after discovered are still doing it today! Bishop John Magee supported by three of the senior members of the church refused to resign when an inquiry found his child protection policy inadequate and dangerous after complaints of abuse where investigated. The Bishop "stood aside" from the running of the diocese of Cloyne, although he STILL retains his title and is fully supported by the Vatican in his stand, although it does appear he has his head up his arse if he can't see what is happening around him.

There is shame enough for everyone in this report, for the state for ignoring it under church pressure, the public for thinking "it couldnt be true they are religious" .Both state and public are talking openly of their shame and trying to find ways to make some difference to lives of the survivors (and yes there were many who did not survive) and yet so far the Catholic Churtch through its senior representativea is "saddened" ... well Pope Benedict, Ireland is looking to you as God Botherer in Chief to be WAY more than saddened or "unable to comment at this time" .... get off your fecking arse and do something about it! The buck stops with you!

Have a read at the summary report here the full report runs to 5 volumes... 5 fecking volumes of documented misery all done by the agents of "The Catholic Jesus"

Have a listen to the discussion on Everyday Ethics

The Irish Times
take on Justice Ryan's report.

A rogue pair of FLEX purple underpants have mounted an assault on the yellow-only wash of my lotus web dev laundry

I have been a bit remiss with the Flex series I started a while back and I do apologise for the discontinuity and I have started doing some more examples that I will pop up on here in the next few days.

There is a part of me that is a wee bit ... embarrassed is not the right word ... concerned is perhaps better ... that whilst the movers and shakers in the Domino world are "Doing it" the Xpage way I have veered off into another RIA technology.

I have never been a fanboy of any particular technology I am more inclined to use the tools that I have access to and which get the job done. Now I have had a bit of a play with X-Pages and they are indeed a wonderful if slightly not-quite-there-yet thing. As the new Domino techniques develop I have found myself moving towards a place where Domino is a back end data store, like DB2, MySQL or Oracle

I am not sure quite why I this is happening, but technologies & frameworks like AJAX, FLEX etc do take a fair bit of the drudgery out of coding for the web. I found that it was easier to have a slight dichotomy between the app as seen on the web and the app as seen in the notes client rather than to have to make concessions in one or the other for the sake of conformity.

Taking this approach also means I can deliver web apps for a broader range of server installs. Back to V6.* rather than confine myself to V8.* servers thus giving more of my user base a nice warm feeling of being included in the "new" stuff.

This is not to say that I am leaving all of the tools of Notes/Domino behind. I still use Domino Security, Author and Reader fields and loads of LS and JAVA based agents to provide the data handling facilities.

I suppose that another reason that I am heading in this direction is that Domino does not exist in isolation in my sphere of reference. It exists along side data silos in DB2 and Oracle which in the client we can now leverage with Live text linking to composite apps, widgets and side bar apps in the 8* client, which is of course marvellous for those folk on the Full Version 8 client. In the real world where I code not all my users are on V8 and it will (given the current economic climate etc etc) be some time until some of the non-power users have the tin capable of running the full client to its full advantage. In the interim so as not to exclude these users from the momentum of change, I will use the power of non-yellow-tech then it seems prudent to do so.

In several conversations I have had on this topic, there has been an air of disapproval from some that I am at snubbing all the work done to improve things on the platform in the last couple of years. I do not think that I am , I leverage the best for my users with the tools that I have and the facilities they have to use it, if that appears "disloyal" well so be it. I am paid to service my users not some ethereal dogma of yellow oneness. ;-)

For those of you not yet on Version 8 and perhaps held back by budgetary constraints my message would be that you can move forward if you step outside what some refer to as "the bubble" and look at other methods that will maintain your creative momentum with the tools and servers you have to hand.

Saturday 23 May 2009

In praise of everyday software

Yesterday I was sitting on the bench in our back garden doing what I do best ... very little with a tin of beer. It occurred to me that there is a mindset that values software almost purely on the "OOOO AHHHH" factor it generates.

The thought that a computer's installed software base is considered to be a "gallery" of developmental excellence made me cringe a little. When we as developers type into the blank canvas of a new project, we have in our minds eye the finished package and how wonderful it will be. However time, talent (or lack there of), and budgetary constraints too often blur the edges of that internal paradigm of excellence and we end up with something much more ordinary.

I was then drawn to architecture in my internal perambulations ... take for example a street lined by buildings, but the totality of our experience of that street is defined by the synergy between the buildings and the empty spaces created between them. When Barcelona started its regeneration in the 80's, it was realised by reconsidering and enhancing these empty spaces. There were a few challenging new builds, but around these were placed the new public spaces so envied by other European cities. These spaces are surrounded in the main by "ordinary" buildings. The developemental energy was spent on the actual place rather than the beauty of the new builds.

The suggestion that architects (and I include the software pencil suckers here) should improve their output by engaging in the everyday aspects of people's lives is a bit daunting. Taken to the extreme, it reminded me of Adolf Loos' short story, "The Poor Rich Man". An architect is commissioned by a Poor Rich Man to design and build him a house. The architect not only designs a house but goes as far as designing every detail of the Poor Rich Man's home; he anticipated everything, even the pattern on his slippers. One day, the Poor Rich Man's family offered him birthday presents, but the architect, summoned to find correct places for them in his composition, was furious that a client had dared to accept presents about which he, the architect, had not been consulted. For the house was altogether finished, as was his client: he was complete. This holistic design of an environment might be some architects dream, but it usually becomes other people's nightmares. Accidents and incidents are essential for real life. Building Architects design spaces for people to live in, Software architects design applications for users to work in.

This idea is a bit more interesting, I hope. UIs tend to become attraction parks for programmers to "perform" in. The strength of an architect is to build "good" applications using and playing with the existing context rather than try to create a stand-alone object that looks good and fits only inside an ideal sterilised environment.

Part of the developer's job is to "service the user's need for instant gratification", the "ooooo ahhhhhh" factor of software. but how often have we seen software that looked wonderful but it was functionally shite? (Yes Vista I AM looking at you) On the other hand there is such an unpleasant condescension in separating the users from ourselves as developers and giving them something that we wouldn't consider good enough.

I suppose what I am trying to say is that we should not confuse modesty and mediocrity.

Ordinary software is honest and without pretensions, a simple shed can be far more interesting architecturally than a shed trying to be a town hall or a Greek temple, (ask Grand Master Beetroot Chris Coates)

There can be a real beauty and intelligence in the simplicity of an application, often involuntary, but we shouldn't dismiss it. I remember an insignificant small building in Belfast city centre. It had interesting proportions and clever details. six months after the redevelopment of the big blue Victoria Street shopping centre, it had been "done up" and is now a horrible thing. It is mutton dressed as lamb, it performs the same function and does it as well as it did before. But now where it had been pleasing in its simplicity, now I shiver as I pass it.

... and there is our challenge. Find the beauty in simplicity, join the look and feel to the function in such a way that we don't sacrifice either ...

...and then it was time for another beer

Thursday 21 May 2009

Getting grumpy about R'n'B

This is Howling Wolf ... this is R'n'B



If you say Mariah Carey is R'n'B I will smother you in honey, tie you to ant hill and make you listen to Nina Simone

If you say R. Kelly is R'n'B I will slap you about the head with a large dead mackerel and make you listen to Champion Jack Dupree

And if you have the gall to posit that bootee wobbling trollop Beyoncé is R'n'B WELLLLL i shall get really really inventive!!!!

SO THERE!

Sunday 17 May 2009

Wild Garlic, Winkling, Bikes,Beer and other items of mystic significance

Hail assembled geek, nerds and allied trades!

OOOO what a weekend! It is Tuesday and I am only now returning to a point of what passes for normality. I look for no sympathy as it was all self inflicted and more importantly it was FUN!

Chris Coates was first to arrive on Thursday and after a trip to Portstewart to watch the final practise and have a brisk walk along the prom. He was introduced the culinary joys of Jimmy Lavery's chip van's portions of fish chips and curry sauce. Since we were planning an early start for some touristy things it was off to bed quite early.

Come Friday morning, the sun was streaming through the windows, but the wind was brisk and there was a hint of rain, mind you it is the less-rainy season in NornIron. So Chris and I set out to explore the local. First off was the Mussenden demense and the high point for Chris was the swaths of wild garlic in the black glen. (For those that don't know Chris, he is the Dutch King of Beetroot and Corgettee cultivation.) Although considered a bit of a weed and an "interesting smell" in the glens and forests of the North it is not that common in Chris's stomping grounds.

From there we moved East ahead of a rain cloud that thankfully was slower than my mothers Nissan Micra into Coleraine for a cup of hot coffee in Ground and then off around the coast road through Portrush to Portballintrae were we "Winkled".

Oh please do stop tittering at the back! This is a Winkle

and we spent a hour or so winkling in the rock pools and seaweed of the Portballintrea sea shore. To be honest I havent actually done that since my son was very small and it turns out that Chris hadn't done it since he was very young.

Having collected a bag full of winkles we headed up the road, again a few hours ahead of the rain, to the giant's causeway. Were we had some lunch at "The nook"

a nice wee hostelry at the main gate of the Causeway marred only by a large sign about the open fire that informs patrons that there is "No Spitting Allowed". Chris and I took a pint and sat outside and watched the world (including a very fetching baby pink suzuki 750) go by.

Having seen that we "did" the causeway which was full of tourists. YEAH! for the Norn Iron economy, BOO! for the atmosphere that brings. The silence of the savage cliffs and strange rock formations is kinda diminished by the clatter of thousands of camera shutters.

Off again on out travels to White Park Bay

Where we saw a wild stoat, beachcombed and found a "perhaps" worked flint from the late stoneage.

A quick visit to Balintoy harbour

Where the wee cafe that serves the BEST Rhubarb Crumble and proper custard was full of late middle aged BMW driving bikers. Their bikes were experiencing the first drops of rain in their pristine shop shiney lives.

Or trip ended in Ballycastle where we ended the trip with a visit to Marconi's cottage

Where the aforementioned Mr Marconi (whose mother was a Jameson of the whiskey fame), may or may not have made his first call over water and from there we went back home in the pouring rain which had eventually caught us up.

Chris then boiled and ate his winkles with must relish and marvelled at how much more up and down's there were in Ireland compared to Holland.

Bill Buchan
wasn't due to arrive until 11pm so we adjourned to Yokos Coleraine's only Japanese Noodle restaurant for a nice meal and a few beers whilst we waited for Bill to arrive, which he duely did at 11ish and he bravely attempted to catch up with Chris and I ..... He almost did.

Up early, if a little jaded, breakfasted and down to Portstewart where it was raining so Chris bought a very fetching NW200 paddock jacket to keep the rain off ... the rain promptly stopped. :-)

We waited for the races to start in the balcony bar of the York Hotel, whose owners had opened nice an early for folk like ourselves.

The races started, then stopped then started again and the day developed into a succession of racing glitches, it was cold, damp in places and not terribly exciting from our or any vantage point. Thankfully the day was rescued by the appearance of a friend of Chris's one Martin Presley, whose sartorial bravery knows no bounds in that he was wearing SHORTS!!!! Martin being a sharply dressed and eminently nice chap complimented our party perfectly and we drank beer and talked of the healing powers of herbs, whether I look like Eric Pollard from Emmerdale (a UK soap) and the election of Martin as a GONAD. This continued until my son Niall who happened to be around at the time managed to get his ancient father and his younger but equally confused chums a taxi home. Kudos to the SPROG and thank you Anne the taxi lady.

Home and bed.

Sunday .... well it happened I think .. I know there was a Saturday and there was a Monday so Sunday must have happened. I have vague memories of making breakfast and waving g'bye to Bill and Chris when they left to get Plane and Ferry home.

As a bike racing day, frankly it could have been way better, but those are the chances you take and it is better that we the viewers are bored than risks are taken with the riders safety. One the other hand I had a great time with some great friends both old and new which I would have not missed for the world.

Thanks chaps for comming :-) lets do it again next year !

PS My Mum (in whose house we slept and breakfasted) thinks you are cool too ;-)

Wednesday 13 May 2009

Music that is well worth a listen

If you find yourself feeling a bit down at the mouth because of the credit crunch, the approaching Zombie apocalypse or the perfidy of knitted feet coverings... these too are well worth a listen ... music to chill out to :-)

The Kings of Convenience from Norway



and Scott Matthews who isn't from Norway :-)

Tuesday 12 May 2009

SOCKS ARE EVIL!

Yes you read that right ... socks are indeed evil. It says much of their devious ways than not many of the human population have noticed the depths of their perfidy!

I am sure you have noticed that regardless of the care with which you prepare your laundry at least one sock with mysteriously vanish (and i can hear a choked gurgled "how would he know" issue from the massed female mcdonaghs). BUT IT IS TRUE, socks vanish, it may seem arbitrarily however i can reveal here and now it is a cunning sockisously plan!

They slip, lubricated by comfort fabric softener (Spring Fresh variety), between the threads of the space time continum and enter the dark kingdom of Los'tlondery (you have to spit at the "t") where the current sock tyrant Angus the Great, the left foot of a pair of Argyle Golf Socks with reinforced heel, holds both sock world and the world of humans to ransom.

Where do you think all the "expense" money for MPs is going? Fixing the Mote? Cleaning the swimming pool or building a helipad ... NO ... MPs have to create these expenses so that they can keep up on the tributes to Angus the Not-Holey ... and it is not just the UK ... look at NASA ... in the 60's and 70's it was trips to the moon every 6 months, now well they have the "wrong sort of clouds" or "the wind is blowing from the south west" and nary a rocket gets off the ground. All that money .. where is it going?.. Simple! It goes to placate Angus so that he does not release his sockly horde of zombie socks into our world where they will suck your brains out as your sleep through a straw!!!!

Angus and his army is getting stronger and stronger with every sock that vanishes, soon it will be too late. Rise up Humanity! Now! Break the chains of sock based tryanny, go commando in your Crocs, slip into your hush puppies au natural or wear your Doc Martins in the buff!

You have been Warned!

Saturday 9 May 2009

Crikey this is frightening - Zombie Celeb DEFCOM 10

This week's competition complete this sentence ...

Jodi Marsh ...
a) you do not look human any more
b) you look like a zombie
c) you are auditioning for the part of "the body on the slab" in CSI
d) you look like you could eat a banana sideways
e) you suddenly have lovely teeth whose are they and wont they mind?


Disqus for Domi-No-Yes-Maybe