The nutbourneplace.com website was put together to highlight useful links to walks and attractions for visitors to the annexe. Several of Adrian’s pages, e.g., the Walks page, feature a series of customised Google Maps within the WordPress site.
The process of creating this geographical content was reasonably straightforward, if slightly demanding:
Walks were undertaken, enjoyably, with a smart watch recording the route using Google Fit.
The smart watch recorded direction, elevation and pace in GPS Exchange Format (GPX) files.
These files could be downloaded by visiting the Google Takeout site, selecting Google Fit data.
Each GPX file was converted to Keyhole Markup Language (KML) using an online converter for use in Google Maps.
Finally, the resulting KML files could be uploaded to the webserver hosting the nutbourneplace.com website.
Coding required one large JavaScript block specifying all of the maps used on the site.
<script>
// Initialize and add the map
function initMap() {
// The location of NP
const NP = { lat: 50.960043, lng: -0.470723 };
// Map #1, centered at NP
const map_1 = new google.maps.Map(document.getElementById("map_1"), {
mapTypeId: 'satellite',
center: NP,
});
// NP marker on this map
const marker_1 = new google.maps.Marker({
position: NP,
title: 'Nutbourne Place',
label: 'NP',
map: map_1,
});
// Map #2, centered at NP
const map_2 = new google.maps.Map(document.getElementById("map_2"), {
mapTypeId: 'satellite',
center: NP,
});
// NP marker on this map
const marker_2 = new google.maps.Marker({
position: NP,
title: 'Nutbourne Place',
label: 'NP',
map: map_2,
});
// Map #3, centered at NP
const map_3 = new google.maps.Map(document.getElementById("map_3"), {
mapTypeId: 'satellite',
center: NP,
});
// NP marker on this map
const marker_3 = new google.maps.Marker({
position: NP,
title: 'Nutbourne Place',
label: 'NP',
map: map_3,
});
// Map #4, centered at NP
const map_4 = new google.maps.Map(document.getElementById("map_4"), {
mapTypeId: 'satellite',
center: NP,
});
// NP marker on this map
const marker_4 = new google.maps.Marker({
position: NP,
title: 'Nutbourne Place',
label: 'NP',
map: map_4,
});
// KML - long_sheep_loop
const long_sheep_loop_Layer = new google.maps.KmlLayer({
url: "https://www.nutbourneplace.com/wp-content/uploads/2021/06/2021-05-10_long_sheep_loop.kml",
map: map_1,
});
// KML - gunnera_nyetimber_woods
const gunnera_nyetimber_woods_Layer = new google.maps.KmlLayer({
url: "https://www.nutbourneplace.com/wp-content/uploads/2021/06/2021-05-13_gunnera_nyetimber_woods.kml",
map: map_2,
});
// KML - local_llama_loop
const local_llama_loop_Layer = new google.maps.KmlLayer({
url: "https://www.nutbourneplace.com/wp-content/uploads/2021/06/2021-05-19_local_llama_loop.kml",
map: map_3,
});
// KML - long sheep loop
const woodland_lake_millpond_Layer = new google.maps.KmlLayer({
url: "https://www.nutbourneplace.com/wp-content/uploads/2021/06/2021-05-25_woodland_lake_millpond.kml",
map: map_4,
});
}
</script>
Each map was named so that individual maps could be pulled into pages through DIVs, e.g., map_1.
<!-- The div element for the map -->
<div id="map_1" style="height: 400px; width: 100%;"></div>
This sort of process illustrates what can be achieved with modern technology. Additional setup was required to enable the Google Maps API within the Google Cloud Platform, and more coding was required to initialise the Maps clients through JavaScript calls with API keys. Try it and you may well get there eventually…
Sadly, of course, it can all sometimes go a bit pear! Similar data collection and mapping of US Army personnel’s exercise routines on Strava has created perfect maps of overseas bases.
No wonder it is sometimes advisable to turn our smart devices off!
Allt Beag is a stone-built, Victorian house in the beautiful coastal village of Tighnabruaich, Argyll & Bute.
The house was purchased by Adrian and his family in late 2005 and substantially renovated in the months that followed. The website itself dates from around 2009, when attempts were made to rent out Allt Beag for holiday lets, following the purchase of Ascog Farm on the Isle of Bute the previous year.
Adrian was always particularly pleased with the image shuffling array on the Allt Beag website, enabled with the following code.
<!--- serve the right image for the section --->
<cfif listcontains("house,interior,garden,sea,surround", section, ",") is 0>
<!--- choose a section at random --->
<cfset section_number = randrange(1,4)>
<cfset section = listgetat("house,interior,garden,sea,surround", section_number, ",")>
<cfelse>
<!--- we are fine --->
</cfif>
<!--- shuffle the order of the images --->
<!--- FROM http://www.bennadel.com/blog/280-Randomly-Sort-A-ColdFusion-Array-Updated-Thanks-Mark-Mandel.htm --->
<cfset arrayImageNumbers = ListToArray(
"001,002,003,004,005,006,007,008"
) />
<!--- Shuffle it (ie. randomly sort it). --->
<cfset CreateObject(
"java",
"java.util.Collections"
).Shuffle(
arrayImageNumbers
) />
<!--- <cfoutput>#arraytolist(arrayImageNumbers)#</cfoutput><br /><br /> --->
<!--- output the images --->
<cfoutput>
<div id="leftcolumn">
<div class="innertube">
<!--- images in the golden rectangle configuration with mouseovers --->
<IMG STYLE="position:absolute; TOP: 0px; LEFT: 0px; WIDTH:450px; HEIGHT:450px" SRC="images/#section#_#arrayImageNumbers[1]#_a.jpg" NAME="image_a">
<IMG STYLE="position:absolute; TOP:450px; LEFT: 0px; WIDTH:278px; HEIGHT:278px" SRC="images/#section#_#arrayImageNumbers[2]#_a.jpg" NAME="image_b" onMouseOver="document.image_a.src='images/#section#_#arrayImageNumbers[2]#_a.jpg';document.image_b.src='images/#section#_#arrayImageNumbers[1]#_b.jpg';" onMouseOut="document.image_a.src='images/#section#_#arrayImageNumbers[1]#_a.jpg';document.image_b.src='images/#section#_#arrayImageNumbers[2]#_b.jpg';">
<IMG STYLE="position:absolute; TOP:556px; LEFT:278px; WIDTH:172px; HEIGHT:172px" SRC="images/#section#_#arrayImageNumbers[3]#_a.jpg" NAME="image_c" onMouseOver="document.image_a.src='images/#section#_#arrayImageNumbers[3]#_a.jpg';document.image_c.src='images/#section#_#arrayImageNumbers[1]#_c.jpg';" onMouseOut="document.image_a.src='images/#section#_#arrayImageNumbers[1]#_a.jpg';document.image_c.src='images/#section#_#arrayImageNumbers[3]#_c.jpg';">
<IMG STYLE="position:absolute; TOP:450px; LEFT:344px; WIDTH:106px; HEIGHT:106px" SRC="images/#section#_#arrayImageNumbers[4]#_a.jpg" NAME="image_d" onMouseOver="document.image_a.src='images/#section#_#arrayImageNumbers[4]#_a.jpg';document.image_d.src='images/#section#_#arrayImageNumbers[1]#_d.jpg';" onMouseOut="document.image_a.src='images/#section#_#arrayImageNumbers[1]#_a.jpg';document.image_d.src='images/#section#_#arrayImageNumbers[4]#_d.jpg';">
<IMG STYLE="position:absolute; TOP:450px; LEFT:278px; WIDTH: 66px; HEIGHT: 66px" SRC="images/#section#_#arrayImageNumbers[5]#_a.jpg" NAME="image_e" onMouseOver="document.image_a.src='images/#section#_#arrayImageNumbers[5]#_a.jpg';document.image_e.src='images/#section#_#arrayImageNumbers[1]#_e.jpg';" onMouseOut="document.image_a.src='images/#section#_#arrayImageNumbers[1]#_a.jpg';document.image_e.src='images/#section#_#arrayImageNumbers[5]#_e.jpg';">
<IMG STYLE="position:absolute; TOP:516px; LEFT:278px; WIDTH: 40px; HEIGHT: 40px" SRC="images/#section#_#arrayImageNumbers[6]#_a.jpg" NAME="image_f" onMouseOver="document.image_a.src='images/#section#_#arrayImageNumbers[6]#_a.jpg';document.image_f.src='images/#section#_#arrayImageNumbers[1]#_f.jpg';" onMouseOut="document.image_a.src='images/#section#_#arrayImageNumbers[1]#_a.jpg';document.image_f.src='images/#section#_#arrayImageNumbers[6]#_f.jpg';">
<IMG STYLE="position:absolute; TOP:516px; LEFT:318px; WIDTH: 26px; HEIGHT: 26px" SRC="images/#section#_#arrayImageNumbers[7]#_a.jpg" NAME="image_g" onMouseOver="document.image_a.src='images/#section#_#arrayImageNumbers[7]#_a.jpg';document.image_g.src='images/#section#_#arrayImageNumbers[1]#_g.jpg';" onMouseOut="document.image_a.src='images/#section#_#arrayImageNumbers[1]#_a.jpg';document.image_g.src='images/#section#_#arrayImageNumbers[7]#_g.jpg';">
<IMG STYLE="position:absolute; TOP:542px; LEFT:318px; WIDTH: 14px; HEIGHT: 14px" SRC="images/#section#_#arrayImageNumbers[8]#_a.jpg" NAME="image_h" onMouseOver="document.image_a.src='images/#section#_#arrayImageNumbers[8]#_a.jpg';document.image_h.src='images/#section#_#arrayImageNumbers[1]#_h.jpg';" onMouseOut="document.image_a.src='images/#section#_#arrayImageNumbers[1]#_a.jpg';document.image_h.src='images/#section#_#arrayImageNumbers[8]#_h.jpg';">
<!--- tiny image in centre for contact info --->
<IMG STYLE="position:absolute; TOP:542px; LEFT:332px; WIDTH: 12px; HEIGHT: 14px" SRC="images/allt_beag_tiny.jpg" NAME="image_i" ALT="information" onMouseOver="document.image_a.src='images/allt_beag_main.jpg';document.image_i.src='images/allt_beag_tiny.jpg';" onMouseOut="document.image_a.src='images/#section#_#arrayImageNumbers[1]#_a.jpg';document.image_i.src='images/allt_beag_tiny.jpg';">
</div>
</div>
</cfoutput>
Although written in ColdFusion this logic could easily be adapted to PHP or many other programming languages. A simple macro for Adobe Photoshop was used to resize square images into the many different pixel dimensions used to fill the image matrix.
Allt Beag was eventually sold in late 2009 and, while the house still stands, it seems to have changed a lot recently. Another dwelling has been built in the gardens and a new conservatory put up.
The intention, never fully developed in 2008, was to build a B2C website selling car tyres. Behind the scenes, after inputting a tyre size (e.g., 1955517V) the site found prices from a number of suppliers and selected the best value products.
The website was left unfinished but illustrates the power of the web to ‘disintermediate’ certain transactions. Theoretically, many consumers could have searched for tyres on a website back-ended to a handful of major tyre manufacturers and distributors.
If that sounds a lot like BlackCircles, founded earlier in 2001, it was.
Adrian’s family own Ascog Farm on the Isle of Bute, Scotland. The farm is one of very few that is not owned by the Mount Stuart Trust, the ‘Bute Estate’ which describes itself as ‘the custodian of 87% of the Isle of Bute.’
The project was designed to offer a much higher level of community pay-out than is normal. Adrian also told the local councillors that he welcomed community ownership of two out of the three proposed turbines if the funds could be raised (approximately £ million/turbine) to pay for their installation.
Despite all this detailed work some predictable hostility to the scheme, whipped up locally, and a far from imaginative Landscape Wind Energy Capacity Study (LWECS) conducted by Argyll & Bute Council more or less doomed the prospect of gaining planning consent, even before the plans had been submitted.
Sure enough, the application for wind turbines at Ascog Farm was rejected at planning and at appeal, solely on the basis of views.
Adrian has produced a set of slides covering the whole project, these are shown below.
Adrian presented the slides at Portsmouth’s Pint of Science festival in May 2017 and has since incorporated this knowledge into his teaching, notably on The Green Economy course he designed and delivered at the University of Portsmouth.
Needless to say, since the planning application was refused, global CO2 emissions have continued to rise and no meaningful green energy has been developed on the Isle of Bute.
Allegran Advertising Limited was spun out of Allegran Limited in February 2005. The new company was designed to explore non-core business and one of the first concepts to emerge from this development was HomeHunter, soon rechristened QpHomes. Adrian was always rather keep on the HomeHunter concept and created most of the database architecture and programming logic, allowing users to self-describe their property for sale, adding rooms, measurements and photographs as they went.
QpHomes amassed over 12,000 property listings between April 2004 and March 2006, when the operating company name was changed to Vivid Medianet Limited. However, despite interest from some major companies (including Tesco) in this space, the legal position of self-listed property advertisements was always somewhat unclear. Listings sites could have been treated as estate agents, necessitating the checking of all user-generated content for accuracy.
Clearly, this was not feasible and not until 2012 did government propose to allow private sale ads by amending the Estate Agents Act and repealing the Property Misdescriptions Act. All this, of course, came too late for QpHomes which closed its doors in 2006. Tesco abandoned its Property Market in 2008 and sold the business to Spicerhaart.
Vivid Medianet Limited was renamed GoCarbonFree Limited in March 2007 and focused on the new GoCarbonFree website, a B2C points collection site which aimed to buy and ‘retire’ carbon credits through commissions on user’s shopping interactions.
Unfortunately, like QpHomes, this concept would also eventually be filed under the What might have been category.
The 2001 United Kingdom General Election was held on Thursday 7 June 2001.
Having produced a ground-breaking website for the 1997 UK General Election, Adrian and his colleagues were keen to repeat the exercise for 2001. Some of the data from 1997 could be re-used in the 2001 website, e.g., to calculate swings, while a complete re-design featured new navigation (without frames), new maps, much more data and expanded expert commentary from Dr Robert Waller and Dr Byron Criddle, co-authors of The Almanac of British Politics.
Work on the project was in hand before Adrian and his business partner left Business Geographics Limited in late 2000 to co-found Lead Hat Limited, a full service Internet development agency. Their departure did not go particularly smoothly and, for some time, it looked as if the possibility of publishing a 2001 Election website under the Lead Hat brand, or at all, was in doubt.
Happily, however, several of the ‘cease and desist’ letters that were issued at the time failed to escalate, and Adrian started working alongside several former freelance programming colleagues from Albedo Systems Limited, plus new data partners CACI Limited (for geodemographics and income profiles) and the Automobile Association Limited (for base maps).
A media partnership, following discussions with several interested parties, was again announced with Telegraph Group Limited, publishers of The Daily Telegraph newspaper. This arrangement provided some funding and, crucially, integrated the team’s maps and data with the Telegraph’s online press coverage.
The Election 2001 website was notable for a few innovations, mostly hidden behind the scenes:
Database-driven pages featuring maps, data, text and graphs were published from a custom-built Content Management System (CMS), written in ColdFusion over a Microsoft SQL Server 2000 database, to static (.htm) HTML files.
These static HTML files, together with image files, several ColdFusion (.cfm) files required for search and all the other ephemera needed for the website, were copied by the CMS to a staging server. A full run to update and replace all files took ca. 45 minutes.
The CMS also offered mechanisms for Robert Waller and Byron Criddle to upload or update their constituency and candidate profiles remotely, and for Telegraph journalists to add links to constituency pages or body copy.
On Election night a small army of Telegraph staff watched the television and the wires and updated the results as they came in. Updated pages with results were deployed to the live webservers, once again as static HTML files.
The site ran on a small fleet of load-balanced Windows NT webservers running Microsoft’s IIS (Internet Information Services) in a co-located Level 3 hosting centre in the old Gordon’s Gin factory on Goswell Road, London.
The CMS system worked very well, and the publication to static HTML completely eliminated frustrating problems encountered earlier running a high usage site with many database queries (not enough of which were cached, probably) straight from ColdFusion, which had just been re-released as a somewhat flaky Java-based server that didn’t play all that well with Microsoft Windows NT.
Getting this old site going again has been a journey in its own right, requiring a mix of database, computing infrastructure, coding and expert knowledge acquired back then but updated for the Cloud and open-source era.
If you’re looking at doing something similar the advice below may be of some use, or perhaps some consultancy might help?
How to restore a SQL Server 2000 backup to SQL Server 2025
Fortunately, Adrian had taken a backup of the 2001 Election website. Unfortunately, this backup was made using an ancient version of the Relational Database Management Software (RDBMS) Microsoft SQL Server 2000. The backup (.bak) files would not restore on SQL Server 2025.
SQL Server 2008 R2 Express would restore the SQL Server 2000 database. It was then necessary to issue some Structured Query Language (SQL) and/or Transact-SQL queries:
SELECT
name,
compatibility_level
FROM sys.databases;
The following statement was used to update the compatibility_level for the old, restored, database.
ALTER DATABASE "[DB_NAME]" SET COMPATIBILITY_LEVEL = 100;
The first query was re-run to check this had worked, which it had, and the database was then backed up in the normal way from Microsoft SQL Server Management Studio (the version bundled in the Microsoft SQL Server 2008 R2 Express with Service Pack 2 link above).
Having not used Microsoft SQL Server in years the next stage was the most amazing…
The installation instructions are detailed and easy enough to follow and, so long as you’re running a VM with at least 2GB RAM, Microsoft’s RDBMS software will install. Adrian created an Amazon AWS Lightsail instance running Ubuntu 22.04 but he could have used a VM on AWS, Azure or GCP as the host for his SQL Server 2025 database.
Running the following query in SQL Server Management Studio 21 connected to the server (with appropriate firewall rules etc.):
select @@version;
Returned:
Microsoft SQL Server 2025 (CTP2.1) - 17.0.800.3 (X64)
Jun 12 2025 14:47:57
Copyright (C) 2025 Microsoft Corporation
Express Edition (64-bit) on Linux (Ubuntu 22.04.5 LTS) <X64>
The compatibility_level=100 backup file could now be SFTP’d up to the Cloud Ubuntu Linux VM (to /tmp, not forgetting to chown root:root [backupfile.bak]) having hopped from SQL Server 2000 to 2008. The backups, taken in 2001, could now be successfully restored via SQL Server Management Studio on the Ubuntu RDBMS box.
So, a Microsoft (Windows) SQL Server database structured and populated in 2000/2001 could be used in 2025 on a Cloud-based Linux server running Microsoft SQL Server 2025. Amazing…
How to install and run Lucee CFML server
ColdFusion was initially released by Allaire, later taken over by Macromedia and later still subsumed by Adobe. While you can still buy a ColdFusion licence from Adobe there is a free, open source alternative: Lucee.
The Lucee CFML server and extensions may be downloaded for Linux, Windows, as a WAR file for a Java servlet or in several other flavours. Adrian chose the Linux (x64) Installer version for use on another Ubuntu Amazon AWS Lightsail instance.
cd
wget https://cdn.lucee.org/lucee-6.2.1.122-linux-x64-installer.run
sudo chmod +x lucee-6.2.1.122-linux-x64-installer.run
sudo ./lucee-6.2.1.122-linux-x64-installer.run
The installation runs smoothly enough in a text-based SSH environment and, upon visiting your installation in a browser at http://[your_public_ip_address]:8888/ you should be greeted by the words ‘You are now successfully running Lucee 6.2.1.122 on your system!’ If not:
Make sure you have assigned a public IP address to your Lightsail instance or EC2 VM etc.
Make sure you have opened port 8888 in the Lightsail (or EC2 etc.) firewall but restrict access to your own client IP.
The package installed Tomcat Version: 11.0.6 and Java: 21.0.7+6-LTS on an Ubuntu 22.04.5 LTS VM running Apache2. Once the installation process is complete your public IP address should have a Lucee admin server at:
In addition to firewall rules Adrian chose to further secure his Lucee installation by enabling Captcha but received the message ‘Fontconfig head is null, check your fonts or fonts configuration’.
A quick search revealed a possible solution to the problem, while a second search showed that font ttf-dejavu had been renamed necessitating the following command.
After a restart of the computer (sudo shutdown -r now) the Lucee admin page has Captcha and all is reasonably secure.
How to set permissions for /var/www
The directories and files off /var/www on a Linux webserver should have appropriate permissions for (Apache2) access and (external) security.
Every time Adrian has looked for the answer to this question he has found competing, and sometimes incorrect, advice.
For a machine (e.g., an EC2 or Lightsail VM) where ubuntu is the sudo user (use getent group sudo to list the sudo users) and www-data is the Apache2 webserver group his preferred solution, based on some research, is:
These commands can be saved in a shell script (e.g., fix_perms.sh in /var/www) containing the lines:
#!/bin/bash
sudo chown -R ubuntu:www-data /var/www
sudo find /var/www -type d -exec chmod 2750 {} \+
sudo find /var/www -type f -exec chmod 640 {} \+
# make this file executable again!
sudo chmod +x fix_perms.sh
Whenever files have been uploaded to the webserver (perhaps from a machine with a different sudo account or webserver group) permissions can easily be set up correctly using the commands:
cd /var/www
sudo ./fix_perms.sh
This approach has saved a lot of scrabbling around for solutions to the octal permissions problem, hardly any two of which are the same.
How to set up Apache2 for case insensitivity
Many of the old websites Adrian and his colleagues developed were built on Microsoft Windows NT running the IIS webserver.
While NTFS, the file system used by Windows NT and its successors, is technically case-sensitive, Windows applications generally treat file names as case-insensitive by default. IIS would serve index.cfm, Index.cfm or INDEX.CFM regardless of the filename.
The Linux operating system, and Apache2 webserver, are case sensitive, so the HTML <a href="myfile.htm">click here</a> would fail if the link to myfile.htm was actually MyFile.htm on the filesystem.
Thankfully, help is at hand when migrating ancient case-insensitive websites developed under Windows to Linux…
Then, in the .conf file of the website in question (in /etc/apache2/sites-available on Ubuntu Linux) be sure to include (watching out for the spelling of mod_speling) the highlighted text.
<VirtualHost *:80>
DocumentRoot "/var/www/election2001/htdocs"
ServerName election2001.adriantear.com
DirectoryIndex index.cfm
# Other directives here
<IfModule mod_speling.c>
CheckSpelling On
CheckCaseOnly On
</IfModule>
</VirtualHost>
All the incorrectly-cased links to files or files that were incorrectly-cased now become irrelevant and your ancient website should operate, largely, as originally intended.
A website with image mapping functionality, and that also has casing problems in filenames or links as above, should therefore incorporate the AddHandler imap-file map clause as per the highlighted .conf file below:
<VirtualHost *:80>
DocumentRoot "/var/www/election2001/htdocs"
ServerName election2001.adriantear.com
DirectoryIndex index.cfm
# Other directives here
AddHandler imap-file map
<IfModule mod_speling.c>
CheckSpelling On
CheckCaseOnly On
</IfModule>
</VirtualHost>
All of this server setup, database and webserver configuration work can be enjoyed at the restored 2001 UK General Election website…
Give the old site a visit and think about some of the steps involved in getting it working properly again.
Thank goodness for Web ARChive (WARC)files that can store content from websites regardless of server set up, so long as the sites are working at the time and the crawling is thoroughly comprehensive.
The URL election.co.uk was used for Business Geographics’ coverage of the UK General Election in 1997.
Built by a core team of just a handful of people our coverage of events, angled substantially towards an explicitly geographical perspective, garnered millions of hits. The website featured:
Clickable image maps from UK to constituency levels.
Town to constituency search facilities.
Interactive zoomable maps with the MapGuide plugin.
Maps in Virtual Reality Markup Language format.
Geographical organisation of content, e.g., by counties.
Adrian wrote about the design of the website for the Association of Geographic Information 1997 Conference, at which it won a prize for Technological Progress.
The Election 1997 website was highly influential, effectively setting the pattern for most major online coverage of elections throughout the world!
The contributing team had another crack of the whip for Blair’s re-election contest in the UK General Election of 2001. By this time most, including Adrian, had left Business Geographics to form Lead Hat Limited but the [geo]electoral news formula continued to carry over.
Ascog Farm on the Isle of Bute, Scotland, is run as a partnership between Adrian and his wife, Elspeth. Day to day the farm is managed by Elspeth’s father, Joe, a sturdy veteran farmer.
A lot of effort has gone into improving the land and buildings at Ascog Farm.
Attempting to harness the average 8m/sec windspeeds, an application for wind turbines at the farm was lodged in 2013.
The whole process was somewhat fraught, failed at planning, and has been detailed at length on Adrian’s Ascog Farm website.
Earlier, cattle and sheep farming at Ascog led to the partial development of the database-driven HerdManager website, an application that probably could have grown much bigger with more time invested in it.
Further details of the Ascog Farm and HerdManager websites are given below.
Adrian’s family own Ascog Farm on the Isle of Bute, Scotland. The farm is one of very few that is not owned by the Mount Stuart Trust, the ‘Bute Estate’ which describes itself as ‘the custodian of 87% of the Isle of Bute.’ At Ascog Farm, a particularly windy spot close to the Eastern coast…
Not the prettiest of sites, and more of a ‘what might have been‘ than anything else, HerdManager was partially developed as a demonstration of the sort of data management that is possible with a ColdFusion-based site, a database and a whole lot of Structured Query Language (SQL) statements. The functionality to add new records to…
Ascog Farm now uses Agriwebb for flock management, in many ways a competing product to our earlier self-built efforts.