<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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" version="2.0">

<channel>
	<title>Musings of ErisDS</title>
	
	<link>http://erisds.co.uk</link>
	<description>Web development, Symfony, Wordpress and general geekery</description>
	<lastBuildDate>Fri, 11 Jan 2013 10:51:58 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/erisds" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="erisds" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.0/</creativeCommons:license><image><link>http://erisds.co.uk</link><url>http://www.gravatar.com/avatar/cb82ccb3c72846f4e111348b8d5a01e5.png</url><title>Eris</title></image><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">erisds</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>WordPress: Migrate! Version 0.0.4</title>
		<link>http://erisds.co.uk/wordpress/wordpress-migrate-version-0-0-4</link>
		<comments>http://erisds.co.uk/wordpress/wordpress-migrate-version-0-0-4#comments</comments>
		<pubDate>Fri, 28 Dec 2012 23:29:05 +0000</pubDate>
		<dc:creator>ErisDS</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[migrate]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://erisds.co.uk/?p=2588</guid>
		<description><![CDATA[A new version of Migrate! is now available to download from Github. What does this fix? This is a really small update / bugfix to add support for https:// in the URL checks. All credit goes to bteryk It&#8217;s been a while&#8230; It&#8217;s been far too long! This is one small step towards getting Migrate! [...]<div class='yarpp-related-rss'>

Related posts:<ol>
<li><a href='http://erisds.co.uk/wordpress/wordpress-migrate-updated' rel='bookmark' title='WordPress: Migrate! Updated'>WordPress: Migrate! Updated</a><small>A new version of Migrate! is now available to download...</small></li>
<li><a href='http://erisds.co.uk/wordpress/migrate-announcement' rel='bookmark' title='WordPress: Migrate! Easy WordPress Site Migration'>WordPress: Migrate! Easy WordPress Site Migration</a><small>If you work with multiple environments (development, staging, production etc)...</small></li>
<li><a href='http://erisds.co.uk/wordpress/wordpress-2-8' rel='bookmark' title='WordPress 2.8'>WordPress 2.8</a><small>Over the weekend I updated my blog to Wordpress 2.8....</small></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p>A new version of <strong>Migrate!</strong> is now available <a href="https://github.com/ErisDS/Migrate/zipball/master" onClick="_gaq.push(['_trackPageview', '/downloads/migrate_github_zip_004']);" title="Download from GitHub">to download from Github</a>.</p>
<h2>What does this fix?</h2>
<p>This is a really small update / bugfix to add support for <kbd>https://</kbd> in the URL checks.</p>
<p>All credit goes to <a href="https://github.com/bteryk" title="bteryk on github" target="_blank">bteryk</a></p>
<h2>It&#8217;s been a while&#8230;</h2>
<p>It&#8217;s been far too long! This is one small step towards getting Migrate! back into active development. There are many more features &#038; fixes to come, but first I had to get my head around github, pull requests etc again. All that is done now and I&#8217;m hoping to push several additional updates in the coming weeks.</p>
<h2>Does this mean it still works?</h2>
<p>I still use Migrate! on a regular basis and always on the most recent version of WordPress. So far it is standing the test of time. There has been an issue reported with Migrate! not migrating the URLs in the new menu feature, but this will only affect you if you hard code absolute URLs in the menu. You can keep up to date with any issues on <a href="https://github.com/ErisDS/Migrate" title="Migrate! on GitHub" target="_blank">GitHub</a></p>
<div class='yarpp-related-rss'>
<p>Related posts:<ol>
<li><a href='http://erisds.co.uk/wordpress/wordpress-migrate-updated' rel='bookmark' title='WordPress: Migrate! Updated'>WordPress: Migrate! Updated</a><small>A new version of Migrate! is now available to download...</small></li>
<li><a href='http://erisds.co.uk/wordpress/migrate-announcement' rel='bookmark' title='WordPress: Migrate! Easy WordPress Site Migration'>WordPress: Migrate! Easy WordPress Site Migration</a><small>If you work with multiple environments (development, staging, production etc)...</small></li>
<li><a href='http://erisds.co.uk/wordpress/wordpress-2-8' rel='bookmark' title='WordPress 2.8'>WordPress 2.8</a><small>Over the weekend I updated my blog to Wordpress 2.8....</small></li>
</ol></p>
</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/erisds?a=8z7txGouQD8:I-GE5VFZ_rs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/erisds?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=8z7txGouQD8:I-GE5VFZ_rs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/erisds?i=8z7txGouQD8:I-GE5VFZ_rs:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=8z7txGouQD8:I-GE5VFZ_rs:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/erisds?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=8z7txGouQD8:I-GE5VFZ_rs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/erisds?i=8z7txGouQD8:I-GE5VFZ_rs:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=8z7txGouQD8:I-GE5VFZ_rs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/erisds?i=8z7txGouQD8:I-GE5VFZ_rs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=8z7txGouQD8:I-GE5VFZ_rs:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/erisds?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://erisds.co.uk/wordpress/wordpress-migrate-version-0-0-4/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu VM: local dev environment on Windows</title>
		<link>http://erisds.co.uk/technology/ubuntu-vm-local-dev-environment-on-windows</link>
		<comments>http://erisds.co.uk/technology/ubuntu-vm-local-dev-environment-on-windows#comments</comments>
		<pubDate>Wed, 26 Dec 2012 11:44:40 +0000</pubDate>
		<dc:creator>ErisDS</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[development environment]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://erisds.co.uk/?p=2421</guid>
		<description><![CDATA[Recently, I went through the process of setting up a new development environment on Windows for my playground projects at home. My work is usually done and hosted on Linux with a standard LAMP stack, so using an ubuntu virtual machine lets me keep my Windows machine for gaming and allows me to develop in [...]<div class='yarpp-related-rss'>

Related posts:<ol>
<li><a href='http://erisds.co.uk/technology/an-assortment-of-useful-linux-commands' rel='bookmark' title='An assortment of useful linux commands'>An assortment of useful linux commands</a><small>This is a totally random post full of linux commands...</small></li>
<li><a href='http://erisds.co.uk/wordpress/migrate-announcement' rel='bookmark' title='WordPress: Migrate! Easy WordPress Site Migration'>WordPress: Migrate! Easy WordPress Site Migration</a><small>If you work with multiple environments (development, staging, production etc)...</small></li>
<li><a href='http://erisds.co.uk/wordpress/upgrading-old-wordpress-installs-not-as-scary-as-you-think' rel='bookmark' title='Upgrading old WordPress installs &#8211; not as scary as you think!'>Upgrading old WordPress installs &#8211; not as scary as you think!</a><small>Earlier this week I received an email requesting some help...</small></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p>Recently, I went through the process of setting up a new development environment on Windows for my playground projects at home. My work is usually done and hosted on Linux with a standard <a title="LAMP" href="http://en.wikipedia.org/wiki/LAMP_(software_bundle)" target="_blank">LAMP</a> stack, so using an ubuntu virtual machine lets me keep my Windows machine for gaming and allows me to develop in a comfortable environment. You can follow along with the steps below, or give me tips on what could be done better :)</p>
<p>Warning, it is quite long! But it does cover installing the tools, setting up a LAMP stack, creating a virtual host and installing WordPress.</p>
<h2 id="install-tools">Step 1: Install the tools</h2>
<p>Download and install VMWare Player: <a title="VMWare Player Download Page" href="https://my.vmware.com/web/vmware/free#desktop_end_user_computing/vmware_player/5_0" target="_blank">VMWare Player Download Page</a> for running your virtual machine. It&#8217;s probably worth noting that we&#8217;re only going to get a terminal interface, not a GUI for the VM (I find this suits my needs perfectly).</p>
<p>Now for our virtual machine, if you want to run Ubuntu like me, then you can download an Ubuntu image from here: <a title="Ubuntu Server Images for VMWare" href="http://www.thoughtpolice.co.uk/vmware/#ubuntu12.04" target="_blank">Ubuntu Server Images for VMWare</a>. I used &#8220;32-bit: ubuntu-server-12.04-i386.zip&#8221; even though my computer is 64bit. I just didn&#8217;t see any reason that my web server needed to be a 64 bit machine, but this should probably match whatever you use for hosting.</p>
<p>Next, unzip the Ubuntu image and put it somewhere safe &amp; easily accessible on your hard drive. This will end up containing all your work, so really do make sure it&#8217;s safe!</p>
<p>Now for the fun part, run VMWare player. Choose &#8220;Open a Virtual Machine&#8221; and navigate to where you saved your Ubuntu image &amp; choose to open it. </p>
<p>You&#8217;ll now have the options to &#8220;Play virtual machine&#8221; or &#8220;Edit virtual machine settings&#8221;. You can give your new VM a better name by choosing edit, and then going to the options tab.</p>
<p><img class="alignleft size-full wp-image-2473" alt="VMWare Player" src="http://erisds.co.uk/wp-content/uploads/2012/12/vmware.png" width="600" height="511" /></p>
<p>Hit &#8220;Play virtual machine&#8221;. <strong>Important:</strong> you will be prompted to choose between &#8220;I moved it&#8221; and &#8220;I copied it&#8221;, always choose &#8220;I moved it&#8221; which is NOT the default option. Failure to do this will cause you problems later. You will be prompted to log in, if you downloaded the suggested Ubuntu image then use the provided username and password from the thought police site, probably something like notroot &amp; thoughtpolice.</p>
<p>Run the following commands to get any updates. It will take a few minutes, but then you will have Ubuntu installed, up-to-date and ready to start playing with.</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get update</span><br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get upgrade</span></div></td></tr></tbody></table></div>
<p><strong>Note:</strong> throughout this tutorial, whenever you are prompted with a <kbd>[Y/n]</kbd> always type <kbd>Y</kbd>.<br />
<strong>Note:</strong> if you&#8217;ve not used VMWare player before &#8211; to focus the VM you click on it as you would expect, but to get out of it and get your mouse cursor back you need to press <kbd>"CTRL + ALT"</kbd>.</p>
<h2 id="apache">Step 2: Install apache</h2>
<p>Next, lets turn our Ubuntu install into a working web server, by installing Apache HTTP Server:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get install</span> apache2</div></td></tr></tbody></table></div>
<p>We need to edit the config:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">vim</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>httpd.conf</div></td></tr></tbody></table></div>
<p>Add the following line to the file, which will be blank. This defines our web server as being called &#8220;localhost&#8221; which is the norm for local development environments.</p>
<blockquote><p><strong>Note:</strong> If you&#8217;ve not used vim on the command line to edit a file like this before, you&#8217;ll need to press <kbd>"i"</kbd> to enter insert mode and start adding new content to the file. When you&#8217;re done editing press <kbd>"esc"</kbd> to leave insert mode, and then type <kbd>":"</kbd> followed by <kbd>"w"</kbd> and then <kbd>"q"</kbd>. The <kbd>":"</kbd> brings up a command line and the <kbd>"wq"</kbd> means &#8220;write and quit&#8221;. Press enter and the file will be saved and closed.</p>
</blockquote>
<div class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">ServerName localhost</div></td></tr></tbody></table></div>
<p>Finally, we need to restart the server for our changes to take effect.</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>apache2 restart</div></td></tr></tbody></table></div>
<p>We now have a working local web server, therefore we have files on the Ubuntu VM which are addressable via IP addresses / URLs such that they can be opened and run in a browser. Apache has created these web accessable files a new folder that will be located at <kbd>/var/www</kbd>. Let&#8217;s verify that this is true.</p>
<p>Type the following into your VM:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">ifconfig</span></div></td></tr></tbody></table></div>
<p>You should see something similar to the image below, you are looking for the <kbd>inet address</kbd> assigned to <kbd>eth0</kbd>, which will be the IP address you can use to access your webserver.<br />
<img class="alignleft size-full wp-image-2494" alt="ifconfig" src="http://erisds.co.uk/wp-content/uploads/2012/12/ifconfig1.png" width="600" height="377" /></p>
<p>Open up your favourite browser, and enter <kbd>http://#IP address here#</kbd>, for the example above it would be <kbd>http://192.168.178.129</kbd>. You should see the &#8220;It works!&#8221; default file from apache much like the one shown below:</p>
<p><img src="http://erisds.co.uk/wp-content/uploads/2012/12/it-works1.png" alt="Default apache web page" width="600" height="182" class="alignleft size-full wp-image-2499" /></p>
<p>You can verify that this is indeed fetching files from your virtual machine by making a change. Navigate to your <kbd>www</kbd> folder:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span></div></td></tr></tbody></table></div>
<p>Change the owner of the default index file and then open it for editing:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chown</span> www-data.www-data index.html<br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">vim</span> index.html</div></td></tr></tbody></table></div>
<p>Make any change you like for testing.</p>
<blockquote><p>Don&#8217;t forget: <kbd>i</kbd>, <kbd>type</kbd>, <kbd>esc</kbd> + <kbd>wq</kbd></p></blockquote>
<p>Once you&#8217;ve edited and saved the file, refresh the page in the browser to see your changes take effect.</p>
<blockquote class="halfwidth alignright">
<h5>Editing the Windows hosts file</h5>
<p>In XP and before, this was merely a case of opening the file, but from Vista onward it&#8217;s a little trickier as you have to be administrator.</p>
<ul>
<li>Browse to <kbd>C:/Windows/System32</kbd> or do a search for <kbd>notepad.exe</kbd></li>
<li>Right click on <kbd>notepad.exe</kbd> and choose <kbd>"Run as administrator"</kbd></li>
<li>Go to <kbd>File &gt; Open</kbd></li>
<li>Navigate to <kbd>C:/Windows/System32/drivers/etc</kbd></li>
<li>Change file types <kbd>to All Files (*.*)</kbd></li>
<li>Open <kbd>hosts</kbd></li>
</ul>
</blockquote>
<h3 id="localhost">Localhost</h3>
<p>It may be the case that you would prefer to refer to your web server by <kbd>http://localhost</kbd>, instead of having to remember the IP address. If this is the case then you need to edit your <a href="http://en.wikipedia.org/wiki/Hosts_(file)" title="Windows hosts file" target="_blank">Windows hosts file</a> to tell Windows about the name you want to use for your IP address. See the block to the right for details of how to open up your Windows hosts file. </p>
<p>Once you&#8217;ve got it open, you need to add a line to it to map the IP address to &#8220;localhost&#8221; or whatever name you might like to use:</p>
<div class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">#IP address here# localhost</div></td></tr></tbody></table></div>
<p>So for my example I would put</p>
<div class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">192.168.178.129 localhost</div></td></tr></tbody></table></div>
<p>Once you&#8217;ve edited the file you will need to save it. It may take a few seconds to update, but you will then be able to enter <kbd>http://localhost</kbd> into your browser and get to the default page. If it doesn&#8217;t seem to be updating, you may need to flush the DNS cache. This is done in Windows by running <kbd>"ipconfig /flushdns"</kbd> either via the &#8220;Search programs &#038; files&#8221; box in the start menu, or in a <a href="http://www.tech-recipes.com/rx/1600/vista_dns_cache_flush/" title="Flush Windows DNS Cache" target="_blank">command prompt</a>.</p>
<h2 id="php-mysql">Step 3: Installing PHP &amp; MySQL</h2>
<p>We&#8217;ve got our LA part of LAMP, now it&#8217;s time for the M &amp; P! This bit is super easy.</p>
<p>To install PHP type the following in Ubuntu:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get install</span> php5 libapache2-mod-php5<br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>apache2 restart</div></td></tr></tbody></table></div>
<p>Let&#8217;s check it works, by adding a PHP file:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span><br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">vim</span> test.php</div></td></tr></tbody></table></div>
<p>Add the following code to the file and save it:</p>
<div class="codecolorer-container php twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span><br />
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Hello World&quot;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>You can access this file to test it via either <kbd>http://192.168.178.129/test.php</kbd> or if you set it up: <kbd>http://localhost/test.php</kbd>.</p>
<p><img src="http://erisds.co.uk/wp-content/uploads/2012/12/test-php.png" alt="test-php" width="600" height="95" class="alignleft size-full wp-image-2533" /></p>
<p>To get MySQL installed: </p>
<p></code></p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get install</span> mysql-server</div></td></tr></tbody></table></div>
<p>You will be prompted to set and confirm the password for your MySQL admin user.</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get install</span> php5-mysql</div></td></tr></tbody></table></div>
<p>You can test that MySQL is installed correctly by playing around with the MySQL admin (you'll be prompted for the password you just setup):</p>
<div class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">mysql -u root -p</div></td></tr></tbody></table></div>
<p>Exit mysql by typing "quit".</p>
<h2 id="samba">Step 4: install and setup samba</h2>
<p>Samba is what makes using a Linux VM as a development environment really simple. It's a little fiddly to setup, but once it is done you will be able to edit the files in your <kbd>/var/www/</kbd> folder directly through Windows, using any IDE you choose. Let's get started...</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get install</span> samba samba-common</div></td></tr></tbody></table></div>
<p>Add your user to samba (if you used the image suggested, this will be "notroot"):</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> smbpasswd <span style="color: #660033;">-a</span> <span style="color: #666666; font-style: italic;">#your user#</span></div></td></tr></tbody></table></div>
<p>Enter your password for your user, then we need to backup and edit our config for Samba so it's safe to edit:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>samba<br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">cp</span> smb.conf smb.conf.bak</div></td></tr></tbody></table></div>
<p>Open the file for editing</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">vim</span> smb.conf</div></td></tr></tbody></table></div>
<p>You need to make the following changes (use the arrow keys to scroll):</p>
<p>In the "Authentication section, uncomment (remove the hash / semi-colon) from the line</p>
<div class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">security = user</div></td></tr></tbody></table></div>
<p>Then at the very bottom of the file, add the following and save the file:</p>
<div class="codecolorer-container ini twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br /></div></td><td><div class="ini codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>www<span style="">&#93;</span></span><br />
<span style="color: #000099;">comment</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> Web Root Dir</span><br />
<span style="color: #000099;">path</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> /var/www/</span><br />
<span style="color: #000099;">browsable</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> yes</span><br />
read only <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> no</span><br />
<span style="color: #000099;">writable</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> yes</span><br />
valid users <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> notroot, www-data</span><br />
write list <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> notroot, www-data</span><br />
read list <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> notroot, www-data</span><br />
force user <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> www-data</span><br />
force group <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> www-data</span><br />
<span style="color: #000099;">public</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> no</span><br />
<span style="color: #000099;">writable</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> yes</span><br />
<span style="color: #000099;">printable</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> no</span></div></td></tr></tbody></table></div>
<p>Note that the user list should be your user (notroot if you are using the recommended Ubuntu image) and www-data.</p>
<p>Finally, restart samba:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>smbd restart</div></td></tr></tbody></table></div>
<p>Now we should be able to connect via Windows. Open up a Windows Explorer Instance and navigate to <kbd>"Computer"</kbd>. At the top you should see a button which reads "Map network drive". Select this and in the dialog that appears, choose a letter to map to, and then enter either localhost or the ip address of your web server as you found it earlier in the following format:</p>
<div class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">\\localhost\www\</div></td></tr></tbody></table></div>
<div class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">\\#IP address#\www\</div></td></tr></tbody></table></div>
<p><img src="http://erisds.co.uk/wp-content/uploads/2012/12/samba-connect.png" alt="Connect to your web server in Windows via Samba" width="600" height="396" class="alignleft size-full wp-image-2544" /></p>
<p>Press "Finish", you'll be prompted for your username and password again, enter it and you should see the files <kbd>index.html</kbd> and <kbd>test.php</kbd> that are in your <kbd>/var/www/</kbd> folder.</p>
<p>If you would like to be able to login via PuTTY for a slightly nicer terminal, run the following.</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get install</span> openssh-server</div></td></tr></tbody></table></div>
<p>Now in PuTTY you should be able to connect to your web server's IP address and login with your username and password.</p>
<h2 id="wordpress">Step 5: Installing WordPress on a virtual host</h2>
<p>Now that we have our LAMP stack all setup, and we have access to edit our files, we're going to use it to do something interesting.</p>
<p>First we need to set up a folder structure which the WordPress files will live in, which should look like <kbd>/var/www/wordpress/public_html</kbd>. You can either create these on the command line:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span><br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">mkdir</span> wordpress<br />
<span style="color: #7a0874; font-weight: bold;">cd</span> wordpress<br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">mkdir</span> public_html<br />
<span style="color: #7a0874; font-weight: bold;">cd</span> ..<span style="color: #000000; font-weight: bold;">/</span><br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chown</span> <span style="color: #660033;">-R</span> www-data.www-data .<span style="color: #000000; font-weight: bold;">/</span></div></td></tr></tbody></table></div>
<p>Or now that Samba is setup and working, just create the folders in Windows.</p>
<p>With the folders created, setup a virtual host by creating a new vhost file:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">vim</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>sites-available<span style="color: #000000; font-weight: bold;">/</span>wordpress</div></td></tr></tbody></table></div>
<p>Add the following to the file:</p>
<div class="codecolorer-container ini twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="ini codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;virtualhost *:<span style="">80</span>&gt;<br />
&nbsp; ServerName wordpress.dev<br />
&nbsp; DocumentRoot /var/www/wordpress/public_html<br />
&nbsp; DirectoryIndex index.php<br />
&lt;/virtualhost&gt;</div></td></tr></tbody></table></div>
<p>Save the file. We need to enable our new vhost and then restart apache:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> a2ensite wordpress<br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>apache2 restart</div></td></tr></tbody></table></div>
<p>So that we can access it in the browser, we need to add the new ServerName as a host to the Windows hosts file (see the <a href="#localhost" title="Localhost">localhost</a> section above).</p>
<p>If you added localhost to it earlier, then change the line to look like:</p>
<div class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">#IP address# localhost wordpress.dev</div></td></tr></tbody></table></div>
<p>Otherwise just add the line:</p>
<div class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">#IP address# wordpress.dev</div></td></tr></tbody></table></div>
<p>Go to <kbd>http://wordpress.dev</kbd> in your favourite browser, and you should get an "It works!" page again. <strong>Note:</strong> I like to use the fake TLD .dev to remind myself when I'm on the development version of a site, other people prefer to use a subdomain of the correct domain.</p>
<p>Now for WordPress. Download WordPress from <a href="http://wordpress.org/download/" title="WordPress" target="_blank">wordpress.org</a> and extract the files.<br />
Open the folders until you get to the base of WordPress where you can see the <kbd>"wp-admin"</kbd> folder then copy all of the present files &#038; folders into the <kbd>/var/www/wordpress/public_html</kbd> folder using windows explorer. </p>
<p>Our final piece of preparation is to create a database via the MysQL admin client. In VMWare type the following:</p>
<div class="codecolorer-container ini twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="ini codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">mysql -u root -p<br />
CREATE DATABASE wordpressdb<span style="color: #666666; font-style: italic;">;</span><br />
GRANT ALL PRIVILEGES ON wordpressdb.* TO <span style="color: #933;">&quot;wordpressdb&quot;</span>@<span style="color: #933;">&quot;localhost&quot;</span> IDENTIFIED BY <span style="color: #933;">&quot;wordpressdbuser&quot;</span><span style="color: #666666; font-style: italic;">;</span></div></td></tr></tbody></table></div>
<p>Now we have everything we need, go back to <kbd>http://wordpress.dev</kbd> in your browser and you should see the install screen for WordPress.</p>
<p>Follow the on-screen install instructions providing the MySQL database details you setup above.</p>
<p>Finally, we're done! We've got a working web server which is running a virtual host with a WordPress install. Setting up a virtual host for any other purpose is much the same as for WordPress - you need the folders first, then a vhost file, you enable your vhost,restart apache and finally add the new name to your Windows hosts file. </p>
<p>Hopefully this has been useful, it only covers the basics of getting from A to B so there are many, many other configuration options to play with and packages to install depending on what you want to do. It's also not been secured, I do not recommend using these settings for configuring a production server.</p>
<h3>Additional resources</h3>
<ul>
<li><a href="https://help.ubuntu.com/11.10/serverguide/httpd.html">HTTPD</a> - ubuntu help</li>
<li><a href="http://www.unixmen.com/howto-install-amp-and-phpmyadmin-on-ubuntu/">How to install LAMP and PHPMyAdmin on Ubuntu</a> - Unixmen</li>
<li><a href="http://www.sitepoint.com/ubuntu-12-04-lts-precise-pangolin-file-sharing-with-samba/">File sharing with samba</a> - SitePoint</li>
<li><a href="https://www.digitalocean.com/community/articles/how-to-set-up-apache-virtual-hosts-on-ubuntu-12-04-lts">How to set up apache virtual hosts on ubuntu 12 04 lts</a> - digitalocean</li>
<li><a href="http://codex.wordpress.org/Installing_WordPress#Using_the_MySQL_Client">Installing WordPress using the MySQL Client</a> - WordPress Codex</li>
</ul>
<div class='yarpp-related-rss'>
<p>Related posts:<ol>
<li><a href='http://erisds.co.uk/technology/an-assortment-of-useful-linux-commands' rel='bookmark' title='An assortment of useful linux commands'>An assortment of useful linux commands</a><small>This is a totally random post full of linux commands...</small></li>
<li><a href='http://erisds.co.uk/wordpress/migrate-announcement' rel='bookmark' title='WordPress: Migrate! Easy WordPress Site Migration'>WordPress: Migrate! Easy WordPress Site Migration</a><small>If you work with multiple environments (development, staging, production etc)...</small></li>
<li><a href='http://erisds.co.uk/wordpress/upgrading-old-wordpress-installs-not-as-scary-as-you-think' rel='bookmark' title='Upgrading old WordPress installs &#8211; not as scary as you think!'>Upgrading old WordPress installs &#8211; not as scary as you think!</a><small>Earlier this week I received an email requesting some help...</small></li>
</ol></p>
</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/erisds?a=OOBoM7CSvR4:oFHUJ2quxZs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/erisds?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=OOBoM7CSvR4:oFHUJ2quxZs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/erisds?i=OOBoM7CSvR4:oFHUJ2quxZs:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=OOBoM7CSvR4:oFHUJ2quxZs:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/erisds?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=OOBoM7CSvR4:oFHUJ2quxZs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/erisds?i=OOBoM7CSvR4:oFHUJ2quxZs:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=OOBoM7CSvR4:oFHUJ2quxZs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/erisds?i=OOBoM7CSvR4:oFHUJ2quxZs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=OOBoM7CSvR4:oFHUJ2quxZs:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/erisds?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://erisds.co.uk/technology/ubuntu-vm-local-dev-environment-on-windows/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Has it ever occurred to you that you might be wrong?</title>
		<link>http://erisds.co.uk/personal/has-it-ever-occurred-to-you-that-you-might-be-wrong</link>
		<comments>http://erisds.co.uk/personal/has-it-ever-occurred-to-you-that-you-might-be-wrong#comments</comments>
		<pubDate>Sat, 07 Jan 2012 10:28:29 +0000</pubDate>
		<dc:creator>ErisDS</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://erisds.co.uk/?p=2383</guid>
		<description><![CDATA[<a href="http://philipchircop.com/post/8691376552/has-it-ever-occurred-to-you-that-you-might-be" target="_blank"><img class="alignleft size-thumbnail wp-image-2384" title="Has it ever occurred to you that you might be wrong?" src="http://erisds.co.uk/wp-content/uploads/2012/01/has-it-ever-occurred-150x150.png" alt="Has it ever occurred to you that you might be wrong?" width="150" height="150" /></a>I loved this little <a title="Has it ever occurred to you that you might be wrong?" href="http://philipchircop.com/post/8691376552/has-it-ever-occurred-to-you-that-you-might-be" target="_blank">collection of quotes from philipchircop.com </a>and recommend you click on the screen grab, or one of the links to go read them all.

I'm just filing this away here for posterity :)<div class='yarpp-related-rss yarpp-related-none'>
</div>
]]></description>
				<content:encoded><![CDATA[<p>I loved this little <a title="Has it ever occurred to you that you might be wrong?" href="http://philipchircop.com/post/8691376552/has-it-ever-occurred-to-you-that-you-might-be" target="_blank">collection of quotes from philipchircop.com </a>and recommend you click on the screen grab, or one of the links to go read them all.</p>
<p>I&#8217;m just filing this away here for posterity :)</p>
<div id="attachment_2384" class="wp-caption alignleft" style="width: 538px"><a href="http://philipchircop.com/post/8691376552/has-it-ever-occurred-to-you-that-you-might-be"><img class="size-full wp-image-2384" title="Has it ever occurred to you that you might be wrong?" src="http://erisds.co.uk/wp-content/uploads/2012/01/has-it-ever-occurred.png" alt="Has it ever occurred to you that you might be wrong?" width="528" height="747" /></a><p class="wp-caption-text">From philipchircop.com, click to see full post</p></div>
<div class='yarpp-related-rss yarpp-related-none'>
</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/erisds?a=gQGVgKtR_os:DsZOzPefjfI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/erisds?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=gQGVgKtR_os:DsZOzPefjfI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/erisds?i=gQGVgKtR_os:DsZOzPefjfI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=gQGVgKtR_os:DsZOzPefjfI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/erisds?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=gQGVgKtR_os:DsZOzPefjfI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/erisds?i=gQGVgKtR_os:DsZOzPefjfI:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=gQGVgKtR_os:DsZOzPefjfI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/erisds?i=gQGVgKtR_os:DsZOzPefjfI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=gQGVgKtR_os:DsZOzPefjfI:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/erisds?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://erisds.co.uk/personal/has-it-ever-occurred-to-you-that-you-might-be-wrong/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hands up if you’re on a January diet…</title>
		<link>http://erisds.co.uk/personal/hands-up-if-youre-on-a-january-diet</link>
		<comments>http://erisds.co.uk/personal/hands-up-if-youre-on-a-january-diet#comments</comments>
		<pubDate>Thu, 05 Jan 2012 22:19:09 +0000</pubDate>
		<dc:creator>ErisDS</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[random thoughts]]></category>

		<guid isPermaLink="false">http://erisds.co.uk/?p=2358</guid>
		<description><![CDATA[<img src="http://erisds.co.uk/wp-content/uploads/2012/01/HappyNewYear-150x150.png" alt="Happy New Year" title="Happy New Year" width="150" height="150" class="alignleft size-thumbnail wp-image-2359" />I know, we're almost a week into 2012 already, it's a bit late for contemplating achievements and setting resolutions isn't it? Every year, the "January diet" gets further reinforced by our populist media - all the adverts are suddenly for exercise DVDs, clever cookbooks and healthy food - and nearly everyone I know is "on a diet". We're a nation gone mad, and yet we'll all be overweight again by Easter. We all strive to be better, and I'm tired of failing... so I've been trying to figure out how to do it right.<div class='yarpp-related-rss'>

Related posts:<ol>
<li><a href='http://erisds.co.uk/personal/sleep' rel='bookmark' title='Sleep'>Sleep</a><small> ** Disclaimer *** I am well aware that WikiPedia...</small></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-2359" title="Happy New Year" src="http://erisds.co.uk/wp-content/uploads/2012/01/HappyNewYear-300x214.png" alt="Happy New Year" width="300" height="214" /></p>
<p>I know, we&#8217;re almost a week into 2012 already, it&#8217;s a bit late for contemplating achievements and setting resolutions isn&#8217;t it? Every year, the &#8220;January diet&#8221; gets further reinforced by our populist media &#8211; all the adverts are suddenly for exercise DVDs, clever cookbooks and healthy food &#8211; and nearly everyone I know is &#8220;on a diet&#8221;. We&#8217;re a nation gone mad, and yet we&#8217;ll all be overweight again by Easter. We all strive to be better, and I&#8217;m tired of failing&#8230; so I&#8217;ve been trying to figure out how to do it right.</p>
<h3>Out with the old and in with the new.</h3>
<p>Why is New Year synonymous with thoughts of past &amp; future personal achievement? As our calendars tick over to a brand new year, most folk feel drawn to it as a fresh start, a simple changing of the date makes us feel like we&#8217;re starting over. Combined with a break from the weekly work-eat-sleep routine and copious amounts of time with friends &amp; relatives, thoughts turn to work-life balance, evaluating what we&#8217;ve done with our year &amp; reflecting on what was missing.</p>
<p>Then there&#8217;s the tradition of setting a new years resolution. Usually something spur of the moment, arbitrary to measure and impossible to achieve: &#8216;lose weight&#8217;, &#8216;quit smoking&#8217;, &#8216;do more exercise&#8217;, &#8216;drink less&#8217;, &#8216;spend more time with family&#8217;, &#8216;work less&#8217; &amp; so on. These day most of us can count at least two of those on our todo lists, and most of us will try really hard for the whole of January only to inevitably forget, give up, or just downright fail.</p>
<h3>Conceived to fail</h3>
<p>Why is it so damned hard to keep up a resolution? Whilst the Christmas &amp; New Year breaks give us all plenty of time to think &amp; have our self-realisations, epiphanies &#038; moments of sworn change, the truth is that unless you make drastic changes to your various environments, it doesn&#8217;t take long before the old routines take over again, and you remember WHY you smoke/drink/never have time to cook a decent meal/have to stay late at work&#8230;again.</p>
<h3>Cause and effect</h3>
<p>I have come to believe, that if you really do want to change something about yourself, you have to look at the cause of your unwanted behaviour and importantly, WHY you want to change it. Habits are usually a coping mechanism of some sort, so either you need to remove the need to cope, or change the way you do it. But when it comes to the why, i&#8217;ll bet the answer is something along the lines of social pressure from the very same society which gave life to your bad habits in the first place (cue vicious circle and nothing ever changing).</p>
<p>However, once you&#8217;ve figured out the causes and decided whether YOU really want to change (as opposed to feeling like you should do) you&#8217;ll discover you can set yourself a more realistic goal. Hopefully something along the lines of learning a new skill, or challenging yourself to make a small change. That, or you&#8217;ll realise you have a much more fundamental problem to solve.</p>
<p>This year, I&#8217;m not setting myself a new years resolution. Instead, I&#8217;m going to spend some time looking at my list of potentials &amp; really understanding why those things are on that mental list of mine. Then perhaps I&#8217;ll be able to action some real, long-lasting change.</p>
<p>Happy New Year Everyone. I hope you do something GREAT with it.</p>
<div class='yarpp-related-rss'>
<p>Related posts:<ol>
<li><a href='http://erisds.co.uk/personal/sleep' rel='bookmark' title='Sleep'>Sleep</a><small> ** Disclaimer *** I am well aware that WikiPedia...</small></li>
</ol></p>
</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/erisds?a=QFIeZnjrAiU:gLT_qNl9SHs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/erisds?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=QFIeZnjrAiU:gLT_qNl9SHs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/erisds?i=QFIeZnjrAiU:gLT_qNl9SHs:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=QFIeZnjrAiU:gLT_qNl9SHs:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/erisds?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=QFIeZnjrAiU:gLT_qNl9SHs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/erisds?i=QFIeZnjrAiU:gLT_qNl9SHs:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=QFIeZnjrAiU:gLT_qNl9SHs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/erisds?i=QFIeZnjrAiU:gLT_qNl9SHs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=QFIeZnjrAiU:gLT_qNl9SHs:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/erisds?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://erisds.co.uk/personal/hands-up-if-youre-on-a-january-diet/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sleep</title>
		<link>http://erisds.co.uk/personal/sleep</link>
		<comments>http://erisds.co.uk/personal/sleep#comments</comments>
		<pubDate>Wed, 28 Dec 2011 17:25:24 +0000</pubDate>
		<dc:creator>ErisDS</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[random thoughts]]></category>

		<guid isPermaLink="false">http://erisds.co.uk/?p=2334</guid>
		<description><![CDATA[<img class="alignleft size-thumbnail wp-image-2345" style="border-style: initial; border-color: initial;" title="sleeping kitties" src="http://erisds.co.uk/wp-content/uploads/2011/12/sleeping-kitties-150x150.jpg" alt="sleeping kitties" width="150" height="150" />

<strong>** Disclaimer ***</strong> I am well aware that WikiPedia is not the best source of information... but you know... it's just.. there!<br /><br />
A very dear friend of mine just posted a comment on Facebook that has prompted me to write this "Thinking out loud" post about my sleeping habits, which is largely an excuse for exploring wikipedia and looking at pictures of cute sleeping kitties. <div class='yarpp-related-rss'>

Related posts:<ol>
<li><a href='http://erisds.co.uk/personal/hands-up-if-youre-on-a-january-diet' rel='bookmark' title='Hands up if you&#8217;re on a January diet&#8230;'>Hands up if you&#8217;re on a January diet&#8230;</a><small>I know, we're almost a week into 2012 already, it's...</small></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-2345" style="border-style: initial; border-color: initial;" title="sleeping kitties" src="http://erisds.co.uk/wp-content/uploads/2011/12/sleeping-kitties-150x150.jpg" alt="sleeping kitties" width="150" height="150" /></p>
<p><strong>** Disclaimer ***</strong> I am well aware that Wikipedia is not the best source of information&#8230; but you know&#8230; it&#8217;s just.. there!</p>
<p>A very dear friend of mine just posted a comment on Facebook that has prompted me to write this &#8220;Thinking out loud&#8221; post about my sleeping habits, which is largely an excuse for exploring wikipedia and looking at pictures of cute sleeping kitties. Anyway, here&#8217;s what I wrote, and what my friend replied with:</p>
<p><img class="aligncenter size-full wp-image-2337" title="Facebook - why am I so tired?" src="http://erisds.co.uk/wp-content/uploads/2011/12/facebook-sleep.jpg" alt="Facebook - why am I so tired?" width="477" height="158" /></p>
<p>Holiday-fatigue is something I regularly battle. I always have massive plans for what I can achieve with a long weekend or a week off, but by the time I&#8217;ve spent a day chilling out I&#8217;m in relaxed mode and never have the impetus to do any of it. People who do a full working week and still churn out side projects at a rate of knots in their evenings and weekends have both my envy and my awe.</p>
<p>However, my friend&#8217;s comment made me stop and think because she believes I&#8217;m suffering sleep deprivation &#8211; this isn&#8217;t something I recall ever having even hinted to her. Sure, getting up at 5:30 every morning to do a 2 hour commute means I live on the edge of getting enough sleep, but as far as I&#8217;m concerned this was something I adjusted to after about 2 months. The idea that it takes more than a few long sleeps to cancel out is also intriguing - so off I went to Wikipedia to read their article on <a title="Wikipedia: Sleep Deprivation" href="http://en.wikipedia.org/wiki/Sleep_deprivation" target="_blank">Sleep Deprivation</a>.</p>
<p>Apparently, your brain keeps a close account of how much sleep you owe it (that&#8217;s kinda freaky), and if you continue to accrue <a title="Wikipedia: Sleep debt" href="http://en.wikipedia.org/wiki/Sleep_debt" target="_blank">sleep debt</a> (apparently that&#8217;s a thing) you eventually have to pay it back &#8211; sometimes your body will steal it back through unavoidable <a title="Wikipedia: Microsleep" href="http://en.wikipedia.org/wiki/Microsleep" target="_blank">microsleeps</a> or tiny naps (who hasn&#8217;t had one of those at their desk after a big lunch?!). By this point, I&#8217;ve fallen into a Wikipedia Trap so also had to read the article on the <a title="Wikipedia: Hypnic Jerk" href="http://en.wikipedia.org/wiki/Hypnic_jerk" target="_blank">Hypnic Jerk</a> (tee hee).</p>
<p>All this information on sleep is fascinating: apparently the falling dream that often accompanies a Hypnic Jerk is actually a hallucination (weird!) and also, apparently, you can determine just how sleep deprived you are by<a title="Wikipedia: Multiple Sleep Latency Test" href="http://en.wikipedia.org/wiki/Multiple_Sleep_Latency_Test" target="_blank"> timing how long it takes you to fall asleep</a> (or your &#8220;<a title="Wikipedia: Sleep Latency" href="http://en.wikipedia.org/wiki/Sleep_latency" target="_blank">Sleep Latency</a>&#8220;). Shockingly (to me at least) according to the sleep latency test, if you fall asleep in less than 15 minutes, you are suffering a level of sleep deprivation?!? It usually takes me 10-15 minutes if I&#8217;m comfy in my bed in a quiet, dark room, regardless of how tired I feel or how much sleep I have. Husband on the other hand struggles to sleep without a TV on &#8211; so am I not just a good go-to-sleep-er?</p>
<p><a title="About: How much sleep is enough?" href="http://sleepdisorders.about.com/od/howmuchsleepdoineed/a/how_much_sleep.htm" target="_blank">The average adult requires 8 hours sleep</a> (watch it, that link is NOT from Wikipedia haha) so if I&#8217;m &#8220;the&#8221; average adult, and I get roughly 7.5 hours sleep a night, then each week I accrue a sleep debt of 2.5 hours. I usually also get at least one train-nap or lie in a week, gaining me back another 30 minutes and I always have a lie in (at least 10 hours) at the weekend. Therefore, if I&#8217;m &#8220;the&#8221; average adult &#8211; I sleep enough (although husband will tell you that I always used to be a 9 hours kinda gal).</p>
<p>I remember a conversation I had before I started my new job where I was saying I couldn&#8217;t remember the last time I didn&#8217;t feel like I could fall asleep if you just gave me a pillow and some peace and quiet (this is still true). Back then I put it down to the stresses of my old job because I was commuting 10 minutes and easily getting 9 hours sleep a night. Nowadays I&#8217;ve a spring in my step and a smile on my face &#8211; I might not sleep but I&#8217;m much less stressed!</p>
<p>All this is purely academic anyway. We&#8217;re all entirely different and have different needs. I&#8217;m certian that energy levels have as much to do with diet and levels of physical &amp; mental exertion as they do your sleep debt.  Who knows what we really know or understand about sleep? We know naff-all about dreams. Most adults I know complain of little other than the weather and feeling tired.</p>
<p>So there we go, my random Wikipedia &amp; thought trail is over. I have a cup of coffee in hand and feel more awake than I did before I wrote this&#8230; so what about you? Got any weird sleep habits?!</p>
<p><img src="http://erisds.co.uk/wp-content/uploads/2011/12/sleeping-kitties2.jpg" alt="" title="sleeping-kitties2" width="580" height="193" class="aligncenter size-full wp-image-2351" /></p>
<div class='yarpp-related-rss'>
<p>Related posts:<ol>
<li><a href='http://erisds.co.uk/personal/hands-up-if-youre-on-a-january-diet' rel='bookmark' title='Hands up if you&#8217;re on a January diet&#8230;'>Hands up if you&#8217;re on a January diet&#8230;</a><small>I know, we're almost a week into 2012 already, it's...</small></li>
</ol></p>
</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/erisds?a=C-iNwDJhtm0:vH0WKzJZYjQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/erisds?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=C-iNwDJhtm0:vH0WKzJZYjQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/erisds?i=C-iNwDJhtm0:vH0WKzJZYjQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=C-iNwDJhtm0:vH0WKzJZYjQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/erisds?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=C-iNwDJhtm0:vH0WKzJZYjQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/erisds?i=C-iNwDJhtm0:vH0WKzJZYjQ:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=C-iNwDJhtm0:vH0WKzJZYjQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/erisds?i=C-iNwDJhtm0:vH0WKzJZYjQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=C-iNwDJhtm0:vH0WKzJZYjQ:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/erisds?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://erisds.co.uk/personal/sleep/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Starting out with Zend Framework</title>
		<link>http://erisds.co.uk/code/starting-out-with-zend-framework</link>
		<comments>http://erisds.co.uk/code/starting-out-with-zend-framework#comments</comments>
		<pubDate>Sun, 16 Oct 2011 09:54:50 +0000</pubDate>
		<dc:creator>ErisDS</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Symfony]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://erisds.co.uk/?p=2279</guid>
		<description><![CDATA[<img src="http://erisds.co.uk/wp-content/uploads/2011/10/zf-logo-mark-150x150.png" alt="Zend Framework" title="Zend Framework" width="150" height="150" class="alignleft size-thumbnail wp-image-2320" />
I am on a mission to get to grips with using the <a title="Zend Framework Overview" href="http://framework.zend.com/about/overview" target="_blank">Zend Framework</a> for building web applications. At MOO, the Zend Framework is used in it's more toolkit-like component library capacity and I'm also pretty familiar with its structure from previous work with Magento (although that always seemed to over-complicate it). Using it as a full stack framework however, is a different challenge all together.<div class='yarpp-related-rss'>

Related posts:<ol>
<li><a href='http://erisds.co.uk/symfony/symfony-what-is-it-good-for' rel='bookmark' title='Symfony: What is it good for?'>Symfony: What is it good for?</a><small>Symfony is one of my favourite bits of technology. I’ve...</small></li>
<li><a href='http://erisds.co.uk/code/getting-rid-of-non-breaking-spaces-nbsp' rel='bookmark' title='Getting Rid of Non Breaking Spaces (&amp;nbsp)'>Getting Rid of Non Breaking Spaces (&amp;nbsp)</a><small>Have you ever tried to parse, process or preg_replace some...</small></li>
<li><a href='http://erisds.co.uk/code/yui-javascript-carousel-custom-navigation-part-1' rel='bookmark' title='YUI: Javascript Carousel with Custom Navigation &#8211; Part 1'>YUI: Javascript Carousel with Custom Navigation &#8211; Part 1</a><small>Welcome to my first JavaScript related post! I'm currently in...</small></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p><img src="http://erisds.co.uk/wp-content/uploads/2011/10/zf-logo-mark-150x150.png" alt="Zend Framework" title="Zend Framework" width="150" height="150" class="alignleft size-thumbnail wp-image-2320" /><br />
I am on a mission to get to grips with using the <a title="Zend Framework Overview" href="http://framework.zend.com/about/overview" target="_blank">Zend Framework</a> for building web applications. At MOO, the Zend Framework is used in it&#8217;s more toolkit-like component library capacity and I&#8217;m also pretty familiar with its structure from previous work with Magento (although that always seemed to over-complicate it). Using it as a full stack framework however, is a different challenge all together.</p>
<p>Let me explain the reasons why I&#8217;m investing time in ZF. If you&#8217;ve read this blog before you may be aware that I have a lot of experience working with the <a title="Symfony Framework" href="http://www.symfony-project.org/" target="_blank">Symfony Framework</a>, and I&#8217;m really fond of it. However after using it to write what was quite a sizeable app, I found it started to get quite slow, as well as finding the <a title="ORM - Object Relational Mapping" href="http://en.wikipedia.org/wiki/Object-relational_mapping" target="_blank">ORMs</a> (I mostly used <a title="Propel ORM" href="http://www.propelorm.org/" target="_blank">Propel</a>) to be quite cumbersome (I like SQL!). I often spent a long time trying to figure out how Symfony wanted me to do something and therefore the flexibility of ZF in this regard is attractive.</p>
<p>Zend Framework also seems to be more of an industry standard, where Symfony is somewhat niche. Coming from Zend and with training and qualifications available, it seems like a good tool to add to my toolbox. The added benefit is my code &amp; approach are more likely to be understood by other people quickly, so if any of my side projects ever take off they should scale easily :)</p>
<h2>Tackling the Tutorials</h2>
<p>So on to the task of learning how to approach a site with ZF. I have two books that I&#8217;ve skim-read: <a href="http://www.amazon.co.uk/gp/product/1933988320/ref=as_li_ss_tl?ie=UTF8&#038;tag=muofer-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=1933988320">Zend Framework in Action</a> and <a href="http://www.amazon.co.uk/gp/product/0973862157/ref=as_li_ss_tl?ie=UTF8&#038;tag=muofer-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=0973862157">Php|architect&#8217;s Guide to Programming with Zend Framework</a> both are OK but pretty broad and don&#8217;t cover key topics in much detail. I&#8217;ve also been through the quickstart tutorial on Zend.com and some of the more advanced stuff. It&#8217;s clear that Zend Framework is a powerful tool, but mastering it is no simple task.</p>
<p>Flexibility &amp; being able to approach problems in multiple ways was one of the attractions of Zend Framework, but I find the complete lack of even a hint at where code should go quite disconcerting. I would be happy with some suggestions and debates on best practice, but even that seems limited. Therefore I have taken to searching Google for key topics with the flag &#8221;-site:<a href="http://zend.com/" target="_blank">zend.com</a>&#8221; so that I only get results from sites other than Zend because it is top in all search results but almost never has the answer!</p>
<p>One of the great things about Symfony is the Askeet/Jobeet tutorial. Every version of Symfony has had an in-depth tutorial that went with it, covering each aspect of the system. This provided a great learning tool, and also a fantastic talking point for debate and spin-off tutorials which looked at areas in even more depth.</p>
<p>In complete contrast, the Zend Framework&#8217;s own tutorials seems to be extremely lacking. Most of the documentation seems to cover only very basic examples, lacking in any real depth or clever stuff. For example the <a title="Learning multiuser authentication" href="http://framework.zend.com/manual/1.11/en/learning.multiuser.authentication.html" target="_blank">Getting started with Zend_Auth</a> tutorial lacks CSRF protection &amp; password salting &#8211; two things that should really be &#8220;the standard&#8221; IMO. The following tutorial on <a title="Learning Multiuser Authorisation" href="http://framework.zend.com/manual/1.11/en/learning.multiuser.authorization.html" target="_blank">Zend_Acl</a> is even more disappointing &#8211; it doesn&#8217;t give any clue as to where any of the code should go. You&#8217;re expected to know/guess or just make it up as you go.</p>
<h2>Finding an Approach for Key Concepts</h2>
<p>There are three areas in particular which seem to be vastly under-documented / under-exampled in my opinion: Models, Access Control and Routing. I despise patterns using one model class to represent both a collection and instance of an object, which is what appears in a vast number of tutorials. ZF seems to roughly support the ActiveRecord style pattern (which I&#8217;m used to from using Propel/Doctrine) through extending its <a title="Zend Db Table" href="http://framework.zend.com/manual/en/zend.db.table.html" target="_blank">Db_Table</a> &amp; <a title="Db Table Row" href="http://framework.zend.com/manual/en/zend.db.table.row.html" target="_blank">Db_Table_Row</a> classes and paired with <a title="Zend Db Select" href="http://framework.zend.com/manual/en/zend.db.select.html" target="_blank">Db_Select </a>it works as a kind of lo-fi ORM. It seems that many <a title="ActiveRecord does not suck" href="http://karwin.blogspot.com/2008/05/activerecord-does-not-suck.html" target="_blank">Zend folk are not a fan of ActiveRecord</a>, but the main documentation barely hints at any of this, or any other potential approaches. You have to leave the main site and search various blogs to get even a whiff of any of this knowledge.</p>
<p>Even more worrying/frustrating is the seeming lack of documentation around Access Control &amp; Routing. I&#8217;m used to these being baked-in in Symfony as both were managed via YAML config files, and the almost-comes-as-standard sfGuardPlugin provided fine grained control of users, groups and permissions. ZF provides tools, but little direction and it seems quite intensive to get either of these key parts of a web application up and running.</p>
<p>Frustratingly, there seems to be no such obvious place to setup these vital parts of the site (does everyone end up with enormous Bootstrap files?!?). I&#8217;ve already mentioned the vagaries of the ACL tutorial, but routing for me is pretty fundamental. In Symfony you define your database schema (which results in a database, models &amp; forms for CRUD), then write your routes, then you write code. In ZF I&#8217;ve really struggled to find anything which takes the same REST API-as-standard approach to configuring routes. I know <a title="Building RESTful Services with Zend Framework" href="http://weierophinney.net/matthew/archives/228-Building-RESTful-Services-with-Zend-Framework.html" target="_blank">it can be done</a>, it just doesn&#8217;t seem to be a standard way of thinking about things.</p>
<h2>Zend Framework vs Symfony?</h2>
<p>Well, this turned out to be much more of a Symfony vs Zend Framework post than I intended. It also seems that all the features of Zend that I thought would make it great to use have turned out to be what makes it a pain in the arse! I know that this is partially because I&#8217;ve been spoiled by Symfony doing so much of the heavy lifting for me, and by its awesome documentation. I am also aware I&#8217;m trying to do ORM-y things without an ORM. It seems that by keeping a tight reign on the approach to key concepts, Symfony had allowed itself to foster a much richer pool of easily-accessible documentation. Also, Symfony seems much more intent on <a title="Symfony Bloggers RSS Feed" href="http://trac.symfony-project.org/wiki/SymfonyBloggers" target="_blank">including its community</a> &amp; building great accessible documentation, instead of (or as well as) providing training courses.</p>
<p><strong>Note-to-self:</strong> I need to clear my mind of expectations and pre-conceptions about frameworks if I&#8217;m going to succeed at this!</p>
<div class='yarpp-related-rss'>
<p>Related posts:<ol>
<li><a href='http://erisds.co.uk/symfony/symfony-what-is-it-good-for' rel='bookmark' title='Symfony: What is it good for?'>Symfony: What is it good for?</a><small>Symfony is one of my favourite bits of technology. I’ve...</small></li>
<li><a href='http://erisds.co.uk/code/getting-rid-of-non-breaking-spaces-nbsp' rel='bookmark' title='Getting Rid of Non Breaking Spaces (&amp;nbsp)'>Getting Rid of Non Breaking Spaces (&amp;nbsp)</a><small>Have you ever tried to parse, process or preg_replace some...</small></li>
<li><a href='http://erisds.co.uk/code/yui-javascript-carousel-custom-navigation-part-1' rel='bookmark' title='YUI: Javascript Carousel with Custom Navigation &#8211; Part 1'>YUI: Javascript Carousel with Custom Navigation &#8211; Part 1</a><small>Welcome to my first JavaScript related post! I'm currently in...</small></li>
</ol></p>
</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/erisds?a=Ec08qc86RHw:BHG-ZQ7JUng:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/erisds?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=Ec08qc86RHw:BHG-ZQ7JUng:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/erisds?i=Ec08qc86RHw:BHG-ZQ7JUng:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=Ec08qc86RHw:BHG-ZQ7JUng:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/erisds?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=Ec08qc86RHw:BHG-ZQ7JUng:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/erisds?i=Ec08qc86RHw:BHG-ZQ7JUng:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=Ec08qc86RHw:BHG-ZQ7JUng:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/erisds?i=Ec08qc86RHw:BHG-ZQ7JUng:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=Ec08qc86RHw:BHG-ZQ7JUng:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/erisds?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://erisds.co.uk/code/starting-out-with-zend-framework/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Twitter OAuth: Simple cURL requests for your own data</title>
		<link>http://erisds.co.uk/code/twitter-oauth-simple-curl-requests-for-your-own-data</link>
		<comments>http://erisds.co.uk/code/twitter-oauth-simple-curl-requests-for-your-own-data#comments</comments>
		<pubDate>Mon, 10 Oct 2011 10:01:55 +0000</pubDate>
		<dc:creator>ErisDS</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[CURL]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://erisds.co.uk/?p=2239</guid>
		<description><![CDATA[<img src="http://erisds.co.uk/wp-content/uploads/2011/10/twitter_newbird_boxed_blueonwhite-150x150.png" alt="" title="twitter_newbird_boxed_blueonwhite" width="150" height="150" class="alignleft size-thumbnail wp-image-2261" />Having to include an entire PHP OAuth library every time I want to make a simple API request for some of my own data from a 3rd party app like Twitter really pisses me off. Perhaps this is unreasonable, but it's a problem I ran into for the 4th or 5th time today when trying to help <a href="http://john.onolan.org/" title="John O'Nolan's Awesome Blog" target="_blank">John O'Nolan</a> fetch his status count for his blog.<div class='yarpp-related-rss'>

Related posts:<ol>
<li><a href='http://erisds.co.uk/internet/5-top-resources-for-twitter-success' rel='bookmark' title='5 Top Resources for Twitter Success'>5 Top Resources for Twitter Success</a><small>I've been experimenting with developing my Twitter account for the...</small></li>
<li><a href='http://erisds.co.uk/internet/digging-twitter' rel='bookmark' title='Digging Twitter'>Digging Twitter</a><small>Last night this article hit the front page of Digg....</small></li>
<li><a href='http://erisds.co.uk/awesome/awesome-1-real-time-radiation-levels-twitter-heartbeat-bbc-fail' rel='bookmark' title='Awesome: 1. Real-time radiation levels, Twitter heartbeat &amp; BBC #fail'>Awesome: 1. Real-time radiation levels, Twitter heartbeat &#038; BBC #fail</a><small>An introduction This is the first in a new series...</small></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p><img src="http://erisds.co.uk/wp-content/uploads/2011/10/twitter_newbird_boxed_blueonwhite-150x150.png" alt="" title="twitter_newbird_boxed_blueonwhite" width="150" height="150" class="alignleft size-thumbnail wp-image-2261" />Having to include an entire PHP OAuth library every time I want to make a simple API request for some of my own data from a 3rd party app like Twitter really pisses me off. Perhaps this is unreasonable, but it&#8217;s a problem I ran into for the 4th or 5th time today when trying to help <a href="http://john.onolan.org/" title="John O'Nolan's Awesome Blog" target="_blank">John O&#8217;Nolan</a> fetch his status count for his blog.</p>
<p>Making a REST API request for your own twitter info using the &#8220;<a href="https://dev.twitter.com/docs/api/1/get/users/show" title="Twitter API GET users/show" target="_blank">user/show</a>&#8221; request is relatively simple as it doesn&#8217;t actually require authentication. That is until you upload the code to your server and discover that someone else sharing the server&#8217;s IP is very selfishly hogging all of the API requests.</p>
<p>Twitter very helpfully allows you to authenticate your own app for your account and generate an OAuth Access token, meaning you can skip the first few steps of the OAuth process. However after much Googling, I discovered there really aren&#8217;t that many examples of what to do next &#8211; they all seem to use one or another library &#8211; which seems totally unnecessary for making one request.</p>
<p>After much searching, finally I found one <a href="http://www.godlikemouse.com/2011/04/01/twitter-oauth-php-tutorial/" title="Twitter OAuth PHP Tutorial" target="_blank">awesome step-by-step tutorial</a> which explains <a href="http://www.godlikemouse.com/2011/04/01/twitter-oauth-php-tutorial/" title="Twitter OAuth PHP Tutorial" target="_blank">the first few steps of OAuth</a> and in particular how to build the OAuth HTTP headers and OAuth signature to sign the request. So I&#8217;ve taken lead from here, borrowed the helper functions and signature code, and put it all together to make a signed GET request to the API and return some ACTUAL data.</p>
<p>Here&#8217;s the couple of helper functions I borrowed, the first combines the request URI and parameters into a string as required by the OAuth signature. The second one takes an array of OAuth credentials/settings and combines them into the HTTP header for use with cURL.</p>
<div class="codecolorer-container php twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">function</span> buildBaseString<span style="color: #009900;">&#40;</span><span style="color: #000088;">$baseURI</span><span style="color: #339933;">,</span> <span style="color: #000088;">$method</span><span style="color: #339933;">,</span> <span style="color: #000088;">$params</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$r</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; <a href="http://www.php.net/ksort"><span style="color: #990000;">ksort</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$params</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$params</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$key</span><span style="color: #339933;">=&gt;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$r</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$key</span>=&quot;</span> <span style="color: #339933;">.</span> <a href="http://www.php.net/rawurlencode"><span style="color: #990000;">rawurlencode</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #000088;">$method</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&amp;&quot;</span> <span style="color: #339933;">.</span> <a href="http://www.php.net/rawurlencode"><span style="color: #990000;">rawurlencode</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$baseURI</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&amp;'</span> <span style="color: #339933;">.</span> <a href="http://www.php.net/rawurlencode"><span style="color: #990000;">rawurlencode</span></a><span style="color: #009900;">&#40;</span><a href="http://www.php.net/implode"><span style="color: #990000;">implode</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'&amp;'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$r</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">function</span> buildAuthorizationHeader<span style="color: #009900;">&#40;</span><span style="color: #000088;">$oauth</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$r</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Authorization: OAuth '</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; <span style="color: #000088;">$values</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; <span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$oauth</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$key</span><span style="color: #339933;">=&gt;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$values</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$key</span>=<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span> <span style="color: #339933;">.</span> <a href="http://www.php.net/rawurlencode"><span style="color: #990000;">rawurlencode</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; <span style="color: #000088;">$r</span> <span style="color: #339933;">.=</span> <a href="http://www.php.net/implode"><span style="color: #990000;">implode</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">', '</span><span style="color: #339933;">,</span> <span style="color: #000088;">$values</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #000088;">$r</span><span style="color: #339933;">;</span> <br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>Next you need to setup all of the OAuth credentials and settings. For Twitter, the tokens, keys and secrets you need will all be available on <a href="https://dev.twitter.com/apps" title="Twitter: My Apps" target="_blank">your App page</a>. If you haven&#8217;t got any Apps, you&#8217;ll need to <a href="https://dev.twitter.com/apps" title=" Twitter: My Apps" target="_blank">create one</a>, authorise it for your account and grab an access token.</p>
<div class="codecolorer-container php twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$url</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;http://api.twitter.com/1/account/totals.json&quot;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$oauth_access_token</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;YOUR TOKEN HERE&quot;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$oauth_access_token_secret</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;YOUR TOKEN SECRET HERE&quot;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$consumer_key</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;YOUR KEY HERE&quot;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$consumer_secret</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;YOUR SECRET HERE&quot;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$oauth</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'oauth_consumer_key'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$consumer_key</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">'oauth_nonce'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/time"><span style="color: #990000;">time</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">'oauth_signature_method'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'HMAC-SHA1'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">'oauth_token'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$oauth_access_token</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">'oauth_timestamp'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/time"><span style="color: #990000;">time</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">'oauth_version'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'1.0'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>The tricky bit, that doesn&#8217;t ever seem to be explained to well, is creating the OAuth signature. For HMAC-SHA1, this boils down to the following few lines:<br />
Create your URI base string by combining the URL you will be sending the request to with the oauth details as per the helper function. The key is the consumer secret and access token secret URL encoded and combined with an ampersand. Finally, the base url and the composite key are hashed and and base 64 encoded. Sounds really fraking complicated when you read the instructions, doesn&#8217;t look so bad when it&#8217;s written out in PHP.</p>
<div class="codecolorer-container php twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$base_info</span> <span style="color: #339933;">=</span> buildBaseString<span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'GET'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$oauth</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$composite_key</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/rawurlencode"><span style="color: #990000;">rawurlencode</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$consumer_secret</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&amp;'</span> <span style="color: #339933;">.</span> <a href="http://www.php.net/rawurlencode"><span style="color: #990000;">rawurlencode</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$oauth_access_token_secret</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$oauth_signature</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/base64_encode"><span style="color: #990000;">base64_encode</span></a><span style="color: #009900;">&#40;</span><a href="http://www.php.net/hash_hmac"><span style="color: #990000;">hash_hmac</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'sha1'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$base_info</span><span style="color: #339933;">,</span> <span style="color: #000088;">$composite_key</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$oauth</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'oauth_signature'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$oauth_signature</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>To make the request we have to setup a HTTP header and a few other options to pass to cURL. The helper method does the hard work of creating the correct header format with the OAuth settings and then finally, it&#8217;s time to make the request with cURL.</p>
<div class="codecolorer-container php twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$header</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>buildAuthorizationHeader<span style="color: #009900;">&#40;</span><span style="color: #000088;">$oauth</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Expect:'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$options</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span> CURLOPT_HTTPHEADER <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$header</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CURLOPT_HEADER <span style="color: #339933;">=&gt;</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CURLOPT_URL <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$url</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CURLOPT_RETURNTRANSFER <span style="color: #339933;">=&gt;</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CURLOPT_SSL_VERIFYPEER <span style="color: #339933;">=&gt;</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$feed</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/curl_init"><span style="color: #990000;">curl_init</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<a href="http://www.php.net/curl_setopt_array"><span style="color: #990000;">curl_setopt_array</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$feed</span><span style="color: #339933;">,</span> <span style="color: #000088;">$options</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$json</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/curl_exec"><span style="color: #990000;">curl_exec</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$feed</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<a href="http://www.php.net/curl_close"><span style="color: #990000;">curl_close</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$feed</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$twitter_data</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/json_decode"><span style="color: #990000;">json_decode</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$json</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>This works really well if you just want to fetch data from your own account &#8211; last statuses, mentions, favourites or your stats like in the example above. It should also work with any OAuth based API which supports HMAC-SHA1 signatures (Google, LinkedIn, Vimeo, the list goes on). If the API you&#8217;re working with doesn&#8217;t have a neat tool for getting an access token for your account like Twitter does, you can always do the first few authentication steps by using an <a href="http://term.ie/oauth/example/client.php" title="OAuth Online Client" target="_blank">online client</a>. Fill out your details and it will handle the first few exchanges, and once you have your access token you&#8217;re free to make requests using just the 50 lines of code above, instead of requiring an OAuth library.</p>
<p><a href="http://erisds.co.uk/wp-content/uploads/2011/10/twitter-oauth.zip" onClick="_gaq.push(['_trackPageview', '/downloads/twitter-oauth-001']);" title="Download the full Twitter OAuth Code Example">Download the full Twitter OAuth Code Example</a></p>
<p>Big Kudos to Jason Graves (aka. GodLikeMouse) for putting his excellent <a href="http://www.godlikemouse.com/2011/04/01/twitter-oauth-php-tutorial/" title="Twitter OAuth PHP Tutorial" target="_blank">PHP OAuth tutorial</a> on the web.</p>
<div class='yarpp-related-rss'>
<p>Related posts:<ol>
<li><a href='http://erisds.co.uk/internet/5-top-resources-for-twitter-success' rel='bookmark' title='5 Top Resources for Twitter Success'>5 Top Resources for Twitter Success</a><small>I've been experimenting with developing my Twitter account for the...</small></li>
<li><a href='http://erisds.co.uk/internet/digging-twitter' rel='bookmark' title='Digging Twitter'>Digging Twitter</a><small>Last night this article hit the front page of Digg....</small></li>
<li><a href='http://erisds.co.uk/awesome/awesome-1-real-time-radiation-levels-twitter-heartbeat-bbc-fail' rel='bookmark' title='Awesome: 1. Real-time radiation levels, Twitter heartbeat &amp; BBC #fail'>Awesome: 1. Real-time radiation levels, Twitter heartbeat &#038; BBC #fail</a><small>An introduction This is the first in a new series...</small></li>
</ol></p>
</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/erisds?a=_D1h9dNSiAg:bt7EOr74Ryg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/erisds?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=_D1h9dNSiAg:bt7EOr74Ryg:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/erisds?i=_D1h9dNSiAg:bt7EOr74Ryg:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=_D1h9dNSiAg:bt7EOr74Ryg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/erisds?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=_D1h9dNSiAg:bt7EOr74Ryg:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/erisds?i=_D1h9dNSiAg:bt7EOr74Ryg:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=_D1h9dNSiAg:bt7EOr74Ryg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/erisds?i=_D1h9dNSiAg:bt7EOr74Ryg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=_D1h9dNSiAg:bt7EOr74Ryg:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/erisds?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://erisds.co.uk/code/twitter-oauth-simple-curl-requests-for-your-own-data/feed</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
		<item>
		<title>An assortment of useful linux commands</title>
		<link>http://erisds.co.uk/technology/an-assortment-of-useful-linux-commands</link>
		<comments>http://erisds.co.uk/technology/an-assortment-of-useful-linux-commands#comments</comments>
		<pubDate>Mon, 03 Oct 2011 17:35:13 +0000</pubDate>
		<dc:creator>ErisDS</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[development environment]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://erisds.co.uk/?p=2213</guid>
		<description><![CDATA[This is a totally random post full of linux commands that I find useful but am always forgetting. I use linux at work and also on a command-line-only VM at home. I&#8217;m always battling with it, largely because I&#8217;m a noob. Usually after a couple of hours of playing with it I have a head [...]<div class='yarpp-related-rss yarpp-related-none'>
</div>
]]></description>
				<content:encoded><![CDATA[<p>This is a totally random post full of linux commands that I find useful but am always forgetting. I use linux at work and also on a command-line-only VM at home. I&#8217;m always battling with it, largely because I&#8217;m a noob. Usually after a couple of hours of playing with it I have a head full of really useful commands. However the next time I run into a problem I won&#8217;t remember any of them.</p>
<p>To prevent that happening again, this is a brain dump of all the commands I really, really should remember.</p>
<h2>Installing stuff</h2>
<p>You want to install something:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get update</span><br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get install</span> <span style="color: #666666; font-style: italic;">####</span></div></td></tr></tbody></table></div>
<p>Keeping things up-to-date:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get update</span><br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get upgrade</span></div></td></tr></tbody></table></div>
<p>It seems that a lot of the time aptitude is actually better at this stuff?</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">aptitude</span> full-upgrade</div></td></tr></tbody></table></div>
<p>Cleaning up:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get autoclean</span><br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get clean</span></div></td></tr></tbody></table></div>
<p>(or use aptitude)</p>
<p>Something won&#8217;t install because you&#8217;ve not got access to it (it&#8217;s not available for your distro etc). You probably need to find a URL for a &#8220;PPA&#8221; from somewhere like <a href="http://launchpad.net" title="launchpad.net" target="_blank">http://launchpad.net</a> (Try Googling &#8220;project-name ppa site:launchpad.net&#8221; &#8211; thanks <a href="http://twitter.com/#!/Keithamus" title="Keithamus on Twitter" target="_blank">@Keithamus</a>) to add to:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">vim</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>apt<span style="color: #000000; font-weight: bold;">/</span>sources.list</div></td></tr></tbody></table></div>
<p>These usually require keys which are provided with the URL. To add the key:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-key adv</span> <span style="color: #660033;">--keyserver</span> keyserver.ubuntu.com <span style="color: #660033;">--recv-keys</span> <span style="color: #666666; font-style: italic;">###key###</span></div></td></tr></tbody></table></div>
<p>There&#8217;s loads of useful information about this here: <a href="https://launchpad.net/+help/soyuz/ppa-sources-list.html" title="PPA Sources Help" target="_blank">https://launchpad.net/+help/soyuz/ppa-sources-list.html</a></p>
<h3>Where am I / it ?</h3>
<p>What version of ubuntu am I on?</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>issue</div></td></tr></tbody></table></div>
<p>Where is something installed (e.g. mysql)</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">which</span> mysql</div></td></tr></tbody></table></div>
<p>Where are the files located?</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">locate</span> mysql</div></td></tr></tbody></table></div>
<p>You probably want to pipe that into less</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">locate</span> mysql <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">less</span></div></td></tr></tbody></table></div>
<p>To find a file with a specific file name the syntax is:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">find</span> PATH <span style="color: #660033;">-name</span> <span style="color: #ff0000;">'FILENAME'</span></div></td></tr></tbody></table></div>
<p>An example might be:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">find</span> <span style="color: #000000; font-weight: bold;">/</span> <span style="color: #660033;">-name</span> <span style="color: #ff0000;">'myfile.txt'</span></div></td></tr></tbody></table></div>
<p>To find text within a file the syntax is:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #660033;">-r</span> <span style="color: #ff0000;">'SEARCH'</span> PATH</div></td></tr></tbody></table></div>
<p>An example might be</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #660033;">-r</span> <span style="color: #ff0000;">'Hello World'</span> <span style="color: #000000; font-weight: bold;">/</span></div></td></tr></tbody></table></div>
<p>I always forget the -r to make it recursive and wonder why it doesn&#8217;t work.</p>
<h3>Samba</h3>
<p>Samba broke? Go Windows stylee &amp; restart it:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>samba restart</div></td></tr></tbody></table></div>
<p>Still broke? Get a more useful error message from Windows by going into the command prompt and typing</p>
<div class="codecolorer-container dos twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="dos codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">net use m: \\ip-address\service</div></td></tr></tbody></table></div>
<p>(Yes OK this is a Windows command not a linux one&#8230;)</p>
<p>Perhaps it doesn&#8217;t recognise the username/password combo:</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> smbpasswd –a username</div></td></tr></tbody></table></div>
<p>(and enter a new password when prompted)</p>
<p>Still broke? You might need to do some reconfiguring in the config file. Remember to check that everything has the access privileges it needs</p>
<div class="codecolorer-container bash twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>samba<span style="color: #000000; font-weight: bold;">/</span>smb.conf</div></td></tr></tbody></table></div>
<h3>Noob</h3>
<p>Yep, I are one! Like a linux redneck. I use a dash of trial and error mixed with a pinch of brute force, but normally I win in the end :D Hope someone else finds these useful. Also, yes I pretty much sudo everything. Sudo make me a sammich and all that jazz.<br />
See something really bad here? Please enlighten me, but be gentle!</p>
<div class='yarpp-related-rss yarpp-related-none'>
</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/erisds?a=LJu1bbB-RW0:GfVYBD0aoak:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/erisds?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=LJu1bbB-RW0:GfVYBD0aoak:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/erisds?i=LJu1bbB-RW0:GfVYBD0aoak:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=LJu1bbB-RW0:GfVYBD0aoak:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/erisds?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=LJu1bbB-RW0:GfVYBD0aoak:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/erisds?i=LJu1bbB-RW0:GfVYBD0aoak:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=LJu1bbB-RW0:GfVYBD0aoak:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/erisds?i=LJu1bbB-RW0:GfVYBD0aoak:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=LJu1bbB-RW0:GfVYBD0aoak:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/erisds?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://erisds.co.uk/technology/an-assortment-of-useful-linux-commands/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress: Migrate! Updated</title>
		<link>http://erisds.co.uk/wordpress/wordpress-migrate-updated</link>
		<comments>http://erisds.co.uk/wordpress/wordpress-migrate-updated#comments</comments>
		<pubDate>Fri, 23 Sep 2011 06:47:20 +0000</pubDate>
		<dc:creator>ErisDS</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[migrate]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://erisds.co.uk/?p=2197</guid>
		<description><![CDATA[A new version of Migrate! is now available to download from Github. What does this fix? A few people have reported having problems using the Migrate! script with their local setups as it constantly shows an error message saying &#8220;Your current URL is not a valid URL&#8221; much like this: Migrate! Was originally very strict [...]<div class='yarpp-related-rss'>

Related posts:<ol>
<li><a href='http://erisds.co.uk/wordpress/migrate-announcement' rel='bookmark' title='WordPress: Migrate! Easy WordPress Site Migration'>WordPress: Migrate! Easy WordPress Site Migration</a><small>If you work with multiple environments (development, staging, production etc)...</small></li>
<li><a href='http://erisds.co.uk/wordpress/upgrading-old-wordpress-installs-not-as-scary-as-you-think' rel='bookmark' title='Upgrading old WordPress installs &#8211; not as scary as you think!'>Upgrading old WordPress installs &#8211; not as scary as you think!</a><small>Earlier this week I received an email requesting some help...</small></li>
<li><a href='http://erisds.co.uk/wordpress/spotlight-wordpress-pods-plugin' rel='bookmark' title='Spotlight: WordPress Pods Plugin'>Spotlight: WordPress Pods Plugin</a><small>Have you ever needed to build a website which fit...</small></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p>A new version of <strong>Migrate!</strong> is now available <a href="https://github.com/ErisDS/Migrate/zipball/master" onClick="_gaq.push(['_trackPageview', '/downloads/migrate_github_zip_002']);" title="Download from GitHub">to download from Github</a>.</p>
<h2>What does this fix?</h2>
<p>A few people have reported having problems using the Migrate! script with their local setups as it constantly shows an error message saying &#8220;Your current URL is not a valid URL&#8221; much like this:</p>
<p><img src="http://erisds.co.uk/wp-content/uploads/2011/09/MigrateError-600x202.jpg" alt="Your current URL is not a valid URL" title="Migrate Invalid URL Error" width="600" height="202" class="aligncenter size-large wp-image-2199" /></p>
<p>Migrate! Was originally very strict about what constituted a valid URL and was expecting something with a TLD, which of course http://localhost doesn&#8217;t have, thus making Migrate! rather unhelpful in some local environments.</p>
<p>This issue has has been resolved in the latest version, which can as always be obtained from Github: <a href="https://github.com/ErisDS/Migrate/zipball/master" onClick="_gaq.push(['_trackPageview', '/downloads/migrate_github_zip_003']);" title="Download from GitHub">Download Migrate!</a></p>
<div class='yarpp-related-rss'>
<p>Related posts:<ol>
<li><a href='http://erisds.co.uk/wordpress/migrate-announcement' rel='bookmark' title='WordPress: Migrate! Easy WordPress Site Migration'>WordPress: Migrate! Easy WordPress Site Migration</a><small>If you work with multiple environments (development, staging, production etc)...</small></li>
<li><a href='http://erisds.co.uk/wordpress/upgrading-old-wordpress-installs-not-as-scary-as-you-think' rel='bookmark' title='Upgrading old WordPress installs &#8211; not as scary as you think!'>Upgrading old WordPress installs &#8211; not as scary as you think!</a><small>Earlier this week I received an email requesting some help...</small></li>
<li><a href='http://erisds.co.uk/wordpress/spotlight-wordpress-pods-plugin' rel='bookmark' title='Spotlight: WordPress Pods Plugin'>Spotlight: WordPress Pods Plugin</a><small>Have you ever needed to build a website which fit...</small></li>
</ol></p>
</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/erisds?a=47-zSrpApjs:di4mZ1rN9Q0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/erisds?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=47-zSrpApjs:di4mZ1rN9Q0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/erisds?i=47-zSrpApjs:di4mZ1rN9Q0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=47-zSrpApjs:di4mZ1rN9Q0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/erisds?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=47-zSrpApjs:di4mZ1rN9Q0:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/erisds?i=47-zSrpApjs:di4mZ1rN9Q0:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=47-zSrpApjs:di4mZ1rN9Q0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/erisds?i=47-zSrpApjs:di4mZ1rN9Q0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=47-zSrpApjs:di4mZ1rN9Q0:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/erisds?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://erisds.co.uk/wordpress/wordpress-migrate-updated/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Time flies when you’re having fun</title>
		<link>http://erisds.co.uk/general/time-flies-when-youre-having-fun</link>
		<comments>http://erisds.co.uk/general/time-flies-when-youre-having-fun#comments</comments>
		<pubDate>Tue, 13 Sep 2011 20:48:33 +0000</pubDate>
		<dc:creator>ErisDS</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[moo.com]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://erisds.co.uk/?p=2161</guid>
		<description><![CDATA[<a href="http://uk.moo.com" target="_blank" title="MOO.COM Custom Business Cards"><img class="alignleft size-thumbnail wp-image-2171" title="MOO.COM Custom Business Cards" src="http://erisds.co.uk/wp-content/uploads/2011/09/moo-logo-pink-fullsize-150x150.png" alt="MOO.COM Custom Business Cards" width="150" height="150" /></a>There is some mystery time warp device which absorbs time when you're having fun. There is also a nasty tunnel monster which lives on Britain's railways and gobbles up all your freetime whilst you're travelling to and from work. At least, it does when you commute from Northampton to London every day.<div class='yarpp-related-rss'>

Related posts:<ol>
<li><a href='http://erisds.co.uk/business/future-of-web-design-my-thoughts-two-months-on' rel='bookmark' title='Future of Web Design London 2010: My thoughts two months on&#8230;'>Future of Web Design London 2010: My thoughts two months on&#8230;</a><small>Technology conferences are fun, an enormous amount of extremely geeky...</small></li>
<li><a href='http://erisds.co.uk/magento/snippet-magento-using-or-and-left-join-in-addattributetofilter' rel='bookmark' title='Snippet: Magento &#8211; Using OR and LEFT JOIN in addAttributeToFilter'>Snippet: Magento &#8211; Using OR and LEFT JOIN in addAttributeToFilter</a><small>I'm still pretty new to Magento, and am learning more...</small></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p><a href="http://uk.moo.com" target="_blank" title="MOO.COM Custom Business Cards"><img class="alignleft size-thumbnail wp-image-2171" title="MOO.COM Custom Business Cards" src="http://erisds.co.uk/wp-content/uploads/2011/09/moo-logo-pink-fullsize-150x150.png" alt="MOO.COM Custom Business Cards" width="150" height="150" /></a>There is some mystery time warp device which absorbs time when you&#8217;re having fun. There is also a nasty tunnel monster which lives on Britain&#8217;s railways and gobbles up all your freetime whilst you&#8217;re travelling to and from work. At least, it does when you commute from Northampton to London every day.</p>
<p>At the end of last year I resigned from my job and took 5 weeks of holiday to enjoy Christmas, New Year, get married and take a 2 week honeymoon in Cuba. When I returned I started a new job working as a developer on <a href="http://uk.moo.com/" target="_blank" title="MOO.COM Custom Business Cards">MOO.COM</a>&#8216;s almighty dev team. Since then I&#8217;ve been enjoying working in the heart of London&#8217;s tech &amp; startup scene sharing an office with the likes of <a href="http://www.tweetdeck.com/" title="TweetDeck" target="_blank">Tweetdeck</a>, <a href="http://soundcloud.com/" title="SoundCloud" target="_blank">SoundCloud</a> &amp; <a href="http://lanyrd.com/" title="Lanyrd" target="_blank">Lanyrd</a> and working just down the road from Last.fm, TechHub &amp; Pachube.</p>
<p>Working at MOO has been a breath of fresh air. The <a href="http://en.wikipedia.org/wiki/Agile_software_development" title="Agile Development - Wikipedia" target="_blank">agile development methodology</a> employed at MOO suits me well and I quickly got settled in and stuck into some really interesting projects, such as working on MOO&#8217;s <a href="http://www.moo.com/blog/2011/06/27/its-true-weve-got-new-sticky-products-at-moo/" title="MOO Round &#038; Label Stickers" target="_blank">new sticker products</a> [obligatory plug ;)] an enormous project, which amusingly started around the same time as this blog stopped.</p>
<p>The challenge of having to learn, code &amp; deliver actionscript components inside a 2 week <a href="http://en.wikipedia.org/wiki/Sprint_(scrum)" title="Sprint (Scrum) - Wikipedia" target="_blank">sprint</a> reminded me of why I love bring a web developer. I&#8217;ve also discovered that I have a real strength for frontend development &amp; jQuery has become my new favourite tool. My unusual passion for analytics &amp; data, apparently something &#8220;normal developers&#8221; are not a fan of, also reared it&#8217;s head and has resulted in me getting my hands dirty with some serious business intelligence SQL.</p>
<p>So far it&#8217;s been a wild ride. It&#8217;s been a super positive experience adapting from working alone on projects to working in one of four teams of developers and one of they key things <del datetime="2011-09-13T20:40:28+00:00">I&#8217;ve learned</del> <ins datetime="2011-09-13T20:40:28+00:00">I&#8217;m learning</ins> is how to just get stuff done. Code (well) now, refactor (better) later and with the hindsight of having already gotten it working. I&#8217;ve become so much more confident &amp; my code output both in and outside of work is improving.</p>
<p>Now all I have to do is learn to apply those productivity skills to other aspects of my life such as blogging, podcasting, oh&#8230; and housework.</p>
<div class='yarpp-related-rss'>
<p>Related posts:<ol>
<li><a href='http://erisds.co.uk/business/future-of-web-design-my-thoughts-two-months-on' rel='bookmark' title='Future of Web Design London 2010: My thoughts two months on&#8230;'>Future of Web Design London 2010: My thoughts two months on&#8230;</a><small>Technology conferences are fun, an enormous amount of extremely geeky...</small></li>
<li><a href='http://erisds.co.uk/magento/snippet-magento-using-or-and-left-join-in-addattributetofilter' rel='bookmark' title='Snippet: Magento &#8211; Using OR and LEFT JOIN in addAttributeToFilter'>Snippet: Magento &#8211; Using OR and LEFT JOIN in addAttributeToFilter</a><small>I'm still pretty new to Magento, and am learning more...</small></li>
</ol></p>
</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/erisds?a=gWy50x3L63U:opdw4Ob0mRk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/erisds?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=gWy50x3L63U:opdw4Ob0mRk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/erisds?i=gWy50x3L63U:opdw4Ob0mRk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=gWy50x3L63U:opdw4Ob0mRk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/erisds?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=gWy50x3L63U:opdw4Ob0mRk:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/erisds?i=gWy50x3L63U:opdw4Ob0mRk:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=gWy50x3L63U:opdw4Ob0mRk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/erisds?i=gWy50x3L63U:opdw4Ob0mRk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=gWy50x3L63U:opdw4Ob0mRk:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/erisds?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://erisds.co.uk/general/time-flies-when-youre-having-fun/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
