<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Nicholas Skinner's Blog</title>
	<atom:link href="http://www.ns-tech.co.uk/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ns-tech.co.uk/blog</link>
	<description>Freelance website and web application developer</description>
	<lastBuildDate>Sun, 01 Aug 2010 09:17:17 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Simple PHP Form Mail Script</title>
		<link>http://www.ns-tech.co.uk/blog/2010/08/simple-php-form-mail-script/</link>
		<comments>http://www.ns-tech.co.uk/blog/2010/08/simple-php-form-mail-script/#comments</comments>
		<pubDate>Sun, 01 Aug 2010 09:17:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.ns-tech.co.uk/blog/?p=745</guid>
		<description><![CDATA[I recently received a request from someone for a very simple script to send an email from a HTML form.  There are various options available such as the downloadable PHP FormMail and services like Wufoo however FormMail did not seem suitable when they wanted to code the HTML part themselves, and hosted services are [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-748" title="PHP Form Mail" src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/08/php_form_mail.gif" alt="" width="200" height="164" />I recently received a request from someone for a very simple script to send an email from a HTML form.  There are various options available such as the downloadable <a href="http://phpfmg.sourceforge.net/">PHP FormMail</a> and services like <a href="http://wufoo.com/">Wufoo</a> however FormMail did not seem suitable when they wanted to code the HTML part themselves, and hosted services are either branded with the company logo or an unnecessary extra cost if PHP is already supported on the web server (especially if only something simple is required).</p>
<p>I therefore coded a very simple PHP script that will email any posted form to a specified address, reading through the field names automatically from the HTML form.</p>
<p>Download: <a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/08/php_form_mail_script.zip">PHP Form Mail Script</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ns-tech.co.uk/blog/2010/08/simple-php-form-mail-script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Backing Up Gmail Accounts</title>
		<link>http://www.ns-tech.co.uk/blog/2010/07/backing-up-gmail-accounts/</link>
		<comments>http://www.ns-tech.co.uk/blog/2010/07/backing-up-gmail-accounts/#comments</comments>
		<pubDate>Sun, 04 Jul 2010 14:30:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.ns-tech.co.uk/blog/?p=730</guid>
		<description><![CDATA[After switching to Gmail a while ago I setup Gmail Backup to save a copy of emails to a local server both for myself and a client.   I did notice a few odd issues every now and then, and it was far from ideal that all messages were placed in the same folder [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/07/email_backup.gif" alt="Backupify / Gmail Keeper" title="Backupify / Gmail Keeper" width="250" height="200" class="alignright size-full wp-image-737" />After <a href="http://www.ns-tech.co.uk/blog/2009/05/switching-to-gmail-–-gmail-pros-and-cons/">switching to Gmail</a> a while ago I setup <a href="http://www.gmail-backup.com/">Gmail Backup</a> to save a copy of emails to a local server both for myself and a client.   I did notice a few odd issues every now and then, and it was far from ideal that all messages were placed in the same folder (now containing over 17,000 items) but it could be scheduled to take backups automatically, and run from the command line.</p>
<p>Recently however (likely the result of a change on Google&#8217;s end) taking a backup started causing <a href="http://www.gmail-backup.com/lost-read-marks">all unread messages to become read</a> (on Google Apps accounts) meaning that if you did a backup at 3am, any messages arriving e.g. from 6pm (previous day) to 3am (next day) would be marked as read, which is far from idea.  Additionally the product nolonger seems to be actively maintained meaning little chance of a fix in the near future.  I therefore started look into possible alternatives.</p>
<p>The first solution I looked into was <a href="http://www.backupify.com/">backupify</a>.  It is a fairly quick and easy to setup cloud based backup system, with both free and paid offerings depending on the number of accounts you need to backup, and the size of your mailbox.  Initially it looked like a good option however the more I tested it the less convinced I became at least in terms of what I was looking for.</p>
<ol>
<li>No ability to restore mail yourself, you must email support.  They are however planning on adding that feature in August.</li>
<li>The only real ability you get to view backups is via a web interface, where you are presented a flat list of 25 messages (list of message subjects) per page (no ability to search/sort messages or view labels).  To view a message you can download it in .eml format.  Therefore searching for / restoring a single message,  especially one sent during an unknown time frame could be difficult / involve a lot of manual work.</li>
</ol>
<p>At the moment Backupify therefore seems more suitable to those who really want a hands off type solution with limited ability to find/restore messages yourself, (more suited to completely loosing access to your entire account).</p>
<p>It is worth noting that they are also planning on supporting storing backups on your own <a href="http://aws.amazon.com/s3/">Amazon S3</a> account in the future which would certainly go a long way in proving a greater / much more useful ability to access, and download messages.  With downloadable messages, you can then at least then search/sort using standard search tools included in the operating system.</p>
<p>The second solution I looked into was <a href="http://gmailkeeper.com/">Gmail Keeper</a>.  It is a windows based application that you download, and run e.g. on a server or your PC.  The free/trial version supports only 300 emails, and one account therefore most likely you would need to purchase the paid version for $20.</p>
<p>When I first tested it out I found it suffered from the same problem as Gmail Backup in terms of marking messages as read, therefore initially dismissed it however I did send an email to the author on the off chance they might fix it.  A few days later (somewhat to my surprise) I received an email back with an updated version that did not suffer from the same issue.</p>
<p>I therefore purchased a copy and have been using it ever since.</p>
<p><strong>Gmail Backup Features:</strong></p>
<ul>
<li>Schedule backups.</li>
<li>Backup from the command line.</li>
<li>Backup only certain folders/labels.</li>
<li>Backup by date range.</li>
<li>Backups are automatically compressed, and stored in a .zip file, arranged by year/month, (meaning you will not get folders containing thousands of messages that are difficult to open).</li>
</ul>
<p>I have noticed a few odd issues, in terms of labels not being saved correctly, messages being saved in the inbox rather than sent folders, and the fact that &#8220;backup_db.gkdata&#8221; stores partial duplicate copies of messages (which seems like an unnecessary waste of disk space when the reason for it is apparently &#8220;possible future functionality&#8221;).  Overall however these are minor issues, especially when you consider there are relatively few options available for reliably managing Gmail backups. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ns-tech.co.uk/blog/2010/07/backing-up-gmail-accounts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Serial Port on an Intel DP55KG Running Windows 7 64 Bit</title>
		<link>http://www.ns-tech.co.uk/blog/2010/06/serial-port-on-an-intel-dp55kg-running-windows-7-64-bit/</link>
		<comments>http://www.ns-tech.co.uk/blog/2010/06/serial-port-on-an-intel-dp55kg-running-windows-7-64-bit/#comments</comments>
		<pubDate>Sat, 05 Jun 2010 09:56:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.ns-tech.co.uk/blog/?p=525</guid>
		<description><![CDATA[I recently decided to upgrade my main computer.  I chose an Intel DP55KG motherboard and Windows 7 64-bit.  Unfortunately however that motherboard comes neither with a serial port or a header on the motherboard to connect one to.  It used to be that most motherboards had at least one and often 2 [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/brainboxes_card.jpg" alt="Brainboxes Serial Card" title="Brainboxes Serial Card" width="300" height="210" class="alignright size-full wp-image-527" />I recently decided to upgrade my main computer.  I chose an <a href="http://www.intel.com/products/desktop/motherboards/DP55KG/DP55KG-overview.htm">Intel DP55KG</a> motherboard and Windows 7 64-bit.  Unfortunately however that motherboard comes neither with a serial port or a header on the motherboard to connect one to.  It used to be that most motherboards had at least one and often 2 serial ports however that has been slowly changing over the years first with only one serial port, then only a header, and finally no serial port and no header.  Serial ports have been replaced in the most part with USB along with Parallel Ports and PS2 ports that all used to be standard.</p>
<p><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/new_bracket.jpg" alt="New Serial Card Bracket" title="New Serial Card Bracket" width="150" height="126" class="alignleft size-full wp-image-528" />Having had bad experiences with all the USB to serial adapters I have tried, I decided to go for a PCI card.  Finding one that was compatible with Windows 7 64-bit was a challenge but I eventually came across the <a href="http://www.brainboxes.com/product/items/uc-101-lp-upci-1-1xrs232">Brainboxes UC-101</a> available from <a href="http://www.scan.co.uk/Products/Brainboxes-UC-101-Low-Profile-PCI-2x-RS232-Serial-Card-(2nd-9-pin-RS232-port-available-on-fly-Cable)">scan.co.uk</a> in the UK.</p>
<p><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/brainboxes_card_new_bracket.jpg" alt="Brainboxes Serial Card With New Bracket Mounted" title="Brainboxes Serial Card With New Bracket Mounted" width="200" height="137" class="alignright size-full wp-image-529" />Before purchasing I had failed to realise it was a &#8220;Low Profile&#8221; PCI card however in the end this was easily fixed by purchasing a <a href="http://linitx.com/viewproduct.php?prodid=10437">PCI Mounting Place</a> that looked around the same size as would fit the UC-101 and luckily it turned out to be exactly right, so after switching the back plates I was up and running for less than the cost of a <a href="http://www.brainboxes.com/serial-desktop-and-server-cards-pci/items/uc-257-upci-2xrs232">2 port full width PCI card</a> at around double the price.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ns-tech.co.uk/blog/2010/06/serial-port-on-an-intel-dp55kg-running-windows-7-64-bit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ski GPS iPhone App Reviews</title>
		<link>http://www.ns-tech.co.uk/blog/2010/05/ski-gps-iphone-app-reviews/</link>
		<comments>http://www.ns-tech.co.uk/blog/2010/05/ski-gps-iphone-app-reviews/#comments</comments>
		<pubDate>Sat, 01 May 2010 10:56:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.ns-tech.co.uk/blog/?p=687</guid>
		<description><![CDATA[A review of the 3 &#8220;Ski GPS&#8221; type iPhone applications I tested out on a recent ski holiday to France (Les 3 Vallees area).
VisioSki &#8211; Les 3 Vallees
I first downloaded VisioSki because it was the only application I could find on the app store for the 3 Vallees area.
Features:

3D Map
Show current GPS position on map
Search [...]]]></description>
			<content:encoded><![CDATA[<p>A review of the 3 &#8220;Ski GPS&#8221; type iPhone applications I tested out on a recent <a href="http://www.ns-tech.co.uk/blog/2010/04/review-chalethotel-tarentaise-meribel-mottaret-france-ski-holiday/">ski holiday to France</a> (Les 3 Vallees area).</p>
<h3>VisioSki &#8211; Les 3 Vallees</h3>
<p><a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/visioski_error.png"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/visioski_small.png" alt="VisioSki Screenshot" title="VisioSki Screenshot" width="160" height="240" class="alignright size-full wp-image-702" /></a>I first downloaded VisioSki because it was the only application I could find on the app store for the 3 Vallees area.</p>
<p><strong>Features:</strong></p>
<ul>
<li>3D Map</li>
<li>Show current GPS position on map</li>
<li>Search for runs by name</li>
<li>Search for lifts by name</li>
</ul>
<p>Testing it beforehand it looked impressive and seemed to work reasonably well.  Also since I installed it at home the 330.4 MB download was not too much of an issue although it did seem quite large.</p>
<p><a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/visioski_error.png"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/visioski_error_small.png" alt="VisioSki Memory Error Screenshot" title="VisioSki Memory Error Screenshot" width="133" height="200" class="alignleft size-full wp-image-715" /></a>However the more I used it in the resort, the more frustrated I became with it.  There appears to be some kind of memory issue with the application that occurs after you zoom in/scroll around the map too much resulting in the message &#8220;You are running low on memory, you will be taken to the home position to release memory.&#8221; Making it difficult to really use the application effectively at all.</p>
<p>Overall I was left disappointed with this application especially after I had paid for it and after it had been such a big download (although admittedly only £2.39 I would have still expected it to work).</p>
<p>My assumption is that it has only been fully tested / only really works properly on the more powerful iPhone 3GS.</p>
<p>iTunes Link: <a href="http://itunes.apple.com/us/app/visioski-les-3-vallees-ski/id347885112?mt=8">VisioSki</a></p>
<h3>Ski: Alps</h3>
<p><a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/skialps.png"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/skialps_small.png" alt="Ski: Alps Screenshot" title="Ski: Alps Screenshot" width="160" height="240" class="alignright size-full wp-image-704" /></a>After a bad experience with VisioSki &#8220;Ski: Alps&#8221; was the 2nd Ski navigation application I managed to find on the app store, and it took quite a bit of searching on various keywords to find it.  As far as I can see there does not seem to be an easy way to locate Ski specific navigation apps that support specific Ski resorts.</p>
<p>Ski Alps in general is a much more polished / professional application.</p>
<p><strong>Features:</strong></p>
<ul>
<li>Support for many resorts in Austria, France, Germany, Italy, Switzerland.</li>
<li>Download maps for only the resorts you need</li>
<li>Show current GPS position on map</li>
<li>Search for runs by name</li>
<li>Search for lifts by name</li>
<li>Search for various other points of interest including Ski Schools, and rental shops</li>
<li>Tap to show nearby runs</li>
<li>Ability to record tracks (did not try this)</li>
<li>Ability to turn on/off Google/Bing map overlays</li>
</ul>
<p>I think it is certainly a useful option to be able to show street map overlays, especailly if you are just trying to find a particular run after coming off a bus in town, and to also be able to hide them to improve the responsiveness of a application / save on overseas data fees / save on battery life / when 3G coverage may not be available anyway.</p>
<p><a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/skialps_nooverlay.png"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/skialps_nooverlay_small.png" alt="Ski: Alps No Overlay Screenshot" title="Ski: Alps No Overlay Screenshot" width="133" height="200" class="alignleft size-full wp-image-718" /></a>I like the ability to search for lifts, runs, other points of interest, and that it is a polished / responsive application, I also like that runs include direction arrows.   I dislike and can not really understand why they chose not to include run names on the map (my guess is that there is a technical limitation with this due to how they chose to show maps) meaning that to find out the name of a run you need to click on it, so if there are many runs going from the same place you need to click on them all until you find the one you want which is not really very practical.</p>
<p>The major difference however between this software and e.g. a paper Piese map is the application uses a Google maps style of doing things where the top of the screen is North, whereas on a paper piste map (or at least &#8220;Les 3 Vallees&#8221; piste map), the top of the map is the top of the mountain (which in this case is actually roughly South).</p>
<p>Overall after personally getting used to the paper piece map that seemed somewhat intuitive, I found it difficult to get used to the applications orientation, and that together with the difficultly in actually seeing the names of runs led me not to make much use of it.</p>
<p>iTunes Link: <a href="http://itunes.apple.com/us/app/ski-alps/id343812439?mt=8">Ski: Alps</a></p>
<h3>Satski</h3>
<p><a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/satski.png"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/satski_small.png" alt="Satski Screenshot" title="Satski Screenshot" width="160" height="240" class="alignright size-full wp-image-710" /></a>I first heard about Satski (and the existence of Ski specific GPS devices/software) from &#8220;<a href="http://fwd.five.tv/gadget-show">The Gadget Show</a>&#8221; (<a href="http://fwd.five.tv/gadget-show/videos/challenge/winter-challenge-2">Winter Challenge</a>, <a href="http://fwd.five.tv/gadget-show/videos/challenge/winter-challenge-3">Update</a>) on Channel Five.</p>
<p>After seeing two relatively positive reviews of the Satski (both the dedicated hardware version, and the Android app version) this was my preferred option however I initially discounted it not wanting to spend £175 on the dedicated unit, and not having an android compatible phone.  However after checking the Satski site part way through the holiday I discovered that an iPhone version had just been released, and I therefore downloaded it.</p>
<p><strong>Features:</strong></p>
<ul>
<li>Support for many resorts in a large number of countries</li>
<li>Download maps for only the resort you need</li>
<li>Show current GPS position on map</li>
<li>Show nearby points of interest</li>
<li>Uses an electronic version of the paper piste map</li>
<li>Supports route navigating between points of interest</li>
</ul>
<p>Satski&#8217;s use of scanned copy of the paper piste map was a definite advantage, along with its ability to show your location on the map.  This also means you can find your location on the map using Satski then quickly find it on the actual paper map.  Its ability to navigate between points of interest was also a definite advantage over the other two applications I looked at which did not support this feature.</p>
<p>However after spending more and more time trying to use the application on the slope I was again left disappointed.</p>
<p><strong>Issues:</strong></p>
<ul>
<li><strong>Application loading time</strong> &#8211; On a dedicated device when you are leaving the application running loading time is perhaps not so much of an issue however on an iPhone that can not do multitasking you are likely to more frequently switch between apps.  Satski however takes over 30 seconds to load which is frustrating when you just want to take a quick look at a map.</li>
<li><strong>GPS accuracy</strong> &#8211; In my opinion the worst thing a GPS application can do is tell you where you are and be wrong especially if you are up on a mountain, but that is exactly what Satski did.  I have used GPS technology for a long time, first unit was a Garmin GPS 12 around 10+ years ago, and I now also have a TomTom, and the iPhone with inbuilt GPS.  I realise that on occasion GPS capable devices have difficulty finding your location however generally they will give you some indication of this.  On the GPS 12 for example you could see how many satellites were in range, and see if a 3D or only 2D fix had been acquired (not perfect but better than nothing).  On the TomTom it generally seems to either have a fix or not have a fix without anything in between, and may sometimes get confused but generally gets back on track quickly if you keep on the path you were on.  In the iPhone maps application it will generally start off with a large circle where it things you are and slowly narrow that down while it gets your exact position, and can sometimes be slow to update but is usually fairly reliable.  Satski however pinpointed my location wrongly and then continued to do so without changing even though I stood in the same location to give it some time to correct itself, it also gives no indication of the position being unreliable, or how accurate it was.  It is worth noting that this may have also been the case in the other applications however with Satski errors were just more noticeable as I knew where I was on the paper map and could compare it with the identical copy on screen.</li>
<li><strong>Route Navigation</strong> &#8211; Ideally I would be looking for an on screen turn-by-turn type direction feature (if possibly making use of the iPhone 3GS compass if run on the 3GS, an option for spoken directions would also be good), text directions as an optional extra, a line indicating where you need to go overlaid on the map, and a marker (that moves) depending on where you are currently located (something similar to what TomTom and other car navigation systems do).  The Satski however does none of this it just &#8220;animates&#8221; (moves) the map to your starting position, then animates it along your route until it reaches the end.  This may be acceptable on short runs, and piste&#8217;s with only a few runs in the same place however for anywhere else it is not very useful.  There is no speed control or ability to pause / resume animation, the user is left to quickly try and remember the route, and even this is difficult because you can not zoom in to easily see the run names.  I therefore found this feature useless for actually finding your way anywhere, even text based directions would have been easier to follow.</li>
</ul>
<p>Overall if Satski had loaded in a reasonable amount of time, accurately plotted your position on the map (or at least told you if the position was not very accurate), had a usable route navigation feature it could be a useful application however until it does I will not be using it again in the future.</p>
<p>I am left wondering if the application performs the same on all the other platforms it is currently available for (dedicated hardware, Windows Mobile, Android, Blackberry) or if it is just the case that the iPhone OS port was released too soon before all the bugs were worked out.</p>
<p>iTunes Link: <a href="http://itunes.apple.com/us/app/satski/id362739117?mt=8">Satski</a></p>
<h3>Overall</h3>
<p>Overall I do not think any of the 3 applications I tested are really worth using in place of a paper piste, as they do not offer enough additional value to make up for their shortcomings.</p>
<p><strong>Advantages of a paper piste map:</strong></p>
<ul>
<li>Navigating by sign posts, run names, points of interest is at least fairly reliable, or if there are none of these you know its not reliable.</li>
<li>When planning a route, you can see a large amount of the map at the same time (without endlessly scrolling), and you can do it in your own time and be able to read the names of routes / which routes you need to take.</li>
<li>You are not risking loosing/breaking/dropping an expensive phone in the snow that is not really meant for / ideal for that environment.</li>
<li>You do not need to wait for +30 seconds in some cases to start viewing the map.</li>
</ul>
<p>On the one occasion where I really did get somewhat lost I opted to use the paper map and save the battery life on my phone.</p>
<p>Note: All applications were tested on an iPhone 3G running software version 3.1.3</p>
<h3>An Alternative For Next Year</h3>
<p>After not having a positive experience with the iPhone, and 3 iPhone applications I tested this year I started looking around for alternatives.  Unless anything else comes out before then, for next years holiday I will likely be purchasing a <a href=" https://buy.garmin.com/shop/shop.do?pID=30926">Garmin Dakota 20</a> (<a href="https://buy.garmin.com/support/productSupport/productSupport.faces?productId=30926">support</a>, <a href=" http://gpstracklog.com/2009/10/garmin-dakota-20-review.html">review</a>) i.e. a general purpose outdoor GPS unit, and a <a href="http://www.mountaindynamics.com/en/snowranger.php">SnowRanger software ski addon map pack</a>.</p>
<p>It is also worth noting that since the original review on &#8216;The Gadget Show&#8217; (which was not that great compared to the Satski) the application does now support <a href="http://www.mountaindynamics.com/en/support/TurnByTurn.html">&#8216;Turn by turn&#8217; navigation</a> however with some caveats since it is using hardware designed to navigate only on roads.</p>
<p><strong>Advantages to dedicated hardware:</strong> <em>(that is meant for GPS navigation)</em></p>
<ul>
<li>Long battery life / no need to worry about leaving it on and the battery running out.</li>
<li>Possible to leave it on to log your route which can be downloaded later.</li>
<li>Possible to instantly see where you are now and where you have been.</li>
<li>Robust / waterproof hardware that is meant for use outside in harsh conditions.</li>
<li>Hopefully will provide a more reliable / accurate positions.</li>
<li>Includes a compass that appears (from other reviews) to be fairly reliable once calibrated, and is likely used for navigation, i.e. the map will move depending on which direction you are facing.</li>
<li>Shows a bearing (arrow) to your destination.</li>
<li>Screen does not rely on capacitance to work like the iPhone, i.e. can be used with gloves on.</li>
</ul>
<p>It does have the main disadvantage of not using a scanned copy of the piste map which most people would already be familiar with reading however hopefully the other advantages such as turn by turn navigation, more reliable GPS, long battery life, digital compass, bearing to destination would make up for this and deliver more value in the long term.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ns-tech.co.uk/blog/2010/05/ski-gps-iphone-app-reviews/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Review: Chalethotel Tarentaise, Meribel Mottaret, France (Ski Holiday)</title>
		<link>http://www.ns-tech.co.uk/blog/2010/04/review-chalethotel-tarentaise-meribel-mottaret-france-ski-holiday/</link>
		<comments>http://www.ns-tech.co.uk/blog/2010/04/review-chalethotel-tarentaise-meribel-mottaret-france-ski-holiday/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 10:55:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.ns-tech.co.uk/blog/?p=629</guid>
		<description><![CDATA[Recently stayed at the Chalethotel Tarentaise, Meribel Mottaret (Trip Advisor) from 21st March to 28th March 2010.  I was pretty impressed with the whole experience, however it is worth noting I have not been on a skiing holiday for around 10 years therefore have a somewhat limited ability to make a comparison.
Main reasons for [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/hotel_view_from_slope.jpg"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/hotel_view_from_slope-300x225.jpg"  alt="Hotel View From Slope" title="Hotel View From Slope" width="300" height="225" class="alignright size-medium wp-image-635" /></a>Recently stayed at the <a href="http://www.markwarner.co.uk/ski/france/meribel/chalethotel-tarantaise">Chalethotel Tarentaise, Meribel Mottaret</a> (<a href="http://www.tripadvisor.co.uk/Hotel_Review-g580182-d641041-Reviews-Chalet_Hotel_Tarentaise-Meribel_Savoie_Rhone_Alpes.html">Trip Advisor</a>) from 21st March to 28th March 2010.  I was pretty impressed with the whole experience, however it is worth noting I have not been on a skiing holiday for around 10 years therefore have a somewhat limited ability to make a comparison.</p>
<p>Main reasons for choosing the Tarentaise (with <a href="http://www.markwarner.co.uk/">Mark Warner</a>) were the <a href="http://www.markwarner.co.uk/why-choose-us/ski/ski-hosting">Ski Hosting</a> service available on 4.5 days (where they guide you around the best spots), ski-in / ski-out ability and WiFi Internet access available in all the rooms (although as I later found out this was not really required due to the prevalence of 3G in the area).</p>
<h3>Hotel / Rooms</h3>
<p><a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/view_room_7.jpg"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/view_room_7-300x225.jpg" alt="View From Room 7" title="View From Room 7" width="300" height="225" class="alignleft size-medium wp-image-641" /></a>The hotel and rooms were all very modern, complete with artwork on the walls, and some with stylish looking sofas.  Depending on the room you may either get a view to the front of the hotel (e.g. room 15) which did not particularly have much to see or a view to the back directly onto the ski slope (e.g. room 7).  Rooms also have a fridge, but no kettle, or facility to eat.  Breakfast is provided from 8-10am (croissants, bread, porridge, selection of cereals), along with a selection of drinks (tea, coffee, hot chocolate, orange juice), afternoon tea (cakes, biscuits etc) are available from around 3pm, and dinner is provided in the evening from 7.30-10pm.  Dinner was not provided on Thursday (hotel staff&#8217;s day off), therefore you need to make your own arrangement, we chose to eat at a local Pizza restaurant walking distance from the hotel, in the same complex as the local supermarket and ski hire shop, however booking in advance (04 79 00 43 32) was required.</p>
<p><a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/view_room_15.jpg"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/view_room_15-150x150.jpg" alt="View From Room 15" title="View From Room 15" width="150" height="150" class="alignright size-thumbnail wp-image-639" /></a>It is a family hotel and depending on the guests staying at the time you may be reminded of this by the sound of children running up and down the corridors (seemed particularly noticeable in the morning).  Any noises in the corridor even just people talking as they went past carried into the rooms.  Room 15 located on the first floor did not always seem particularly quiet at night with occasional sounds from the below floor noticeable however it was not particularly loud and was not something that really bothered me.  I was also informed that room 7 was not particularly quiet however this was only on the last day when presumably kitchen staff below were up even earlier preparing breakfast for the early morning start.</p>
<p><a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/view_room_7_down.jpg"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/view_room_7_down-150x150.jpg" alt="View Room 7 - Down Slope" title="View Room 7 - Down Slope" width="150" height="150" class="alignleft size-thumbnail wp-image-643" /></a>If you are out past a certain time (from memory ~8pm) you will need a code to access both the front door of the hotel, and the ski room, therefore be sure to collect these from reception first.</p>
<p>In terms of luggage, the hotel does not have any elevators however on arrival the hotel staff load bags from the coach into a mini van which takes them upto the hotel (along a very short road) and then carry bags to your room for you.  On departure you leave bags outside your room and staff carry them to the coach.</p>
<p>Two paper piste maps were left in each room and only just held up throughout the week.  If you are going to be making regular use of them throughout the week in possibly snowy weather conditions you may wish to investigate if any alternate (e.g. laminated) maps are available.</p>
<p><object type="application/x-shockwave-flash" width="400" height="300" data="http://www.flickr.com/apps/video/stewart.swf?v=71377" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="flashvars" value="intl_lang=en-us&#038;photo_secret=2200a5ace9&#038;photo_id=4472552015&#038;flickr_show_info_box=true"></param><param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=71377"></param><param name="bgcolor" value="#000000"></param><param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/video/stewart.swf?v=71377" bgcolor="#000000" allowfullscreen="true" flashvars="intl_lang=en-us&#038;photo_secret=2200a5ace9&#038;photo_id=4472552015&#038;flickr_show_info_box=true" height="300" width="400"></embed></object></p>
<h3>Ski Hosting</h3>
<p>We were originally considering <a href="http://www.crystalski.co.uk/">Crystal Ski</a> who also offer a <a href="http://www.crystalski.co.uk/extras/skiescort.shtml">Ski Hosting</a> service (or as they call it a &#8220;Ski Escort&#8221; service) however they only offer it on 3 days which was part of the reason for going with Mark Warner.</p>
<p>With Mark Warner the <a href="http://www.markwarner.co.uk/why-choose-us/ski/ski-hosting">ski hosting</a> is available for 4.5 days (Monday, Tuesday, Wednesday, Friday, Saturday Morning).  You need to sign up the day before at the ski desk.  The list is usually made available from 7.30pm although sometimes it was brought out upto 10 minutes early.  On the first day just before the list is made available the hotel manager makes introductions in the bar area, therefore it is best to stay around the door area (closer to the desk) in order to ensure you are closer to the list / more likely to get a place.  I never had a problem signing up for the leisurely group (there were a total of 3 different groups available), and I found that although there was often a queue forming at the desk at around 7.20pm if you came back 20 minutes later there was usually still space in most groups.</p>
<p><a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/altiport.jpg"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/altiport-300x225.jpg" alt="" title="Altiport de Courchevel, Courchevel 1850, France" width="300" height="225" class="alignright size-medium wp-image-653" /></a><a href="http://www.tripadvisor.co.uk/Hotel_Review-g580182-d641041-Reviews-Chalet_Hotel_Tarentaise-Meribel_Savoie_Rhone_Alpes.html">As mentioned in other reviews</a> the general quality of the Ski Hosting was very good.  The leisurely ski host leader seemed to be very knowledgeable on the whole area, lifts to take, or alternate routes to take if some were closed etc.  The general quality of skiing however varied depending on the weather conditions as you would expect, Monday was ok in terms of the weather but the snow was not great, the middle of the week saw both better skiing conditions and sunny weather, and towards the end of the week the snow conditions were ok but the weather was not that great with poor visibility.  From memory we made our scheduled destinations on 3 out of the 4 days with weather conditions meaning we stayed in the Meribel area for one of the days.</p>
<p>In our group there was a morning coffee stop at around 11am.  Lunch was pre booked at a number of restaurants across the valley where we sat at reserved tables.  Quality of the food was generally very good however the lunch stops themselves were often crowded with tables tightly packed in together.  When stopping for lunch most people leave skis out in the snow however you will need to remember where you put them along with any distinctive markings on the skis, colours of the polls etc such that you can find them again later.  It is a good idea to take a pair of sun glasses if it is a sunny day as you will likely be sitting outside.</p>
<p>I uploaded the route we took on 3 of the days ski hosting to Every Trail, (although seeing them on a Google map is unfortunately not as useful as seeing them on a piste map would be):</p>
<ul>
<li><a href="http://www.everytrail.com/view_trip.php?trip_id=550000">Monday</a> (shown below)</li>
<li><a href="http://www.everytrail.com/view_trip.php?trip_id=550012">Friday</a></li>
<li><a href="http://www.everytrail.com/view_trip.php?trip_id=550015">Saturday</a></li>
</ul>
<p>[Update: Also available on Mountain Dynamics <a href="http://www.mountaindynamics.com/en/sdmap.php?tid=9942">Monday</a>, <a href="http://www.mountaindynamics.com/en/sdmap.php?tid=9943">Friday</a>, <a href="http://www.mountaindynamics.com/en/sdmap.php?tid=9944">Saturday</a>]</p>
<p>In terms of prepetition I had done what I thought was a reasonable amount beforehand e.g. going for regular bike rides, going to the dry slope 1-2 times per week for 2 months beforehand but as the week progressed and people started dropping out the pace of the group started to speed up.  I was generally fine on slopes that were not too steep and did not have too many bumps (moguls) however felt I was somewhat unprepared on some days having had no real experience with them back on the dry slope.  I would suggest that anyone going on the hosting get at least some experience on how to deal with moguls in the correct way, or e.g. take a lesson the first day you arrive.  I would also suggest that if you have been practicing on a dry slope most of the time it would be an idea to go at least once or twice to a &#8220;real snow&#8221; slope if there is one <a href="http://www.skiclub.co.uk/skiclub/guides/uksnowsports/ukslopesmap.aspx">near you</a> such that you get a more realistic idea of what it will be like.</p>
<p><a href="http://merinet.com/documents/3-valley-piste-map-winter.pdf"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/map.jpg" alt="Piste Map" title="Piste Map" width="200" height="200" class="alignright size-full wp-image-656" /></a>The 3 Vallees area in general seems very good with a large number of lifts, and runs especially for intermediate skiers, and also has a number of areas / lifts / runs specifically for beginners (some of which are also free, there is also a free bus service as well).  However in a way the large amount of choice may not be ideal for the beginner new to skiing as it makes trying to navigate your way around more challenging.  The 3 Vallees has a newer more efficient ski lift pass system whereby all you do is place your pass in your top left pocket and it will automatically be read in your jacket and the turn style will let you through.  </p>
<p>I would certainly recommend the ski hosting however I found that I was not leaning as much as I really should / might otherwise if I had to read the map, and find my own way around.  This was also the experience of others in the group who e.g. chose to leave the hosting early / at the lunch stop and who later relayed stories of taking a number of wrong turns meaning they ended up getting back later than planned.  The last day was a half day and I was somewhat expecting that we would be taken back to the hotel however we were left at the lunch stop and given instructions to find our own way back.  <a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/view_from_lift_1.jpg"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/view_from_lift_1-150x150.jpg" alt="View From Lift" title="View From Lift" width="150" height="150" class="alignleft size-thumbnail wp-image-660" /></a>Having just done a weeks worth of skiing, in the area, and being in a group of ~8 others (likely some that have been on a number of holidays before) I am assuming the ski host thought that we should be able to find our own way back fairly easily, however we actually ended up making a number of wrong turns (as had those leaving the group before the end of the day earlier in the week) meaning we eventually made it back to the hotel just slightly earlier than we might normally.  It was not a bad thing seeing as some in the group (who were not confident going out on their own) may have otherwise missed out on half a days skiing however is certainly something to bear in mind.  I would certainly advise that anyone even those going on ski hosting carefully study the map and listen to what the host tell you (as much as you can do on the reasonably fast pace of the hosting), along with learning the basics of the lifts, how to read the maps, subtleties with the maps such that you do know where you are at all times and at least have better chance of finding your way around.</p>
<p><a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/view_from_lift_2.jpg"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/view_from_lift_2-150x150.jpg" alt="View From Lift" title="View From Lift" width="150" height="150" class="alignright size-thumbnail wp-image-661" /></a>On one occasion after mishearing directions on a day where the regular ski host was not available (and a substitute who had not done it before took over) I ended up going the wrong way, and after taking a few more wrong directions (attempting to get back to the hotel on my own) it was nearing the end of the day and lifts started shutting meaning I had to get a taxi at a cost of ~100 EUR for a 1hr ride back to the hotel.  I was informed the rest of the group did wait for me / try and find me but unfortunately we did not manage it in the end.  I would advise that you keep the number for the hotel handy, ensure that you have enough credit, along with a plan that does actually allow you to call it from your phone, and have the local taxi numbers handy, along with studying and trying to understand the map as much as possible beforehand.  On another occasion with the regular ski host someone else did take a wrong turn as well however the ski host managed to find them and we were back on our way a few minutes later.</p>
<p>I had planned on taking a number of photos however with the pace of the group, and not wanting to put the camera in a pocket where it was likely to get damaged / wet this ended up being quite difficult.  An ideal time for taking photos is on the lifts however again this ended up being difficult without risking dropping anything else, e.g. your gloves / polls.  If your camera has a snow mode however you will certainly want to use it to avoid dull looking photos.</p>
<h3>Internet Access</h3>
<p><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/internet_card.jpg" alt="" title="Internet Access Card" width="200" height="128" class="alignright size-full wp-image-663" />WiFi Internet access was available in the hotel on a daily or weekly basis.  From memory the weekly package (which I bought) was 25 EUR.  I noticed <a href="http://www.tripadvisor.co.uk/ShowUserReviews-g580182-d641041-r55717843-Chalet_Hotel_Tarentaise-Meribel_Savoie_Rhone_Alpes.html">another reviewer mentioned he thought it was expensive</a> however I thought it was reasonable considering a lot of other hotels do not offer it at all, and it would be quite a lot more difficult to e.g. get a bus into town and find an Internet cafe, or more expensive to use a 3G dongle.</p>
<p>In terms of the quality of the Internet it was not that fast so you are not going to be watching YouTube videos however it is fine for browsing web pages and checking email which is likely what you would need it for anyway.  Worth noting that it did get very slow / unusable once or twice, I am assuming this was because a lot of other guests were using it at the same time, for these times I switch to using my 3G dongle.  Also worth noting that accessing VPNs did not seem to work through it.</p>
<p>I was surprised to find that the mobile phone, and 3G data coverage was very good everywhere I tried in the 3 Vallees area, from the hotel on my laptop to half way up a mountain and on the cable cars on my iPhone.  It seemed both more available and faster than back in the UK.  I sometimes found myself responding to emails while in some of the longer cable cars.</p>
<p>There is not that much reason to take a 3G dongle as the hotel has WiFi (apart from as a backup when the WiFi is running slowly) however if you are taking a laptop / 3G dongle or Internet/email enabled phone to France (or a reasonable number of other European / non European countries) you will likely want to go with Vodafone (PAYG SIMs if you do not have a contract).  After looking into all the options I found that Vodafone offer the best per day <a href="http://online.vodafone.co.uk/dispatch/Portal/appmanager/vodafone/wrp?_nfpb=true&#038;_pageLabel=template12&#038;pageID=OS_0097">3G roaming rates</a>, £9.99 per 50MB on the dongle, and £4.99 per 25MB on the phone.  I found my phone roamed to the SFR (sfr.fr) network when in France.  Call charges were 38ppm to make calls and 18ppm to receive calls, text messages were 11p.  An even more cost effective option may be to try and obtain a SFR SIM card locally however this was not something I looked into.</p>
<p>By chance I found myself in room 15 which happened to have the WiFi router (not sure if it was the only one, or just one of many in the hotel) but needless to say I never had any issues connecting to the WiFi network on it.</p>
<p>It is worth noting that the WiFi card you buy to get access (contains a username/password to login) only works on a single computer.  I tried signing in on my phone but received an error message therefore you will either need to stick with 3G on your phone or buy two Internet access cards to use it on two devices.  It also had a slightly annoying requirements that you needed to keep signing in every time you connect.</p>
<h3>Travel</h3>
<p><a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/travel.jpg"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/travel-150x150.jpg" alt="Card" title="Cars" width="150" height="150" class="alignright size-thumbnail wp-image-667" /></a>We ended up on an early morning flight leaving Gatwick for Geneva at 6.40am (with checkin at 4.40am), on Viking Airlines, the whole plane had been reserved for Mark Warner customers.  Viking is a budget airline and this was evident by the cramped conditions, and limited facilities on board.  I found it somewhat odd that mobile phones were not allowed to be used <a href="http://www.flyviking.com/questions-and-contact-us.html">even in &#8220;Airplane Mode&#8221;</a> according to their FAQ, and mentioned over the intercom on boarding.</p>
<p>When you arrive at Geneva airport you are greeted by Mark Warner staff and given a coach number, however note that there may be another line of coaches behind the first if you can not immediately see your coach.  Again on the airplane and coach, you may be at times reminded that its a family friendly tour operator by the sound of babies and young children.</p>
<p><a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/lake.jpg"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/lake-150x150.jpg" alt="Lac d&#039;Annecy, France" title="Lac d&#039;Annecy, France" width="150" height="150" class="alignleft size-thumbnail wp-image-668" /></a>In terms of transfer time on the coach, the brochure quoted it as being 2 hr however I would suggest this is a conservative estimate.  I did not time it but believe it was at least 2.5hr, and the weather conditions were not really that bad, especially on the outgoing trip, although they were somewhat snowy initially on the return journey.  The return flight was slightly delayed as apparently a coach driver did not arrive on time (daylight savings time had started that same morning).</p>
<p>During the outward coach transfer Mark Warner representatives gave a small introduction, and arrange lift passes (payment was made later at the hotel when collecting them).  If however you want to get out on the slop Sunday afternoon you may wish to <a href="http://www.s3v.com/winter/www.s3v.com/winter/Meribel-Mottaret/From-Meribel-1271.html">arrange your own pass beforehand</a> or you will be limited to the free lifts only.  Extra insurance was also offered if you have not already purchased it.</p>
<h3>Weather / Snow Conditions</h3>
<p>We experienced a range of weather conditions from sunny to snowing with poor visibility.  The Merinet website has further details on <a href="http://www.merinet.com/faq.php?id_faq_type=6#22">weather conditions that can be expected</a> at different times in the year but in generally I think we picked a good time of year with both the slops/lifts not being too busy and the weather being acceptable (reasonably sunny, and not very cold) most of the time.</p>
<h3>Ski Equipment Hire</h3>
<p><a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/ski_boot.jpg"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/04/ski_boot-150x150.jpg" alt="Ski Boot" title="Ski Boot" width="150" height="150" class="alignright size-thumbnail wp-image-671" /></a>I pre-booked ski equipment with Mark Warner.  On arrival at the hotel a member of staff walked us up to the hire shop (Intersport) from the hotel.  It was nice to have things well organised (may have otherwise needed to spend time finding the shop in an unfamiliar environment which could have taken some time) however as we were walked up in the groups and the shop only had two members of staff working, this did mean a small wait.  Helmets (not pre hireable on the Mark Warner website) were available directly from the hire shop at 15 EUR.  The shop will also deliver equipment to the hotel saving you from carrying it yourself.  I went with the &#8220;Superior&#8221; boots and &#8220;Sports&#8221; skis and ended up with a very comfortable pair of boots.  At the end of your stay you just leave the skis / boots in your hotel locker and the company comes to collect them.</p>
<h3>Other Activities</h3>
<p>Looking on the <a href="http://www.merinet.com/activities/meribel-activities-winter.htm">Merinet website</a> there are a number of other activities available including:</p>
<ul>
<li>Snow-Mobile</li>
<li>Segway Human Transporter Tours</li>
<li>Ice Rink</li>
<li>Indoor Climbing Wall</li>
<li>Ice Karting</li>
<li>Ice Climbing</li>
<li>Husky Sledding</li>
</ul>
<p>However most seemed to start quite late in the afternoon / evening therefore we did not end up doing any of them.  Other activities that are available during the day include Walking Trails, Snowshoe Walking, and swimming in the Olympic complex.</p>
<h3>Overall</h3>
<p>The Tarentaise is on the more expensive end of hotels offered by Mark Warner but based on the other reviews on Trip Advisor it seems you get what you pay for, and it certainly lived upto our expectations.</p>
<p>Overall I was very impressed, it is a well run / organised hotel, ideally situated on the slope, with friendly / knowledgeable staff.  My next holiday will very likely also be with Mark Warner and possibly to the Tarentaise again.</p>
<p><object width="400" height="300"><param name="flashvars" value="offsite=true&#038;lang=en-us&#038;page_show_url=%2Fphotos%2F24626207%40N00%2Fsets%2F72157623602063999%2Fshow%2F&#038;page_show_back_url=%2Fphotos%2F24626207%40N00%2Fsets%2F72157623602063999%2F&#038;set_id=72157623602063999&#038;jump_to="></param><param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=71649"></param><param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/slideshow/show.swf?v=71649" allowFullScreen="true" flashvars="offsite=true&#038;lang=en-us&#038;page_show_url=%2Fphotos%2F24626207%40N00%2Fsets%2F72157623602063999%2Fshow%2F&#038;page_show_back_url=%2Fphotos%2F24626207%40N00%2Fsets%2F72157623602063999%2F&#038;set_id=72157623602063999&#038;jump_to=" width="400" height="300"></embed></object></p>
<p>[Photos: <a href="http://www.flickr.com/photos/24626207@N00/sets/72157623602063999/detail/">Flickr</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ns-tech.co.uk/blog/2010/04/review-chalethotel-tarentaise-meribel-mottaret-france-ski-holiday/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Setting Up A CentOS 5 Server</title>
		<link>http://www.ns-tech.co.uk/blog/2010/03/setting-up-a-centos-5-server/</link>
		<comments>http://www.ns-tech.co.uk/blog/2010/03/setting-up-a-centos-5-server/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 15:57:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.ns-tech.co.uk/blog/?p=601</guid>
		<description><![CDATA[Continuing the series of articles covering Setting Up Apache / PHP, and Setting Up Exim this one covers a few of the smaller applications / configuration settings that need changing with a new CentOS 5 based server primarily used for virtual hosting.
iptables
iptables -F
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -I INPUT 1 -i [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/03/centos_logo.gif" alt="CentOS Logo" width="190" height="61" class="alignleft size-full wp-image-624" />Continuing the series of articles covering <a href="http://www.ns-tech.co.uk/blog/2009/12/setting-up-apache-php-for-virtual-hosting-using-suexec/">Setting Up Apache / PHP</a>, and <a href="http://www.ns-tech.co.uk/blog/2009/10/setting-up-exim-mail-server-for-multiple-domains/">Setting Up Exim</a> this one covers a few of the smaller applications / configuration settings that need changing with a new <a href="http://www.centos.org/">CentOS 5</a> based server primarily used for virtual hosting.</p>
<h3>iptables</h3>
<p><code>iptables -F</p>
<p>iptables -A INPUT -p tcp --dport 22 -j ACCEPT<br />
iptables -I INPUT 1 -i lo -p all -j ACCEPT<br />
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT<br />
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT</p>
<p>iptables -A INPUT -p tcp --dport 80 -j ACCEPT<br />
iptables -A INPUT -p tcp --dport 110 -j ACCEPT<br />
iptables -A INPUT -p tcp --dport 25 -j ACCEPT<br />
iptables -A INPUT -p tcp --dport 21 -j ACCEPT<br />
iptables -A INPUT -p tcp --dport 143 -j ACCEPT<br />
iptables -A INPUT -p tcp --dport 40000:40100 -j ACCEPT</p>
<p>iptables -P INPUT DROP</p>
<p>/sbin/service iptables save</code></p>
<h3>iptables (for IPv6)</h3>
<p><code>ip6tables -F</p>
<p>ip6tables -I INPUT 1 -i lo -j ACCEPT</p>
<p>ip6tables -A INPUT -p ipv6-icmp -j ACCEPT<br />
ip6tables -A OUTPUT -p ipv6-icmp -j ACCEPT</p>
<p>ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT<br />
ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT</p>
<p>ip6tables -P INPUT DROP</p>
<p>/sbin/service ip6tables save</code></p>
<h3>Server  Timezone</h3>
<p><code>rm -f /etc/localtime<br />
cp /usr/share/zoneinfo/Europe/London /etc/localtime</code></p>
<h3> NTP</h3>
<p><code>yum install ntp</p>
<p>chkconfig ntpd on<br />
ntpdate pool.ntp.org<br />
/etc/init.d/ntpd start</code></p>
<h3>yum (email notifications)</h3>
<p>yum will send an email when there are packages ready to be installed (via &#8220;yum update&#8221;), it can also automatically install them however I chose not to use this option.</p>
<p><code>yum install yum-updatesd<br />
chkconfig yum-updatesd on<br />
service yum-updatesd start</code></p>
<p><code><strong>File: /etc/yum/yum-updatesd.conf</strong><br />
emit_via = email<br />
email_to=mail@example.com<br />
do_update=no</code></p>
<h3>FTP</h3>
<p><code>yum install vsftpd<br />
chkconfig vsftpd on<br />
service vsftpd start</code></p>
<p><code><strong> File: /etc/vsftpd/vsftpd.conf </strong></p>
<p>chroot_local_user=YES</p>
<p>pasv_enable=YES<br />
pasv_min_port=40000<br />
pasv_max_port=40100</code></p>
<h3>MySQL</h3>
<p><code>yum install mysql-server<br />
chkconfig mysqld on<br />
service mysqld start</p>
<p>/usr/bin/mysqladmin -u root password 'new-password'</code></p>
<h3>PHP</h3>
<p><code>yum install php<br />
yum install php-gd<br />
yum install php-mysql<br />
yum install php-mbstring<br />
yum install php-imap<br />
yum install php-soap<br />
yum install php-xml</p>
<p>chmod 777 /var/lib/php/session/</code></p>
<p><code><strong> File: /etc/php.ini</strong><br />
error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR<br />
display_errors = On<br />
upload_max_filesize = 8M</code></p>
<h3>Cron</h3>
<p><code>yum install vixie-cron<br />
chkconfig crond on<br />
service crond start</p>
<p>mkdir /var/log/prelink<br />
chmod 700 /var/log/prelink<br />
touch /var/log/prelink/prelink.log</code></p>
<h3>Logrotate</h3>
<p><code>yum install mlocate</p>
<p>mkdir /etc/logrotate.custom<br />
chmod 700 /etc/logrotate.custom</p>
<p>echo $'\ninclude /etc/logrotate.custom' >> /etc/logrotate.conf</code></p>
<p><code><strong>File: /etc/logrotate.custom/www.example.com</strong><br />
<em>(for each website setup in apache)</em></p>
<p>/var/log/domlogs/useracctname/www.example.com*_log {<br />
    monthly<br />
    rotate 12<br />
    compress<br />
    delaycompress<br />
    create 640<br />
    missingok<br />
    notifempty<br />
    sharedscripts<br />
    postrotate<br />
        /sbin/service httpd reload > /dev/null 2>/dev/null || true<br />
    endscript<br />
}</code></p>
<h3>Extra IP Address</h3>
<p>cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:0</p>
<p><code><strong>File: /etc/sysconfig/network-scripts/ifcfg-eth0:0</strong></p>
<p>DEVICE=eth0:0<br />
IPADDR=111.222.333.444</p>
<p>ifconfig eth0:0 111.222.333.444 up</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ns-tech.co.uk/blog/2010/03/setting-up-a-centos-5-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building An Active RFID People / Asset Tracking System With Mesh Networking</title>
		<link>http://www.ns-tech.co.uk/blog/2010/02/active-rfid-tracking-system/</link>
		<comments>http://www.ns-tech.co.uk/blog/2010/02/active-rfid-tracking-system/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 20:31:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.ns-tech.co.uk/blog/?p=384</guid>
		<description><![CDATA[Introduction
I was initially looking into off the shelf hardware, however was unable to find any readily available equipment (to the hobbyist market in low quantities) that was reasonably priced, and fit the requirements.  Therefore partly as a personal project, and partly in preparation for a possible commercial product I decided to put together a [...]]]></description>
			<content:encoded><![CDATA[<h3 class="alternate">Introduction</h3>
<p><a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/complete_kit_2.jpg"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/complete_kit_2_small.jpg" alt="All Hardware Components" width="200" height="198" class="alignright" /></a>I was initially looking into off the shelf hardware, however was unable to find any readily available equipment (to the hobbyist market in low quantities) that was reasonably priced, and fit the requirements.  Therefore partly as a personal project, and partly in preparation for a possible commercial product I decided to put together a prototype <a href="http://en.wikipedia.org/wiki/Radio-frequency_identification">active RFID</a> tracking System.</p>
<p>The solution I came up with is based on 3 main hardware components, and 5 software components.  It utilises <a href="http://en.wikipedia.org/wiki/Mesh_networking">mesh networking</a> meaning that only a single reader needs to be physically connected to a PC, all other readers just require power.</p>
<h4 class="alternate">Hardware:</h4>
<ul>
<li><a href="#b-384-tag_hardware">Tags</a> &#8211; Carried around / placed on assets to be tracked.</li>
<li><a href="#b-384-reader_nodes_hardware">Reader Nodes</a> &#8211; Placed around the area where the assets need to be tracked in.</li>
<li><a href="#b-384-pc_reader_hardware">PC Reader</a> &#8211; Connected to the PC, receives data from reader nodes and sends it to the PC.</li>
</ul>
<p>The main hardware component used is the <a href="http://www.synapse-wireless.com/?mainID=3&amp;subID=3&amp;type=product&amp;prodID=3">Synapse RF Engine</a>, a 2.4 GHz transceiver module with built in support for running Python scripts, 2 UARTs, a number of GPIOs, and a 2.5uA low power mode.</p>
<h4 class="alternate">Software:</h4>
<ul>
<li><a href="#b-384-tag_software">Tags</a> &#8211; Software running on the tag to send out a &#8220;ping&#8221; at a defined interval, then put the &#8220;tag&#8221; to sleep before sending another ping.</li>
<li><a href="#b-384-reader_node_software">Reader Nodes</a> &#8211; Software running on the reader node hardware to listen for tag &#8220;pings&#8221;, and after receiving a ping, send the tag ID, reader node ID, and received signal strength to the PC Reader.</li>
<li><a href="#b-384-pc_reader_software">PC Reader</a> &#8211; Software running on the reader hardware to receive data over the air from the many reader nodes and forward it to the serial / USB interface.</li>
<li><a href="#b-384-data_forwarder">PC Serial to HTTP data forwarder</a> &#8211; Software running on the PC that listens for data from the serial / USB connected PC Reader, and forwards that data via HTTP to a server.</li>
<li><a href="#b-384-php_gui">Location tracking processing / display GUI</a> &#8211; Web based software to process the tag data into a location, and display it on a map.</li>
</ul>
<p>The software consists of Python used by the Tags, Reader Nodes, PC Reader.  C# used by the &#8220;PC Serial to HTTP data forwarder&#8221;, and PHP, HTML, JavaScript, SVG used by the &#8220;Location tracking processing / display GUI&#8221;.</p>
<p><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/k0PF9KK9pJQ&#038;hl=en_GB&#038;fs=1&#038;rel=0&#038;hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/k0PF9KK9pJQ&#038;hl=en_GB&#038;fs=1&#038;rel=0&#038;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
<p><em>Video showing simulation of tracking between 8 rooms, using 5 tags.  For real life demo showing a single tag moving between 3 rooms <a href="#b-384-php_gui">see below</a>.</em></p>
<h3 class="alternate">System Design</h3>
<p><a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/complete_kit_1.jpg"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/complete_kit_1_small.jpg" alt="All Hardware Components" width="200" height="152" class="alignright" /></a>The system was originally designed around the principle of <a href="http://en.wikipedia.org/wiki/Trilateration">Trilateration</a>.  Reader Nodes are placed at fixed known positions around the room / rooms containing tags that need to be located.  As long as a tag is within range of at least 3 reader nodes the tags position can be calculated by using the signal strength of the tag to each of the 3 nearest readers.  However this approach turned out not to be very feasible since past around 2 meters the <a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/02/signal_data.xlsx">signal strength started fluctuating</a> in a seemingly unpredictable way.  It may be possible to predict / error correct for the fluctuations however I opted to go for a simpler approach of just plotting tags next to the reader with the highest signal strength (the one they are nearest to).  This now means that readers need to be placed in each room (ideally centrally) where tags need to be tracked and it is only possible to determine a tag is in a room, and not its position in that room (although it is not used the original trilateration code has been left in the download).</p>
<p>Using a two part system of sending the tag data to a web server (via a locally run data forwarding application) then displaying it back to clients in the browser has a number of advantages:</p>
<ul>
<li>Main application processing / display logic can be maintained in a single central location for one or more deployments.</li>
<li>Location display / viewing GUI is cross platform (can be accessed via most modern browsers the have support for  <a href="http://en.wikipedia.org/wiki/Scalable_Vector_Graphics">SVG</a> excluding Internet Explorer).</li>
<li>No software to install on client PCs viewing the map.</li>
<li>Multiple users can logon and view the map at the same time.</li>
</ul>
<p>The use of mesh networking means that only a single device needs to be directly connected to a PC, all the others just need to be within range of any other unit that itself is either close to the PC, or close to another reader that is close to the PC.  The makes setting up the system much easier as there is no need to wire each node to the PC / the network or have a PC next to each node.  The nodes just require 3V power.</p>
<h3 class="alternate" id="b-384-tag_hardware">Tag Hardware</h3>
<h4 class="alternate">Parts List</h4>
<p><em>Per individual tag</em></p>
<table cellspacing="0" class="tblwithborder">
<tr>
<th>Qty</th>
<th>Name</th>
<th>Supplier</th>
<th>Cost (&pound; GBP)</th>
</tr>
<tr>
<td>x1</td>
<td>Pocket Card Enclosure</td>
<td><a href="http://www.teko.co.uk/enclosures/pocket-card.htm">Teko PC.4</a></td>
<td align="right">3.56</td>
</tr>
<tr>
<td>x1</td>
<td><a href="http://www.synapse-wireless.com/?mainID=3&amp;subID=3&amp;type=product&amp;prodID=3"> RF100P86 Synapse RF Engine</a></td>
<td><a href="http://uk.futureelectronics.com/en/Technologies/Product.aspx?ProductID=RF100P86SYNAPSEWIRELESSINC2270387">Future RF100P86</a></td>
<td align="right">15.09</td>
</tr>
<tr>
<td>x1</td>
<td>VBH2032-1-LF Battery Holder</td>
<td><a href="http://uk.farnell.com/renata/vbh2032-1-lf/holder-battery-vertical-for-cr/dp/1216359">Farnel 1216359</a></td>
<td align="right">0.84</td>
</tr>
<tr>
<td>x1</td>
<td>CR2032 Battery</td>
<td><a href="http://www.rapidonline.com/Electrical-Power/Batteries/Lithium/Lithium-coin-cells/74894/kw/18-0386">Rapid 18-0386</a></td>
<td align="right">0.88</td>
</tr>
<tr>
<td>x1</td>
<td>Small Stick On Feed (sold in packs of 4)</td>
<td><a href="http://www.maplin.co.uk/module.aspx?moduleno=1840">Maplin FE32K</a></td>
<td align="right">0.89</td>
</tr>
<tr>
<td>x1</td>
<td>Large Stick On Feed (sold in packs of 4)</td>
<td><a href="http://www.maplin.co.uk/module.aspx?moduleno=1840">Maplin FW38R</a></td>
<td align="right">0.89</td>
</tr>
</table>
<p>Note: I used a CR2032 battery from Rapid however both Farnel, and Future also have a selection available from various manufacturers.</p>
<h4 class="alternate">Building The Tag</h4>
<p><a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/tag_boxed_2.jpg"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/tag_boxed_2_small.jpg" alt="Tag Boxed" width="200" height="216" class="alignright" /></a></p>
<p>I choose the Teko Enclosure because of its compact, credit card size.  Unfortunately however this meant that the RF Engine would not fit vertically inside.  I could have used one of the alternate form factor modules (sold by companies such as Panasonic that also support the Synapse firmware) however having the pins broken out is actually useful for updating the tag Python software / firmware at a later date.  I therefore decided to bend over the pins, allowing one side to be plugged into the evaluation board as normal (albeit it a much looser fit) and the other to be plugged into the IDC header via an extension cable.  <a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/tag_nocover.jpg"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/tag_nocover_small.jpg" alt="Tag Without Cover" width="200" height="146" class="alignleft" /></a> I tried a number of approaches to bending over the pins, including bending them all at once using pliers, and trying to bend them against a flat surface, neither proved very fruitful.  In the end I found the best approach was individually bend each using the tip of the pliers.</p>
<p>In terms of wiring things are fairly straight forward, pin 24 on the modules goes to (-) on the battery holder, and pin 21 to (+) on the battery holder.  I soldered to the top of the module to avoid obstructing the pins meaning they can still be plugged into the evaluation board/extension cable for reprogramming.  I also used some heat shrink tubing to tidy things up.</p>
<p><a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/eval_board_extension_1.jpg"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/eval_board_extension_1_small.jpg" alt="Evaluation Board" width="200" height="350" class="alignright" /></a></p>
<p>To secure the module in the enclosure I used two small stick on feet on the module itself, and two larger stick on feet to wedge the battery holder into a corner of the enclosure.</p>
<p>Not being as adept as I could be with finding productions on Digikey&#8217;s site I took the approach of ordering two parts (<a href="http://search.digikey.com/scripts/DkSearch/dksus.dll?lang=en&amp;site=US&amp;WT.z_homepage_link=hp_go_button&amp;KeyWords=3M1324-ND&amp;x=25&amp;y=19">3M1324-ND</a>, <a href="http://search.digikey.com/scripts/DkSearch/dksus.dll?lang=en&amp;site=US&amp;WT.z_homepage_link=hp_go_button&amp;KeyWords=MMS-112-02-T-SV&amp;x=15&amp;y=21">SAM1242-12-ND</a>) really designed for PCB mounting and soldering a ribbon cable to them.  A better approach (if such parts exist) would have been to purchase connectors that can mount directly to ribbon cable (therefore requiring no soldering), and to purchase suitable sized ribbon cable to fit.</p>
<p>Note: If you are going to use the same approach I did and solder the connections then ensure the solder does not leak into the socket, otherwise it will not be possible to plug it in to the evaluation board.</p>
<h3 class="alternate" id="b-384-reader_nodes_hardware">Reader Node Hardware</h3>
<h4 class="alternate">Parts List</h4>
<p><em>Per individual reader &#8211; at least 3 reader nodes are required</em></p>
<table cellspacing="0" class="tblwithborder">
<tr>
<th>Qty</th>
<th>Name</th>
<th>Supplier</th>
<th>Cost (&pound; GBP)</th>
</tr>
<tr>
<td>x1</td>
<td>50mm x 50mm x 20mm ABS Box</td>
<td><a href="http://www.maplin.co.uk/module.aspx?moduleno=43710">Maplin N53FK</a></td>
<td align="right">1.59</td>
</tr>
<tr>
<td>x1</td>
<td><a href="http://www.synapse-wireless.com/?mainID=3&amp;subID=3&amp;type=product&amp;prodID=3">RF100P86 Synapse RF Engine</a></td>
<td><a href="http://uk.futureelectronics.com/en/Technologies/Product.aspx?ProductID=RF100P86SYNAPSEWIRELESSINC2270387">Future RF100P86</a></td>
<td align="right">15.09</td>
</tr>
<tr>
<td>x1</td>
<td>2.1mm DC Socket</td>
<td><a href="http://www.maplin.co.uk/module.aspx?moduleno=1407">Maplin JK09K</a></td>
<td align="right">1.69</td>
</tr>
<tr>
<td>x1</td>
<td>Regulated 3V DC 400mA Power Adapter</td>
<td><a href="http://www.maplin.co.uk/module.aspx?moduleno=19160">Maplin MG76H</a></td>
<td align="right">7.99</td>
</tr>
</table>
<h4 class="alternate">Building The Reader Node</h4>
<p><a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/reader_node_unboxed.jpg"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/reader_node_unboxed_small.jpg" alt="Reader Node Unboxed" width="200" height="154" class="alignleft" /></a>As with the tags in terms of wiring, the reader nodes are fairly straight forward, with pins 21 and 24 going to the appropriate connections on the DC plug.</p>
<p>As with the PC reader it would be possible to use the &#8220;SNAPstick USB Module Interface&#8221; to avoid the soldering work, and in this case a USB power supply e.g. <a href="http://www.maplin.co.uk/Module.aspx?ModuleNo=227636">plug form</a> or <a href="http://www.maplin.co.uk/Module.aspx?ModuleNo=115319">cabled form</a> would also be required.</p>
<p>Using the Maplin N53FK box I found the modules only just fitted alongside the DC Plug, I had to remove one of small plastic mounting stands in the box to make it fit.  The other small mounting stand served to secure the module in the box with one row of pins on the module fitting between it and the outer case wall. <a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/4_reader_nodes_no_lid.jpg"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/4_reader_nodes_no_lid_small.jpg" alt="4 Reader Nodes Without Lids" width="200" height="190" class="alignright" /></a>  After the module and DC plug were fitted inside the box some space remained between the top of the module and the top of the box, therefore I used a single packing peanut to secure things.  Something like hot glue could also be used however the packing peanut means the modules can quickly and easily be removed and put back into the box, e.g. for reprogramming (however generally it would be possible to reprogram them over the air).</p>
<p>Note: If you are looking for additional range the Synapse RF100PC6 (including a transmit amplifier) or RF100PD6 (including a transmit amplifier and allowing connector of an external antenna) may be more suitable for the both the PC reader, and reader nodes.</p>
<h3 class="alternate" id="b-384-pc_reader_hardware">PC Reader Hardware</h3>
<h4 class="alternate">Parts List</h4>
<table cellspacing="0" class="tblwithborder">
<tr>
<th>Qty</th>
<th>Name</th>
<th>Supplier</th>
<th>Cost (&pound; GBP)</th>
</tr>
<tr>
<td>x1</td>
<td>50mm x 50mm x 20mm ABS Box</td>
<td><a href="http://www.maplin.co.uk/module.aspx?moduleno=43710">Maplin N53FK</a></td>
<td align="right">1.59</td>
</tr>
<tr>
<td>x1</td>
<td><a href="http://www.synapse-wireless.com/?mainID=3&amp;subID=3&amp;type=product&amp;prodID=3">RF100P86 Synapse RF Engine</a></td>
<td><a href="http://uk.futureelectronics.com/en/Technologies/Product.aspx?ProductID=RF100P86SYNAPSEWIRELESSINC2270387">Future RF100P86</a></td>
<td align="right">15.09</td>
</tr>
<tr>
<td>x1</td>
<td><a href="http://www.ftdichip.com/Products/EvaluationKits/TTL-232R-3V3.htm">TTL-232R-3V3 USB to Serial (3.3v level) Cable</a></td>
<td><a href="http://www.skpang.co.uk/catalog/product_info.php?products_id=317">SK Pang</a></td>
<td align="right">18.98</td>
</tr>
<tr>
<td>x2</td>
<td><a href="http://www.farnell.com/datasheets/10177.pdf">LP2950ACZ-3.0 Voltage Regulator</a></td>
<td><a href="http://uk.farnell.com/national-semiconductor/lp2950acz-3-0-nopb/ldo-reg/dp/1685546">Farnel 1685546</a></td>
<td align="right">0.64 ea</td>
</tr>
<tr>
<td>x1</td>
<td>6 Way 2.54mm Molex Header</td>
<td><a href="http://www.rapidonline.com/Cables-Connectors/Connectors-Multipole/PCB-Interconnect/2.54mm-Straight-header/66415/kw/PCB+Header">Rapid 22-0846</a></td>
<td align="right">0.48</td>
</tr>
<tr>
<td>x1</td>
<td>Cable Tie</td>
<td></td>
<td align="right"></td>
</tr>
</table>
<h4 class="alternate">Building The Reader</h4>
<p><a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/pc_reader_top_off.jpg"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/pc_reader_top_off_small.jpg" alt="PC Reader No Lid" width="200" height="187" class="alignright" /></a></p>
<p>To simplify the process of linking the 3V Synapse module to the PC (i.e. avoid using a <a href="http://en.wikipedia.org/wiki/MAX232">MAX232</a> and the extra PCB / wiring that would involve) I used a 3V FTDI USB to serial cable.  The USB end plugs straight into the PC and provides a virtual serial port, the other end connects to the UART pins on the Synapse module.  In terms of power, to avoid the need for an external power supply I used an LP2950ACZ-3.0 Voltage Regulator to convert the 5V power provided by the USB port / FTDI cable to the 3V needed by the module.  The LP2950ACZ-3.0 however is only rated for 100mA therefore I used two in parallel to provide 200mA (the Synapse RF Engine datasheet quotes a transmit current of 110mA and a receive current of 65mA).</p>
<p><a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/pc_reader.jpg"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/pc_reader_small.jpg" alt="PC Reader Unit" width="200" height="121" class="alignright" /></a></p>
<p>To save some of the work involved in building the readers a <a href="http://uk.futureelectronics.com/en/Technologies/Product.aspx?ProductID=SN132HONRSYNAPSEWIRELESSINC6904726">SNAPstick USB Module Interface</a> (as included in the evaluation kit), and a <a href="http://uk.futureelectronics.com/en/Technologies/Product.aspx?ProductID=RF100P86SYNAPSEWIRELESSINC2270387">RF100P86</a> could be used instead however it would still require a suitable enclosure, and USB extension cable bringing the cost to ~50 GBP per reader.</p>
<p>[View: <a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/pc_reader_module.jpg">Module Wiring</a> | <a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/pc_reader_connections.jpg">Connector Wiring</a> | <a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/pc_reader_wires.jpg">Connector &amp; Module</a>]</p>
<h3 class="alternate" id="b-384-tag_software">Tag Software</h3>
<p>The Python tag software is fairly straight forward, it performs 5 main functions:</p>
<ol>
<li>Set transmit power level for the tags.</li>
<li>Initialise GPIOs to optimise current consumption in sleep mode.</li>
<li>Turn off relaying of messages for other devices in the mesh network (it will only be powered up for a small amount of time every specified interval therefore this would not be very useful, also it may use up extra current).</li>
<li>Send out a ping (via multicast RPC) to any reader nodes in range with the tag id, and a TTL of 1.</li>
<li>Go to sleep for e.g. 10 seconds.</li>
</ol>
<p><a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/tag_unboxed.jpg"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/tag_unboxed_small.jpg" alt="Tag Unboxed" width="200" height="157" class="alignleft" /></a></p>
<p>Specifying a TTL of 1 on the multicast RPC call causes only readers that are directly in range of the tag to receive the ping, otherwise by default any nodes not in direct range of the tag would be forwarded the call from readers that were.  This would mean it would not be possible to work out which reader actually communicated with the tag directly and which communicated 2nd hand.</p>
<p>The software is loaded onto the tag via the Synapse &#8220;<a href="http://forums.synapse-wireless.com/showthread.php?t=9">Portal</a>&#8221; application available for Windows, Mac, and Linux, also included with the evaluation kit.</p>
<p>When programming the tag you should plug it into the evaluation board rather than run it on battery and program it over the air because leaving the module on the workbench un-programmed, even for just a few minutes will quickly drain the small battery (15mA when idle according to the datasheet) and 40mA / 110mA when receiving / transmitting. </p>
<p>[Download: <a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/02/tracking_tag.py_.txt">Python Source</a>]</p>
<h3 class="alternate" id="b-384-reader_node_software">Reader Node Software</h3>
<p>The reader node Python software is responsible for receiving a multicast ping from the tag, and then forwarding it back to the module connected to the PC, along with the signal strength of the tag that sent the ping, and the id of the reader itself.  Thanks to the <a href="http://www.synapse-wireless.com/documents/products/SYNAPSE_SNAP.pdf">SNAP (Synapse Network Appliance) protocol</a> the intricacies usually involved with using a mesh network are all abstracted away from the programmer meaning it can be done in only 2 lines of code (excluding comments, variables).</p>
<p>[Download: <a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/02/tracking_reader_node.py_.txt">Python Source</a>]</p>
<h3 class="alternate" id="b-384-pc_reader_software">PC Reader Software</h3>
<p>The PC Reader Python software handles receiving data from the reader nodes (which themselves receive data from tags).  It initialises the serial port, connects UART  1 (itself connected to the FTDI cable, which appears as a virtual serial port on the PC side) to STDIN/STDOUT (i.e. meaning that any Python &#8220;print&#8221; statements cause that data to be sent over the UART to the PC), and then initialises it to 9600 baud.  The software prints the tag ping data to the serial port (after decoding the hex values to plain text).</p>
<p>Example: 003c02,001a06,57<br />
(i.e. [tag id],[reader id],[signal strength]</p>
<p>If the tag that sent the ping is in range of e.g. 4 reader nodes at that time, 4 lines will be received with the same tag id, but different reader ids, and varying signal strengths depending on which reader nodes the tag is closer to.</p>
<p>Note: There is not a command / function to send data to the UART, Python access to it is available only by e.g. cross connecting the UART with STDIN/STDOUT.</p>
<p>[Download: <a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/02/tracking_pc.py_.txt">Python Source</a>]</p>
<h3 class="alternate" id="b-384-data_forwarder">PC Serial To HTTP Data Forwarder</h3>
<p><a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/data_forwarder.jpg"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/data_forwarder_small.jpg" alt="Data Forwarder Application Screenshot" width="200" height="166" class="alignright" /></a></p>
<p>The data forwarding application listens for data on the virtual serial port created by the FTDI adapter, and sends it to a HTTP server via HTTP Post.  The local &#8220;COM Port&#8221; (e.g. COM 6) and remote servers HTTP address (http://www.example.com/locationtrack/?p=clientapi&amp;password=track111) running the server software should be specified.  If no HTTP server API address is specified tag data will be logged to the screen only (useful for debugging / testing).</p>
<p>It does not simply pass data straight through to the web API however does some initial processing, firstly in order to minimise HTTP requests (improve performance), and secondly in order to group tag pings together based on a 1 second time limit (something that would be otherwise unnecessarily complex to do on the web application side).  It is assumed a tag is in the same location when any reader reports seeing that particular tag within a 1 second window from when the tag was first seen by any reader.</p>
<p><a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/data_forwarder_code.gif"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/data_forwarder_code_small.gif" alt="Data Forwarder Code Screenshot" width="200" height="141" class="alignleft" /></a>The application includes an &#8220;Auto Connect&#8221; checkbox which will cause it to automatically open the connection to the serial port when the software is loaded.</p>
<p>Note: One of the selling points of using the Synapse module (Python / high level language / RPC) based solution is the ease of use of it, everything is very much simplified for the programmer over other options such as perhaps using a <a href="http://www.nordicsemi.com/index.cfm?obj=product&amp;act=display&amp;pro=93">Nordik nRF24LU1</a>, and controlling it over I2C with an <a href="http://www.sparkfun.com/commerce/product_info.php?products_id=9034">AVR</a> in &#8220;C&#8221;.  However this does bring with it additional licensing costs if you use over 6 modules on a network at a time using Portal.  Therefore I coded a custom client side data forwarding application, rather than loading a Python script into Portal to do this and using RPC calls which would have been a simpler solution.  In terms of deployments using the C# application also simplifies things avoiding the need for Portal to be installed / configured, the C# application just requires setting the COM port and URL.</p>
<p>The .net framework is required to run this application, it is available from <a href="http://www.update.microsoft.com/">Microsoft Update</a> or as a download from <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&amp;displaylang=en">microsoft.com</a>.</p>
<p><a href="http://www.microsoft.com/express/vcsharp/">C# Express Edition</a> is available for free from Microsoft for viewing / editing the source code.</p>
<p>[Download: <a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/02/serial_http_data_forwarder_code.zip">C# Source</a> | <a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/02/serial_http_data_forwarder.exe">Application Executable</a>]</p>
<h3 class="alternate" id="b-384-php_gui">Location Tracking Processing / Display GUI</h3>
<p><a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/02/display_gui.jpg"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/02/display_gui_small.jpg" alt="Display GUI (Tracking Map)" width="200" height="129" class="alignright size-full wp-image-551" /></a>Coded in PHP this part of the code is responsible for accepting data from the HTTP Data Forwarder, converting the signal data into a location on a map, saving the data to a MySQL database and displaying it to one of more users viewing the map.  The frontend is coded in JavaScript and <a href="http://en.wikipedia.org/wiki/Scalable_Vector_Graphics">SVG</a> (using the <a href="http://keith-wood.name/svg.html">jQuery SVG plugin</a>).  AJAX is used to poll the server for tags that have moved and JavaScript / SVG is used to dynamically animate them to their new positions on screen.</p>
<p>When the map is first loaded the tags will animate from their last 2 positions coming to rest at the current live location.  JavaScript code has been written to ensure that tags are not placed on top of each other but rather clustered around the closest reader.</p>
<p>Support is provided on GUI for adding maps (one or more), readers, tags, and users (who can login) to the system.</p>
<p>[Download: <a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/02/location_track_code.zip">PHP Source</a>]</p>
<p>[View: <a href="http://www.ns-tech.co.uk/demo/location-track/?demo=1">Demo</a>]</p>
<p><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/KvFXblEACYI&#038;hl=en_GB&#038;fs=1&#038;rel=0&#038;hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/KvFXblEACYI&#038;hl=en_GB&#038;fs=1&#038;rel=0&#038;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
<p><em>Video showing a single tag moving around the map plan diagram corresponding to its real world location in one of 3 rooms.  The tag ping interval was set to 3 seconds.</em></p>
<p><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/6dpKDKL7CQM&#038;hl=en_GB&#038;fs=1&#038;rel=0&#038;hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/6dpKDKL7CQM&#038;hl=en_GB&#038;fs=1&#038;rel=0&#038;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
<p><em>Video showing failed attempt to use trilateration to determine the unknown position of tag using the known position of 3 readers, and signal strengths to them.</em></p>
<h3 class="alternate">General Notes</h3>
<p>I would suggest purchasing the <a href="http://www.synapse-wireless.com/?mainID=3&amp;subID=8&amp;type=product&amp;prodID=8">Synapse Starter Kit</a> (<a href=" http://uk.futureelectronics.com/en/technologies/development-tools/rf-wireless/Pages/8306680-EK2100.aspx">Future Electronics</a>), since although modules are programmable over the air, a serial connection is required in some situations such as deleting running scripts that are in an infinite loop, or have disabled the RF interface used by the &#8220;Portal&#8221; software for uploading new software. </p>
<p>Synapse Wireless software, and documentation is available from the <a href="http://forums.synapse-wireless.com/showthread.php?t=9">Synapse forum</a>.</p>
<h3 class="alternate">Download All</h3>
<p>Includes all project files as linked individually above (Tag Python, Reader Node Python, PC Reader Python, C# Data Forwarder Source, Data Forwarder Binary, PHP Processing / Display application).</p>
<p>[Download: <a href="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/02/tracking_all_code.zip">All Code</a>]</p>
<h3 class="alternate">Issues</h3>
<ul>
<li>With the non trilateration approach of placing tags nearest to the highest signal strength reader, readers need to be carefully situated, particularly if they are in different sized rooms adjacent to each other in order to avoid false readings.</li>
<li>If building the readers again I would use a different type of DC socket, as the one chosen was fairly loose when used with the 3V adapter plugs.</li>
<li>I was expecting to achieve a longer battery life, as it stands battery life is around 1 week for a 10 second ping interval, and around 2 days for a 3 second interval on the CR2032.  In terms of increasing battery life the main options would be decreasing the ping rate (therefore increasing the sleep time), or going for a different battery however this would likely require a larger form factor enclosure.</li>
</ul>
<h3 class="alternate">OpenBeacon Suitability</h3>
<p><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/openbeacon_tag.jpg" alt="OpenBeacon Tag" width="200" height="158" class="alignright size-full wp-image-483" /></p>
<p>At first glance <a href="http://www.openbeacon.org/">OpenBeacon</a> hardware (as used at conferences such as the <a href="http://events.ccc.de/congress/2007/">CCC&#8217;s 24C3</a>) would appear to be an ideal choice, their website even mentions it is &#8220;meant to be used as a reference platform by hardware and software developers&#8221;, however the more I looked into it the more it did not seem suitable for my particular requirements:</p>
<ul>
<li>Form factor of <a href="https://shop.openpcd.de/product_info.php?products_id=44&amp;osCsid=0115sl3deeu7oded5fn6jv7j21">20 EUR white tags</a> is not particularly ideal (open circuit board / battery).</li>
<li><a href="https://shop.openpcd.de/product_info.php?products_id=46&amp;osCsid=0115sl3deeu7oded5fn6jv7j21">Keyring tags</a> are available however they cost 25 EUR each + 5 EUR for <a href="https://shop.openpcd.de/product_info.php?products_id=43&amp;osCsid=0115sl3deeu7oded5fn6jv7j21">the case</a>, i.e. 30 EUR in total per tag.</li>
<li><a href="https://shop.openpcd.de/product_info.php?products_id=42&amp;osCsid=0115sl3deeu7oded5fn6jv7j21">USB readers</a> are available for 85 EUR however require a PC by each reader, not particularly suitable for even a small deployment with e.g. 4 or 5 readers.</li>
<li><a href="https://shop.openpcd.de/product_info.php?products_id=45&amp;osCsid=0115sl3deeu7oded5fn6jv7j21">Ethernet readers</a> are available but at a cost of 340 EUR&#8217;s they are somewhat expensive and still require a network cable to each, not ideal.</li>
<li>Readers are not able to provide received signal strength but rather rely on the tags broadcasting at a set (limited) number of power levels meaning a position can not be calculated as accurately as it may otherwise.</li>
</ul>
<p>Update: <a href="http://www.ns-tech.co.uk/blog/2010/02/active-rfid-tracking-system/#comment-411">Reader Tip</a> on setting up &#8220;Reader Nodes&#8221;.</p>
<h3 class="alternate">Other Projects</h3>
<p><a href="http://www.ns-tech.co.uk/products/parallel-track/"><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/paralleltrack.jpg" alt="Parallel Track Screenshot" width="200" height="116" class="alignright" /></a></p>
<p>If you are interested in this project you may find these others also of interest: <a href="http://www.ns-tech.co.uk/products/parallel-track/">Parallel Track</a>, a free (for personal non commercial use) server side vehicle tracking application coded in PHP designed to be used with Python supporting <a href="http://www.telit.com/en/products.php">Telit hardware modules</a> running the embedded <a href="http://www.tmodsoft.com/software/vehicle-tracking/">TModSoft software</a> (firmware).  <a href="http://www.ns-tech.co.uk/products/track-any-mobile/">Track Any Mobile</a>, a web application for mobile phone tracking using the MSC (MSISDN) available using an SS7 API provider.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ns-tech.co.uk/blog/2010/02/active-rfid-tracking-system/feed/</wfw:commentRss>
		<slash:comments>50</slash:comments>
		</item>
		<item>
		<title>New Products Available</title>
		<link>http://www.ns-tech.co.uk/blog/2010/01/new-products-available/</link>
		<comments>http://www.ns-tech.co.uk/blog/2010/01/new-products-available/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 10:31:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.ns-tech.co.uk/blog/?p=386</guid>
		<description><![CDATA[Finally got around to writing up / making available for download a number of projects that I have for sale.  Some are new such as Takeaways Direct, and some I have had around for a while such as Parallel Track but have not made the source code available before:

Takeaways Direct &#8211; An online restaurant [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2010/01/parallel_track.jpg" alt="Parallel Track" title="Parallel Track" width="200" height="116" class="alignright size-full wp-image-388" />Finally got around to writing up / making available for download a number of projects that I have for sale.  Some are new such as Takeaways Direct, and some I have had around for a while such as Parallel Track but have not made the source code available before:</p>
<ul>
<li><a href="http://www.ns-tech.co.uk/products/takeaways-direct/">Takeaways Direct</a> &#8211; An online restaurant and takeaway ordering application coded in PHP.</li>
<li><a href="http://www.ns-tech.co.uk/products/parallel-track/">Parallel Track</a> &#8211; A vehicle tracking application coded in PHP, available (currently) at no cost for personal non commercial use (commercial use requires a license).</li>
<li><a href="http://www.tmodsoft.com/software/remote-software-update/">Telit Module Remote Update Script</a> &#8211; A Python application that can be integrated into your own Python applications on the Telit Modules to enable remote software updates via HTTP and GPRS.</li>
<li><a href="http://www.tmodsoft.com/software/animal-tracking/">Animal Tracking Script</a> &#8211; A Python application for the Telit modules suitable for animal GPS based tracking.  It can however also be used in any situation where low power consumption / batter operation is required.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.ns-tech.co.uk/blog/2010/01/new-products-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Setting Up Apache / PHP For Virtual Hosting Using suEXEC</title>
		<link>http://www.ns-tech.co.uk/blog/2009/12/setting-up-apache-php-for-virtual-hosting-using-suexec/</link>
		<comments>http://www.ns-tech.co.uk/blog/2009/12/setting-up-apache-php-for-virtual-hosting-using-suexec/#comments</comments>
		<pubDate>Sun, 20 Dec 2009 17:56:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.ns-tech.co.uk/blog/?p=366</guid>
		<description><![CDATA[Setting up Apache securely for multiple system users each with their own domain name(s), and subdomains on CentOS 5.
This post is a follow on to: Setting Up Exim Mail Server For Multiple Domains, it describes the configuration I am currently running on my own server for web hosting.
I looked into various options, and in terms [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2009/12/apache_logo.gif" alt="Apache Logo" width="200" height="61" class="alignright size-full wp-image-375" /><em>Setting up Apache securely for multiple system users each with their own domain name(s), and subdomains on <a href="http://www.centos.org/">CentOS 5</a>.</em></p>
<p>This post is a follow on to: <a href="http://www.ns-tech.co.uk/blog/2009/10/setting-up-exim-mail-server-for-multiple-domains/">Setting Up Exim Mail Server For Multiple Domains</a>, it describes the configuration I am currently running on my own server for web hosting.</p>
<p>I looked into various options, and in terms of balancing features (i.e. not restricting the functionality that can be used in PHP), security (not using e.g. PHP Safe Mode that is no longer recommended, or requiring 777 permissions on directories that need to be writable), install complexity, and maintainability for CentOS 5 this seemed to be the best approach.  All software is sourced from standard CentOS repositories therefore can be installed / updated easily via &#8220;yum&#8221;.  The trade-off of this approach is performance, PHP is running as CGI therefore will not be as fast as using PHP as a module or using something like <a href="http://www.fastcgi.com/">FastCGI</a>.</p>
<p>To keep things secure each person who is in control of a particular domain name/names will be setup with a single user account on the system.  The hosting space for these domains will then be placed in that users home directory.  This approach has the advantage that there is not a direct link between domains and user accounts, meaning that a (perhaps more traditional) one domain per user account approach can be taken but also has the advantage that if a single person has multiple domains they can all be setup in a single user account meaning there is no need to e.g. setup multiple SSH/SFTP/FTP logins on the client side, and on the server side those domains can access each others files/resources without any permissions issues, or alternate workaround being needed.  Each user account has a single Apache configuration file meaning a single place to e.g. setup a <a href="http://mu.wordpress.org/">WordPress MU</a> install for a specific user on the system.</p>
<h3>Install Packages</h3>
<ol>
<li>
<p>Install Apache:</p>
<p>		<code>yum install httpd</code>
	</li>
<li>
<p>Install PHP, and any additional PHP extensions you need:</p>
<p>		<code>yum install php<br />
yum install php-gd<br />
yum install php-mysql<br />
yum install php-mbstring<br />
yum install php-imap<br />
yum install php-soap<br />
yum install php-xml</code>
	</li>
</ol>
<h3>Configure Apache</h3>
<ol>
<li>
<p>Set the daemon to start on bootup, and start the service:</p>
<p>		<code>chkconfig httpd on<br />
service httpd start</code></p>
</li>
<li>
<p>Create directory to hold virtual host configuration files:</p>
<p>		<code>mkdir /etc/httpd/virtualdomains<br />
chmod 700 /etc/httpd/virtualdomains</code></p>
</li>
<li>
<p>Create directory to hold virtual host log files:</p>
<p>		<code>mkdir /var/log/domlogs<br />
chmod 701 /var/log/domlogs</code></p>
</li>
<li>
<p>Add the following in at the end of your &#8220;/etc/httpd/conf/httpd.conf&#8221; file:</p>
<p>		<code>#Turn off default following of symlinks (will turn it back on later as SymLinksIfOwnerMatch)<br />
&lt;directory /&gt;<br />
   Options -FollowSymLinks<br />
&lt;/directory&gt;</p>
<p>#Provide default install page<br />
&lt;LocationMatch "^/+$"&gt;<br />
    Options -Indexes<br />
    ErrorDocument 403 /error/noindex.html<br />
&lt;/LocationMatch&gt;</p>
<p>#Allow system users to make use of various options such as SymLinksIfOwnerMatch (for mod_rewrite etc) in their .htaccess files<br />
&lt;Directory /home&gt;<br />
    Options +Indexes +SymLinksIfOwnerMatch<br />
    AllowOverride FileInfo AuthConfig Limit Indexes<br />
&lt;/Directory&gt;</p>
<p>#Enable PHP (only for .php extension), and add it to pages considered as index<br />
&lt;FilesMatch \.php$&gt;<br />
  SetHandler application/x-httpd-php5<br />
&lt;/FilesMatch><br />
AddType text/html .php<br />
DirectoryIndex index.php</p>
<p>#Virtual hostnames<br />
NameVirtualHost *:80</p>
<p>#Default page for domains not setup<br />
&lt;VirtualHost *:80&gt;<br />
    DocumentRoot /var/www/html<br />
&lt;/VirtualHost&gt;</p>
<p>#Include all the individual virtual host configuration files for processing<br />
Include virtualdomains/*.conf</code>
	</li>
<li>Comment out everything in &#8220;/etc/httpd/conf.d&#8221; this default file runs PHP as a module.</li>
<li>
<p>Restart Apache such that it reads in the new configuration:</p>
<p>		<code>service httpd restart</code>
	</li>
</ol>
<h3>User Account Setup</h3>
<p>Follow this setup process for each system user account that will be hosting a website / websites.</p>
<p>Note: The system user account &#8220;nstech&#8221; is used in this example, it is assumed this system user has already been setup using e.g. &#8220;useradd nstech&#8221;.</p>
<ol>
<li>
<p>Create a file (will be blank initially) to hold Apache virtual host configuration:</p>
<p>		<code>touch /etc/httpd/virtualdomains/nstech.conf<br />
chmod 644 /etc/httpd/virtualdomains/nstech.conf</code>
	</li>
<li>
<p>Allow all system user accounts (inclusing the &#8220;apache&#8221; user account) to recurse the directory tree:</p>
<p>		<code>chmod 711 /home/nstech</code>
	</li>
<li>
<p>For security reasons suEXEC has a number of restrictions on what it will allow to be executed, therefore each user will need a copy of the PHP binary that has its &#8220;user&#8221; and &#8220;group&#8221; set to that accounts username, has appropriate permissions, and is placed in a suitable directory such as &#8220;/var/www/cgi-bin&#8221; (suEXEC has a hard coded path that it is not possible to change without recompiling).  However copying PHP for each user is inefficient, therefore e.g. a bash script can be used that then calls the PHP binary itself:</p>
<p>		<code>mkdir /var/www/cgi-bin/nstech<br />
chown nstech:nstech /var/www/cgi-bin/nstech<br />
chmod 755 /var/www/cgi-bin/nstech</p>
<p>/var/www/cgi-bin/nstech/php-cgi.bash<br />
------------------------------------<br />
#!/bin/bash</p>
<p>/usr/bin/php-cgi "$@"</code></p>
<p><em>(script from <a href="http://blog.stuartherbert.com/php/2007/12/18/using-suexec-to-secure-a-shared-server/">Stuart Herbert&#39;s PHP Blog</a>)</em></p>
<p>		<code>chown nstech:nstech /var/www/cgi-bin/nstech/php-cgi.bash<br />
chmod 755 /var/www/cgi-bin/nstech/php-cgi.bash</code></p>
</li>
<li>
<p>Create a directory to hold all log files for the users domains:</p>
<p>		<code>mkdir /var/log/domlogs/nstech<br />
chmod 750 /var/log/domlogs/nstech<br />
chown root:nstech /var/log/domlogs/nstech</code></p>
</li>
</ol>
<h3>Domain / Subdomain Setup</h3>
<p>Follow this process for each new domain or subdomain that will be setup in a users account.</p>
<p>Note: The domain name &#8220;www.ns-tech.co.uk&#8221; and user account &#8220;nstech&#8221; are used in this example</p>
<ol>
<li>
<p>Create a directory on the file system that will serve as the webspace for the domain being setup, and set appropriate permissions:</p>
<p>		<code>mkdir /home/nstech/www.ns-tech.co.uk<br />
chmod 750 /home/nstech/www.ns-tech.co.uk<br />
chown nstech:apache /home/nstech/www.ns-tech.co.uk</code></p>
</li>
<li>
<p>Create (initially blank) log files for the user, and give the user permissions to view them (e.g. read them via PHP scripts or SSH).</p>
<p>		<code>touch /var/log/domlogs/nstech/www.ns-tech.co.uk-error_log<br />
chmod 750 /var/log/domlogs/nstech/www.ns-tech.co.uk-error_log<br />
chown root:nstech /var/log/domlogs/nstech/www.ns-tech.co.uk-error_log</p>
<p>touch /var/log/domlogs/nstech/www.ns-tech.co.uk-access_log<br />
chmod 750 /var/log/domlogs/nstech/www.ns-tech.co.uk-access_log<br />
chown root:nstech /var/log/domlogs/nstech/www.ns-tech.co.uk-access_log</p>
<p>touch /var/log/domlogs/nstech/www.ns-tech.co.uk-bytes_log<br />
chmod 750 /var/log/domlogs/nstech/www.ns-tech.co.uk-bytes_log<br />
chown root:nstech /var/log/domlogs/nstech/www.ns-tech.co.uk-bytes_log</code></p>
</li>
<li>
<p>Append the virtual host configuration onto the existing virtual host configuration file for this user:</p>
<p>		<code>/etc/httpd/virtualdomains/nstech.conf<br />
-------------------------------------<br />
&lt;VirtualHost *:80&gt;<br />
    SuexecUserGroup nstech nstech<br />
    DocumentRoot /home/nstech/www.ns-tech.co.uk<br />
    ServerName www.ns-tech.co.uk<br />
    ServerAlias ns-tech.co.uk<br />
    ErrorLog /var/log/domlogs/nstech/www.ns-tech.co.uk-error_log<br />
    CustomLog /var/log/domlogs/nstech/www.ns-tech.co.uk-access_log combined<br />
    CustomLog /var/log/domlogs/nstech/www.ns-tech.co.uk-bytes_log "%I %O"<br />
    Action application/x-httpd-php5 "/cgi-bin/nstech/php-cgi.bash"<br />
&lt;/VirtualHost&gt;</code></p>
</li>
<li>
<p>Restart Apache such that it reads in the new configuration:</p>
<p>		<code>service httpd restart</code>
	</li>
</ol>
<p>Note: As far as I am aware the setup process described is reasonably secure however as with securing anything somewhat complex such as PHP, with Apache, and multiple system users but still allowing a reasonable amount of functionality there are a number of thing to consider.  You are advised to test the security of this setup yourself in case I have missed something.   Any issues please leave a comment below.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ns-tech.co.uk/blog/2009/12/setting-up-apache-php-for-virtual-hosting-using-suexec/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>High Spec Gaming PC Build Components</title>
		<link>http://www.ns-tech.co.uk/blog/2009/11/high-spec-gaming-pc-build-components/</link>
		<comments>http://www.ns-tech.co.uk/blog/2009/11/high-spec-gaming-pc-build-components/#comments</comments>
		<pubDate>Sun, 22 Nov 2009 16:22:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.ns-tech.co.uk/blog/?p=338</guid>
		<description><![CDATA[I was recently asked to put together a high spec&#8217; computer primarily for gaming.
I usually use Intel motherboards, and since the recipient was keen on a processor using the LGA 1366 socket this meant the DX58SO X58 Express Chipset board was the only option.
I went with the following components:



Component
Name
Cost (&#163;)


Case
Evercase Giga ECE4252
14.95


Hard Drive
500GB Seagate Barracuda [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.ns-tech.co.uk/blog/wp-content/uploads/2009/11/pccase.jpg" alt="PC Case" title="PC Case" width="200" height="179" class="alignright size-full wp-image-348" />I was recently asked to put together a high spec&#8217; computer primarily for gaming.</p>
<p>I usually use Intel motherboards, and since the recipient was keen on a processor using the <a href="http://en.wikipedia.org/wiki/LGA_1366">LGA 1366</a> socket this meant the <a href="http://www.intel.com/products/desktop/motherboards/DX58SO/DX58SO-overview.htm">DX58SO X58 Express Chipset</a> board was the only option.</p>
<p>I went with the following components:</p>
<div class="clear"></div>
<table cellspacing="0" class="tblwithborder">
<tr>
<th>Component</th>
<th>Name</th>
<th>Cost (&pound;)</th>
</tr>
<tr>
<td>Case</td>
<td><a href="http://www.evercase.co.uk/GigaECE4252.htm">Evercase Giga ECE4252</a></td>
<td align="right">14.95</td>
</tr>
<tr>
<td>Hard Drive</td>
<td><a href="http://www.cclonline.com/product-info.asp?product_id=20478">500GB Seagate Barracuda 7200rpm</a></td>
<td align="right">79.55</td>
</tr>
<tr>
<td>Motherboard</td>
<td><a href="http://www.cclonline.com/product-info.asp?product_id=33455">Intel DX58SO Extreme Series</a></td>
<td align="right">187.55</td>
</tr>
<tr>
<td>Memory</td>
<td><a href="http://www.cclonline.com/product-info.asp?product_id=28262">3GB Corsair Dominator 1600MHz DDR3 Kit</a></td>
<td align="right">71.21</td>
</tr>
<tr>
<td>Graphics</td>
<td><a href="http://www.quietpc.com/gb-en-gbp/products/vga-cards/gv-n98tsl-1gi">Gigabyte GV-N98TSL-1GI Fanless 9800GT 1GB</a></td>
<td align="right">109.00</td>
</tr>
<tr>
<td>Processor</td>
<td><a href="http://www.cclonline.com/product-info.asp?product_id=27826">Intel Core i7-920 &#8216;D0 Stepping&#8217; Quad Core</a></td>
<td align="right">217.30</td>
</tr>
<tr>
<td>CD/DVD</td>
<td><a href="http://www.cclonline.com/product-info.asp?product_id=34117">Sony DRU-870S 24x DVDRW</a></td>
<td align="right">28.26</td>
</tr>
<tr>
<td>Rear Fan</td>
<td><a href="http://www.quietpc.com/gb-en-gbp/products/120mmfans/sy-kazejyuni-1900">Scythe Kaze Jyuni 1900RPM Slip Stream 120mm Fan</a></td>
<td align="right">8.80</td>
</tr>
<tr>
<td>Front Fan</td>
<td><a href="http://www.quietpc.com/gb-en-gbp/products/80mmfans/ac-af-8l">Arctic Cooling Arctic Fan 8L, 80mm Quiet Rear Cooling Fan</a></td>
<td align="right">2.60</td>
</tr>
<tr>
<td>PSU</td>
<td><a href="http://www.quietpc.com/gb-en-gbp/products/psus-501-600/zmx00-st">Zalman ZM600-ST 600W</a></td>
<td align="right">69.95</td>
</tr>
<tr>
<td></td>
<td><strong>Total</strong></td>
<td align="right"><strong>789.17</strong></td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.ns-tech.co.uk/blog/2009/11/high-spec-gaming-pc-build-components/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
