<?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/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
>

<channel>
	<title>NickTelford.net &#187; Uncategorized</title>
	<atom:link href="http://nicktelford.net/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://nicktelford.net</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Fri, 02 Jul 2010 10:11:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/2.0/uk/</creativeCommons:license>
		<item>
		<title>Authenticating a login</title>
		<link>http://nicktelford.net/2010/06/21/authenticating-a-login/</link>
		<comments>http://nicktelford.net/2010/06/21/authenticating-a-login/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 21:26:38 +0000</pubDate>
		<dc:creator>Nick Telford</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://nicktelford.net/?p=47</guid>
		<description><![CDATA[
			
				
			
		
There is an interesting discussion on the use of the term &#8220;login&#8221; as a verb, part of a much wider discussion on colloquial terms often misunderstood to be verbs, that got me thinking about the proper terms for such actions.
&#8220;Login&#8221; is just one of many offenders (many of which originated on the Internet) that could [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fnicktelford.net%2F2010%2F06%2F21%2Fauthenticating-a-login%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif&amp;source=nicktelford&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>There is an <a href="http://loginisnotaverb.com/">interesting discussion</a> on the use of the term &#8220;login&#8221; as a verb, part of a much <a href="http://notaverb.com">wider discussion</a> on colloquial terms often misunderstood to be verbs, that got me thinking about the proper terms for such actions.</p>
<p>&#8220;Login&#8221; is just one of many offenders (many of which originated on the Internet) that could easily be replaced with verbs that make much more sense.</p>
<h3>Readability</h3>
<p>Of course, there&#8217;s a strong argument that words such as &#8220;login&#8221; and &#8220;checkout&#8221; have well-defined, verb-like connotations that readers&#8217;s are familiar with. So it&#8217;s often wise to sacrifice absolute grammatical correctness in order to communicate better with your readers. After all, the purpose of a language is as a well defined, but constantly evolving communication protocol.</p>
<p>However, there are ways in which you can ensure grammatical correctness without misleading your readers.<br />
<h3>Grammatically Correct Software</h3>
<p>In the context of software development, &#8220;readers&#8221; are the users of your software. Understanding how users perceive actions within your software (and optimising it) is a crucial aspect of development that is often overlooked. Using correct grammar can help a lot by providing users with a language that is familiar and un-obtuse. Users should never find themselves thinking &#8220;what does that mean?&#8221;.</p>
<p>So we need to be both grammatically correct, but colloquial enough that users don&#8217;t have to think too hard about what they&#8217;re doing. Lets see if we can apply this to a couple of common &#8220;anti-verbs&#8221;.</p>
<h4>&#8220;login&#8221;</h4>
<p>As the <a href="http://loginisnotaverb.com/">notaverb.com reference for &#8220;login&#8221;</a> points out; &#8220;login&#8221;, while not a verb, can be a noun. This is useful as it allows us to use terminology that user&#8217;s are already familiar with in order to prevent them from getting lost.</p>
<p>So if &#8220;login&#8221; is not a verb, what is? It&#8217;s suggested that &#8220;log in&#8221; is appropriate, but since this is a verb/adverb combination this doesn&#8217;t really fit the bill as it implies that you are &#8220;logging&#8221; in an &#8220;in&#8221; way. Even if this is grammatically correct, it&#8217;s quite vague: what or where is &#8220;in&#8221;?</p>
<p>I&#8217;d propose that, in the context of software, an appropriate verb would be to <b>authenticate</b>. Authentication implies that you are being recognised (or rejected) by an authority &#8211; in the case of software, the application itself.</p>
<p><em>Note: There are often two software processes involved in &#8220;logging in&#8221; &#8211; &#8220;authentication&#8221;: checking the authenticity of a user and; &#8220;authorization&#8221;: ensuring a user has authority to do something.</em></p>
<p><em>It&#8217;s good practice to disambiguate these terms internally (in the software code and audit logs etc.) but wise to make the latter transparent to users; a user should only be concerned with authentication.</em></p>
<p>The problem with &#8220;authentication&#8221; as a verb is simply one of complexity. Big words scare people.</p>
<p>We can use the noun form of &#8220;login&#8221; to provide user&#8217;s with a grammatical cue that they&#8217;re familiar with, but what is a &#8220;login&#8221; if it&#8217;s a noun? Simple, the &#8220;username&#8221;.</p>
<p>&#8220;username&#8221; is a word I&#8217;m strongly opposed to as it&#8217;s (in my opinion) not really a noun; it is two nouns squashed together: a &#8220;compound noun&#8221; if you prefer. More specifically, it is the &#8220;name&#8221; of the &#8220;user&#8221;, although the <em>actual</em> name of the user is often quite different &#8211; so how do we disambiguate the two?
<p>The solution is simple: ditch the term &#8220;username&#8221; in favour of the proper noun &#8220;login&#8221;.</p>
<p>Using these ideas, here&#8217;s how an authentication process may appear to a user in a way that&#8217;s both accessible and grammatically more accurate:</p>
<blockquote><p>Authentication<br />
Please enter your login and password:<br />
    Login: __________<br />
    Password: __________</p></blockquote>
<p>It seems to have become part of modern internet culture to define new words, often that defy traditional language conventions, in order to describe something new and exciting. This is not only unnecessary, it makes technology obtuse and less accessible &#8211; particularly to the older generations.</p>
<p>At the end of the day, technology is meant to innovate, liberate and empower users &#8211; not confuse them with unfamiliar words.</p>
]]></content:encoded>
			<wfw:commentRss>http://nicktelford.net/2010/06/21/authenticating-a-login/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/2.0/uk/</creativeCommons:license>
	</item>
		<item>
		<title>Handling Segmentation Faults in userland PHP</title>
		<link>http://nicktelford.net/2010/06/18/handling-segmentation-faults-in-userland-php/</link>
		<comments>http://nicktelford.net/2010/06/18/handling-segmentation-faults-in-userland-php/#comments</comments>
		<pubDate>Fri, 18 Jun 2010 10:23:42 +0000</pubDate>
		<dc:creator>Nick Telford</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://nicktelford.net/?p=32</guid>
		<description><![CDATA[I've been doing a lot of multi-process and signal programming PHP lately, and I found myself wondering which signals it's possible to intercept and handle in userland PHP. Of my findings, the most interesting was that you can trap SIGSEGV ("segmentation fault") and handle it yourself.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fnicktelford.net%2F2010%2F06%2F18%2Fhandling-segmentation-faults-in-userland-php%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif&amp;source=nicktelford&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>I&#8217;ve been doing a lot of multi-process and signal programming PHP lately, and I found myself wondering which signals it&#8217;s possible to intercept and handle in userland PHP. Of my findings, the most interesting was that you can trap <code>SIGSEGV</code> (&#8220;segmentation fault&#8221;) and handle it yourself.</p>
<p>By default, when the kernel raises a <code>SIGSEGV</code> on a PHP process, PHP intercepts the signal and handles it by simply printing &#8220;Segmentation Fault&#8221; to stderr (standard error) and the process immediately exits. This is understandable behaviour, but in most applications, especially large ones, it&#8217;s useful to know what it was that caused the segfault to be raised so you can address the problem.</p>
<p>So I found myself wondering if it was possible to trap <code>SIGSEGV</code> and gather some debug information about it before exiting, and discovered that it&#8217;s much simpler than it sounds:</p>
<pre class="php:nocontrols" name="code">
&lt;?php
/**
* Demonstrates signal handling to trap Segmentation Fault using userland PHP.
*
* Useful for debugging larger applications that occasionally generate
* segfaults.
*
* You are free to modify and redistribute this code without attribution.
*
* @author Nick Telford &lt;nick.telford@gmail.com&gt;
* @copyright Nick Telford (c) 2010
*/

// you need this towards the start of your application in order for signal
// handlers to be executed
declare(ticks = 1);

/**
* Signal handler for segmentation faults.
*
* Since a segfault indicates a memory problem, it's wise to keep this separate
* from other signal handlers and to have it do as little as possible.
*
* Also, since there's a memory problem, this should call exit(1), otherwise
* you could end up with unpredictable behaviour. Only avoid exit(1) if you
* *really* know what you're doing.
*
* @param integer $sig The UNIX signal, will be SIGSEGV for a segfault.
*/
function handleSegfault($sig)
{
    // note: unless you're running the CLI SAPI, this will be sent to the
    // browser, fwrite() it to STDERR instead or better yet, log the info
    // somewhere (a file or syslog) for later analysis
    echo "Segmentation fault, printing backtrace:\n";
    debug_print_backtrace();
    exit(139);
}

// attach the segfault handler
pcntl_signal(SIGSEGV, 'handleSegfault');

// tests the segfault handling by generating one
posix_kill(getmypid(), SIGSEGV);
</pre>
<p><em><strong>Update:</strong> I&#8217;ve changed the exit code to 139, as processes terminated by a UNIX signal should use an exit code that is the signal number + 128. The exit code for processes that terminate due to SIGSEGV is 139.</em></p>
<p>As my notes in the code suggest, you shouldn&#8217;t merely echo the information out, as by default it is sent to stdout (standard output), which any SAPI handling web requests will send to the browser. Something strongly inadvisable.</p>
<p>Instead, you&#8217;ll most likely either want to output the information to stderr (using <code>fwrite()</code>) or log the data using your application&#8217;s logging layer. It&#8217;s important that you execute as little code as possible, especially memory operations, as a segmentation fault indicates memory corruption that could have unpredictable effects on your application.</p>
<p>In PHP 5.3.0 PHP&#8217;s handling of signals was changed from implicit, using <code>declare(ticks = n)</code> to instruct the interpreter to automatically dispatch pending signals after <code>n</code> lines of code are executed; to explicit, by calling <code>pcntl_signal_dispatch()</code> yourself. Whilst the new explicit process is more flexible and provides for better performance, it does have the potential to decrease the durability of your application, especially if you&#8217;re trapping <code>SIGSEGV</code>, because the application will continue to run until you call <code>pcntl_signal_dispatch()</code>, even though memory corruption has occurred.</p>
<p>Finally a note about performance in PHP < 5.3.0: using <code>declare(ticks = 1)</code> tells PHP to check for pending signals after it executes <em>every line of code</em>. Obviously this adds an overhead (albeit a small one) to your application. For that reason, it's probably wise to have this disabled in production environments.</p>
]]></content:encoded>
			<wfw:commentRss>http://nicktelford.net/2010/06/18/handling-segmentation-faults-in-userland-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/2.0/uk/</creativeCommons:license>
	</item>
		<item>
		<title>Documenting Code Correctly</title>
		<link>http://nicktelford.net/2009/02/18/documenting-code-correctly/</link>
		<comments>http://nicktelford.net/2009/02/18/documenting-code-correctly/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 18:24:12 +0000</pubDate>
		<dc:creator>Nick Telford</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://lazesharp.net/?p=30</guid>
		<description><![CDATA[
			
				
			
		
One of the keys to writing good and portable code is clear and concise documentation. Most programmers have a tendency to dislike documentation &#8211; thinking of it as an ancillary task, to be written once the bulk of the programming has been done. This attitude yields low quality documentation which can have some serious problems.
All [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fnicktelford.net%2F2009%2F02%2F18%2Fdocumenting-code-correctly%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif&amp;source=nicktelford&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>One of the keys to writing good and portable code is clear and concise documentation. Most programmers have a tendency to dislike documentation &#8211; thinking of it as an ancillary task, to be written once the bulk of the programming has been done. This attitude yields low quality documentation which can have some serious problems.</p>
<p>All but the smallest of projects have the problem of new programmers having to understand code that others before them have written, a task made harder when you encounter documentation like this:</p>
<pre class="php:nocontrols" name="code">/**
 * doSomething
 *
 * @param mixed $id
 * @param mixed $name
 * @param mixed $thing
 */
public function doSomething($id, $name, $thing)</pre>
<p>If you&#8217;re wondering what&#8217;s wrong with this documentation then you definitely need to keep reading.</p>
<p>This is PHP code documented with PHPdoc. Of course, other languages/tools will differ, but anything based around JavaDoc will be similar to this.</p>
<h4>How to write good documentation</h4>
<p>First off, the format for a PHPdoc method doc-block is as follows:</p>
<pre class="php:nocontrols" name="code">/**
 * &lt;short description&gt;
 *
 * [&lt;long description&gt;]
 *
 * @param &lt;type&gt; &lt;variable&gt; &lt;description&gt;
 * @return &lt;type&gt; &lt;description&gt;
 */</pre>
<p>Now, looking at our example above, we can see several glaring problems:</p>
<ul>
<li>&#8220;doSomething&#8221; is the name of the method, not a short description. You don&#8217;t need to write the name of the method <strong>anywhere</strong> in the doc-block as PHPdoc can read it from the method signature.</li>
<li>There is no long description &#8211; while this is optional, non-trivial methods should always have a long description so that anyone can understand the method&#8217;s use without looking at the implementation code.</li>
<li>None of the parameters have any type information &#8211; while it&#8217;s possible that this method does accept mixed types for all the parameters, it&#8217;s unlikely. PHPdoc can&#8217;t infer the type from the method signature (unlike JavaDoc) so you need to specify the type here.</li>
<li>None of the parameters have a description &#8211; Parameter descriptions aren&#8217;t optional. If you include an @param tag, you may as well write a sentence that describes the parameter.</li>
<li>There is no @return tag &#8211; while this method may not return anything, many do. You should <strong>always</strong> document the return type and conditions of a method. For methods that have a more complex set of conditions on their return value you may want to elaborate in the method&#8217;s long description.</li>
</ul>
<p>As it stands, the example I gave above provides no information about the method that couldn&#8217;t be inferred from the method signature. The doc-block might as well have been omitted entirely.</p>
<p>Good documentation verbosely describes a method&#8217;s use, it&#8217;s inputs, outputs and their conditions. Reading the documentation for a method should be all a programmer needs in order to understand what it does and how to use it. If you want to check your documentation, ask a friend or put yourself in the shoes of another programmer and read the documentation through without looking at the code.</p>
<h4>When to write documentation</h4>
<p>One of the main causes of bad documentation is that many programmers either fill in some documentation after they have written their code or omit it entirely.</p>
<p>It&#8217;s safe to assume that usually, when writing a method/function/procedure, programmers already know what they want it to do and how they want it to work. The best process I&#8217;ve found for writing a method is:</p>
<ul>
<li>Think about what it will do and how it will work (or look at the design document)</li>
<li>Write the method signature (the declaration) &#8211; e.g. public function doSomething($id, $name, $thing)</li>
<li>Write the documentation, in full.</li>
<li>Write the method body &#8211; e.g. in PHP/Java/C# everything between { and }</li>
</ul>
<p>Using this process you will have full documentation for the new method before you&#8217;ve even written it! What&#8217;s more, you can refer to your documentation while writing the body code, ensuring you get things right. This is especially effective in a test-driven development scenario where you are designing all your methods to pass a set of unit tests.</p>
<h4>Documenting body code</h4>
<p>Once you get used to the process, documenting methods/functions/classes becomes almost second nature. But there&#8217;s a separate art entirely to documenting body code &#8211; the code inside the method/function/procedure.</p>
<p>The trick to it is not to over-comment your code. Code that has every single line preceded by a comment is useless, especially when those comments look like this:</p>
<pre class="php:nocontrols" name="code">// check the result is not null
if (!is_null($result)) {
    // add result to the return array
    $return[] = $result;
    // increment the count
    $count++;
}</pre>
<p>The problem with this is that the comments add no useful information from the code. In fact, every line of that code is &#8220;self-commenting&#8221;. It would instead be more useful to comment this block of code as a whole, to describe what its doing from a higher level:</p>
<pre class="php:nocontrols" name="code">// add any results
if (!is_null($result)) {
    $return[] = $result;
    $count++;
}</pre>
<p>Of course, without the greater context of the rest of the code, this still doesn&#8217;t make much sense, but you can see that it is immediately more legible &#8211; there are no unneccessary comments cluttering up the code.</p>
<p>The trick to commenting body code is to divide the it up in to relevant chunks and comment blocks that are not immediately obvious. Good candidates are loops and branches (if/while/for etc.) as they naturally group code in to a block and usually perform one or two related operations.</p>
<p>This concludes my crash course on code documentation. Please leave any questions, suggestions and criticism in the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://nicktelford.net/2009/02/18/documenting-code-correctly/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/2.0/uk/</creativeCommons:license>
	</item>
		<item>
		<title>Trust, Twitter and Passwords</title>
		<link>http://nicktelford.net/2009/02/11/trust-twitter-and-passwords/</link>
		<comments>http://nicktelford.net/2009/02/11/trust-twitter-and-passwords/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 21:20:09 +0000</pubDate>
		<dc:creator>Nick Telford</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://lazesharp.net/?p=29</guid>
		<description><![CDATA[
			
				
			
		
After we launched TwitOrFit we noticed a rather surprising backlash within the Twitter community. Many users were unhappy with trusting a web-based service, such as TwitOrFit, with their Twitter credentials &#8211; and rightly so &#8211; giving out your password is one of the cardinal sins of the online society we live in.
However, many people don&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fnicktelford.net%2F2009%2F02%2F11%2Ftrust-twitter-and-passwords%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif&amp;source=nicktelford&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>After we launched <a title="TwitOrFit" href="http://twitorfit.com">TwitOrFit</a> we noticed a rather surprising backlash within the <a title="Twitter" href="http://twitter.com">Twitter</a> community. Many users were unhappy with trusting a web-based service, such as TwitOrFit, with their Twitter credentials &#8211; and rightly so &#8211; giving out your password is one of the cardinal sins of the online society we live in.</p>
<p>However, many people don&#8217;t seem to realise that without both their Twitter username <em>and</em> password, there&#8217;s very little external services can do with Twitter. And this is the crux of the problem &#8211; Twitter&#8217;s API requires you to send the username and password of the user with every API call.</p>
<p>On the surface, this doesn&#8217;t seem so terrible, after all service providers may request the user&#8217;s password then throw it away after the API call has been made &#8211; but one of the important points to remember is that Twitter&#8217;s API is not located on an SSL secured server. So any calls made to Twitter&#8217;s API is made with the username and password in the HTTP header sent in <strong>plain text</strong>.</p>
<p><a title="fav.or.it" href="http://fav.or.it">fav.or.it</a> was recently lambasted by a blogger for doing exactly this (I&#8217;m unable to locate the URL), and we are soon going to fix the problem by launching an update that will include an SSL secured user area. Still, it amazes me that such a high profile website has been totally overlooked when it comes to this gaping security hole.</p>
<p>The solution to the problem is simple: Twitter, and many other API providers, need to stop requiring the password to be sent with each API call. Instead they should adopt one of the many approaches designed to circumvent this problem, be it OAuth, a challenge/response system or even a full blown token-based session system.</p>
<p>My favourite approach is currently <a title="LiveJournal's challenge/response auth method" href="http://www.livejournal.com/doc/server/ljp.csp.auth.challresp.html">LiveJournal&#8217;s challenge/response system</a>. From a developers point of view it&#8217;s very straightforward to use and very secure. In theory, it can also be used to allow users to revoke the permission of an application.</p>
<p>Twitter are supposedly working on an OAuth implementation with plans to drop support for the Basic Auth 6 months after it goes live. Unfortunately, sources tell me that they&#8217;re making very slow progress, so we can&#8217;t hope for anything soon.</p>
<p><strong>Update:</strong> Last night, approximately 30 minutes after I wrote this post, Twitter announced the opening of their private beta for their OAuth API. Apparently, my source got his information about 6 months ago&#8230; Is anyone aware of a sauce or condiment that goes well with my hat?</p>
]]></content:encoded>
			<wfw:commentRss>http://nicktelford.net/2009/02/11/trust-twitter-and-passwords/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/2.0/uk/</creativeCommons:license>
	</item>
		<item>
		<title>Moving to Wordpress</title>
		<link>http://nicktelford.net/2007/06/18/moving-to-wordpress/</link>
		<comments>http://nicktelford.net/2007/06/18/moving-to-wordpress/#comments</comments>
		<pubDate>Mon, 18 Jun 2007 18:00:24 +0000</pubDate>
		<dc:creator>Nick Telford</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://lazesharp.net/index.php/2007/06/18/moving-to-wordpress/</guid>
		<description><![CDATA[
			
				
			
		
I&#8217;m in the process of moving my blog over to Wordpress now that we&#8217;re with a new VPS provider.
I&#8217;ve mostly ported the theme and all the old posts, but unfortunately I don&#8217;t think I&#8217;m going to be able to post the comments.
The theme is pretty slap-dash at the moment. It hasn&#8217;t been tested in anything [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fnicktelford.net%2F2007%2F06%2F18%2Fmoving-to-wordpress%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif&amp;source=nicktelford&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>I&#8217;m in the process of moving my blog over to Wordpress now that we&#8217;re with a new VPS provider.</p>
<p>I&#8217;ve mostly ported the theme and all the old posts, but unfortunately I don&#8217;t think I&#8217;m going to be able to post the comments.</p>
<p>The theme is pretty slap-dash at the moment. It hasn&#8217;t been tested in anything other than Firefox 2 on Linux so it&#8217;ll likely be a little broken, especially on ancient installations of IE.</p>
]]></content:encoded>
			<wfw:commentRss>http://nicktelford.net/2007/06/18/moving-to-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/2.0/uk/</creativeCommons:license>
	</item>
		<item>
		<title>Lies, deceit and Christians</title>
		<link>http://nicktelford.net/2006/11/16/lies-deceit-and-christians/</link>
		<comments>http://nicktelford.net/2006/11/16/lies-deceit-and-christians/#comments</comments>
		<pubDate>Thu, 16 Nov 2006 19:42:56 +0000</pubDate>
		<dc:creator>Nick Telford</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://lazesharp.net/index.php/2006/11/16/lies-deceit-and-christians/</guid>
		<description><![CDATA[
			
				
			
		
The Evangelical Christian Union have this week filed a &#8220;Letter before Action&#8221; with the Students’ Guild of the University of Exeter.
My position within X-Net (for those who don’t know, the online student media for Exeter University) has forced upon me the pure facts surrounding the issue. This is essentially a good thing as it has [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fnicktelford.net%2F2006%2F11%2F16%2Flies-deceit-and-christians%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif&amp;source=nicktelford&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>The Evangelical Christian Union have this week filed a &#8220;Letter before Action&#8221; with the Students’ Guild of the University of Exeter.</p>
<p>My position within X-Net (for those who don’t know, the online student media for Exeter University) has forced upon me the pure facts surrounding the issue. This is essentially a good thing as it has meant that our News team has been able to cover the story without bias, however, other news websites have not been so fortunate.</p>
<p>Interestingly, it seems that almost all of the websites covering the story are Christian news sites. Not particularly unexpected, however, it seems that almost all of the reporting of this story by Christian news sources either manipulate the facts or get the story almost entirely wrong.</p>
<p>In fact, the most balanced and in fact correct coverage I could find on this issue, beyond X-Net of course, was the BBC News coverage.</p>
<p>Not only are news sources getting the facts wrong but the Exeter ECU themselves don’t seem to know what’s going on. During the recent referendum over the final name, the president of the ECU, James Harding, was interviewed by our News Editor, Kathryn Nott. Some of his initial statements were flat out lies; at one point stating “It is a myth that the Christian Union are affiliated to the UCCF”. After phoning the UCCF, we confirmed that they most definitely are affiliated. To which we got an apology and an excuse: “I forgot that we were affiliated to the UCCF”.</p>
<p>Yeah, we believe you.</p>
<p>Couple this with the inaccurate reporting of various Christian news sites and I’m slowly coming to the conclusion that large Christian organisations will only promote virtues such as equality and morality when it <strong>benefits them</strong>. So, just like any other organisation really.</p>
<p>I for one sincerely hope that the Students’ Guild don’t buckle under the legal pressure being mounted on them by the ECU, after all, it should be fairly obvious to them that they don’t have a legal leg to stand on.</p>
]]></content:encoded>
			<wfw:commentRss>http://nicktelford.net/2006/11/16/lies-deceit-and-christians/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/2.0/uk/</creativeCommons:license>
	</item>
		<item>
		<title>Moving to Mephisto</title>
		<link>http://nicktelford.net/2006/11/15/moving-to-mephisto/</link>
		<comments>http://nicktelford.net/2006/11/15/moving-to-mephisto/#comments</comments>
		<pubDate>Wed, 15 Nov 2006 23:59:28 +0000</pubDate>
		<dc:creator>Nick Telford</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://lazesharp.net/index.php/2006/11/15/moving-to-mephisto/</guid>
		<description><![CDATA[
			
				
			
		
I’ve now moved by blog over to Mephisto, a powerful new Rails blogging platform. Generally, it seems to offer a fair amount more flexibility over Typo and is a lot faster, although I need to use it for a while longer before drawing any real conclusions.
I very much doubt that I’ll get much on here [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fnicktelford.net%2F2006%2F11%2F15%2Fmoving-to-mephisto%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif&amp;source=nicktelford&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>I’ve now moved by blog over to Mephisto, a powerful new Rails blogging platform. Generally, it seems to offer a fair amount more flexibility over Typo and is <strong>a lot</strong> faster, although I need to use it for a while longer before drawing any real conclusions.</p>
<p>I very much doubt that I’ll get much on here in the coming months, University and in particular, X-Net, are keeping me very busy. Hopefully I’ll be able to write the odd reasonably insightful entry here and there, but frequent updates are a few months off at least.</p>
<p>I’m hoping to come up with a half-decent non-default design at some point in the next few weeks, Mephisto seems to make theming fairly painless so it’s not something that’s likely to demand too much of my time.</p>
<p>In other news, I’ve discovered that our VPS host Adiungo, has finally upgraded their virtualization software to allow the 2.6 series of Linux kernels to run. It’s about time.</p>
<p>Unfortunately, I don’t have the time to backup and reinstall everything on the server right now, a task made more complicated by the two people I share it with. Still, we may get around to it eventually, hopefully then we’ll be able to see the back of Fedora Core 2…</p>
]]></content:encoded>
			<wfw:commentRss>http://nicktelford.net/2006/11/15/moving-to-mephisto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/2.0/uk/</creativeCommons:license>
	</item>
	</channel>
</rss>

