Dynamically sorting by a column in a Stored Procedure (SQL Server)

Have you ever needed to build a stored procedure that would take the name of a column as a parameter, and return the results ordered by that column?

So have I, so after researching it for a couple of days, and none of the forums had any good solutions; All that he was able to find was a reference from Microsoft that said that the only way to do it was to build your SQL statement dynamically as a string in the stored procedure and EXEC it (not very good, considering it wouldn’t be able to leverage the T-SQL code optimiser – you’d be as well building it in your given language). I spent some time working on this and came up with a much better solution. There is a way to accomplish dynamic column sorting, while still leveraging a fully compiled and optimised stored procedure.

Microsoft says that you can’t use a variable for the column in an ORDER BY statement, and most attempts gave us a “can’t convert this value to an int” error. There is a way to make it work, though.

Consider a table:

ID int,
FirstName nvarchar(20),
LastName nvarchar(20),
ApplyDate datetime

We want to call a stored procedure, passing the name of the column that we want the records to be sorted by:

GetApplications(@SortField nvarchar(20))

Here’s what the T-SQL stored procedure definition looks like:

create proc GetApplications
@SortField nvarchar(20)
as
select * from Applications
order by
case @SortField
when 'FirstName' then cast (FirstName as sql_variant)
when 'LastName' then cast (LastName as sql_variant)
when 'ApplyDate' then cast (ApplyDate as sql_variant)
else cast (ID as sql_variant)
end

That’s it! Be sure to put the ELSE clause in there as a catch-all, so that you handle columns that don’t exist or typos in the value passed into the stored procedure.

You also need to cast all the values to sql_variant so that the ORDER BY clause won’t get confused about the type of the column that we’re sorting by, and try to force our values into an int.

This is tried and tested SQL Server 2000, and it works just fine. No promises for expermmenting with older/newer versions!

I’m always looking to improve my own SQL (SQL Server, MySQL are my main databases but always keen to learn new things too!) knowledge… so contact me if you have other hints or tips!

iMovie ’08 and iDVD…

OK, so I’ve been using my Mac for a while now… and I must admit it has grown on me hugely over the time I have used it – I was sceptical about using a Mac, but I do slightly prefere it now. Due to software I use for development I’ll always be a dual user just some things I need the PC for – anwayway… I’m here to talk about iMovie ’08.

I’ve done some video editing in the past on the PC, and Mac using professional stuff… however I was viewing my growing pile of MiniDV tapes for my camcorder and decided I should get them to video/dvd. Not wanting to spend hours/days editing I decided to try iMovie. I’ve never used it so I went in cold and was surprised and very happy with my end product – between iMovie and iDVD that is.

First step was to import my video, which was very easy and ‘quick’ though i did have to watch it play in realtime as it imported – perhaps there is a way to do it quicker?

After that was done, it was pretty simple to move my clips to edit them and compose them … it is very simple and as a result there is obviously a loss of control if you are used to Final Cut or similar on the PC… but if it’s just to get that holiday footage tided up and onto dvd then it’s probably more than sufficient.

After some resizing of clips, I became adventurous and – gasp – added titles and transitions (though not too much of these as I decided they were a bit corny) … next I added some music to liven it up.

So to create my wee video of a recent trip to Dubai, took (excluding importing time) just a little over an hour to compose, and a matter of moments in iDVD.

Burning the DVD in iDVD was quick and painless too… pick a theme, drop the movie in, give it a title and click a button and that was it really.

I was paranoid about quality… video on a computer in my past experiance was never that great. So I tentativley shoved it in the DVD player and was very happy with the resulting video. If anyone knows a good FREE resoource to upload video too I may upload some later.

One of the odd things in iMove is there is no need to save, but it does indeed save as you go – I quit a few times to test it!

iMovie

Dinner at Gordon Ramsay at Claridges Hotel, London (Review)

Recently we have had the pleasure of dinning at Gordon Ramsay at Claridges Hotel in London.

There were 4 of us dining, Laura, my parents and I.

We started the evening in Claridges off with a cocktail or 2 in the lobby/lounge. Now being Claridges you expect it to be posh, but by having this expectation it was just as I envisaged… it was posh, but in a subtle and relaxed way. The cocktails are very nice… and considering the venue I think reasonably priced – I enjoyed my pre-meal Singapore Sling and the others had a simple G&T. The nibbles provided were a good indication of things to come… they were simple but elegant and one (the toasted cheese) unusual but turned into my favorite very quickly!

We moved through into the dining room and it was again tastefully decorated, and not oppressive as it can be in some other similar establishments. The general atmosphere was calming and the lighting was subtle but still enough to see the plates!

Before our starters arrived we were given a plate of canapés – which were delicious, there was a selection of bite-sized spring rolls, fish cakes and breads. We were then given a tomato and cucmber soup drizzled with olive oil – very refreshing and cleansing before our meal.
For our starters 3 of us had the Fois Gras, one was a Mosaic of foie gras and Goosnargh duck with Red Pippin apple and walnut salad, toasted brioche and the other was more traditional – Roasted duck foie gras with macerated cherries, pickled ginger, cauliflower and almond cream (I had this, but there were nicer things on the menu which I would have enjoyed more, but it was still very very nice!), and Laura’s starter was Ravioli of Dorset blue lobster and salmon poached in a lemongrass bisque, basil vinaigrette.

For mains, Laura had the Pan-fried Mediterranean stonebass with Cromer crab and celeriac cannelloni, summer vegetable blanquette, lemon thyme velouté which was delicious, my Mum had a steak (not very adventurous, but it was a very nice piece of meat!) while my Dad and I both had the Roasted John Dory and sautéed langoustines with violet artichokes, pink fir potatoes, carrot purée and a light fennel cream. I was very happy with my main – however I am probably being greedy and think there could have been another bit of fish and one more langoustine. Laura was delighted with her meal and portion wise was ample. My Mum & Dad both also enjoyed their respective meals.

After this we were given a peach soup with rasperry sorbet mouse then it was onto desert, Laura and I both had the passion fruit creme brule – it was divine, my mum had a hot chocolate sponge while my dad opted for the huge selection of cheese from their trolley – the wedged returned to him were ample too!

The wine list was like vast and ranged from £23 per bottle to over £2,000!!!

In summary, the food was very well presented, portions good (but on the edge of small) but it was quality not quantaty. Will we return? Probably! But it would generally be for a special occasion, and we’d also plunge for a room at £300+ for the night too – you might as well go the whole hog! The staff were second to none, very friendly, happy to talk and treat you with class…

My Rating (each out of 10):
Food 9 | Service 10 | Atmosphere 9 | Value for money 8 | Overall 9

ColdFusion Caching Explained

Configured in the ColdFusion administrator under the “Caching” section, server caching controls how much and when data is stored in memory. An effective server caching strategy can relieve stress on resources such as databases, CPUs, and file systems while dramatically improving application performance. This article explores server caching in ColdFusion, introducing its different pieces and providing examples of how server caching works and its benefits.

Template Cache

All ColdFusion templates are compiled into PCode before execution. This compilation process can be resource intensive and slow down an application. To avoid compiling a template on every request, ColdFusion caches its PCode into memory the first time that it is called. If the cache becomes full, the cache is forced to purge templates on a first in first out basis to accommodate new requests. As a result, the next time the purged template is called, it must be recompiled. This purging is referred to as a cache pop and can be seen when monitoring CFSTAT.

If ever CP/Sec is greater than 0, Allaire recommends that the “Template Cache Size” setting be increased. By default “Template Cache Size” is set to 1024 kilobytes, but a good rule of thumb is to set the template cache size two to five times the total template size. Note that this setting is a maximum limit and is not allocated until necessary. Each template is cached only once, even if it is included in several other templates.

Trusted Cache

Though a template’s PCode may be stored in the template cache, ColdFusion checks the actual file to see if it has been modified after it was cached. This check may increase I/O wait and can be avoided by turning on trusted cache, also in the ColdFusion administrator.

With trusted cache enabled, ColdFusion will only access the template cache—even if the template itself is modified. This can be problematic if developers expect to see changes when files are modified. To introduce modified templates into the cache with out restarting the ColdFusion server, disable trusted cache and make a request to each modified template. Trusted cache can then be turned back on.

Database Connection Caching

To avoid the highly expensive task of opening and closing a connection to the database for every request, ColdFusion caches database connections by default. This means that the connection to the database is only opened once for many requests, thereby dramatically improving performance.

If you are connecting to a clustered database configuration, it may be necessary to disable connection caching to allow failover to function properly. This can be accomplished by unchecking “Maintain Database Connections” in the attributes of the data source but will strongly degrade performance.

To avoid unused connections to the database remaining open for long periods of time, the “Limit cached database connection inactive time” setting can be adjusted. It is also possible to manually release all data source connections from the “Verify Data Source” section of the ColdFusion administrator.

Query Caching

Query caching greatly increases performance as result sets are retrieved from memory rather than from the database. Developers should consider caching queries whenever possible.

For example, the following query will be cached for two hours:

<CFQUERY Name="MyQuery" DataSource="dsn"
CachedWithin="#CreateTimeSpan(0,2,0,0)#">
Select * from Inventory where InventoryId =2
</CFQUERY>

While caching queries is controlled by code, the limit of allowable cached queries is set in the ColdFusion administrator. With the introduction of CF 4.5x, it became possible to cache more that 100 queries at a time. The amount of queries that can be cached is now limited only by the amount of memory available on the server. As the size of result sets, amount of available memory, and the use of cached queries in applications vary, this setting should be tested under expected load for optimal performance.

Improving scalability is about finding and removing bottlenecks that restrict the growth of a system. The most common bottlenecks for Web systems include:

  • Insufficient network bandwidth.
  • Insufficient CPU resources.
  • Inability to get data to/from the database.
  • Solving each problem seems simple:
    • Call the ISP.
    • Add servers.
    • Add more database server(s).
    • Decrease the time between a page request and the page view.
    • Reduce the amount of work generated for the database server for each page view.
    • There is a limit to the number of queries you can cache. This number is configured in the ColdFusion Administrator under”Caching.” In ColdFusion 4.01, you cannot set this number higher than 100. This limitation was removed in ColdFusion 4.5, but that is not an invitation to set the value to 30,000. Caching too many result sets will cause memory starvation and heavy virtual memory paging, negating the benefits.
    • If you have a dynamic query, such as “SELECT * FROM Catalog WHERE CatalogNumber = #val(FORM.CatalogNumber)#”, each permutation of that query counts as one cached query. Therefore, query caching should only be used for commonly accessed result sets. The CFML Language Reference defines a distinct result set by stating “…the current query must use the same SQL statement, data source, query name, user name, password, and DBTYPE. Additionally, for native drivers it must have the same DBSERVER and DBNAME (Sybase only).”
    • There is no easy way to invalidate a result set, if you detect that a result set should be invalidated. Therefore, the time span used for the result set cache should be chosen carefully. However, if you have a result set that is accessed four times per second, setting a timeout as low as a minute reduces the load on the database (for that query) by a factor of 240.
    • You cannot use query caching for parameterized queries (queries using <CFQUERYPARAM>.) Parameterized queries should be used for common non-cached queries, since they allow the query plan to be reused on some database systems (such as Oracle), and they are virtually immune to malicious query editing as documented in Allaire Security Bulletin ASB99-04 (http://www.allaire.com/handlers/index.cfm?ID=8728&Method=Full)
  • Unfortunately, the cost of adding database server(s), both in terms of money and administrative overhead, is very high. So, it seems that maximizing your existing investment in database hardware and software is warranted. Enter query caching.

    Query caching is designed to accomplish two goals:

    Implementing query caching is very simple. For example, examine the query below, which might be used to retrieve a list of states for a <SELECT> list.

    Before:
    <CFQUERY Name="qStates" DataSource="#Request.DSN#">
    SELECT StateCode
    FROM States
    ORDER BY StateCode
    </CFQUERY>

    After:
    <CFQUERY Name="qStates" DataSource="#Request.DSN#"
    CachedWithin="#CreateTimeSpan(0,1,0,0)#">
    SELECT StateCode
    FROM States
    ORDER BY StateCode
    </CFQUERY>

    You just empowered ColdFusion to hold on to the results of that query for up to an hour. ColdFusion will now stop repeatedly asking the database for the results of this query. In fact, ColdFusion will reuse the results of that query for up to an hour before asking the database for that result set again. The database is now relieved of the duty of fetching these rows and sorting them (which usually involves creating and dropping a temporary table) for each request to that page.

    Before you get too excited, there are a few details to consider:

    Keep in mind that queries are also global to the server, so if you use the same query with the same name in multiple pages, that cached result set is shared between the pages.

    The repetitive nature of Web pages often causes database servers to work very hard at producing the same results sets over and over again. However, by using the Query Caching capability included with ColdFusion, a significant amount of work can easily be moved from the database server to the ColdFusion servers. This allows for a much higher ratio of ColdFusion servers to database servers, enhances the performance and scalability of your Web system, and maximizes your investment in your database servers.

    When designing a server caching strategy, it is important to take into account available sever memory and the need for fully dynamic information. If poor application performance is an issue, these settings may make a world of difference. During implementation, testing should take place to ensure that the application and server reacts as expected. Be sure to monitor server memory and verify that application data is correct.

    Note: this article was created as a result of some research and training courses I have been on and recommendations from them. This article is likely to evolve 🙂

SQL – Select using current day…

I’ve had this problem a few times, and many people always ask me it… so here it is immortalised.

If you require to select all records added to your table for the current day use the following where clause – obviously ‘col’ should be the name of your datetime column…

Hope this helps you all as much as it has myself!

1
2
3
SELECT *
FROM mytable
WHERE datediff(DAY,getdate(),col)=0 AND col &lt;= getdate()

Pad Thai

I have been experimenting for a while now making Pad Thai, from jars to trying to analyse the take-away carton from my excellent local Thai resteraunt.

Sadly i have not yet been able to visit Thai land, but parts of the following have been given to me by friends who have and sampled some of the varied street-food you get there.

Firstly, you will never see the red and oily pad thai in Thailand that is common in many western Thai restaurants. And this is where I was personally going wrong in trying to re-create this type.
A great Pad Thai is dry and light bodied, with a fresh, complex, balanced flavor.

Also, Pad Thai can be a perfect vegetarian dish, just skip the shrimp and use soy sauce instead of the fish sauce. Add (more ) tofu if you like.

2-3 Servings


a

1/2 lime
1 egg
4 teaspoons fish sauce
3 cloves garlic, minced
1/2 teaspoon ground dried chili pepper
ground pepper
1 shallot, minced
2 tablespoon sugar
2 tablespoon tamarind
1/2 package thai rice noodles
2 tablespoon vegetable oil
1/2-1/4 lb shrimp Optional
1/2 banana flower Optional
1/3 cup tofu – extra firm Optional
1-1/2 cup chinese chives – green Optional
2 tablespoons peanuts Optional
1-1/3 cup bean sprouts Optional
1 tablespoon preserved turnip Optional

Tips and substitutions
By far, the trickiest part is the soaked noodles. Noodles should be somewhat flexible and solid, not completely expanded and soft. When in doubt, undersoak. You can always add more water in the pan, but you can’t take it out.

Shrimp can be substituted or omitted. In this recipe, pre-ground pepper, particularly pre-ground white pepper is better than fresh ground pepper. For kids, omit the gound dried chilli pepper.

 

Tamarind adds some flavor and acidity, but you can substitute white vinegar.

The type of extra firm tofu called for this recipe can be found at most oriental groceries in a plastic bag, not in water. Some might be brown from soy sauce, but some white ones are also available. Pick whatever you like.

If you decided to include banana flower, cut lengthwise into sections (like orange sections). Rub any open cut with lime or lemon juice to prevent it from turning dark.

The original Pad Thai recipe calls for crushed roasted peanuts. Many people in Thailand avoid eating peanuts because of its link to cancer.

Soak the dry noodles in lukewarm water while preparing the other ingredients, for 5-10 minutes. Julienne tofu and cut into 1 inch long matchsticks. When cut, the extra firm tofu should have a mozzarella cheese consistency. Cut up Chinese chives into 1 inch long pieces. Set aside a few fresh chives for a garnish. Rinse the bean sprouts and save half for serving fresh. Mince shallot and garlic together.

Use a wok. If you do not have a wok, any big pot will do. Heat it up on high heat and pour oil in the wok. Fry the peanuts until toasted and remove them from the wok. Add shallot, garlic and tofu and stir them until they start to brown. The noodles should be flexible but not expanded at this point. Drain the noodles and add to the wok. Stir quickly to keep things from sticking. Add tamarind, sugar, fish sauce, chili pepper and preserved turnip. Stir. The heat should remain high. If your wok is not hot enough, you will see a lot of juice in the wok at this point. Turn up the heat, if it is the case. Make room for the egg by pushing all noodles to the side of the wok. Crack the egg onto the wok and scramble it until it is almost all cooked. Fold the egg into the noodles. Add shrimp and stir. Add bean sprouts, chives. Stir a few more times. The noodles should be soft and very tangled.

Pour onto the serving plate and sprinkle with peanuts. Serve hot with the banana flower slice and a wedge of lime on the side and raw Chinese chives and raw bean sprouts on top.

How much do you surf?

What do you mean?… How should I know?

Recently, I found a plugin for Firefox called Time Tracker. It’s a small timer in the bottom of Firefox, that will keep track of your ‘surfing time’, since you installed timertracker or since last zero setting. A tool that will surprise you…

Grab It Here

Carribean Cruise (2004)

My wife and I went on our first Carribean cruise in December 2004.

We sailed with Princess and the ship we were on was the Sun Princess.

The ship itself was very well maintained, and in good condition. I’d hate to be one of the poor souls who had the job of polishing the railings etc etc… must have taken hours!

Embarkation went very smoothly… and we on-board very quickly, and our luggage arrived shortly after.

We enjoyed the many ports we visited, my wife particularly enjoyed the shopping-orientated ports!

Email – Multipart Email with HTML/Plaintext

It is often quite usefull to be able to send an email with HTML for those that can support it, and Plaintext, for those who do not.

There is how you can send a ‘multipart’ email with ColdFusion.

<cfmail from=”” to=”” subject=””>
<cfmailpart type=”text/plain”>
Plain text goes here
</cfmailpart>
<cfmailpart type=”text/html”>
HTML version goes here
</cfmailpart>
</cfmail>

History of the McGarvie Name

I am currently intested in trying to build a family tree… to see how far back I can get the name to go… so if anyone wants to share findings contact me using the link on the left!

Origin: Irish

Today’s Irish surnames are underpinned by a multitude of rich histories. The name McGarvie originally appeared in Gaelic as O Gairbhin, derived from the word garbh, which means rough.

Spelling variations include: Garvin, Garvey, Garwin, Garvine, Garven, Garvan, Garvy, Garvie, Garwen and many more.

McGarvie (and variants) were first found in county Tyrone/Donegall where they held a family seat from very ancient times.

These different spellings are not surprising. In those days the parish clerk was one of the few men in each community able to read and write. It is easy to picture a succession of such men struggling to copy down the name as it was pronounced to them. The practice of spelling a word always in the same was just being established.

In Ireland, “son of” is usually “Mc” (McGarvie), but it’s interesting to note that at one time in Ireland the head of the clan was the grandfather and thus we have O’ (from Ogha meaning grandson of) Brien, O’Donnel and O’Neill.

In the Scottish [yes: Scottish] Highlands, “Mac” indicating “son of” is very popular (MacDonald, MacWilliam), but if the letter following the “c” of the “Mac” is not capitalized, then the latter part of the name is not a Christian name but instead has an occupational derivation, eg, Macnab (son of the abbot), Macintyre (son of the carpenter) and Macpherson (son of the parson).

Motto: Morior Invictus
Translation: Death before Defeat
Note: The mistake on the family crest is an error by a scribe’s rendering of Latin. The motto should be ‘Morior Invictus’ and not ‘Mirior Invictus.’

Tunisia – 27th August 2006 to 3rd September 2006

When: 27th Aug 2006 to 3rd Sept 2006
Where: Tunisia
Resort: Skanes (Monastir)
Hotel: Thalassa Village Hotel

Where We Went…

We recently visited Tunisia and stayed at the Thalassa Village Hotel, Skanes.

Getting There…

Despite the heightened security at Birmingham, our experience of this was not very bad at all… after all; if it helps our safety and security on flights then I welcome it. The checks were no worse than usual, just a few extra steps and obviously the restrictions on hand-baggage – which were not a problem for us anyway.

The flight time to Tunisia was very short, about 2h 50min – just long enough for the in-flight ‘meal’ and to watch the movie. Arrival at the airport was fairly smooth too (unlike departure but we’ll get to that later!), the wait for baggage at the carousel was just on the comfortable side – 20 or 30 minuets.

At Our Accommodation…

First Impressions:

We arrived around just after lunchtime (local time) on Sunday afternoon.

At the check in a blue erm … hospital band … was promptly attached to or wrists… We found ourselves wondering if we’d inadvertently signed up for some strange experimental surgery week or something… but quickly became apparent was so they could identify guests – but so much for the all over tan on the arms (had to keep waking up when sunbathing to move the thing to avoid a white band!!!).

What quickly became apparent was the number of French/German and Italian guests, we were informed by our rep that the Brits were a mere 80-odd of 1,300 guests at the hotel.

The layout of the resort was indeed that of a village… all the rooms were in pairs and had various ‘streets’ that were finally enough named after the Greek & Balearic Islands – we stayed on Mallorca (Majorca for those who don’t know where that is).

Our Accommodation:

The room we got was fairly basic and a bit tired in places, but was clean and comfortable. The maid cleaned daily, and even though it say’s twice a week on the information for the hotel, the bed linen was changed daily and so were our towels.

The bathroom was probably the bit that needed some tlc but was always clean and tidy. The shower was not the best ‘hotel shower’ we’ve ever used, but it did the job.

Every afternoon when we returned to the room it had been cleaned, beds made & turned down, bathroom cleaned

We really can’t fault the maid who sadly we never really seen.

Food:

The primary dining area was a self-service buffet, and you also got the option of 1 evening in the ‘A la Carte’ dining. The choice for that was Tunisian, Italian or Fish.

In general the food was warm and cleanly presented whilst part of the buffet. There was a wide range of food from pastas, rice, meat, Tunisian dishes, and many more. We never really struggled to find something that was to our fancy each evening. However if we had been there for 2 weeks we feel that it would have gotten very repetitive.

During our week there were 3 ‘themed’ evenings… Italian (they really did make some nicer than usual pasta dishes and so on), Tunisian (an enhanced selection of local dishes, some really very nice spicy tomato filled flat breads, couscous, and various rice dishes).

Pool/Beach:

The pool area was fairly big and kept clean and tidy… the pool was very large with a nice island in the middle.

The only thing that spoiled the pool area was the fact you needed to get up before the sun if you wanted a decent sun-bed – but we were lucky a couple of days and still fond one at 8 or 9 AM. Also while there was not an excessive presence of children the ‘Animation Team’ ensured there was sufficiently loud music to null the effects of our MP3 player, they also held aqua-aerobics in the shallower end and various other games throughout the day.

Entertainment:

There was various shows on throughout the week, these ranged from Tunisian folklore show, a very very dodgy miming act to the Moulin Rouge CD and ‘Oriental’ dancing.

A lot of the entertainment was French/German/Italian orientated, but we still enjoyed most of it if not for the odd good show. We both have a simple understanding of French so we were probably better off than some of the other English guests.

However the First Choice rep had noticed this a few weeks ago and had started to organise an evening in the lounge bar with the English guests which ranged from quizzes to bingo and karaoke, the member of the ‘Animation Team’ that hosted this was called Bob, he was a Tunisian who learnt English from an Australian, so as you can imagine it was odd listening to a Tunisian speaking English with an Australian accent.

Staff:

Staff overall were very pleasant especially if you did try to use some French/Arabic – even if it’s hello/thank you.

Lasting Impressions:

All-in-all we enjoyed our time at Thalassa Village Hotel. The first day we were unsure about it, it was our first time at an ‘all inclusive’ resort and probably just didn’t know what to expect for quality of food, service etc.

However by the end of our first full day we decided it was actually quite nice and did indeed grow on us more over our week staying there.

Tunisian People…

As mentioned with the staff, their primary language is Arabic & French, so overall were very pleasant especially if you did try to use some French/Arabic – even if it’s hello/thank you.

Even in the capital of Tunis we safe (we did remove the ‘hospital bands’ so as to not draw any more attention that we probably already were). The exception was those who worked in the ‘tourist shops’ and in the Medina, but we suppose that they need to be that way to make a living for themselves – possibly they are nice people outside of that environment.

Exploring Tunisia…

We only did one excursion as we only went to relax and get some sun.

The excursion we took was a ‘full day’, now normally a full day for an excursion means 8 or 9 AM and back late afternoon… No… our bums were on a bust at 6:30AM … and never returned till 7:30PM… OK we got good value-for-money in that respect… BUT a lot of that time was pick-ups from other hotels, which probably wasted about 3 hours of our lives between pick-ups/drop-offs. Ideally they should have split it into half coaches to make life more pleasant for their guests and cut the trip’s time by 3 hours.

The excursion was to Tunis, Carthage (the Antonine Baths – but there is much more to it), Sidi Bou Saïd, La Goulette and Bardo Museum.

The first place we went to on our trip was into Tunis after the marathon hotel pickups were completed. The road into Tunis was extremely busy and we’re glad we weren’t driving, looked a bit manic. When we go into the centre, our guide took us a walk up to the gates of the Media, and offered to escort people round it seemingly it goes in a circle up to a cathedral and back round to the gate. We decided to hold back and then go in on our own… we weren’t looking for anything anyway so we decided we’d go in for a short bit and then turn back… It was extremely narrow – around a meter and a half to two meters wide. We never felt unsafe or threatened, but you only had to glance at something to be hijacked by the seller… There was many fine looking leather goods… ceramics… bronze-ware… chi chas (Arabic pipes)… instruments… so if you are looking for a good bargain for the above types of things, then it is the place to go (there are similar Medina’s in other resorts too if Tunis seemed too far).

We walked back down to the centre and had a coffee, and then a quick browse in less hassled shopping centre. I think we had an hour and a half in Tunis, but we would have liked longer (if we go back we might stay in a resort such that a taxi would be reasonable to go to Tunis).

After we were on the coach – and the fattest family you’ll ever have seen in your life return 25 minuets late with 2 cheese pizzas to stink the bus out with – we headed to Carthage.

The part of Carthage we visited was the Antonine Baths… These were constructed somewhere between 138 and 161 AD and they were said to be the largest that had been built in the Roman Empire. However, the original Carthage was founded around 812 BC (I could go on at length about the history but won’t bore you too much!)… If we make it back to Tunisia we will definitely make an effort to view some of the older parts of it… for example the cemetery is supposed to still have the cremation remains of Hannibal and so on. Again, we could go on at length here, but I’ll keep it short and say that they are impressive ruins and if you are interested in history and culture it is worth it. Tunisia as a whole has some very impressive archaeological sites.

From Carthage we headed to Sidi Bou Saïd. The village/town of Sidi Bou Saïd is probably one of the nicest I have visited on my travels. The only colours allowed in the town are white and blue. Apparently it has been host to many writers and artists, but the names the guide were quoting never really rang a bell… or perhaps I wasn’t paying attention enough… or perhaps the majority of the names were French, Tunisia was ruled by them so their influence is vast.

The only thing that ruined Sidi Bou Saïd is the shopkeepers, even although I managed to get a good deal they can be quite intimidating. I bought a ceramic Tunisian drum, and thought afterwards I’d see if I had got a good deal from the other shop… big mistake… I left my wife with the good we purchased near to where the bus was picking us up so they didn’t know I’d bought one… but when I decided to go after they told me all I needed to know they got quite upset and 4 of them crowded me, but I just made a run for it to the safety of the bus!

Next was La Goulette which was our stop-off for lunch… which while was nice enough was nothing to rave about, as usual for an excursion lunch was in a fairly anonymous restaurant of a fairly anonymous hotel. La Goulette is the main shipping port of Tunisia if you do a Med cruise this is where you stop, and if this was my first impression of Tunisia from seeing the port I’d not fancy getting off. La Goulette is a fairly ugly town; we can see why people on a cruise often do not wish to get off. Our guide informed us that La Goulette is famous for its seafood/fish restaurants.

Lastly we made our way to the Bardo Museum which hosts a very large collection of mosaics and sculptures and other antiquities found at the various sites across Tunisia. There is not much to say except that the mosaics we seen there were exquisite and some were more than 3,000 years old, but still looked as though they could have been made yesterday – they are either well preserved or well restored, I suspect a bit of both. If you want to see more pictures, Google for them as there are thousands out there.

Sadly as we mentioned at the start the pickup/drop-off part of this excursion almost ruined it for us…

So after the Bardo Museum, we prepared ourselves for the gruelling return trip of drop-offs, which indeed turned out to be no more pleasant than the marathon of pickups.

About First Choice…

Overall, our experience with First Choice was much the same as that with every other operator we went with. The excursions that they had for Tunisia were generally good, and they were on the whole reasonably priced.

Our rep in the hotel was OK, but gave the most boring welcome meeting I’ve ever endured… we’d have preferred to poke our eyes out and shove them in our ears – 2 hours for a welcome meeting is a bit extreme. Needless to say we skipped the ‘farewell’ meeting.

Coming Home…

Coming home on Sunday was fairly smooth too… however the rep at our hotel gave us the wrong pickup-time (11:30) – an hour later than we were picked up. But thankfully we were ready and waiting anyway… but a few other guests had to be hunted down!

At Monastir Airport, check-in was actually quite quick, and we got seated together – at least we didn’t get conned for that! Queues through security were nominal. The ‘departure lounge’ should be called “hell’s waiting room”, it was hot & humid (no air-con), extremely overcrowded, and worst of all smoky (and I can take some smoke in the air but the lack of air-con probably didn’t help). And not a spare seat in sight. Duty-free shop was OK, but no much cheaper than UK or others.

In Summary…

OK, so would we go back? Yes. We would like to go back someday, especially to explore some of the many historical sites and culture that Tunisia has to offer and as we mentioned above the Tunisian people are generally very nice and welcoming.

The hotel we stayed in although was nice, we may choose a different resort next time perhaps closer to Tunis so that we can spend time there (shopping in particular looked quite good).

Robbie Williams @ Milton Keynes – 19th September 2006

(Note; I may get the other half to expand on this article!!!)

Date: 18th Sept 2006…

My Wife and I are both getting prepared to go and see Robbie Williams tomorrow evening in Milton Keynes…

We’re both really looking forward to it, and it’s virtually on our 5th Anniversary too…

We shall give you our opionion of the gig once we’ve been!!!

Date: 19th Sept 2006…

We went to the gig today and it was amazing!

We arrived early – about 8:30am… after having gotten lost in Milton Keynes (horrible place to drive so it is!) and found one of the car parks at MK bowl…

Having parked at the exit we got out very quickly and were not waiting hours, all in all took about 30 mins to get out of Milton Keynes.

When we get to the gate we were gald to see we were among the 1st… we had bought seating tickets for Wembly, but when they came by post we got General Admission tickets instead… which was a bit annoying… However since we got there as early… big ouncer type guys came ut with white ‘hospital bands’ which turned out to be your entry into the ‘Inner Sanctum’ or whatever it’s called… so we got them! That was a bonus and really cheered my wife up!… So having gotten into tjhis area, we eventually were only about 4 people deep from the stage… and had an excellent view (thankfully no tall people stood infront of us!)…

The support acts were Orson and Basement Jaxx already being a fans of them… that was an extra bonus for us!… and their performances were outstanding too…

Orson’s drummer and their base guitarist were both nuts… and very entertaining to watch… as were they all… I would not hesitate after this in going to an Orson concert!

Basement Jaxx… again… outstanding… did all their well known tracks…. sound in the Bowl was quite good…. Jaxx’s base sounds went right through you… and their performance on stage was very entertaining and again… we had always wanted to see them, but never had the chance…

Robbie arrived from the front ‘island’ in a puff of smoke & fire… a typically drmatic entrance from RW…

He proceeded to hit out his usual big hits … and also some of his new tracks too…

(I shall write up some more about RW himself tomorrow!!!)…

UAE Dubai/Abu Dhabi visit… 20/09/06 to 24/09/06

We are compiling our tales of our recent visit to the United Arab Emirates (UAE) and our stay in Abu Dhabi & Dubai!Please check back in a day or 2!…

Please feel free to submit any questions about UAE/Dubai/Abu Dhabi via comments and we’ll answer them in our write-up!

Welcome…

OK trying out some new stuff I’ve been working on…So here is the obligatory ‘welcome!’ message 🙂