September 06, 2007

WiMIC Browser v.2 – migrated to Adobe Flex Cairngorm application framework

Follow-up to WiMIC Browser – my first big Flex application from Transversality - Robert O'Toole

WiMIC Browser is a Flash based rich internet application that gives online access to an extensive biographical and bibliographical database. It was originally built in Flex 2.0 using a home grown MVC application framework. I have now migrated it into the Cairngorm framework, a process that took about six days.

The application behaves just as before, but the plumbing behind it has been rationalised and improved using Cairngorm. The project now looks like this in the Navigator:

WiMICBrowser 2 Navigator

The migration was quite straightforwards. The design of the original app was quite similar to that of a Cairngorm app. However, the framework offers a few neat tricks:

  1. A simple and easy to understand event based controller. Views can initiate events, which are then passed onto the required command by the controller. Once the event is called, the originating view is forgotten about.
  2. The AppModelLocator singleton, which gives access to centrally stored value objects. Elements in views are bound directly to value objects and properties in the model. If a command updates the model, then changes are made to the bound elements.
  3. In this app, tab navigators are used to contain the various views. The TabNavigator.selectedIndex property of each tab navigator is bound to a property in the model. That means that a command can change the currently displayed tab by changing the relevant property in the model.
  4. Chaining of commands – a command can call another command. For example, when viewing a single publication record, the GetSinglePublication command calls further commands depending upon the type of publication that is being viewed.
Most importantly, my code is now much easier to understand and to develop further. As Cairngorm is a widely understood and documented framework, it will be easily understood by other developers.

August 29, 2007

My Family and Other Primates, Kruger Park 2007 part 3

Follow-up to My Family and Other Primates, Kruger Park 2007 part 2 from Transversality - Robert O'Toole

Part three of the journal of our recent trip to South Africa and Botswana. Kanniedood Dam near Shingwedzi Camp in the Kruger Park. More observations of a 2 year old boy in Africa, and why monkeys beat lions.

1. The boy and his bushbuck, at Letaba
2. Monkeys, not such distant relations
3. Swinging through the trees, near Shingwedzi
4. Lions, a critical assessment
5. Drifting on the thermals, from Shingwedzi to Olifants
6. Elephants are big and grumpy, but fun to watch

3. Swinging through the trees, near Shingwedzi

The Kanniedood Dam captures a short but significant portion of the otherwise desertified Shingwedzi River as it passes through the Kruger National Park, just a small distance from Shingwedzi Camp. Kanniedood is from the Afrikaans for “cannot kill”. Even now, in the middle of the long harsh dry season, it lives. For a few kilometres, the waters are wide, deep, cool and uninterrupted. Further away from the camp, it almost looks to be in flood, as the rough game viewing track through the riverine forest runs close down to the waterline. There are many crocodiles, some with jaws wide open and inviting small boys to clamber in and explore (in the manner described by several popular story books).

Crocodiles

The deceptively weighty hippopotamus also abounds. On a hot day like this their water-bound lounging only confirms the stereotype, but later as it cools they will come onto dry land and show off their improbable speed (we once drove alongside a hippo at night – the speedometer was reading 30 kmph).

Deep inside the Kruger National Park the density of large wild mammals is quite epic. It is one of the few places left where humans are not in charge.

Elephants: giant solitary males, boneheaded and tusk laden, just hanging around at the waterholes; matriarchal breeding herds, with tiny infants scurrying alongside in the procession to or from water and food.

Giraffes, just as described by Giles Andreae

Gerald was a tall giraffe, whose neck was long and slim, but his knees were awfully bandy and his legs were rather thin.

Burchell’s zebra with a pink sand-stained tinge to their designer stylish black and white stripes, contrasting artistically with their constant companions, the goatee bearded blue wildebeest (in this strong light they really are blue).

Antelopes in three flavours: slender brown impalas, females gathered into hareems jealously guarded by a tall-horned male busily marking out his territory with the large black scent glands on his back legs; dark-grey waterbuck, with great horns curving upwards to match their white round posterior markings; and the disneyesque nyalas, females mid-brown and painted with precisely arranged spots, but also blackened males, with tall spiral horns and stripes, so dissimilar to the females as to appear to be an entirely distinct species.

And if any of these beasts were to feel itchy, perhaps with a tick buried deep in the fur, the many attendant ox-pecker birds are very happy to assist. We saw one impala carrying six of these medium sized brown birds, red and yellow bills probing for parasites. For a certain type of human, the Mashongeni bird hide, looking out across the Kanniedood Dam, is a place to feel “twitchy” – a condition easily relieved by the many different species to be seen: storks, bitterns, egrets, herons, kingfishers, swallows, swifts and martins, each in several varieties. England has just one kingfisher. Here in the Kruger it’s not unusual to see four or even five of the ten different South African species in close proximity. And there are raptors, again multifarious in type and habit. Across the dam the fish eagle is dominant, perching in the tall trees that line the banks. We found one particularly impressive individual high in the lime-green branches of a fever tree. Occasionally it swooped out across the water, whistling four loud and clear notes in a descending scale.

All of this was of interest to little Lawrence (two years old). Between sightings he battled for control of the truck’s electric windows, or struggled to break free of his baby seat. But given something impressive to look at, he would concentrate and focus, enjoying squirrels as much as buffaloes and lions.

Fortunately, Lawrence has not yet seen many wildlife documentaries about Africa. People who come out to the Kruger Park expecting lions making a kill every ten minutes are always bitterly disappointed. Hoping for lions to do anything other than just lying still in the shade of a tree is entirely unrealistic. Small children have the advantage of being without such preconceptions. And so we were able to spend time, on several occasions, watching closely the most fascinating animal behaviours. Forget lions and leopards, people spend far too much time thrashing around in search of those thoroughly dull creatures. Lawrence will tell you the name of the best animal in Africa…

“Bobo”.

In the language of a two year old, that means primates: in the Kruger Park, vervet monkeys and chacma baboons, often in large packs, and always boisterous, busy, social, playful and clever. Jez Alborough is responsible for their generic reclassification as “bobos”. His classic picture book Hug tells the story of the baby chimp Bobo lost and alone in the bush. Lawrence has drawn a strong and persistent connection between this story and the monkeys and baboons that he sees in the bush. He does know that they are different. He understands the separate species, but there is something in what he has seen that connects fiction to reality. I think the connection is significant. The book has few words, but communicates a strong narrative. The illustrations are left to do all of the work. The facial expressions and bodily gestures of the chimp are easily understood. They do a great job in helping a young child to understand and identify emotions. One may argue that it is just anthropomorphic nonsense. But I think that Lawrence would disagree. The primates that he has seen, especially the big social groups, are full of expression and meaning. Spend just a little time watching them and you will see gestures and behaviours that express relationships, values and shifting moods (what in humans we see as emotions). Youngsters and lower order adults groom the alpha female. Children play and learn. Young male adults wander off to explore and then run back to the group.

“Bobo, what are you doing in that tree?”

“Where’s your mummy Bobo?”

“Bobo swinging through the trees.”

And most hilarious of all:

“Bobo’s got a sore bottom” – on seeing the engorged red posterior of a female baboon.

Every second was full of action. Running and gymnastically flying between branches at a similar frenetic pace to a human two year old, the display was both spectacular and hilarious. The little primatologist in the car alternated between shrieks of laughter and silent fascination, learning throughout.

Forget big cats. Monkeys (or bobos) are best.

Vervet monkey
Vervet monkey

Baboons
Chacma baboons, alpha female being groomed


Adobe Flex in an afternoon – possible course

Follow-up to Cairngorm Flex Quickstart from Transversality - Robert O'Toole

Steve Carpenter and I have spent the last few months becoming expert in the new Adobe Flex web development tool. Flex is used to build rich internet applications that run in Flash 9 or the Adobe Internet Runtime. We would be happy to share our expertise with others at Warwick, and have already had some requests for a course on this topic. There are people who want to just find out about Flex as well as some who actually want to start building applications.

It’s possible. If we do it, then this would be the course material. I reckon (optimistically) that it could be covered in half a day….

1. What is Flex capable of?
   1.1 What is a Rich Internet Application
   1.2 Examples
       1.2.1 Databases (and Hibernate)
       1.2.2 XML and RSS
       1.2.3 Charting
       1.2.4 Video and audio
       1.2.5 The Adobe Internet Runtime

2. The development process
   2.1 Introduction to Eclipse and FlexBuilder
   2.2 Debugging and inspecting
  2.3 The Cairngorm framework

3. Designing an application as a set of user interface views
   3.1 Creating a view as a custom component
   3.2 Indexing views in a ViewStack (and other navigation controls)
   3.3 Using Flex components to build user interface views
       3.3.1 Using containers to control layout (canvas, vbox, hbox, panel)
       3.3.2 Using Flex interface controls (label, text, textarea, button, datagrid, list, tree)
       3.3.3 Binding controls to data

4. Encapsulating data as models and value objects
   4.1 Creating custom classes
   4.2 Using the AppModelLocator
   4.3 Binding view controls to data in the AppModelLocator

5. Making things happen
   5.1 Creating event handlers in ActionScript within views
   5.2 Creating custom events to call actions and to carry data
   5.3 Creating command classes to process events and to update data and views
   5.4 Mapping events to classes in AppController

6. Connecting with external data services
   6.1 Loading xml and other data using HTTPService
   6.2 Coping with security sand box restrictions
   6.3 Creating and using an asynchronous service delegate
   6.4 Accessing and using the results of a service delegate

7. Publishing your Flex application using SWFObject

Interested?


Cairngorm Flex Quickstart

Follow-up to My first small Cairngorm Flex application (with explanation) from Transversality - Robert O'Toole

I have created a four page document that steps through the process of creating a Cairngorm project, adding views and models, adding events and commands to handle them, and adding services and delegates to commands.

Where necessary, I have included links to template files that can be added to a project. I have also included example code snippets that can be copied in to perform the common Cairngorm tasks.

Start page for this tutorial.


August 28, 2007

Robert O'Toole E–learning Advisor CV statement

My latest CV…

Learning technology and learning design consultant

I have ten years of experience in the application of learning technologies to enhance and extend teaching, both in-class and online. This includes three years at the University of Oxford (1998 to 2001) and five years at the University of Warwick (2002 to present). I am currently the Arts Faculty E-learning Advisor at Warwick.

I work closely with faculty and students to identify, implement and review appropriate enhancements to existing practices. My work ‘in the field’ feeds back into the work of our applications development team, who have built an advanced and in some ways unique e-learning infrastructure, responding to the needs of the university. I am developing a patterns based approach to learning design.

The E-learning Advisor Team also undertakes development projects in order to investigate and report upon new techniques and technologies. For example, we are developing innovative online conferencing tools to support the syndication pattern employed by, amongst others, the Warwick Business School.

Teacher and technology coach

  • I am a trained, qualified and experienced teacher of information and communications technology (Postgraduate Certificate in Education, University of Warwick, 1996).
  • I have taught all kinds of people, ranging from school children to professors.
  • Much of my work in recent years has been with graduate students, and has focussed upon using technology to enhance communications, research, planning and enterprise.
  • My teaching is often within the context of group and individual development, with participants focussing upon the development of tangible and useable end products.
  • I use a wide range of techniques, including individual coaching, project work, experiental and simulation activities, and large interactive lectures. I blend on-site and online activities where appropriate.
  • I have designed module, course and programme level curricula.

Software developer

I am now specialising in Rich Internet Applications using Adobe Flex/Flash. I have also worked extensively with SQL databases, XML, Javascript and Java. I employ a patterns-based approach to analysis and design, with an agile customer focussed development process.

I am particularly experienced in developing applications that support the research and analysis process.

My developing skills

  • Technical and creative writing;
  • Broadcast and print journalism and production;
  • Team leadership;
  • Business analysis;
  • Marketing.

My other interests

I have a first class degree in philosophy from the University of Warwick, and continue my interest in this and related fields including cognitive science and educational theory. I also have an MSc in Knowledge Based Systems from the University of Sussex.

I am also interested in travel writing and journal writing.

August 23, 2007

My Family and Other Primates, Kruger Park 2007 part 2

Follow-up to My Family and Other Primates, Kruger Park 2007 part 1 from Transversality - Robert O'Toole

Monkeys and children are fascinating creatures. Our recent trip to the Kruger National Park in South Africa gave many opportunities to observe their behaviours: so similar to us in many ways, and of course just so naturally comic.


1. The boy and his bushbuck, at Letaba
2. Monkeys, not such distant relations
3. Swinging through the trees, near Shingwedzi
4. Lions, a critical assessment
5. Drifting on the thermals, from Shingwedzi to Olifants
6. Elephants are big and grumpy, but fun to watch


Not such distant relations

The little monkey boy lolloped towards the two indignant females, his intent obvious to all but himself. A poorly acted hunchbacked stoop hid his otherwise youthful athleticism, perhaps a tactic to put them at their ease. One day in the future he will be the alpha male of the troop, but for now he is just another buffoon.

He scampered, arms swinging loosely, knuckles almost dragging across the ground as if his species had only recently descended from the tree-tops to explore and exploit savannah Africa. A glint of drool dribbled from the corner of his chattering mouth, sharp white teeth on full display, an ape with a gape. Primitive. And then, with his face close to that of the smaller of the girls, he began his flamboyant mating dance.

In her doctoral thesis, the  primatologist Dr Jane Goodall described just such behaviours amongst the chimpanzees of the central African rainforests. Here, in the Kruger National Park of South Africa, the little monkeys were dancing to a similar over excited tune. We watched from a distance, awed by this snapshot of our own simian ancestories. So closely related, as DNA proves, and yet so far.

His two feet repeatedly left the ground almost at the same time, bouncing a short distance into the air, right foot slightly ahead of the left with the syncopation of a jazz band. Landing with a dusty thump, he kicked up a fine cloud of sand towards the young ladies, at last forcing them to acknowledge his presence. Arms outstretched like some great bird struggling for flight, he flapped and bounded on the spot, grunting and blowing. They were, in response, deathly unimpressed.

The young male continued. Throughout the performance, his balance precarious. The older of the females tempered her disdain for the precocious ape with fascination, albeit with nothing other than the improbable physics of his art. Sensing failure, the young male only became more frantic in his attempts to make the girls notice. This impetuosity led to his downfall, when his left foot found an unexpected obstacle: his right foot seemed to have its own rhythms and reasonings. He paused for a second down on his posterior, and then sprang to his feet whilst shooting out both arms as if to say: that was all part of the act, i'm so good I even fall over with style. The older female passed him a sideways glance, and then continued with her own more interesting occupation, examining the jaw bone of a long dead elephant.

Making no progress with the girls, the monkey boy temporarily broke away in order to pick a small stick off the ground. The stick was alas imperfect. There followed a few seconds of motionless consideration, the inner machinations of his brain made visible on his face. We were reminded of George W. Bush 'deep' in thought. A metaphorical lightbulb flashed above his head. Quickly he stripped away the surplus twigs and leaves, creating the perfect stick with which to scrape the bare earth at the feet of the females. Eureka, the primate makes a tool.

He is evolving. But not quickly enough it seems. The females escaped with haste, speeding up a gnarly old tree. The older girl quickly climbed to a couple of metres, her small feet delicately wrapping around its painfully rough bark. The smaller of the two found herself a more gentle route of escape, clambering along a fallen log. Too fast and agile for their persuer.

Finally, the young male was visibly disappointed, staring up at the older female he vocalised his confusion. As experienced monkey watchers, we could easily decipher his primitive chattering:

"Where's your shoes?"

The little monkey boy speaks! But the young females do not quite understand. They are of the Southern African sub-species. He is a member of the superficially similar but actually very different Homo Sapiens Warwicensis, originating in central England, but having been released into the Southern African biome by misguided tourists (it has since caused great damage to the environment in and around the Kruger Park, incessantly raiding kitchens for scraps).

In the field, young females of the Southern Africa sub-species of the Homo Sapien ape can be identified by three distinctive traits: greater than expected physical strength, an ability to climb any surface barefoot (as observed above), and girly pink clothes with a light dusting of sand.

From the safety of her perch, high up in the tree, the older female (Jessica, aged 6) turned towards the observing zoologists and spoke:

"He's a bit of a funny bunny."

"Yes," I replied, "but he is only two years old. His name is Lawrence."

"My sister Rebecca is four."

"Lawrence is on holiday, he is from England."

With Jessica taking the lead, the girls finally became interested in Lawrence. He was, after all, only two years old and English. It was then perfectly fine for him to be a bit of a funny bunny. For the following thirty minutes they explored the trees, the elephant jaw bone, and the various items of furniture and decoration around the restaurant at Shingwedzi Camp. The girls outclimbed and  outclambered him.  When he fell they picked him up. When he got nervous they comforted him and encouraged him on. After half an hour they were all equally dusty, but very happy.

Three little monkeys playing in the dirt of the Kruger National Park, South Africa.

Shingwedzi drummers
Lawrence entertaining the ladies at Shingwedzi Camp restaurant

Singwedzi drummers 2

Funky monkey


My first small Cairngorm Flex application (with explanation)

Follow-up to WiMIC Browser – my first big Flex application from Transversality - Robert O'Toole

I have just constructed my first Cairngorm application: an Adobe Flex application that uses the Cairngorm application framework, implementing the MVC pattern. The app doesn't do much, initially displaying "hello everyone", along with a button that translates that message, and a second button that changes the background colour of the component. Exciting stuff! Not. But the Cairngorm framework is. Download the source code for my demo application.

Explanation


Here is a screenshot of the Navigator window for the project:

Navigator

The Cairngorm source code is included in the "com" folder (although it could be compiled and included as an external library). The "uk.ac.cairngormtemplate" folder contains my application. This has six subfolders, each containing classes responsible for different parts of the MVC architecture: view, control, command, business (actually meaning data and comms services), model, vo (value object). As with all Flex applications, there is a single container mxml file, called Main.mxml (an mxml file is equivalent to a html file, with code, styles and visual components). I'll start my explanation of this app and Cairngorm with this top-level container.

The Main.mxml file contains four key items:

  1. a Services component - this contains all of the services used for connecting to external data sources etc;
  2. the AppController - this maps events onto commands, so that when a ui dispatches an event (a request for something to happen), the correct code does the required job;
  3. the AppModelLocator - this stores and indexes all of the data models used in the application, all of the data is stored in one place!
  4. a ViewStack listing all of the alternative user interface views that the app can display.


Here's the code for the ViewStack:

<mx:ViewStack width="100%" paddingBottom="10" paddingTop="10" resizeToContent="true" selectedIndex="{model.currentView}">
   <view:InitialView />
   <view:AlternativeView />
</mx:ViewStack>   

There are two views in this application, an initial view and an alternative. Each view is defined in its own mxml file in the "uk.ac.cairngormtemplate.view" folder. Notice how the selectedIndex property of the ViewStack is bound to the .currentView property contained in the modelLocator (initially set at 0, which means that the first view in the stack is displayed). This means that the currently selected view may be changed by changing the model.currentView property (more on that below).

So now let's drill down into the InitialView component. We can then see the details of what is presented to the user, and what happens when the user responds to that interface.

InitialView is itself an mxml component based upon the standard VBox component. It contains some script and some UI components. Firstly, the script contains a bindable reference to the AppModelLocator singleton. This means that we can bind UI components to data in the AppModelLocator. There is in fact a text component that is bound to a value object (a class that wraps a set of value properties):

<mx:Text text="{model.messageVO.message}" />

Initially this displays the message "Hello everyone".

Below this text component there is a button "translate". Clicking this button calls an actionscript method in the script on the page. The method is called translate(). It could at that point do some validation, or request further input. However, in this case all that we want it to do is fire of a request for the text "Hello everyone" to be translated.

InitialView
The least impressive Flex app ever

This is where Cairngorm starts:

private function translate():void
{
   var cgEvent : DataChangeEvent = new DataChangeEvent("Dumelang");
   CairngormEventDispatcher.getInstance().dispatchEvent( cgEvent );               
}

The method creates an instance of the DataChangeEvent, passing it the new message "Dumelang". The DataChangeEvent is defined in the "uk.ac.cairngormtemplate.control" folder. It is a cairngorm event extended to carry our message. We can create events that can carry whatever data we need to be passed to a command. (For example, a user types their username and password into a login box, this is then wrapped in a LoginEvent, and the event dispatched. A LoginCommand receieves the event and attempts a login using a LoginDelegate and login service. If succesful, the command changes the current view to one appropriate to a signed in user).

The next step is to dispatch that event and its message to the Cairngorm controller. This should then get passed on to the required "command" object (the command object contains the code for executing the requested command). But how does the controller know which command object to use? Events are mapped on to commands in the control.AppController class:

public class AppController extends FrontController
{

   public static const DATACHANGE_EVENT : String = "DATACHANGE_EVENT";

   public function AppController()
   {
       addCommand( AppController.DATACHANGE_EVENT, DataChangeCommand );
   }
}

Our request (to translate "Hello everyone") is then passed to a DataChangeCommand object. This is where we do the work that results in the translation. In this simple example, the .messageVO.message of the modelLocator is simply changed to read "Dumelang". However, we could instead refer to an English-Steswana dictionary to retrieve the translation. This might even require the use of an external data service. The DataChangeCommand would then delegate the work of sending this external request to a Delegate class in the "business" folder. The delegate, on retrieving the required translation, calls back to the DataChangeCommand to complete the requried command, or alternatively calls a seperate command.

So, with the text control on the current view bound to the .messageVO.message property in the modelLocator, and that property now altered (by DataChangeCommand) to "Dumelang" that is precisely what the end user sees on their screen.

But what if we also need to change the current view, for example to the AlternativeView control in the ViewStack? Easy. The command simply alters the .currentView property of the modelLocator. As the selectedIndex property of the ViewStack is bound to .currentView, it immediately changes.

In this example, at the end of DataChangeCommand, a second command is requested using a class that I have called ViewChangeEvent.

var cgEvent2 : ViewChangeEvent = new ViewChangeEvent();
CairngormEventDispatcher.getInstance().dispatchEvent( cgEvent2 );

This class calls ViewChangeCommand, which simply alternates between the InitialView and the DefaultView.

AlternativeView
Look - it speaks Setswana! and now the view has changed to one with a white background! Hoorah!

Conclusion


This may be a simple example, but I can already see how using the Cairngorm framework will simplify the task of building very complex applications, resulting in better, more rational and sustainable code.

August 22, 2007

My Family and Other Primates, Kruger Park 2007 part 1

A wild animal marauding through the wilds of Kruger National Park in South Africa. His names is Lawrence, and he is only two years old. This is the story of Lawrence's first expedition in wild Africa.


1. The boy and his bushbuck, at Letaba
2. Monkeys, not such distant relations
3. Swinging through the trees, near Shingwedzi
4. Lions, a critical assessment
5. Drifting on the thermals, from Shingwedzi to Olifants
6. Elephants are big and grumpy, but fun to watch

The boy and his bushbuck, at Letaba

Just as I had expected, he was immediately at home in this sandy hot place. A small boy excitedly feeding fresh green leaves to a female bushbuck antelope on a desiccated African lawn. The bushbuck is taller than the boy, and adapted to a life as potential leopard food. It is a wild animal, but that doesn't stop Lawrence from claiming it as "my bushbuck".

Lawrence hiding from a bushbuck

Lawrence and a bushbuck

Bushbuck close up

Bushbuck very close up


The strip of cultivated garden in which they play runs down towards the wide sandy bed of the Letaba River, stretching about one kilometre across to a distant bank lined with riverine trees. Beyond that, there is mopane covered sandveld all of the way to Moçambique and beyond. The river is in its dry-season state, empty apart from a narrow distinct channel lined with reeds and waterbirds, alive with crocodiles and hippopotami. Holding the twig with an evident sense of amazement, the little boy shrieks like a monkey as a long thin grey antelope tongue shoots out to grasp and strip the leaves in a curling grip.

Elephant in the Letaba River
Elephant in the Letaba River

We travelled more than 24 hours for this, the end result being ample opportunity for (almost) 2 year old Lawrence to interact with the wildlife of the African bush: feeding them (bushbucks), chasing them (guinea fowls), laughing at them (monkeys and baboons), imitating (hadeda ibis, "ha-dee-da, ha ha, ha-dee-da", and the giant ground hornbill, "hoo-hoo-hoodoo"), and watching intently (elephants, giraffes, hyenas, warthogs, lions etc).

Lawrence chasing guinea fowl
Chasing guinea fowl

Hadeda
Hadeda ibis

Ground hornbill
Ground hornbill

Sceptics in drizzly sad England had expressed their can't-do misgivings: a 2 year old obviously being underage for such adventures - too far, too hot, too cold, too wild. And besides, he would never really understand and appreciate it. However Lawrence is a little different to the average English kid, having grown up in a house full of African wildlife photography, he knew jackals and vultures before the English fox and red kite. Although his impersonation of the call of the African fish eagle has long been hampered by his inability to whistle, it doesn't deter him from trying to make that archetypal wild African sound. Upon seeing and hearing that wonderful bird swooping across the vlei, his imitation of its call (a series of soaring whistles that seem to embody its graceful flight in sound) was recognisable. And he has been to Africa before, as a small baby, so is perhaps at least to some extent acclimatised to it.


African fish eagle
African fish eagle

The journey had indeed been long, although mostly tolerable. At 12.30pm on Saturday grandad Dermot turned his limousine south towards Heathrow. Let's just forget the hell that is Heathrow. Lawrence slept on the 747 to Johannesburg (cost about £2000 for two adults and a child). At 12.30pm the following day our tiny South African Airlink plane landed at Phalaborwa on the edge of the Kruger Park (flight cost around £60 one way for two adults and a child, including a dramatic view of Blyde River Canyon). In the tiny safari styled airport, African grandad "Growwer" and grandma "Googoo" met us, having driven across from Botswana, their sudden appearance surprised Lawrence, even though it was promised for some time. At Phalaborwa we collected a comfortable and capable Honda CRV 4x4 from the National Alamo office (about £25 a day), and drove the short distance to the park entrance. From there on to Letaba Camp 100km into the park, with Lawrence snoring happily past buffaloes and elephants.

Car on Letaba bridge
Crossing the Letaba Bridge

Big elephant

Buffalo

Emma and I know Letaba well, and chose it to be Lawrence's first home in the African wilds. The ingredients that make it ideal include:

  • Green shady spaces in which to play, with plenty of interesting features such as bushbuck droppings and odd shaped seed pods;

  • A café and a restaurant serving scrambled eggs and toast;

  • An elephant museum with skeletons and models (Lawrence likes museums, especially with old bones and snakes pickled in jars);

  • Big dangerous animals close by on the wild side of the fence;

  • Smaller and safer wild animals within reach on what is, officially, the wrong side of the fence for them (somehow the bushbuck have invaded, and since our first visit in 1998, multiplied prodigiously).

Filthy Lawrence


Lawrence rugby



And at the end of a frantic day chasing animals, we could eat and sleep comfortably in one of the thatched cottages provided for self-catering accommodation. In the past we have stayed in the small basic rondavels (£25 per night), but with some members of our party being habituated to a more sophisticated environment, on this occasion we chose the large Melville Guest House (cost £125 a night, sleeps 9). The house has a well equipped kitchen inside, and a barbecue in its private garden overlooking the river. Housekeeping was more than adequately supplied by Agostino from Maputo, guardian of the Melville.

images 25

images 24

images 28

images 26

images 27


The Melville was our home for just two nights. It is excellent, and we would have stayed longer if it were available. In that time we had two good dinners (thanks to Googoo and Growwer), interesting game drives in the park (particularly nice zebras, wildebeests and giraffes), and much time spent pointing and screaming at the giant skeletons and tusks on display in the museum.


Just outside the museum there is a much less deceased wonder. A small garden of aloes is planted around a full sized model of a big tusker. The flame-red and orange and yellow flowers of the various aloes top their succulent green stems, in vivid competition with a swarm of birds: tiny iridescent sun birds in green, purple and scarlet like over-weight hummingbirds; the black headed oriole with its strong yellow plumage; the grey lourie (known as the "go-away" bird, following its call); both glossy and red winged starlings; crested barbets in red, black, yellow and green; mouse-birds with feathery plumes; a red capped cardinal woodpecker tapping the bark for grubs; and at night scops owl calling with its repetitive "brurrr" - most unlike an owl. Their colouring is almost un-natural, the product of an aesthetic arms-race within each species, and maybe also against the drab sandy uniformity of the background landscape. Splashes of colour marked by an emphatic evolutionary brush in the surrealist style of Joan Míro, or the hands of a child artist. A light show matched with sound, irrational and off-beat, but beautiful, like jazz.

White bellied sunbird
White bellied sunbird

Black eyed bulbull
Black-eyed bulbul

Black headed oriole
Black headed oriole

Golden tailed woodpecker
Golden tailed woodpecker

Barbet

Crested barbet

Grey lourie

Grey lourie

Mousebird
Mousebird

Masked weaver

Masked weaver

Glossy starling
Glossy starling

Red winged starling

Red winged starling

Red chested sunbird
Red chested sunbird

The boy added to all of this in his own exuberant way.

First elephant
Lawrence's first wild elephant

Letaba sunset


July 24, 2007

Simple advice on keyword tagging and tagsonomies

Follow-up to Build your own tagxonomy tool from Transversality - Robert O'Toole

Many web publishing systems allow publishers to keyword tag pages or entries using their own keywords. Combinations of these keywords can then be used to search and “aggregate” content tagged with those keywords. Both Warwick Blogs and Sitebuilder support this. It is usually left up to the content author to define the series of keywords that classify a page/entry. I have been asked to give some advise on strategies that can be used to do this efficiently and effectively. Here is my answer.

  1. Think about how you might want to be able to search/aggregate/organise your content, how other people might want to search it and see it organised, and how you want other people to think about your content (especially if you are trying to establish a schematic structure in their minds).
  2. Be systematic, especially with punctuation, spaces, spellings.
  3. Maintain a list of your tags. A concept map is a good mechanism for maintaining this list. You could use MindManager to create the list.
  4. Cooperate – use the same tags that other people use, develop tagsonomies with other people (formally or informally).
  5. Use a combination of very specific and more general tags (for example: e-learning, elab, quizbuilder) – think about your tags as being arranged in a tree structure (specific at the leaves general at the branches).
  6. Combine different tags that identify different aspects of the tagged content (for example, use a tag to identify what kind of content it is (essay, review), what it is about (philosophy, Kant).
  7. Tagging your work with a unique identifier associated with yourself allows you to aggregate your work from wherever it appears (e.g. robert_o-toole in Sitebuilder gets you this result )

July 17, 2007

WiMIC Browser – my first big Flex application

Writing about web page http://www2.warwick.ac.uk/fac/arts/history/irishwomenwriters/

The University of Warwick History Department is today releasing the beta version of its WiMIC Data Browser. This is a Flex 2 application that I have built to give online access to the huge bibliographical and biographical database of “women in modern Irish culture”, compiled by a team of researchers at Warwick and at University College Dublin.
The WiMICBrowser is an example of the kind of Rich Internet Application now made possible with the Adobe Flex development toolset. It provides four search interfaces, of varying degrees of complexity. For example, users can do a "Simple Author Search" by selecting the Authors tab and the Simple Search tab. This interface allows them to do a freetext search of various fields in the database's People table.

WiMIC Browser Simple Author Search

To compliment this simple search, there is also a "Complex Author Search" form that contains many more fields and options. Note that the user is given the option of saving the search in their "Filing Cabinet". This uses the Flex/Flash Shared Object system (Flash's equivalent of cookies) to permanently store the search parameters on the client machine's hard disk (until they select to delete it). A future migration of the application to Flex 3 and the Adobe Internet Runtime will allow these searches to be saved to ordinary files on disk, and hence allow them to be moved between PCs. I will also consider allowing users to share their searches online. Here is the search saved in the Filing Cabinet, with the options to re-run or delete it:

WiMICBrowser filing cabinet

And the results of the search is a list of mathing authors presented in a standard Flex datagrid, with the option to view a full record of any of the authors. An author record is shown below. Note that the results list remains populated with the results and accesible on a single click of a tab.

WiMICBrowser author record

The author record contains a rich array of data. Some authors are listed in the database under several names, thses are shown in the "All known names" list. Publications for the author are shown in the datagrid on the right. This shows 12 records at a time, with a paging control to move through the data. Notice that there is a link next to each publication record. Selecting the magnifying glass link opens that publication record in the Publications -> Selected Publication Record tab. For exmple, here is a book record:

WiMICBrowser Book Record

Each type of publication (book, book chapter, article, journal edition, play, film) has its own type of publication record page similar to this. These are created as Flex View States based on a generic Publication Base State. All of them list the authors of the publication, with their role in authoring it stated (for example, "editor"). The various recorded versions of the publication are also listed. In the case of a book, a datagrid is given listing its publishers and printers.

Publication records can also be found using the two publication search interfaces. Again these are "Simple" and "Complex". They work in a similar way to the Author Search interfaces. Here is the Complex Publications Search:

WiMICBrowser complex publications search

In this case the search is configured to return all books and articles (see the filter on the right) that are of the genre "religious", in the languages "Irish" and "English", written between 1700 and 2000. There are many other options for configuring and filtering the search. The SQL query for this search was rather difficult to write!

The results are again shown in a paged datagrid:

WiMICBrowser publication search results

The application is now available as a "beta", with the aim of getting feedback from researchers and students working in this field.

I will also soon write a technical review of the application, with consideration of the techniques used to build it, and the feasibility of creating similar applications in the future. For now, I will just say that for such a complex application, it was quite simple to contruct. The Flex/Eclipse IDE makes this possible. Employing a relatively sensible application framework has helped. I constructed my own MVC framework loosely based on my experience with Java application frameworks. The project structure is shown below:

WiMICBrowser project structure

The WiMICBrowser.mxml file defines both the container control (a set of customised TabNavigator controls) and the controller code (which maps actions onto action classes, and equips them with the required model objects and views). Note that the queries are specified in the queryDefinitions.xml file, loaded on start up. This is kept externally to the application, so that I can modify the queries independently. The queries themselves are SQL Server stored procedures.

The dataservices folder contains a class that does all of the work of connecting to a servlet to do the database queries. Communication with the servlet is via JSON, with the servlet mediating queries and results between the client app and a SQL Server. If I wish to employ a different method for communicating between the application and the database, or even using a different database, I just need to change the dataconnector class.

The utils folder contains various utilities, including the FilingCabinet class, which does all of the work of serializing and de-serializing model objects and query objects into the SharedObject storage (note that by default Flash/Flex does this really badly, serializing custom classes is not straightforwards). In the future I would like to try migrating the application to the Adobe Internet Runtime, so that it can run outside of the browser sandbox. That will then allow me to escape reliance on the SharedObject store. I will also soon add an option to create folders of selected publication and author records.

What then do I think of Flex and RIA technologies? Yes, at last we can easily and safely build complex web applications that run well on [m]any different platforms. 

July 06, 2007

Build your own tagxonomy tool

...or “tagsonomy” as Jenny likes to call it. I am planning to create a Flash/Flex tool that will enable people to view and edit taxonomy files, and to use them in querying RSS data sources such as Warwick Blogs and Sitebuilder.



I’m gonna do this….

1) I’m building an RSS tag searching tool to replace the slighty rickety javascript tool that I am using for Renaissance Studies and some other departments.

2) The search tool can load its tagxonomy from an xml file stored on the web.

3) I’m going to add a feature that allows different tagxonomies to be loaded as required. If the xml files are stored in Sitebuilder and tagged as “tagxonomy” then the search tool could even auto-discover tagxonomies for the user to choose from.

4) A tagxonomy file could also be tagged with the unique identifier of a person, group or department (using the web groups codes for these), thus associating the file with the profile.

5) I could allow for the tagxonomy to be edited in the search tool (adding new tags or tag collections for example).

6) The tagxonomy could then be uploaded onto Sitebuilder, if the user has permissions, it could replace an existing tagxonomy, if not they can create their own new tagxonomy.

7) It will also be possible to select a series of tags from the tree, and have an string automatically generated from that. The string can be pasted into any content tagging application. Importantly, the string should include tags that identify the tagxonomy from which the tags where taken.

Best of all, i’ll try to build it as an Adobe AIR desktop application (not sure how Single Sign On will work with that).

I reckon that will take a few weeks to build (as I’m in the middle another big project).

This example will load the tags defined for the Renaissance Studies project:

The use cases that I have discovered so far all assume that the tool appears upon a web page with a pre-defined tagsonomy and a pre-defined source to be searched for matching documents. It would be easy to create a version that can be configured to search any resource that works with tags and keyword queries: Warwick Blogs, Sitebuilder, del.icio.us etc
Does that sound like fun?

June 24, 2007

Riding the Ruta de la Plata, part 6

Follow-up to Riding the Ruta de la Plata, part 5 from Transversality - Robert O'Toole

Riding motorcycles along the route of silver. Through the homeland of Pizarro. Conquistadors. An encounter with a nomad from an older Europe. And into stylish, classy Sevilla. Part six of the journals of my ride through Spain.

Part 1: Santander landing, camping in the Picos de Europa
Part 2: Cares River, Desfiladero de los Boyes gorge, Peurto del Ponton pass
Part 3: Easter processions in León
Part 4: Plasencia
Part 5: Extremadura  

Day 6 - into Seville


Snowbound peaks puncutate the horizon to the north of the town of Plasencia, itself with a modest elevation of 316 metres. The morning was bright and dry, with no sign of storm clouds wrapping the distant mountains in the grey menace of the previous day. We packed away our camping equipment, a process now becoming habitual (with my cavernous Tesch panniers, packing is easy). Heading south we initiated a day long descent towards Seville, rolling down on to the wide flat flood plains of the Rio Guadalquivir. Firstly, however, the tight turns and hills of Monfrague National Park's minor roads provided an early morning twist to the plot. As ever, Martin on the faster R1100GS found swift lines through the hairpins, imitating those swooping birds as closely as is possible on a 250kg motorcycle. I convinced myself that his espíritu del camino would simply result in passing the wonderful landscape and birdlife with a tunnel visioned ignorance. My assumption was that upon finally meeting further along the road, I should be able to disapoint my companion with tales of hoopoes, merlins, kites, eagles and storks. He had, of course, spotted all of those and more.

Beyond the park, we rejoined a bigger more certain road, progressively widening like a river approaching the ocean. It drew a line heading southwards, the straight path of which should have suggested its ancient historical origins. On past the town of Cacares, with atmosphere and character becoming progressively more Andalucian, I noticed a road sign that had first interested me on the mountainous road into Bejar:


"Ruta de la Plata"

That does sound heroic. Riding motorcycles along the route of silver. Through the homeland of Pizarro. Conquistadors. So rich were they in silver that they were compelled to seek an even more precious metal, far off in the land of Atahualpa. But to us now, more precious would be this thought: perhaps this road could give some narrative unity to what had so far been a rather haphazard expedition. At one point we travelled through an ancient industrial landscape, now covered with grass and low shrubs. Silver minings perhaps? One could imagine this to have been a route of power, culture and trade, borne along with the caravans of precious metal. No doubt an attraction to the empires that ebbed and flowed over this land: Visigoths, Romans, Moors, Catholics, Republicans and Fascists. We passed Moorish castles, tall and dark strongholds looking out from their cool and shaded interiors across an increasingly hot flat territory. Not only history here though, great wind farms and solar power stations place the landscape in a future just now being realised, a future that exploits the burning heat and light of this land, rather than seeking to hide from it in deep courtyards behind castellated walls. Will the axis of capitalism and civilisation once more drift southwards to Spain when Northern Europe runs out of gas?

Andalucian view
An andalucian landscape

This road, the Ruta de la Plata, is in fact important enough to have its own web site, representing the trading and cultural alliance of the many towns through which it passes (from Gijón on the north coast via Leon, Bejar, Plasencia, Cáceres and Zafra to Seville). Spoiling the romance of the road somewhat, the web site seems to claim that the naming of the road has nothing to with precious metal. Rather, it refers to the way in which the original Roman road appeared to be made of metal, a consequence of the applied techniques of construction (as we say in English, it was a 'metalled' road). Whatever the origins of its title, I was happy with the idea that we had been vaguely following the Ruta da la Plata from the Bay of Biscay, and would continue to do so all of the way to Seville.

Passing through towns and villages with greater frequency, finally a hunger for fuel stopped us. My GS Paris Dakar makes 300 miles before reserve, so stops are more rare than one would expect. The service station provided gasoline and more of the freshly made coffee that powers Spain. As we sat resting, several other small groups of bikes passed by, mostly sports bikes, enjoying a great road. A group of new BMW bikes stopped for fuel, led by a K1200S badged to identify it as a demonstrater from a BMW dealership in Seville. We had started seeing new beemers in Plasencia. I knew that we would see more of them as we got closer to the capital of Andalucia - they are somehow more appropriate here. As for the big K1200S, a fully faired sports touring rocket, perhaps the fastest vehicle on the roads (0 to 60 mph in 2.8 seconds), what a great bike to be riding on fast sweeping roads like these!

We made one further stop before Seville, finding a bench in a small town from which to plan our attack on the big city. Our conference was gently interrupted by the most subtle act of begging that I have ever encountered, so subtle in approach that I failed to recognize it as such. He was somehow anachronistic in his appearance, perhaps even belonging to no particular place or time. Thin, but not painfuly so, with dark hair and olive skin. He wore a green corduroy jacket, stiff brown brogues, with no socks. That final detail was diagnostic. We had no common language. He was obviously not Spanish. Martin cycled through some possibilities, experimentally offering phrases in French, German, Russian, with Chinese added as a joke. "Roma" he said in reply. Obvious. But perhaps political correctness had drawn us away from the truth. "Narok!" I exclaimed, while miming the act of drinking a glass of beer. I don't know much about Romanian, but I know what I like. With a minimal common understanding established, he had just enough time to tell us of his own expedition traveling around Europe by bus in search of work. And then suddenly he was gone, back on to the bus heading North.

Rio Guadalqivir
The view along the Rio Guadalquivir

Our plan for Seville was simple. The Ruta would first widen out into three lanes, with a spur shooting off along the industrialized western suburbs towards Donana. We would turn eastwards from this and ride straight into the centre. I know Seville. It is an easy place to navigate, with many landmarks and a simple layout. We rode first across the more natural of the Rio Guadalquivir's two channels. And then over the second, artificial channel. As always, the traffic was gentle and bike friendly. Across the other side, I led us along Paseo de Cristobal Colon, following the river, past the Plaza del Toros de la  Maestranza (the bullring of Carmen), the Torre del Oro (golden tower) and the cathedral towards Parc María Luisa, rolling slowly by horse drawn taxi cabs with throttles calmed (although the horses must be used to noisy bikes). Then finally we turned away from the river along the edge of the Alcázares, parking up on the pavement at a nice restaurant next to the old hospital. In the restaurant, at last, we found good Spanish food, and the usual babble of smartly dressed families (each with representatives from several generations). And from there we could plan out our stay in Seville.


Horse drawn taxis in Seville
Horse drawn taxis in Seville


Seville bullring
Toros de la  Maestranza

Golden tower

Torre del Oro

Coming soon, "a day in Seville".


June 22, 2007

Interview with winning student podcaster

Follow-up to Warwick Podcasts Competition finale from Transversality - Robert O'Toole

The Warwick Podcasts Competition has been a success. Nine departments entered student teams. All of the podcast interviews were of a good standard. I believe them to have established podcasting as a useful and viable addition to research based learning approaches. Yesterday I interviewed Manu Raivio of the winning team. The interview is online as a podcast along with the entries. Here is a summary of some of the key points.

My interview sought to examine the process of creating the podcast, with an emphasis upon the contribution of the activity to the development of Manu and Raj’s academic skills. Significant skills work was identified in the following areas:
  • Team working – the students organized themselves into a small production team, identifying the required roles and allocating them with consideration of skills and interests.
  • Research – as Manu makes clear, preparing effectively with a sound understanding of the subject area and the interviewee was essential.
  • Accessing and using archive material – particularly relevant to a podcast dealing with historical events.
  • Awareness of the audience – consideration was given as to how to produce a podcast that could be listenable for 15 minutes. The use of a small and well placed degree of humour worked particularly well.
  • Synthesis and analysis of a range of ideas, arguments and materials. Very much an audio essay.
  • Academic and interpersonal sensitivity – being aware of difficult areas, and approaching them carefully.
  • Identifying and highlighting key points.
  • Technical skills – recording, editing and publishing.

Two areas of difficulty were identified:

  1. Finding and accessing the required audio resources.
  2. Understanding and applying the relevant copyright and IPR practices.

These are particularly problematic areas, for which we should provide more support.

A further lesson to be taken from the interview is that, with the availability of user friendly software (Apple Garage Band), editing can be easy and can add to the academic process. For example, Manu and Raj replaced a long and too imprecise question with a shorter alternative more suited to the answer given by the interviewee. This is contrary to the advice given to the competition participants, as I warned them to avoid editing. However, few of them had access to such good software.

I conclude that this case substantiates my claim that student podcasting and interviewing is a valuable addition to research based learning approaches. In addition, I also believe that it adds some support to more radical conjectures:

  1. That an audio production of this kind is in many ways equivalent to a written essay.
  2. That as a skills and academic development task it is much better than the traditional seminar presentation, but still within the ability level of the average student.
  3. That podcasting can improve student self-confidence.
  4. That reconsidering the academic process as being a production process analogous to the production of a “programme” provides the participants with a more tangible and user friendly product with which they can be more involved and responsible.

June 15, 2007

Warwick Podcasts Competition finale

Follow-up to More free iPods and MP3 recorders from Transversality - Robert O'Toole

Nine podcast interviews have been submitted for the Warwick Podcasts Competition.

The Warwick Podcasts Competition for students will culminate on Tuesday 19th of June at 3.30pm, with an exciting awards ceremony in the atrium of University House. The ten student teams have each identified interviewees (staff or alumni), and are creating podcast interviews that illustrate some aspect of that person’s research or career. The students will gain valuable experience in using communications technologies, and the resulting interviews will showcase research and studies at Warwick.

You can read about the proposed podcasts at: http://www2.warwick.ac.uk/services/elearning/podcasts/competitors/

And the finished work will be uploaded to: http://www2.warwick.ac.uk/services/elearning/podcasts/entries/

Winners will be announced and prizes awarded as part of a “champagne reception” at the end of the e-learning showcase day. If you are attending the Showcase Day, you are welcome to come to the awards ceremony.

To find out more about podcasting, come along to one of the Showcase Day sessions, or contact:

Tom Abbott (Communications Office)
Robert O’Toole (Arts Faculty)
Chris Coe (Social Sciences)
Steve Carpenter (Science and Engineering)
Stephen Brydges (Medical School)


June 10, 2007

Riding the Ruta de la Plata, part 5

Follow-up to Riding the Ruta de la Plata, part 4 from Transversality - Robert O'Toole

Through Extramadura and the Monfrague National Park. From the camp site at Plasencia the  mountains were still visible, but the greater heat signified lower altitudes and the approaching south. Above us, spriralling out from the rocks, vultures swooped and glided. Part 5 of the journal of my ride through Spain.

Part 1: Santander landing, camping in the Picos de Europa
Part 2: Cares River, Desfiladero de los Boyes gorge, Peurto del Ponton pass
Part 3: Easter processions in León
Part 4: Plasencia

Extremadura


Shortly before entering the town of Plasencia the passing landscape had transformed quite suddenly into an unfamiliar pattern. The mountains gave way to more gentle slopes and plains, with views extended far across fields semi-cultivated with short and light trees. From the camp site at Plasencia mountains were still visible, but the greater heat signified lower altitudes and the approaching south. On our second evening a dramatic storm passed over, after winding its way for some time along the valley. We watched it approach, gambling upon the direction in which it would descend. And then the rain was heavy but brief, and failed to interrupt the warmth, which soon dried the ground and our tents.

It is this warm but damp climate that enables and sustains a unique environment. Extremadura is a little known corner of Spain, south-central and running up against the border of Portugal. Amongst two minority interest groups, however, it is famed and respected. Those great wide fields of trees once supplied much of the world's cork oak. To viticulturalists the bark of its definitive species of tree was essential. The landscape was until recent times shaped and dominated by that powerful industry. Disease and a move towards plastic "corks" has now weakened the link between landscape and industry in Extremadura. And that is bad news to the second interest group for whom this land is of importance. For wine consumers there may be justification in the use of modern materials as a means of sealing bottles. Plastic corks don't go bad. But they also don't sustain a rich diversity of wildlife. So the demise of the natural cork is regretted by the many naturalists who visit places like Parque Nacional de Monfrague.

Parque Nacional de Monfrague

Before settling upon the camp site in Plasencia, we had ridden all of the way through the park in search of accomodation. It was a bank holiday, and therefore quite busy. Half way through there is a a dramatic view from the road across to a rocky outcrop. Many people were at this viewpoint, pointing cameras, binoculars and telescopes into the air. We stopped and joined the spectacle. It was a sight that I have seen many times before, but only ever in Africa, and almost always in remote locations deep in the bush. Above us, spriralling out from the rocks, vultures swooped and glided. We spotted clearly two varieties, white backed and egyptian. The park also holds a population of black vultures, which may also have been in the crowded skies above.  

Vulture in exremadura

Griffon or white backed vulture in Monfrague.

Our tally of vulture species was now at two. Add to that the numerous golden eagles, black kites, red kites, buzzards and falcons, and this had become an excellent expedition for raptor enthusiasts.

Next - the road into Seville.