« March 2009 | Main | May 2009 »

April 30, 2009

An evening excursion to Devizes and Avebury

It's the time of year when days are longer ... and after a training course, delegates (sometimes with the tutor acting as tour guide) gat a chance to see a little of Wiltshire. Midweek, early evening ... and places are quiet but the scenes and scenery remain magnificent.

As well as delegates on courses, we welcome other visitors to Wiltshire at Well House Manor.


A boat ascends the canal locks west of Devizes

Looking towards Devizes from Caen Hill

Avebury Stone Circle

The Stones at Avebury

The Barn and farmyard at Avebury

Avebury Churchyard

Posted by gje at 12:30 PM | Comments (0)


Related topics: via article database
More about Graham Ellis of Well House Consultants

April 29, 2009

Using the internet to remotely check for power failure at home (PHP)

Do you have freezers and other electrical equipment at home and worry about whether they'll be all right while you're away on holiday? Do you have a broadband connection with a rarely changing IP address, and a web site that you host with a web space provider? Then you'll be able to set up a "heartbeat" script to check out your home systems. We're doing this to keep an eye on Well House Manor, where we have two separate power feeds and want to be alerted if either of them trips.

Sample Scheme (what we have done - there are lots of alternatives at some stages):

a) Set up your home modem / router to point to a local machine that's permanently running, and is running Apache httpd and PHP. We have a Mac mini that fulfils this role. On this machine write a very simple web page that returns a status, such as:

<?php print(`uptime`); ?>

b) Set up a script of your main web site (remote from home) that runs this script, analyses the results, and emails you if there's a problem. We have a sample of such a script here ... ours is slightly more sophisticated in that is also looks at the server loading and reports back if there are overloading issues too

c) Set up a regular timed (crontab) job on your web site to run the 'heartbeat' script at an appropriate frequency. We have the following line in our 'crontab' file:

9,24,39,54 * * * * /usr/local/bin/php /home/welho/private/zzppxping.php


Here is my slightly longer explanation of the various things this script will catch, taken from the comments I have added so that I can remember what I did when I come to look at the script in the future ...

/* Heartbeat script - to run regularly on crontab and gather server
status from Well House Manor. This script runs on a remote server and
will email us if:
a) The Router at Well House Manor is not responding
  e.g. changed IP, power failure
b) The Manor Web server is down
  e.g. switched off / disconnected / has no power
c) Software issue on web server
  i.e. the httpd daemon is not running or is overloaded */

I should now write an equal and opposite script that has our local server checking that the web space provide system is live and responding ;-)

Posted by gje at 11:35 PM | Comments (0)


Related topics: via article database

Useful link: PHP training

April 28, 2009

Looking for a career change - Physician to Web Site Designer

A change of career mid-life has always been popular, and something more sedentary has often been the choice of people who have started off in something that's predominantly active such the military or sport. I have trained an Olympic Judo Champion ... in programming. And with the current economic changes around the world, there are far more people exploring this sort of option at present. For some it will work, and will work well but for others it will be a frustrating road if they're lacking in the commitment or aptitude. So - should you take this route / this new career path is you're thinking about it?

It's worth looking at. It's worth considering the options, it's worth seeing if you enjoy the challenge. And it can be done. I headed this article "Physician to web Site Designer" as I have just completed an email response to someone who's considering that route, and asked if I could write him a series of tutorials so that he could learn at "nominal cost" and save himself course and travel fees; I had to write back and say "no" as it doesn't make sense for me to invest all my time (and time = money) into him when he's not prepared to invest his own money and - I suspect not enough of his time. But at the same time, I have given training - and just a very little training - to a surgeon who has gone on to do really great things in IT. There was an aptitude, a clear thought process, and a focused mind there and I was very much the facilitator rather than the ogre pushing him along, or the encourager who kept picking him up when a code issue or other frustration arose.

A change from xxxxx to IT / Web design / PHP is a huge change. There's a lot to learn and there are a lot of good people out there ahead of you.

Still reading?

Then let me share the second tranche of my answer to "Craig", who wrote 'I expect you'll know what this issue is and sort it quickly' as he wrote about something I didn't actually know, but read up on within a couple of minutes and could offer some direction on.

I wrote:

I've been in IT for the best part of 40 years - you talk about me being quick sorting these these things out and, yes, I probably am, simply because I've seen so many things happen. An aptitude for it is just one small element - it's the experience of saying " yes - I've seen that sort of pattern before and the type of thing to look for is xxxxx".

I used to say that I could often do in a day what a newcomer would take a week to do, but I have changed that to "I can often do in a morning". And that's simply the time saved by experience of being able to code quickly (near automatically), to reuse my own and other's code, and to spot errors very quickly indeed - and again there's an experience factor there. There are probably eight to 12 really common errors in PHP, for example, and some of them are not obvious from the error messages to the newcomer. The newcomer often blames PHP (or the other language he's using) for this obtuseness, but in my view is wrong to do so. For every time you run a script and get an error message, you'll run that same script thousands of times after correcting the error, and the last thing you want is a performance hit added to the language because it's spending time making the messages really useful for 1 case in a thousand. (If you're concerned with this, go for the Java model where code is not compiled every time - but that's another story!)

Why am I writing this ... even in an answer like this - for efficiency / re-use. This is not the first time I've been asked a question like this, it won't be the last, and it's going be added to my resource kit ;-) .... a.k.a. my blog. Then I can refer back to it easily. And even in that statement there's something of the philosophy of coding coming through.

If you are looking at a career change to web sites / computing (and this change, which has always been a popular aspiration, is even more prevalent at the moment) then you need to be prepared to invest heavily in doing so, and know that there's a lot of competition out there and you will need the aptitude for it to work for you, or enjoy it so much that you can put in long, long hours which will often be frustrating. The investment I talk about will certainly be an investment in time - on projects that take you five times longer than they would take me, and at the end of which you say "if only I had known when I started" so you may end up redoing them. And it may be a financial investment too. Training courses such as the ones we offer can seriously short-cut some elements of the time taken, and can save you an awful lot of experimenting by helping you learn how to read code and fix code errors, how to code for re-use, and how to avoid blind alleys - and the gains carry on for years and years after the course.

Naturally, as a training provider I recommend the use of such courses but if you choose to say "they're not for me" then you can still get there. Your road will be a longer one, and if you value your time even at 25c per hour, you'll probably end up spending more in the long term, finishing up with code that's not going to be as clean / robust / maintainable. Ah - but I did say "probably". It's possible that you could be a budding Rasmus Lerdorf, Larry Wall or Guido van Rossum and produce something that's quite extraordinary, very quickly, and takes the world by storm. But come to think of it, I don't know what courses if any they attended!

Enough of my writing ... good luck however you choose to go. And do look us up if you happen to be in the UK and passing near to our area at any stage in the future.

Posted by gje at 06:51 AM | Comments (0)


Related topics: via article database

April 27, 2009

Throughout the year, around the world

What occurred for the first time this year on February 2nd in Greece, occurred in the UK on 22nd March and will happen in the USA on 10th May. The last occurrence of the year will be in Indonesia on 22nd December, and it will start up all over again in 2010.

I'm giving you the dates of Mother's Day / Mothering Sunday. For many years, I've know that the day happens in March in the UK, but in May in the USA ... and for all of those expats such as Lisa, there's something of a need to plan ahead / buy a card at the end of winter to post to mother in the USA in mid spring. (Have you ever tried asking for a mother's day card in even a specialised card shop in the UK in late April - you get the "you must be crazy" look!)

Blog and forum software usually includes calendar facilities, and those facilities often include an automated posting of public holidays and special days. You may wonder why on earth a post about Mother's day turns up in late April. Well - it's two weeks to go to the American one, and our distinctly British First Great Western Coffeeshop proudly announced the forthcoming event on the other side of the Atlantic this morning, and one of our keen eyed moderators tipped my the wink that the SMF software was letting out the secret of its country of origin.

See http://en.wikipedia.org/wiki/Mother's_Day for Mother's day around the world.

Posted by gje at 07:18 AM | Comments (0)


Related topics: via article database

April 26, 2009

Riverside Development

Bradford-on-Avon is about six miles from Melksham, and another of the five towns on West Wiltshire; in fact it's the smallest, about half the size of Melksham. We popped over there at lunch time today and it was lovely to see people out with their boats, children and dogs. Vibrant, and we had to queue for lunch. Yet this canal was abandoned in the 1950s and not re-opened for fifty years. In the Kennet and Avon Canal, you can see how an unused resource can be restored and can become a key element of the local economy.

The Wilts and Berks Canal used to pass through Melksham. The old course, long abandoned and built over, passes a few yards from Well House Manor and there's no practical way that it will be restored on its old course. But it could be brought through the town up the course of the River Avon, and rejoining the old course of the canal a mile or two to the north.

Posted by gje at 07:39 PM | Comments (0)


Related topics: via article database

April 25, 2009

Town Crier competiton

Through the archway at the old fire station, you can see Melksham's market place and all the old buildings around it. Two hundred years ago, Melksham was the largest town for many miles around and that history is still there to be seen.

Today was the first of what we hope will become an annual Town Crier competition, with criers from local Wiltshire towns as well as far afield - Bromyard and Truro and Llandovery ... competing for various cups and trophy on the basis of cries about health eating. Most of the criers are somewhat rotund, and were joking that they had not followed their own advise.

Judging was on dress, on content, on projection and on politeness and decorum, and while each of the four judges marks was being correlated, we were entertained by the Morris Dancers

It's good to see the market place in Melksham vibrant, and the publicity this brings to the town. Personally, I wouldn't be wanting to shout above the traffic, but each to his own ... or nearly to his own, for each started "hear ye, hear ye" and ended with "God save the Queen"

Posted by gje at 05:46 PM | Comments (0)


Related topics: via article database

Beware - giving copyright away when you upload a picture - Dogs Trust

We've signed up to add pictures of the hound to "DoggySnaps" - run / sponsored by the Dog's Trust from where Gypsy arrived. Yes, we paid Gypsy's kennel costs. Yes, we made a donation ... but we want to encourage them more and help them with things like a vibrant web site (which it is). But - goodness - you have to be careful, don't you. From the small print:

3.2 By accepting these terms and in consideration of your registration and use of the Site you hereby grant Dogs Trust an exclusive licence to use the photographs for all purposes in all media throughout the world for the full period of the copyright and any similar right.

3.3 Dogs Trust hereby grants you a non-exclusive licence to use the photographs for private and domestic purposes. If you wish to use the photographs commercially or in any commercial publication please contact us and we will consider an extension of this licence-back in this regard.

Now that made me stop and think very carefully indeed! In practise, it's very unlikely indeed that we would want to make commercial gain from the pictures - but places like this blog are hardly "private / domestic" and any picture that I post up to http://www.doggysnaps.com/ becomes theirs to use and they will consider letting me use my own picture further if I ask.Darned cheek if you ask me

I've taken a pragmatic view. Yes, it's not a bad idea to have a few pictures up there and I'm happy to give them some rights to use over some good (but probably not the best!) pictures which I am being careful to upload at web (rather than printed material) resolution. But any gems are being reserved for use here or elsewhere - for I really wouldn't want to find myself in legal hot water over one of my own pictures that, in years to come, I had forgotten I had uploaded to their site.

Would you like to see some more of my doggy pictures? The mediocre ones are here ... I can only say sorry that - legally - I can't actually put the pictures that I took myself, and for which I have no payment, on my own site any longer!

Posted by gje at 08:40 AM | Comments (0)


Related topics: via article database

April 24, 2009

OS Commerce install made simple

Downloading and installing a new open source product can be daunting, and yesterday afternoon and this morning we set up WordPress and OSCommerce onto our own test server, and onto delegate's laptops. I'm following this introduction with a brief procedure summary for the setup of OSCommerce ... the instructions are clear enough for experienced web server admins / programmers at the start of the 100 page plus .pdf manual, but it's great to have a summary note as a reminder for the delegates on the course.

Here is what you do ...

1. Download from OSCommerce site (zip file)

2. Decompress it (winzip for 'doze types or jar for 'nix and 'nux)

3. Upload to web server, using FTP (manual says ASCII mode for text
file). 'nix to 'nix - recompress via tar and uncompress

--- At this point --- you have a directory I called "shop" which includes all the stuff in the distribution WITHIN the web site document area.

4. If necessary, create a database user / database / password for use
of oscommerce - through phpmyadmin or directly through mysql:
grant all on shop.* to gerald@"%" identified by "gorilla";
create database shop;

5. If your site has mod_rewrite instructions, you may need to add a
.htaccess file saying "RewriteEngine Off"

6. Visit http://sitename/shop/catalog/install and correct any errors of the "must be writeable" type that you get. e.g.
chmod a+w jhfgjhdfghjd/configure.php

7. On next screen, give database information:
localhost gerald gorilla shop

--- At this point --- the system will create all the tables (empty) that it will need

8. Give Store Details
TransWilts Railwayana
Melksham Railway Development Group
graham@wellho.net
grahame
spingo_63

--- At this point --- you have an empty shop and you need to put some product in there to sell, and set up tax rates, stocking and shipping policies, and much more!

9. Click onto admin tool and log in ... and you have whole loads of menus to add products and set up how your shop works.

You learn a lot from the first setup ... it's probably a good idea to do it on a test server, to put up only a handful of products to test and learn what you're doing, and to expect to rerun the procedure "knowing what I know now" ....

Posted by gje at 11:44 AM | Comments (0)


Related topics: via article database

Ski bore ... train bore ... dog bore

OK ... I'm going to try and avoid transmogrifying into a dog bore ... but Gypsy, who I introduced you to last weekend, has certainly made an impact on us!

She's mostly greyhound, but not fully. We think the rest is Staffordshire Bull Terrier. She's blind in one eye, she has lead pellets embedded in her from a previous life of which we only have a vague history, she's very fast, very strong, a bit gangling and unaware of her own strength ("clumsy") ... and utterly loving and our dog. Into everything, obedient but easily distracted. I know you'll be reading more about her here in the future ... hopefully not to the "dog bore" extent!

Posted by gje at 08:12 AM | Comments (0)


Related topics: via article database

April 23, 2009

Reaching the right people with your web site

On today's final PHP sessions, we discussed search engine optimisation ... and came up with this list of things to consider with your site with regards to getting yourself well ranked with the search engines (which is talked about a lot), and ranked in such a way that your page is offered when you want it to be offered (which is not talked about to much). With that "offer at the right time" scenario, I'm suggesting that a UK based company such as ours, which is looking for people to physically attend at our offices, wants to be biased towards visitors from the UK and elsewhere in Europe. And that a company that's providing open source training really doesn't need to be top of the rankings for "clock image" or "birth notice", both of which have happened to us in the past.

Here is a powerpoint style list of the elements we talked about with search engine optimisation:

•sitemap •metatags •alt tags
•URL •extension •frequency of change
•title •content words •content originallity
•links in •links out •clean html
•text content •populatity of clickthough •uniqueness
•caching •geographic location and more

Posted by gje at 11:11 PM | Comments (0)


Related topics: via article database

April 22, 2009

What features does this visitors browser support? (PHP)

Does this visitor's web site support CSS? Is this visitor a robot? Should I send out frames? There are the sorts of questions that you may want to ask in a PHP page .... and PHP supports the get_browser function which can tell you ... or which can tell, most of the time, once you have it configured.

The browscap.ini file that the function needs doe NOT ship with PHP. When you think about it, there's a certain logic to that as the browser database has to be updated far more frequently that PHP, so a separate distribution channel is sensible. Latest download from http://browsers.garykeith.com/downloads.asp. Then you need to configure it into your PHP (i.e. tell your PHP where to find the file ... and I've done that on our server by adding the following line to the end of my php.ini file:
browscap = /home/wellho/include/browscap.ini
And then stopping and restarting httpd.

And get_browser will now work. See it run at http://www.wellho.net/demo/gbs.php and see the source code of my demonstration at http://www.wellho.net/resources/ex.php4?item=h304/gbs.php.


Two more new browser type demos in PHP ... see here for a sorted list of the browsers that people used for the first 1000 hits on our site yesterday, and here for a demo that send out a graphic to a real user, but a descriptive alternative to a robot. That's a cheap and cheerful way of doing some of the things that I mention with get_browser and may be all you need. There are links to source on both of these examples.

Posted by gje at 11:28 PM | Comments (0)


Related topics: via article database

Useful link: PHP training

April 21, 2009

Oracle take over Sun who had taken over MySQL

The newspaper tells me that Oracle is buying Sun Microsystems. Since Sun Microsystems bought MySQL about a year ago, this means that Oracle now owns MySQL. I wonder what they will do with it.

I am reminded of FrameMaker being taken over by Adobe, and attempts to move the customer base to PageMaker and InDesign ...

Posted by gje at 03:55 PM | Comments (0)


Related topics: via article database

Useful link: MySQL training

April 20, 2009

Bigger and better this year!

The film Jaws was a classic ... but Jaws II didn't reach the same heights. I heard a lot about Oceans 11 but not so much about Oceans 12. And where, oh where, is Titanic 2

A really good film has all the director's best ideas thrown at it, leaving the crumbs for the sequel ... and the sequel's market is those who enjoyed the original - with people who missed the original unlikely to go along to see the sequel.

Which is why it is extraordinary that only halfway through our pledge campaign for an appropriate train service across Wiltshire, we're already just a few signature shy of the number we achieved over the whole period last year. How come we have bucked the sequel trend?

The current train service that links the largest urban areas in Wiltshire is crazy. A great gap from the 06:15 to the 18:45 southbound, and a similar northbound gap render it completely inappropriate. Through the day, you still see a railway line without passenger trains, parallel to a road that's snarled and jammed. And the stations are in (or close to) the town centres along the way for the most part - that's where people want to go, and where parking is short.

But other things have changed this year which make the sequel bigger than the original. There's been an economic downturn, and people don't want to be running two cars in the family any longer (I know I don't). Wiltshire has gone unitary, which means that the towns along the way are now far more closely linked than they were before. Salisbury, Chippenham, Trowbidge, Melksham and Warminster are the five largest population centres in the new authority, and the line connects all of them, together with that huge neighbour of Swindon, and Westbury from where connections are available to Reading, London, and the South West. And people are becoming more aware, too, of the need for businesses and areas to attract people in - to make themselves into destinations for work, for tourism ... and that to do so, good transport is needed - transport that allows an end to end journey to be integrated to give a total solution.

In 2006, 40% of our customers arrived by train, in the days that we had a more appropriate service. At the end of that year, the service was "revised" so that it not longer runs at appropriate times, and in 2007 just 4% of our customers arrived by train ... with many of THEM complaining that the 19:50 was far too late to leave after a course (the previous train at quarter past seven in the morning being far too early!). So I (and we) support the call for an improved service - indeed, I am hosting the web site and providing some of the technical backing.

I know it's a sequel ... but this is one of those rare cases where the sequel is bigger than the original. If you're a past customer ... if you're likely to be coming here ... if you travel in Wiltshire, please consider adding your name to the call for an appropriate service at:

http://www.transwilts.org.uk/pledge.html

Trowbridge to Swindon. 95 minutes by bus. 55 minutes in your car (and then you have to park). 35 minutes by train. You know it makes sense to provide the train!

Posted by gje at 07:55 AM | Comments (0)


Related topics: via article database

April 18, 2009

Learning about Lurchers

Lisa and I adopted Gypsy today. And no doubt I'll be telling you more about her, and showing you proud pictures, as time goes by. I don't after all, have quite the same data protection issues if I tell you all the personal things and stories about a dog that I would have if I told you about a colleague / team member / human family member.

My old "Observer's book of dogs" doesn't list the lurcher as a breed on its main pages - there's a paragraph at the rear of the book on them. And yes it the 30 or 40 years since the book was published, the Lurcher has become popular. Or rather the name has been greatly taken up to apply to Greyhound and summat-else cross-breeds of the "isn't that a lovely big dog" genre. And, yes, she is a lovely big dog.

First days in a new home will always be busy and interesting ones (and today has been a busy and interesting day, which is why I am posting up so late). We have adopted cats in the past (Charlie the cat and Gypsy are aware of each other - keeping out of the way in the first case, and showing no interest in the second) and know not to expect miracles (but rather accidents) on days 1, 2 and 3 ... but with a field right behind, we're well set to take her out, walk her, get exercise ourselves, and deal with all the issues that come up. Hopefully you'll find us taking on the sleeker looks she has when you see future pictures of us ;-).

But Gypsy would like you to know that even in her first few hours, she likes it with us and feels quite at home.

You won't meet Charlie or Gypsy if you visit the hotel ... they're strictly not mixing, but anyone who comes round to the house is liable to be lick-greeted from this point onwards, and may have to play shove-a-dog to get themselves a place on the sofa.

Posted by gje at 10:31 PM | Comments (0)


Related topics: via article database

April 17, 2009

Patterns in street names

Walk up Red Hat Lane and turn left onto Ubuntu Avenue. Carry on across Suse Street as far as Knoppix Road, Debian Way and Slackware Crescent, off which you'll find Fedora Close.

We have clusters of streets named after birds, trees, flowers and even world war 2 heros in Melksham. Perhaps Trowbridge (where this picture was taken) is looking to get really modern and use Linux distribution names ... or (more likely) there is some historic significance to "Red Hat Lane"

Posted by gje at 07:52 AM | Comments (0)


Related topics: via article database

April 16, 2009

Javascript - move cursor over image to change a different image.

Let's imagine that you have an image which is a map on your web page, and as you move over the map you want another image (elsewhere on the page) to change to show the place you're pointing too. Well - it can be done with Javascript, but it's not necessarily easy to find a simple example online ... which is probably why one of my customers asked me how to do it.

Try it out at http://www.wellho.net/demo/terry2.html and see the source code at http://www.wellho.net/resources/ex.php4?item=w602/terry2.html.

If you look at the source code, you'll find a lot of repeated code - not a good idea in the long term, but it will help you see what I have done and how I have done it.

P.S. The original question wasn't about maps and places - it was about a football team and showing pictures of their favourite foods. Yes, it should work for them too!

Posted by gje at 03:06 PM | Comments (0)


Related topics: via article database

Useful link: Java training

April 14, 2009

Nothing beats Perl to solve a data manipulation requirement quickly

OK - I admit it. It might be slightly out of fashion but I still love Perl for that quick hack script which is a one-off data manipulation need.

I have two files - the first containing records of who signed our pledge for an appropriate TransWilts train service last year, and another containing records in the same format for those who have signed this year, and I wanted a list of people who haven't reconfirmed their support.

Here's a "break the rules of good programming" piece of code that I slapped together in a few minutes ...

open (FH,"08.cooked");
while (<FH>) {
  chop;
  $key = lc;
  $signed{$key} = 1;
  $lastyear{$key} = 1;
  }
  
open (FH,"09.cooked");
while (<FH>) {
  chop;
  $key = lc;
  $signed{$key} = 2;
  }
  
foreach $previous (keys %signed) {
  # last year only
  if ($signed{$previous} == 1) {
    print "$previous\n" ;
    $awaited += 1;
    }
  if ($signed{$previous} == 2) {
    # this year only
    $newcomer += 1 if (! $lastyear{$previous}) ;
    # this year and last year
    $both += 1 if ($lastyear{$previous}) ;
    }
  }
print ("$awaited last year only\n");
print ("$both both years\n");
print ("$newcomer new this year\n");

... and after a couple of syntax errors and a couple of validation tests, it ran for me and fulfilled its job.

Coding rules broken.

1. Cut and paste the file read code - un-necessary duplication
2. Poorly (un-named!) variable - use of $_
3. Combined data and report output of STDOUT needed cutting about later
4. Lack of descriptive comment block

but job done, and I can move on with my once-only result set and take a look through the output, considering and acting on the data provided which was the purpose in the first place.

P.S. Had I been working from database tables, a left join looking for orphan records would have let me do the whole data thing as a one-liner:

mysql> select pledges.email from pledges left join pledge09 on pledges.email = pledge09.email where pledge09.pid is NULL;

with slight modifications for each of the counts

We offer courses in both Perl Programming and in MySQL. One of the most popular pages on our web site explains the difference between the types of join in MySQL and how to extract all the different data combinations you might want.

Posted by gje at 06:54 AM | Comments (0)


Related topics: via article database

Useful link: Perl training

April 13, 2009

Wiltshire - where everybody matters

On 1st April, Wiltshire went Unitary, combining four district councils and a county into a single unitary authority with a population a shade under 450,000. And from buildings to dust carts, the labels and logos have changed:

"Wiltshire - Where Everybody Matters" ... and I'm very glad to have that re-assurance. For all the talk leading up to the merger was about the great things that Unitary will do, based on and for "Salisbury, Trowbridge and Chippenham". But taking that 450,000, this is how the population splits amongst the major towns:

45000 Salisbury
28000 Chippenham
28000 Trowbridge
21000 Melksham
17000 Warminster
14000 Calne
12000 Corsham
11000 Devizes
11000 Westbury
11000 Wootton Bassett
9000 Amesbury
9000 Tidworth
9000 Bradford-on-Avon
8000 Marlborough
6000 Malmesbury

(E&OE - Please let me know of anywhere with a population of more that 5000 that I have missed!)

Dear Councillors, the people of Calne, of Devizes, of Amesbury, the people of Melksham, Warminster and Corsham look forward to mattering in the new county. And I really hope that you mean

Wiltshire - where everybody matters equally

and in Tisbury and Mere and Ludgershall and Pewsey and Bedwyn and Purton and Avebury and Minety and Porton and Downton and Tilshead and Rushall and Wilton and Patney and Chirton and Chitterne and Codford and Wishford and Lavington and Upavon and Holt and Box and Shrewton and Atworth and Lyneham and Lacock ... Burbage and Bromham, Larkhill and Durrington, Bratton and Rowde too.

Posted by gje at 06:39 PM | Comments (0)


Related topics: via article database

April 12, 2009

Call in the professionals!

You would think anyone could put a door handle on right, wouldn't you? Ah - but you might be surprised! It's so easy to make a mistake like this one - where the hand can get caught between the handle and frame as you pull the door closed.

This picture was taken of a shopfront in Salisbury on Friday. And I have an admission to make ... I have done exactly the same thing when installing a handle; it is not on a door that is ever going to be opened by customers - it's one that's well away from regular customer access and in any case locked by default.

Of course - installing door handles is a profession any you can get it wrong in all sorts of other ways too - I posted about the octopus three years ago.

And it's very much the same way with web presence - setting up a marketing site may look easy, but there are some pitfalls (and we have been through a few - I'm not claiming any sort of perfection, and I know of some issues we have ourselves). I was (and am) going to write about a couple of places that we visited in Salisbury on Friday - Cactus Jack's where we enjoyed a Mexican Buffet lunch of the sort quite unavailable in Melksham. I did a search for them when we got home, and found they they are at http://d118754.u27.hosting365.ie/cj/ (yes - really!) which isn't too memorable to me. At least if you visit http://www.cactusjacks.co.uk/ you get redirected back, but the way it's been setup, if you bookmark it and / or cut and paste the URL to a friend they get the subdirectory on the Irish hosting provider that the Mexican style company in Wiltshire has chosen ;-).

And at the tail of our day, as we wended our weary way back towards Salisbury Station, we stopped off at the Shakydog. I had never noticed it before, which turned out to not be a surprise as it had only opened that day! Cheerful crew, clearly learning the ropes and clearly overstaffed for the first day ... but I wish them well. So let's give their web site a plug. http://www.shakydogsalisbury.com/ is - alas - a holding page but at least it gives you the contact details. The .co.uk (where I would have expected to find them) appears to be registered, but parked with one of those irritating link forwarding pages on it that seem designed to obscure real sites from the search engines in the hope of getting click through revenue. I'm sure the Salisbury Shaky Dog Coffee and Milkshake team didn't intend that use of their domain.

P.S. I would eat at Cactus Jack's and drink at Shaky Dog again - the comments above relate purely to aspects of their web presence which do not effect the in store experience!

Posted by gje at 06:07 AM | Comments (0)


Related topics: via article database

April 11, 2009

Weeding out old phone numbers

Systems grow - "what a good idea" we say in 2000, or 2004 and perhaps it is a good idea at the time. Perhaps it works well. But is it the product for 2009? The problem comes that all the ideas grow into a complex system and with things like phone numbers (and programming languages too - look at the Perl changes to version 6, Python 3, and some of the things that were in early PHP), we end up with a system that supports something now because it is right for today but because we're looking to maintain compatibility.

Our array of phone numbers has been getting over complex, and we're stepping through systems to reduce that complexity. A lot of that is behind the scenes, but I am making a point here today that we are ceasing to support the 0845 (local) numbers. You can phone us on a geographic line, you can phone us on the more recent freephone. There's really no need for a halfway house option in between and indeed usage information I have tell me that it's rare for anyone to choose that number to call. So where do we stand?

Revised Phone Numbers for Well House Consultants / Well House Manor

Well House Consultants: 01225 708225
Well House Manor (bookings and admin): 01225 709638
Well House Manor (guest line at hotel): 01225 793803
Freephone / 24 hours emergency contact: 0800 043 8225

Fax: 01225 707126

Our local numbers (0845 8382 404 for voice and 0845 8382 405 for fax) have become redundant now that we offer an 0800 freephone number which costs you less to call and can be routed by us to give you a 24 x 7 answer. So these numbers are being withdrawn. We do not use premium rate numbers, or non-geographic numbers from which we would receive payment.

Only in exceptional circumstances do we hand out a mobile phone number. Not only am I in front of a class most of the time (so unable to keep answering the phone) but I also spend a lot of time driving to and from venues (where once again I'm unable to answer). Lisa, or another team member when she's not around, can help with most questions anyway ... and she knows how to reach me on any particular day.

My personal email is graham@wellho.net; general enquiries should be sent to info@wellho.net which is a share account routed to the duty member(s) of the customer facing team, who will answer personally as appropriate. Web sites are http://www.wellho.net for the training and http://www.wellhousemanor.co.uk for the hotel and training and conference room hire.

Link: about the redundant local numbers
Link: about our current freephone numbers

Posted by gje at 12:16 PM | Comments (0)


Related topics: via article database

April 10, 2009

We have lost a regular business guest

A note from Chris, on checkout duty: "Xxxxx has left - very happy with this stay and previous stays. Leaving for promotion in different company."

We don't like to loose regular guests, nor do we like to have irregular guests choose to stay elsewhere if they're in Melksham again - so we look to keep somewhat in touch with our regulars needs, asking if they'll be back, "see you next time" or "will you be down this way again". But with many of our business guests away from the training side, we are not their overall destination and we accept that circumstances will mean that there are occasions where we have to say "goodbye".

Chris's note didn't come out of the blue. I had spoken with Xxxxx a few days ago and was aware that she was moving on, and doing so in a positive way. Isn't that great when there is so much doom and gloom around at the moment? She told me that the nearest offices that her new company has are Xxxxxxxxx (named American city where Lisa and I changed planes a couple of weeks ago!) so it's improbable in the extreme that we'll see her on business.

But also since I wrote my last entry here, we've taken another honeymoon night booking. And with bookings such as that, we *are* the destination - I'm delighted that we've been chosen, double delighted that we're chosen on recommendation, and triple delighted because for this booking we are truly a destination business.

(See here for further "Destination Business" information - if you run a destination business you take the variable of other parties out of the equation. And see here for it in a Melksham chamber of Commerce context!)

Posted by gje at 08:11 AM | Comments (0)


Related topics: via article database

April 09, 2009

Building down expectations


Ask about Wiltshire, hotel accommodation, business meetings, travel, and open source topics - ask Graham the tutor!

I visited a web site where I had posted a short article and clicked on the link to "contact the author" - i.e. myself. And I found myself cautioned as follows:

• A response from wellho is not guaranteed.
• Please don't ask wellho to do your homework or to plan your travels - ask in the forum for help - Travel Forum
• wellho is probably not an expert on the location, just someone who visited.
• Please be polite even if you don't agree with things said by wellho

Fair comment for most posters, I guess but talk about putting people off writing!

For the record:

• yes, I do appreciate people who write to me being polite (and with a very few exceptions indeed, people are polite and it really doesn't need saying).
•You will get a response from me if you're not a spammer (and if you don't, remind me!)
• hey - I would be delighted to make suggestions about what to do in Wiltshire and where to stay
•I may not be the greatest expert but I have done a darned site more than visit!

But I do go along with "won't do your homework" ... I'm sure I'll send back encouragement and some links though!

Posted by gje at 05:32 PM | Comments (0)


Related topics: via article database

Using Python with OpenOffice

The Python-UNO bridge can be used to call up pieces of Python code from within OpenOffice. The source code of a "hello world" example can be found at http://wiki.services.openoffice.org/wiki/PyUNO_bridge, showing you how to start OpenOffice looking for a connection on a TCP/IP port, and then how to run a Python program to pass data - in this case the text "hello world" - into it.

There are also some recent articles (Feb 2009) on Linux Journal - start at http://www.linuxjournal.com/content/python-pyuno-hello-world-addon-openoffice which includes an example, and links to other articles which cover the conversion of spreadsheets to csv files ( http://www.linuxjournal.com/node/1007797 )

If all this is more than you need, there's nothing to stop you importing / exporting data to / from OpenOffice in a file format like CSV .. using files that happen to have been written / read by / from Python.

Posted by gje at 05:20 PM | Comments (0)


Related topics: via article database

Useful link: Python training

April 08, 2009

Commission Creep

"Please sign this and return it - it confirms our telephone conversation". Fortunately, we're small enough to know who we have spoken to, and sharp enough (I think) to pick out rate changes in such documents which could so easily slip by in a larger office.

We're noticing commission creep. The well known hotel booking service that tried the trick described above (I am tempted to name and shame them) want to have us pay them 12.5% rather than 10% on hotel bookings. Our credit card commission rate had crept up - or perhaps leapt up (as an illustration - NOT the real figures - 2.5% to 2.7% looks tiny but is an 8% increase) and loan rates add "just" a couple of percentage points above base rate - so the interest has gone down from this time last year, but the bank is making sure that what it gets has rocketed.

We *did* adjust our prices last December to pass on to you - our customers - the 2.5% saving that Alastair Darling provided as a boost to help the economy. It looks like the services behind our service feel that the 2.5% should not have been taken off your bill, but rather should be gathered by them to help them put their own books in order.

Posted by gje at 04:39 PM | Comments (0)


Related topics: via article database

April 07, 2009

Out in the Vale of Pewsey

On Saturday, we took the day off / out. We've been holed up too long at home working on accounts, web sites, and all the other stuff that comes with our business so that - although we are not short of things to do - we needed a refresh.

I have often driven through Pewsey ... but never stopped. So on Saturday we stopped - and what a pleasant little town it is. The architecture of this building, on the curve of the road, was very interesting. More pictures of Pewsey here

Posted by gje at 10:44 PM | Comments (0)


Related topics: via article database

April 06, 2009

Java on the Web Server - course for delegates with some prior Java experience

We're running a one-off public course from 29th April to 1st May 2009 - 3 days - for delegates with prior Java experience who want to learn about how to use it on the web - that's servlets, sessions, JSPs, standard tag libraries, .jars and .wars and web application configuration under Apache Tomcat. Also a brief overview of Struts / Spring. The course uses our own materials that are regularly used on private courses

Venue: Melksham, Wiltshire, England
Price: £850.00 + VAT; £750.00 +VAT for second and subsequent places on same order.

Many of our delegates are from locations that are beyond a daily commute to our training centre, and we offer rooms at an extra £60.00 + VAT at the training centre - Well House Manor.

Please phone us on 01225 708225, email via info@wellho.net, or ask for further details here if this course is of interest. As it is a one-off special, it does not appear in our regular course listings; if you are looking for a course that introduces you to Java, we offer a regular Learning to program in Java (for newcomers to programming) and a regular Java bootcamp (for those with prior programming experience). We also run a Deploying Apache httpd and Tomcat course for delegates who will be installing Java applications on a web server and looking after them, but not writing code themselves.

Posted by gje at 10:06 AM | Comments (0)


Related topics: via article database

Useful link: Java training

April 05, 2009

Make your business a DESTINATION business

I'm writing this for Melksham. And for Melksham's Businesses. Let's make Melksham a town of destination businesses.

Are YOU running a business that trades in Melksham? If you are, then read on - there's something in this for you AND there's something in this for the town. And - together - it's for the mutual profitable benefit of your business and of the town.

What do I mean by a Destination Business? I mean a business to which people will travel, - rather than one they'll use because it happens to be where they're passing. I'm not limiting myself to the physical world - I'm talking online too.

Diagram - visitors to Well House Consultants' web site from the UK over a 24 hour period. See here for worldwide diagrams and ask me here if you want to 'do' diagrams like this on your web site. Diagram updates daily.

Why do I want to be a destination business?

Because I don't want to have to rely on the reflected glory of other businesses that ARE destinations in order to support my own business!

At the start of January, Woolworths in Melksham closed its doors. Talk to the other local traders who are not destinations, and you'll hear them telling you how the number of people through their doors dropped. Talk to local traders who are destinations, and they'll talk about how the vacant shop front can at least be kept nice, and what they would like to see in there in the future.

How do I make myself a destination?

By providing a something that people will travel (in real life, or online) to buy! A quality product. An unusual product. Excellent customer service. Something that's tailored to meet their needs. A friendly welcome. Follow ups that make them feel special. Co-operation with other businesses to turn your network into a destination. Providing marketing information that makes your destination an easy one to reach. Making it physically and logically easy to reach your destination.

But my business isn't suited to being a destination one

"Oh yes it IS". Well House Consultants (my own business) has two very different products. The first is a computer training company, and our courses are so different that new customers ask "where is Melksham?" as part of their booking process. But the second business is a hotel ... and you would think that people don't come just for the hotel. But they do! Training delegates come back with their partners for weekends. Honeymooners looking for a quiet, romantic spot for their first nights together will stop with us. People attending trade shows in the town will go out of their way to stay with us when they're doing another show in a neighbouring town.

And it's a matter of degree, too. It may be that Mr G wouldn't be coming to Melksham at all if he wasn't due to have meetings at KB - but when he's in town, he makes sure that his destination in the evening is Well House Manor.

The wider picture

Now here is something beautiful. If you follow the "destination business" philopohy, you're also going to be promoting the interests of your town (Melksham in our case) and of complimentary businesses. And you can make a real contribution in your own specialised way to the community. Encourage the destination choice your customers make by supporting good travel links, a welcoming town, a wide selection of eateries and complimentary stores. It become natural to work with the area board and the town council to represent your needs and your town's needs to the Unitary Authority, and with organisations such as the Chamber of Commerce and the FSB to futher your needs at all levels from locally to nationally.

What now

If you want to learn more about the Chamber and what it's doing in Melksham, then make your destination Well House Manor on 23rd April for our Chamber of Commerce Networking Breakfast. Or if you've missed that, we have a networking lunch on 23rd June and a Networking Evening on 23rd September. None of those dates suitable? Still get in touch! I'm graham@wellho.net and I aim to answer all emails within 24 hours.

Sunday, 5th April ... - The Chamber of Commerce event on 23rd April is already open for bookings. It starts at 10 a.m. at Well House Manor on Spa Road, and we're limited to 20 places as it's a networking breakfast with a keynote talk on effective networking by Andrew Jackson. Places are £10.00 for Chamber members, and £15.00 for non-members. Call us on 01225 708225 or Ann Marie - the Chamber's Admin - on 01225 355553 (mornings) to reserve your place.

Posted by gje at 09:46 AM | Comments (0)


Related topics: via article database

Spring Sprung

Yesterday was a lovely Spring day ... with bright sunlight making the old clock on the side of the Church (a.k.a. the sundial) useful for once after a long and dull winter ;-). In the field and on the hillsides, white horses (of both animal and chalk varieties) added to the scene.

It feels a lot longer than ten days since we got back from the USA - a full week of training, a hotel to run, a rearrangement of staffing to cope with a sudden departure (thank goodness we ask "what if" in general terms) and a flurry of activities on both Chamber of Commerce and Rail Campaign sides. And that's quite excluding things I can't go into detail with, and a very welcome enquiry stream to handle as well. I'm loathe to say "green shoots", but I can say that the quiet winter period looks like it might have drawn to a close.

So we took yesterday as a break - a day to recharge, to look around a couple of places that we hadn't visited before. Pictures and comments will follow, and I'll update our wiki destination pages in due course ... but for the moment I have set a puzzler for some of my rail related friends which I have marked "a very tricky one?" and I want it to stay that way even for them who research and find this entry ((top marks for finding it but - sorry - I'm not telling you here!!)).

We do have some lovely countryside around - indeed I would recommend that you (if you're not from the area) make Wiltshire your destination for some days out and perhaps Well House Manor your overnight stop - love to catch up with you on any of the coming Bank Holiday weekends that are coming up as the country springs into spring!

Posted by gje at 06:59 AM | Comments (0)


Related topics: via article database

April 04, 2009

Choosing a railway station fairly in PHP

I've been transferring the West Wilts Rail Users Group web site into a wiki this evening ... and came up with the question "How do I fairly choose which station to put on their front page".

Of course, I favour Melksham. It's far and away the one that needs all the help and support it can get from such groups, with just 2 trains a day each way for a population of over 20,000 (and compare that to an estimated 100 departures a day from Westbury - a town of half the size).

But - seriously folks - it has to be a randomly chosen station.

I don't know which is shown at the top of this article at the moment as it's fed by a PHP script that chooses at random:

<?php
header("content-type: image/jpeg");
$opts = array("avo","boa","tro","mkm","wes","dmh","war");
$last = $opts[rand(0,6)];
$fh = fopen("wwrug_$last.jpg","r");
$blow = fread($fh,filesize("wwrug_$last.jpg"));
print $blow;
?>

Want to learn more? Try our PHP Techniques Workshop

Posted by gje at 10:11 PM | Comments (0)


Related topics: via article database

Useful link: PHP training

April 03, 2009

Why do we delay new forum members through authorisation?

It's a big step for many people to sign up to a forum; perhaps they have been visiting as a guest for weeks or months, and something they have read has triggered them to take the final step and say "I want to contribute" and sign up. Signing up to the forums that I administer is free, but it's still a big step for people - so why do we then, seemingly, make it harder that it needs to be?

In a nutshell, we want to maintain the quality of the forum - to ensure that members who are signed up are there because they are real people, wanting to read about / talk about the subjects that the forums covers. And there's also the legal issue that we need to have at some comeback to the poster if what is posted breaks boundaries such as copyright, incitement, impersonation or decency ... quite apart from our own guidelines, where we want to ensure that we don't get signups from the same person for lots of accounts, or people being members so that they can attempt to sell things to our members through the p.m. system, or as trolls.

At first signup, people are asked for an email address and we validate that. On most of our forums, they are also asked to retype a word that's shown in a graphic and does not appear in the HTML source at all - that's to help weed out automated programs. See here for a brief intro to the techniques involved, and here to see it in use (with an easy graphic that a sophisticated cracking program possibly could get past, it has to be said) to see it in use. But that doesn't trap the real, human applicant with a different agenda to ours.

So as as second step, the information gathered at signup is passed through to one of our administrators, who takes a look at the data manually. Some of the accounts requested are blazingly obvious to authorise - the account with the email address that's already known to us, for example (if someone has falsified an email address, then our known contact will get an unexpected email and the issue is flagged without the perpetrator getting access). Other requests are very clearly false ones, for example user names that include a pharmaceutical product name with the "I" changed to a "1". But there's a proportion that fall in the middle that need further investigation.

Perhaps I should stop writing at this point. ;-) . Perhaps I am just about to give you the inside information that tells you what I look for in a signup request that convinces me "genuine" or "false", or leads me to authorise but keep a watching brief. So let's just say that there are a number of tools around, a number of pieces of information. And there are some very good people I can ask for their thoughts / opinions / research who act as moderators on some of the boards I administer. In those cases which are a really close call, a friendly email asking a little more, rather than giving authorisation straight away, adds a further loop to the cycle but results in very clear extra data which makes a decision blindingly obvious.

Forums that we run / will be running / ran:
First Great Western Coffee Shop Unofficial First Great Western Passenger discussions
Ask the Tutor For course delegate and others to ask Open Source and technical questions
Save The Train Swindon - Salisbury railway line - campaign for decent service (heavy spam signups - please email graham@wellho.net too if you sign up!)
Melksham Chamber of Commerce (not yet publicised / launched)
Opentalk - our previous forum for delegates, now archived and closed to new signups.

Posted by gje at 04:53 AM | Comments (0)


Related topics: via article database

April 02, 2009

Finding your java program - the CLASSPATH variable

When you run a Java 'program' (strictly, the main method of a class), it looks for that class in a file with the name given and with a .class extension in the places listed in the CLASSPATH environment variable. Failure to have the right CLASSPATH set results in a spectacular series of error messages!

[trainee@easterton ~]$ java Nother
Exception in thread "main" java.lang.NoClassDefFoundError: Nother
Caused by: java.lang.ClassNotFoundException: Nother
  at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:289)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
  at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
[trainee@easterton ~]$ export CLASSPATH=/home/trainee/a9tom
[trainee@easterton ~]$ java Nother
*** I love Trowbridge ***
*** I am a bit crazy ***
*** 1 => 2 ***
[trainee@easterton ~]$

Note:

CLASSPATH may include a series of : separated directories (; on windows)

CLASSPATH may contain the names of jar files, in which case the class will run straight from the jar

Posted by gje at 05:02 PM | Comments (0)


Related topics: via article database

Useful link: Java training

Which Version of Java am I running?

Write a test program to use the getProperty method on System:

public class Sample {
  public static void main (String [] args) {
  System.out.println("*** Hello Melksham ***");
  System.out.println(System.getProperty("java.vm.vendor").toString());
  System.out.println(System.getProperty("java.version").toString());
  }
}

Compile it

[trainee@easterton a9tom]$ javac Sample.java

and run it!

[trainee@easterton a9tom]$ java Sample
*** Hello Melksham ***
Sun Microsystems Inc.
1.6.0_10-beta
[trainee@easterton a9tom]$

It is VITAL (did I shout vital loudly enough for you?) to have the correct version of Java in use when you run your Tomcat!. Today's course ... I am using Sun's Java 6 (a.k.a. 1.6) which will work with Apache Tomcat up to version 6. Don't assume that Tomcat and Java version numbers always match up nicely in this way - they don't

Posted by gje at 04:52 PM | Comments (0)


Related topics: via article database

Useful link: Java training

April 01, 2009

Answering a question with a question

I have a target of giving a good answer to 90% of questions that I am asked in email within 48 hours of receiveing the question, and on a first response ... but just occasionally, we have to accept that we have to ask supplimentary questions. Here are two that have pulled my average down so far this week:

Q: As part of our GCSE ICT course we have to make E-Cards. In these E-cards we have to put photos in. As a result of this I have chosen a picture off of your website and I need permission for it to go on my coursework. Could you please reply back saying if I can/cannot use this?

A: Please tell me which photo you're interested in usingi. Most of them are © Well House Consultants and I can grant permission as described here, but a few are other people's pictures that we host, and I'll have to refer you to them for permission.

Q: I would like to attend C++, C#, Java courses at your training center. Could You please provide me with the necessary information regarding the mentioned courses?

A: We run a whole series of different C and C++ and Java courses ... but I need to know a little bit more before I can send you information about the right course. To start with, can you tell me if you have ever programmed before, and if so in what language ...

Posted by gje at 05:05 PM | Comments (0)


Related topics: via article database

Business Networking for Melksham - 23rd April

Melksham Chamber of Commerce and Industry is pleased to announce a series of networking events ... specially for Melksham's businesses.

* Make new contacts in other Melksham businesses and exchange information.
* Learn how local government changes will effect Melksham businesses.
* Recession-beating ideas - how are others handling these interesting times?
And learn more about your local Chamber of Commerce too!

On Thursday, 23rd April, we're holding a Business Networking Breakfast at Well House Manor on Spa Road - and to celebrate St. George's day, anyone called "George" can attend for free. Arrive for a 7 O'Clock start ... and we'll conclude by 9 O'Clock - though you'll be welcome to stay for longer to continue networking.

Can't make a breakfast? We're following up with a business networking lunch on Tuesday, 23rd June, and a networking evening on Wednesday, 23rd September. Cost - 10 pounds per person (Chamber of Commerce members), 15 pounds per person (nonmembers). Members may attend all events; nonmembers limited to one event each.

Places are limited. To book, or to find our more about the Chamber of Commerce, please contact Ann-Marie Escott on 01225 355553 (Administrator, mornings), Colin Harrison (Chairman) on 0845 0943558 or Graham Ellis (President) on 01225 708225 / email graham@wellho.net.

------------- Background ----------------

Melksham Chamber of Commerce and Industry is a member of the Wessex Association of Chambers of Commerce. The Chamber meets regularly at Well House Manor in Melksham, representing local business interests at a town and county level and providing information and support to local businesses. The activities of the chamber include business networking events, support and training provision, marketing and discounts for member businesses as well as social events. With the current re-arrangement of local politics in Wiltshire, the Chamber of Commerce can keep your business informed, and will represent the business community in Melksham with the area board, and at County.

In the current economic climate, the Chamber of Commerce is working to provide information and assistance for local Melksham businesses, in association with other organisations such as the Town Council and the Tourist Information centre. Melksham is a spirited town of over 20,000 people, with considerable retail, industrial, and online sectors.

Posted by gje at 08:09 AM | Comments (0)


Related topics: via article database