<?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>Sinjo &#187; tech</title>
	<atom:link href="http://blog.sinjakli.co.uk/tag/tech/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.sinjakli.co.uk</link>
	<description>Blogging is just a lesser form of productivity</description>
	<lastBuildDate>Tue, 15 Feb 2011 15:50:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Email address validation: an addendum</title>
		<link>http://blog.sinjakli.co.uk/2011/02/15/email-address-validation-an-addendum/</link>
		<comments>http://blog.sinjakli.co.uk/2011/02/15/email-address-validation-an-addendum/#comments</comments>
		<pubDate>Tue, 15 Feb 2011 15:36:14 +0000</pubDate>
		<dc:creator>Sinjo</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[planetcompsoc]]></category>
		<category><![CDATA[tech]]></category>

		<guid isPermaLink="false">http://blog.sinjakli.co.uk/?p=151</guid>
		<description><![CDATA[When I was writing my last article, I wasn&#8217;t expecting too much of a response. Perhaps a comment or two from the 30-50 visits I get for most of my posts would be nice. The post actually circulated a bit &#8230; <a href="http://blog.sinjakli.co.uk/2011/02/15/email-address-validation-an-addendum/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>When I was writing <a href="http://blog.sinjakli.co.uk/2011/02/13/email-address-validation-please-stop/" target="_self">my last article</a>, I wasn&#8217;t expecting too much of a response. Perhaps a comment or two from the 30-50 visits I get for most of my posts would be nice. The post actually <a href="http://blog.sinjakli.co.uk/wp-content/uploads/2011/02/traffic_deny.png" target="_self">circulated a bit more than usual</a>, and I got quite a bit of interesting feedback. Hopefully these afterthoughts will get to at least some of those who read the original article (whether it&#8217;s the usual 50, or the 50,000).</p>
<p>One crucial thing that came up was the reasoning behind rejecting an email address that the user enters into the form. It boils down to wanting or needing to be able to contact the user at a later time. A very common case is account recovery. If a user loses their password, and you don&#8217;t have any way of contacting them, they&#8217;re probably stuffed. If you can tell them as quickly as possible that what they&#8217;ve entered doesn&#8217;t look right, then you&#8217;re going to save a lot of bother.</p>
<p>A few people commented that they often get less technically savvy users entering all kinds of incorrect things, ranging from just the local part (or conversely just the domain) of their email address to their desired user name on the service they&#8217;re trying  to register with. Given that this sort of thing goes on, validating that an email address is composed of an &#8220;@&#8221; symbol with some characters on either side is sensible (of course, you should still send a validation email if you want to make sure you&#8217;re being given correct data).</p>
<p>As for using such validation to prevent fake account creation, it&#8217;s trivially bypassed. If I&#8217;m working for nasty-corporation.com and want to sign up a bunch of accounts on your site to post loads of spam, I&#8217;m probably going to be able to generate email addresses, or better still create valid addresses on my domain to register an account. As annoying as they can be, some form of Captcha is better for this (preferably one with an audio alternative to the picture, for accessibility reasons), and doesn&#8217;t rely on spammers being totally incompetent.</p>
<p>Just one more thing, I know the comment system built into WordPress does a poor job of all this. More than a few of you were good enough to point it out. I&#8217;m switching away from the default one soon anyway.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sinjakli.co.uk/2011/02/15/email-address-validation-an-addendum/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Email address validation: please stop</title>
		<link>http://blog.sinjakli.co.uk/2011/02/13/email-address-validation-please-stop/</link>
		<comments>http://blog.sinjakli.co.uk/2011/02/13/email-address-validation-please-stop/#comments</comments>
		<pubDate>Sun, 13 Feb 2011 22:57:46 +0000</pubDate>
		<dc:creator>Sinjo</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[planetcompsoc]]></category>
		<category><![CDATA[rant]]></category>
		<category><![CDATA[tech]]></category>

		<guid isPermaLink="false">http://blog.sinjakli.co.uk/?p=142</guid>
		<description><![CDATA[It&#8217;s something that&#8217;s been bugging me for a long time. All around the web, people are making flawed attempts at validating email addresses, causing a headache for their users, and probably for themselves. I really started to notice this when &#8230; <a href="http://blog.sinjakli.co.uk/2011/02/13/email-address-validation-please-stop/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s something that&#8217;s been bugging me for a long time. All around the web, people are making flawed attempts at validating email addresses, causing a headache for their users, and probably for themselves.</p>
<p>I really started to notice this when I began to use the disposable addresses system that Gmail provides. Any mail sent to &lt;youraddress&gt;+&lt;some_other_string&gt;@gmail.com arrives in the Gmail inbox for &lt;youraddress&gt;@gmail.com. This is quite handy, and I personally use it for automatically tagging email I receive. For instance, for any email related to unicorns, I&#8217;d simply enter &#8220;&lt;myaddress&gt;+unicorns@gmail.com&#8221; on the sign-up form, and my mail filters would automatically tag all mail sent to that address for me (as an aside, these don&#8217;t really work as &#8220;proper&#8221; disposable email addresses as it&#8217;s easy to just strip everything after the &#8220;+&#8221; character in the local part of the address, and get the proper address). Sounds great, right? Well it is, until half of the internet fails at email address validation and rejects it.</p>
<p>The problem is that the email address specification allows for far more than most programmers expect it to. For instance, things like &#8221; ! $ &amp; * &#8211; = ^ ` | ~ # % &#8216; + / ? _ { } &#8221; are <a href="http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx" target="_blank">all valid</a>, along with a whole bunch of others (even &#8220;@&#8221; if you quote or escape it). Some of these are a tad silly. Using another &#8220;@&#8221; sign by escaping, for instance, is just confusing, and is probably only used by sociopaths. Reject some of those others however, and you&#8217;ll start to annoy your users.</p>
<p>I was recently at <a href="http://www.fosdem.org/2011/schedule/event/django_architecture" target="_blank">a talk</a> given by <a href="http://www.aeracode.org/" target="_blank">Andrew Godwin</a> at FOSDEM. In that he mentioned a problem Django ran into, where their regular expression used for email validation would <a style="text-decoration: line-through;" href="http://code.djangoproject.com/ticket/1288" target="_blank">hang on long input</a> (scratch that, I think <a href="http://code.djangoproject.com/changeset/11603" target="_blank">this</a> is the bug he mentioned, that other one is hideously old). After some head scratching, they came up with an improved regular expression, which didn&#8217;t have the issue. I&#8217;m not sure that either solution actually validates according to the specification though, and if the validation falls on the side of being too strict, it&#8217;s probably out there irritating people right now. As a fun aside Perl&#8217;s <a href="http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html" target="_blank">Mail::RFC822::Address</a> module gives you a glimpse at a regular expression that actually follows the specification from RFC822.</p>
<p>Even the best validation is only going to get you a syntactically correct email address, with no guarantee that it actually exists. If you want to know that you&#8217;re being given a valid address, send it an email and have the user click a validation link in it, and stop annoying your users!</p>
<p>EDIT: I wrote <a href="http://blog.sinjakli.co.uk/2011/02/15/email-address-validation-an-addendum/">a little follow up article</a> on some of the points raised by commenters.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sinjakli.co.uk/2011/02/13/email-address-validation-please-stop/feed/</wfw:commentRss>
		<slash:comments>54</slash:comments>
		</item>
		<item>
		<title>Setting up Apache 2.2 on Windows</title>
		<link>http://blog.sinjakli.co.uk/2010/09/19/setting-up-apache-2-2-on-windows/</link>
		<comments>http://blog.sinjakli.co.uk/2010/09/19/setting-up-apache-2-2-on-windows/#comments</comments>
		<pubDate>Sat, 18 Sep 2010 23:52:59 +0000</pubDate>
		<dc:creator>Sinjo</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[planetcompsoc]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://blog.sinjakli.co.uk/?p=125</guid>
		<description><![CDATA[A guide on setting up and configuring the Apache HTTP Server (Version 2.2) on Windows. <a href="http://blog.sinjakli.co.uk/2010/09/19/setting-up-apache-2-2-on-windows/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had a reasonable amount of experience setting up and using the Apache Web Server on Linux machines (almost always Debian boxes), but a couple of weeks back I wanted to set it up locally as a dev environment. As I run Windows, this involved a few changes in procedure. I felt it was worth outlining the procedure for anyone else who might find themselves in the same boat.</p>
<p>First off, you need to grab the latest stable binary from <a href="http://httpd.apache.org/download.cgi" rel="nofollow">http://httpd.apache.org/download.cgi</a> (at the time of writing, it&#8217;s version 2.2 that you want, specifically 2.2.16). I chose to get the one which includes OpenSSL (which you&#8217;ll need if you want to test serving secure content). Once you&#8217;ve got that, run through the install wizard. In terms of which options to choose during it, I went with installing the server as a service so it started up with Windows. Also, I chose to customise the install and selected to install all features (as opposed to taking just the typical ones). This is almost certainly unnecessary, but I did it just to make sure I wasn&#8217;t missing anything I needed.</p>
<p>Something to note throughout this guide is that after any change to the config files you <strong>must reload the server</strong>. The installer will have added an icon to your notification area which will allow you to do this.</p>
<p>The config files are located in &lt;your_install_directory)\conf\. In some areas, the config files dependant on your installation directory, which can differ (for instance, if using a 32 bit operating system, you won&#8217;t have things installed in &#8220;Program Files (x86)&#8221;).</p>
<h4>Notation used throughout the guide</h4>
<p>The use of &#8220;-&gt;&#8221; denotes before and after of each line changed (before on the left, after on the right).Anything which is for the user to decide is given between angular brackets. In code blocks, &#8220;#&#8221; is used for any comments (just as it is within the config files).</p>
<h4><strong>Basic Setup</strong></h4>
<p>To get Apache just serving content from its htdocs folder (which is located in the installation folder) requires the least configuration. To achieve this, just make the following changes to the defaults in the config file.</p>
<p>In httpd.conf:</p>
<pre>Listen 80 -&gt; Listen &lt;Number Of Port To Run Web Server On&gt;
#ServerName localhost:80 -&gt; ServerName localhost:&lt;Number Of Port To Run Web Server On&gt;</pre>
<p>At this point, you should be able to navigate to http://localhost:&lt;Number Of Port To Run Web Server On&gt; and see a page confirming that you&#8217;ve set it up correctly (or your own index.html if you&#8217;ve replaced the one that&#8217;s in the htdocs folder by default).</p>
<h4>Add setup for user directories</h4>
<p>Adding the necessary config for user directories means that each user account you have on your machine will have a directory that they can place files in to be served by Apache.</p>
<p>In httpd.conf:</p>
<pre>#LoadModule userdir_module modules/mod_userdir.so -&gt; LoadModule userdir_module modules/mod_userdir.so
#Include conf/extra/httpd-userdir.conf -&gt; Include conf/extra/httpd-userdir.conf</pre>
<p>You should now be able to navigate to http://localhost:&lt;Number Of Port To Run Web Server On&gt;/~&lt;user&gt;/ and view any content that the user places in their website directory (by default &#8220;My Documents\My Website&#8221;). You can change which directories are used as user directories by editing conf\extra\httpd-userdir.conf in the Apache installation folder.</p>
<h4>Add setup for virtual hosts (also known as vhosts)</h4>
<p>Virtual hosts are more useful in a development (and in most production contexts) context than user directories. They allow you to specify a folder which Apache should serve from when receiving a request on a given domain/subdomain. They also allow you to specify some settings specific to that virtual host, such as a custom log file to use (rather than just putting everything in the default log file).</p>
<p>In httpd.conf:</p>
<pre>#LoadModule vhost_alias_module modules/mod_vhost_alias.so -&gt; LoadModule vhost_alias_module modules/mod_vhost_alias.so
#Include conf/extra/httpd-vhosts.conf -&gt; Include conf/extra/httpd-vhosts.conf</pre>
<p>In httpd-vhosts.conf:</p>
<pre>NameVirtualHost *:80 -&gt; NameVirtualHost *:&lt;Number Of Port To Run Web Server On&gt;
# Delete the two existing VirtualHost entries, and add your own following this template.
&lt;VirtualHost *:&lt;Number Of Port To Run Web Server On&gt;&gt;
 ServerAdmin &lt;yourname&gt;@localhost
 DocumentRoot "&lt;drive_letter&gt;:/path/to/your/website"
 ServerName &lt;subdomain&gt;.localhost
 ServerAlias &lt;subdomain&gt;.localhost
 &lt;Directory "&lt;drive_letter&gt;:/path/to/your/website"&gt;
  Options Indexes FollowSymLinks Includes ExecCGI
  AllowOverride All
  Order allow,deny
  Allow from all
 &lt;/Directory&gt;
 ErrorLog "logs/&lt;subdomain&gt;.localhost-error.log"
 CustomLog "logs/&lt;subdomain&gt;.localhost-access.log" common
&lt;/VirtualHost&gt;</pre>
<p>One thing to note with a vhost, is that you&#8217;ll need to add an entry to your hosts file for the each subdomain you use, so that the domain still resolves to localhost (at least, I found that without this, it the domains didn&#8217;t resolve). To do this, simply open C:\Windows\System32\drivers\etc\hosts and add a line that looks like:</p>
<pre>127.0.0.1 &lt;subdomain&gt;.localhost</pre>
<p>With that done, you should have it all working, and should be able to visit any of your virtual host sites at http://&lt;subdomain&gt;.localhost:&lt;Number Of Port To Run Web Server On&gt;/. If it&#8217;s not, please leave a comment as I could well have missed something crucial out (though I think I&#8217;ve covered everything, as this guide was produced by diffing my working config files against the original ones).</p>
<h4>Things to watch out for</h4>
<ul>
<li>In Apache&#8217;s config files, forward slashes are used in paths, as opposed to the backslashes you&#8217;d usually use on Windows.</li>
<li>You&#8217;re probably best running this on something other than port 80. One thing that many people get caught out by is trying to do this on a machine which also has Skype running on it (not too unlikely on a home dev machine), which it turns out binds to port 80. To work around this, either disable this option within Skype (I recommend doing this), or run the web server on a different port. The option to disable is in Tools -&gt; Options -&gt; Advanced -&gt; Connection -&gt; Untick the checkbox &#8220;Use port 80 and 443 as alternatives for incoming connections&#8221;.</li>
<li>Make sure you reload/restart the server after any config file change. This is a required step, and without it your changes will be ignored.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.sinjakli.co.uk/2010/09/19/setting-up-apache-2-2-on-windows/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Google are stealing my privacy!</title>
		<link>http://blog.sinjakli.co.uk/2010/02/13/google-are-stealing-my-privacy/</link>
		<comments>http://blog.sinjakli.co.uk/2010/02/13/google-are-stealing-my-privacy/#comments</comments>
		<pubDate>Sat, 13 Feb 2010 01:14:45 +0000</pubDate>
		<dc:creator>Sinjo</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[buzz]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[planetcompsoc]]></category>
		<category><![CDATA[privacy]]></category>
		<category><![CDATA[rant]]></category>
		<category><![CDATA[tech]]></category>

		<guid isPermaLink="false">http://blog.sinjakli.co.uk/?p=94</guid>
		<description><![CDATA[A response to a blog post on loss of privacy through the use of Google Buzz. <a href="http://blog.sinjakli.co.uk/2010/02/13/google-are-stealing-my-privacy/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I had my attention brought to <a title="Fuck you, Google" href="http://fugitivus.wordpress.com/2010/02/11/fuck-you-google/" target="_blank">another blog post</a> earlier today (which for the purposes of this post, I shall assume you have read). Initially, my thoughts were that Google had gone and committed a rather large error, but I didn&#8217;t look too far into it as it wasn&#8217;t going to affect me and really had to set off towards home. When I arrived back I started talking about it to a friend, who immediately put me right. It turns out that Google Buzz is not exposing any new data to anyone without being allowed to. It is in fact aggregating already public data into, in my opinion, a pretty nice format.</p>
<p>What has happened here is a complete misunderstanding. Following the main example from that post (though it&#8217;s completely true of other services which Buzz can import from) Google Buzz will only display shared Google Reader items and comments that you publicly share. If these are private, then Google Buzz isn&#8217;t going to ruin your day and wave them around publicly.</p>
<p>To top this off, within Buzz there is actually a link (under Connected Sites, select Edit next to the Sharing With column) which takes you straight to the privacy options page, where you can go back and fix your earlier mistake of not correctly choosing your privacy settings. I&#8217;d actually say that, far from revealing your private data, Google have done a reasonable job of letting you protect your privacy in this case.</p>
<p>The hype that this has generated is rather saddening, and a reminder that people are all too quick to jump on the bandwagon. The author has posted a <a title="Screw You, Google" href="http://fugitivus.wordpress.com/2010/02/12/screw-you-google/" target="_blank">follow up</a>, with a bit more explanation and as it turns out, a confirmation from Google of what I have focused on here (though this doesn&#8217;t have too much attention brought to it).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sinjakli.co.uk/2010/02/13/google-are-stealing-my-privacy/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Mirror&#8217;s Edge (PC) Review</title>
		<link>http://blog.sinjakli.co.uk/2010/02/01/mirrors-edge-pc-review/</link>
		<comments>http://blog.sinjakli.co.uk/2010/02/01/mirrors-edge-pc-review/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 20:58:09 +0000</pubDate>
		<dc:creator>Sinjo</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[gaming]]></category>
		<category><![CDATA[mirror's edge]]></category>
		<category><![CDATA[planetcompsoc]]></category>
		<category><![CDATA[rant]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[tech]]></category>

		<guid isPermaLink="false">http://blog.sinjakli.co.uk/?p=68</guid>
		<description><![CDATA[Mirror's Edge was more of a shit pile than you realised. <a href="http://blog.sinjakli.co.uk/2010/02/01/mirrors-edge-pc-review/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I picked up Mirror&#8217;s Edge in the recent Steam sales (along with far too many other games, which saw off a little more money than I&#8217;d hoped). I didn&#8217;t get it with any of my own expectations, only the knowledge that people had told me it was a must buy. Unfortunately the game left me wondering what had deluded these people into thinking something like that.</p>
<p>If you care about the story not being spoiled you may want to avert your eyes. The game starts with you being plonked down on a roof somewhere in some city where the graphical bloom goes up to 11 and stays there at all times. You&#8217;re taught your repertoire of jumping and fighting techniques in one go, god forbid you should forget them, and then launched into the game. The story is set in your regulation future dystopia, where the police are evil, the government are evil and concrete blocks are extremely springy. You&#8217;re not really given too much motivation to hate the government; you just take the game&#8217;s word for it and set about acting like a royal prick with a poorly explained briefcase fetish.</p>
<p>Sadly, the game play doesn&#8217;t even come close to making up for the plot. There is one route, and only one route, and any deviation from it will result in crunchy death as you faceplant into the pavement. Most of the time this route is helpfully painted red, but the game occasionally decides you&#8217;re more competent than that and lets you decide what to do. Don&#8217;t be fooled though, there&#8217;s one path, and any attempt at creativity will be duly rewarded with death.</p>
<p>Linearity aside, the game still manages to produce an unnecessarily frustrating experience. Every time you grab an object or ledge, you’re treated to a face full of concrete and have to stop and move the camera around, breaking the flow of the game. This, teamed up with the loss of momentum every time you jump over anything higher than a cinder block, caused a steady feeling of rage which didn’t really subside at any point in the game.</p>
<p>The lack of choice in paths reared its ugly head more than once during the game, but one incident stuck out more than the others. In a section in chapter 7 the character is running on top of some ventilation shafts and some pipes are highlighted red on the other side of the room. I spent a good half hour wall running along the wall that headed directly to them, only to be left disappointed at the game’s edge detection and plummeting to an inevitable death. It turned out that I was meant to run along a wall parallel to what I was aiming at and make possibly the most hilarious jump ever to reach the bars.</p>
<p>The edge detection was a constant annoyance. At times it seemed like the protagonist simply wasn’t trying, but as soon as a bit of concrete turned red it may as well have been a fucking spring board. The net result is that you only go where the game wants you to go, no matter what incredible leap that may involve. Occasionally it will even help you when you don’t jump far enough, and you’ll end up performing a mid air vault for a pipe or ledge.</p>
<p>Overall, I’m confounded as to why people recommended this game so highly. While it’s a nice concept, it’s totally marred by a lack of polish (no, not bloom, there’s enough of that) in the execution. Bring on the release of Assassin’s Creed II on a real platform.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sinjakli.co.uk/2010/02/01/mirrors-edge-pc-review/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>iPad: Why?</title>
		<link>http://blog.sinjakli.co.uk/2010/01/28/ipad-why/</link>
		<comments>http://blog.sinjakli.co.uk/2010/01/28/ipad-why/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 01:10:16 +0000</pubDate>
		<dc:creator>Sinjo</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[planetcompsoc]]></category>
		<category><![CDATA[rant]]></category>
		<category><![CDATA[tech]]></category>

		<guid isPermaLink="false">http://blog.sinjakli.co.uk/?p=89</guid>
		<description><![CDATA[The iPad is a disappointment. Fact. <a href="http://blog.sinjakli.co.uk/2010/01/28/ipad-why/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Following the usual excess of hype that lead up to the launch of a new Apple product, I can&#8217;t help but feel completely underwhelmed. I&#8217;ll be honest, I&#8217;m not a user of any Apple products; however, I&#8217;d be lying if I said I didn&#8217;t like any of them. The iPod is a nice music player. Having used a few friends&#8217; I can say that I like the UI and that there was no huge learning curve to using the device. The iPhone was certainly responsible for pushing the idea of smart phones to a greater audience and once again did so in a nice tidy package that was very usable.</p>
<p>The iPad though, leaves a lot to be desired. It seems like Apple have produced an enlarged version of the iPhone (but not a phone, so really more like an iPod Touch), without applying significant work to it. It suffers the same issues as the iPhone, those being:</p>
<ul>
<li>A total lack of multitasking. Running applications in the background is not a new concept, and failing to provide such functionality seems like a massive step backwards. I&#8217;ve felt this about the iPhone for a while and it seems even more crippling for a device which truthfully should provide more.</li>
<li>No camera included. While it&#8217;s obvious that this device isn&#8217;t for taking photos, I don&#8217;t understand why it doesn&#8217;t have a small, integrated webcam on the front. Being able to make video calls on, for instance, Skype seems like a reasonably sensible use-case for this device.</li>
<li>Lack of a hardware keyboard. This is a more debatable point, but to me it makes little sense. With a device of this size I don&#8217;t envisage that an on screen keyboard would be pleasant to use. Selling a keyboard dock isn&#8217;t really a solution as you&#8217;re just increasing the amount of clutter that you have to carry with you to use the device as you want to.</li>
</ul>
<p>I&#8217;m left not really knowing who this product is aimed at. Which group of people want a larger iPhone whose main advantages are negated by dodgy design decisions? It seems more  like they&#8217;re simply riding the wave of success which means that people will end up buying them simply because it&#8217;s the latest thing to emerge from the shinies factory.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sinjakli.co.uk/2010/01/28/ipad-why/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Battle.net: Migration woes and design failure</title>
		<link>http://blog.sinjakli.co.uk/2009/11/14/battle-net-migration-woes-and-design-failure/</link>
		<comments>http://blog.sinjakli.co.uk/2009/11/14/battle-net-migration-woes-and-design-failure/#comments</comments>
		<pubDate>Sat, 14 Nov 2009 03:58:49 +0000</pubDate>
		<dc:creator>Sinjo</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[battle.net]]></category>
		<category><![CDATA[blizzard]]></category>
		<category><![CDATA[gaming]]></category>
		<category><![CDATA[planetcompsoc]]></category>
		<category><![CDATA[rant]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[wow]]></category>

		<guid isPermaLink="false">http://blog.sinjakli.co.uk/?p=26</guid>
		<description><![CDATA[Blizzard have decided that it&#8217;s time to force people to merge their World of Warcraft accounts into their battle.net accounts. In itself I believe this is a sane idea, and possibly one that is overdue (the option to do so &#8230; <a href="http://blog.sinjakli.co.uk/2009/11/14/battle-net-migration-woes-and-design-failure/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Blizzard have decided that it&#8217;s time to force people to merge their World of Warcraft accounts into their battle.net accounts. In itself I believe this is a sane idea, and possibly one that is overdue (the option to do so has been available for quite a while, they only just started forcing it onto users). In itself this has caused a few problems for people. I&#8217;ve had a few reports from friends of the site giving some sort of error whenever they attempt the merge, and I&#8217;ve been completely unable to access the site on a couple of occasions. Overall, it seems that after a bit of persistence people have managed to perform the merge and log into their WoW account.</p>
<p>My second gripe (and only other so far) is the ridiculous way that account security is handled. Something which is probably never an issue for most people just went straight to the top of my list. It turns out that if you forget the answer to the security question on your account there is no way to change it. That&#8217;s correct, even as an authenticated user you can&#8217;t change this setting. In itself I wouldn&#8217;t have cared about this. I&#8217;m not a moron, I can remember my password (although apparently not my secret answer, yes I do appreciate the irony in this). However, in their infinite wisdom they have decided to require this answer to change the email address associated with the account. This leaves me in a rather crappy situation. My account is associated to an email address that I&#8217;m trying to move away from and I&#8217;m being denied the option to do so.</p>
<p>What infuriated me at this point was the response I received to my support request. It contained the following: &#8220;The problem you were experiencing is now resolved and you should be able to use all the features of your account now.&#8221; For some terrible reason this got my hopes up, but it turns out it was some canned bullshit. The website has not been changed to allow this, and I&#8217;m still in the same predicament. I&#8217;ve sent a reply, but I don&#8217;t hold a great deal of hope for it getting a proper response. If it carries on like this I&#8217;ll give them a call and see if their phone support is any better.</p>
<p>I&#8217;ll write more when there&#8217;s some advance in the situation, but for now it&#8217;s a case of waiting.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sinjakli.co.uk/2009/11/14/battle-net-migration-woes-and-design-failure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stopping the inevitable comment spam</title>
		<link>http://blog.sinjakli.co.uk/2009/07/21/stopping-the-inevitable-comment-spam/</link>
		<comments>http://blog.sinjakli.co.uk/2009/07/21/stopping-the-inevitable-comment-spam/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 23:43:02 +0000</pubDate>
		<dc:creator>Sinjo</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[planetcompsoc]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.sinjakli.co.uk/2009/07/21/stopping-the-inevitable-comment-spam/</guid>
		<description><![CDATA[While it remains to be seen if this works, I&#8217;ve just come across (well, more of a deliberate search) what seems to be a reasonable way to reduce comment spam. It adds a quick maths (not &#8220;math&#8221; as the plug-in &#8230; <a href="http://blog.sinjakli.co.uk/2009/07/21/stopping-the-inevitable-comment-spam/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>While it remains to be seen if this works, I&#8217;ve just come across (well, more of a deliberate search) what seems to be a reasonable way to reduce comment spam. It adds a quick maths (not &#8220;math&#8221; as the plug-in author erroneously suggests) question to the Comments section which must be correctly answered in order for the comment to be posted. Akismet seemed reasonably good at catching spam, but I&#8217;m hoping this should properly keep the comments section clean.</p>
<p><a href="http://www.herod.net/dypm/" target="_blank">http://www.herod.net/dypm/</a> to download it (comes with full setup instructions). Also yes, I am tempted to &#8220;sed s/math/maths/&#8221; the source. <img src='http://blog.sinjakli.co.uk/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>EDIT 22/07/2009: Turns out it does something else to annoy me. The box moves itself about if you turn Javascript on/off, looks like someone decided it was okay to fix the layout with the *worst method  ever* (yes, this problem does override the Enlgish language pedantry from before).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sinjakli.co.uk/2009/07/21/stopping-the-inevitable-comment-spam/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress with suPHP</title>
		<link>http://blog.sinjakli.co.uk/2009/05/27/wordpress-with-suphp/</link>
		<comments>http://blog.sinjakli.co.uk/2009/05/27/wordpress-with-suphp/#comments</comments>
		<pubDate>Wed, 27 May 2009 05:07:35 +0000</pubDate>
		<dc:creator>Sinjo</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[planetcompsoc]]></category>
		<category><![CDATA[suphp]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.sinjakli.co.uk/?p=3</guid>
		<description><![CDATA[A quick guide to setting up WordPress in a custom directory using the Apache module suPHP. <a href="http://blog.sinjakli.co.uk/2009/05/27/wordpress-with-suphp/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Last week I noticed that I&#8217;d made a rather (un)hilarious security error and exposed my wp-config.php in my WordPress setup to the world. This is bad, as it contains database credentials and some secret keys from the setup (all of which I&#8217;ve had to change since sorting this out). I decided it might be nice to write a small guide on a better setup which while not complete might mean that you&#8217;re able to avoid the mistakes I&#8217;ve made and possibly to point out a flaw I haven&#8217;t seen in this new setup. I did look at a couple of other solutions but this one seemed pretty nice to me.</p>
<p>While playing around trying to make this work I did find out about the giant goodie bag of awesome that is the unix find utility. In this case I was using it to change permissions on certain groups of files/directories, and some useful examples are given below. I sense it might come into play a fair bit now and might have some uses I&#8217;ve not thought of.</p>
<p>Before I set off with this one I&#8217;m going to issue a few warnings:</p>
<ul>
<li>Your distribution (if you are hosting this on a Linux machine) may have a package for WordPress which makes for a much easier install, and (going with the example of Debian) receives quick, convenient updates through the package manager.</li>
<li>You should be familiar with the Linux system including File Permissions, the Apache Web Server, and various other tools.</li>
<li>If you get the permissions wrong as I did you can end up letting the world see your config files which include your database credentials and the keys you generate during the setup.</li>
</ul>
<p>Those issues aside the set up process is relatively simple. As I&#8217;m using Debian (stable, which is Lenny at the time of writing) I may make references to Debian specific things such as the package manager apt. Let&#8217;s get cracking then.</p>
<p>First, you&#8217;re going to want to install all the relevant modules (run this as root):</p>
<pre>apt-get install apache2 php5 mysql-server libapache2-mod-suphp</pre>
<p>With those installed you&#8217;re able to get going with your basic WordPress installation. I&#8217;m not going to duplicate WordPress&#8217;s installation guide as that would be completely pointless, so here it is:</p>
<p><a href="http://codex.wordpress.org/Installing_WordPress#Detailed_Instructions">http://codex.wordpress.org/Installing_WordPress#Detailed_Instructions</a></p>
<p>Once you&#8217;ve got WordPress unpacked (I personally chose to set it up in my home directory ~/wordpress/ and add a vhost config in Apache&#8217;s sites-available with the appropriate directory as the DocumentRoot, there are plenty of guides for this if you do a quick search) you should set about fixing its permissions. For this I chose to use the Linux find program. I don&#8217;t guarantee that this is the complete set of commands and you should probably check through the installation thoroughly in case I missed one out (I managed to do one of these quite incorrectly initially so I spent a while sorting out the mess I&#8217;d caused).</p>
<pre>find ~/wordpress/ -type d -exec chmod 755 {} \;
find ~/wordpress/ -type f -exec chmod 644 {} \;
find ~/wordpress/ -type f -name "*.php" -exec chmod 600 {} \;</pre>
<p>Having followed the WordPress installation guide you should have a working database (I sort of recommend phpmyadmin for this, especially if you want to do this in a GUI) and configuration. Now for the important part. You need to configure suPHP, and to be honest this is almost completely trivial.  First enable the module:</p>
<pre>a2enmod suphp</pre>
<p>Then edit the suphp config file at /etc/suphp/suphp.conf so that it contains either the line:</p>
<pre>check_vhost_docroot=true</pre>
<p>or the line:</p>
<pre>docroot=/path/to/your/docroot/</pre>
<p>The first will allow suPHP to run anywhere you define a DocumentRoot in your Apache vhost, the latter will allow you to point suPHP to a specified DocumentRoot.</p>
<p>Finally, you need to edit your apache2.conf (found in /etc/apache2/) to turn off the standard apache mod_php. I personally use the following config as I have no use for mod_php within /home (however if you do you may want to swap php_admin_flag for php_flag so that you can enable the module for other php sites you&#8217;re hosting):</p>
<pre>&lt;Directory /home&gt;
 php_admin_flag engine off
&lt;/Directory&gt;

&lt;Directory /home&gt;
AddHandler application/x-httpd-php .php .php3 .php4 .php5 .phtml
suPHP_AddHandler application/x-httpd-php
suPHP_Engine on
&lt;/Directory&gt;</pre>
<p>That should do the job! If I&#8217;ve missed any hilariously crucial stage out then please slap me in a comment so I can add it in.</p>
<p>EDIT (27/05/2009): I probably should have actually explained what suPHP does. All it means is that any PHP files are executed as their owner. In my case the main benefit of this is that the config file doesn&#8217;t need to be readable to anyone but myself. Possibly a greater advantage, and one which becomes immediately apparent in a shared hosting environment, is that the PHP files are only executed with the permissions of the user. This means that as long as you&#8217;ve got sensible limitations in place on the user anyway, they shouldn&#8217;t be able to cause any more damage than they could from their shell (and there you can probably see the advantage of the php_admin_flag which they cannot override).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sinjakli.co.uk/2009/05/27/wordpress-with-suphp/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 3.769 seconds -->

