<?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>Sat, 07 Jan 2012 10:29:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</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>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 :)]]></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="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.


Related posts:<ol><li><a href='http://erisds.co.uk/personal/sleep' rel='bookmark' title='Permanent Link: Sleep'>Sleep</a><small> ** Disclaimer *** I am well aware that WikiPedia...</small></li>
</ol>]]></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>


<p>Related posts:<ol><li><a href='http://erisds.co.uk/personal/sleep' rel='bookmark' title='Permanent Link: Sleep'>Sleep</a><small> ** Disclaimer *** I am well aware that WikiPedia...</small></li>
</ol></p><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. 


Related posts:<ol><li><a href='http://erisds.co.uk/personal/hands-up-if-youre-on-a-january-diet' rel='bookmark' title='Permanent Link: 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>]]></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>


<p>Related posts:<ol><li><a href='http://erisds.co.uk/personal/hands-up-if-youre-on-a-january-diet' rel='bookmark' title='Permanent Link: 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 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.


Related posts:<ol><li><a href='http://erisds.co.uk/symfony/symfony-what-is-it-good-for' rel='bookmark' title='Permanent Link: 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='Permanent Link: 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/symfony/snippet-symfony-forms-setting-the-form-formatter' rel='bookmark' title='Permanent Link: Snippet: Symfony Forms &#8211; Setting the Form Formatter'>Snippet: Symfony Forms &#8211; Setting the Form Formatter</a><small>By default Symfony displays forms in tables, with each new...</small></li>
</ol>]]></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>


<p>Related posts:<ol><li><a href='http://erisds.co.uk/symfony/symfony-what-is-it-good-for' rel='bookmark' title='Permanent Link: 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='Permanent Link: 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/symfony/snippet-symfony-forms-setting-the-form-formatter' rel='bookmark' title='Permanent Link: Snippet: Symfony Forms &#8211; Setting the Form Formatter'>Snippet: Symfony Forms &#8211; Setting the Form Formatter</a><small>By default Symfony displays forms in tables, with each new...</small></li>
</ol></p><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>0</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[featured]]></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.


Related posts:<ol><li><a href='http://erisds.co.uk/internet/5-top-resources-for-twitter-success' rel='bookmark' title='Permanent Link: 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='Permanent Link: 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='Permanent Link: Awesome: 1. Real-time radiation levels, Twitter heartbeat &#038; 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>]]></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>


<p>Related posts:<ol><li><a href='http://erisds.co.uk/internet/5-top-resources-for-twitter-success' rel='bookmark' title='Permanent Link: 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='Permanent Link: 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='Permanent Link: Awesome: 1. Real-time radiation levels, Twitter heartbeat &#038; 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 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>11</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 [...]]]></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</span> update<br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">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</span> update<br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> upgrade</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</span> autoclean<br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> clean</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</span> adv <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="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 [...]


Related posts:<ol><li><a href='http://erisds.co.uk/wordpress/migrate-announcement' rel='bookmark' title='Permanent Link: 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='Permanent Link: 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='Permanent Link: Spotlight: WordPress Pods Plugin'>Spotlight: WordPress Pods Plugin</a><small>Have you ever needed to build a website which fit...</small></li>
</ol>]]></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>


<p>Related posts:<ol><li><a href='http://erisds.co.uk/wordpress/migrate-announcement' rel='bookmark' title='Permanent Link: 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='Permanent Link: 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='Permanent Link: 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 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.


Related posts:<ol><li><a href='http://erisds.co.uk/symfony/symfony-what-is-it-good-for' rel='bookmark' title='Permanent Link: 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/business/future-of-web-design-my-thoughts-two-months-on' rel='bookmark' title='Permanent Link: 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/symfony/symfony-new-static-text-management-plugin' rel='bookmark' title='Permanent Link: Symfony: New Static Text Management Plugin'>Symfony: New Static Text Management Plugin</a><small>Generally, when I find something interesting I use twitter &...</small></li>
</ol>]]></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>


<p>Related posts:<ol><li><a href='http://erisds.co.uk/symfony/symfony-what-is-it-good-for' rel='bookmark' title='Permanent Link: 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/business/future-of-web-design-my-thoughts-two-months-on' rel='bookmark' title='Permanent Link: 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/symfony/symfony-new-static-text-management-plugin' rel='bookmark' title='Permanent Link: Symfony: New Static Text Management Plugin'>Symfony: New Static Text Management Plugin</a><small>Generally, when I find something interesting I use twitter &...</small></li>
</ol></p><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>
		<item>
		<title>Another dot com boom…</title>
		<link>http://erisds.co.uk/business/another-dot-com-boom</link>
		<comments>http://erisds.co.uk/business/another-dot-com-boom#comments</comments>
		<pubDate>Thu, 07 Apr 2011 21:45:44 +0000</pubDate>
		<dc:creator>ErisDS</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[featured]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://erisds.co.uk/?p=2098</guid>
		<description><![CDATA[<img src="http://erisds.co.uk/wp-content/uploads/2011/04/moneybubblewrap-e1302076013871-150x150.jpg" alt="Technology Market Bubble" title="moneybubblewrap" width="150" height="150" class="alignleft size-thumbnail wp-image-2103" />

<strong>Despite the current economic turmoil, many people are warning that the <a href="http://techmeme.com/search/query?q=bubble&#38;wm=false" title="Technology Bubble" target="_blank">technology market is falling foul of another bubble</a>.</strong> I've been following the discussion with fascination, and last week <a title="A technology bubble? History says no." href="http://thenextweb.com/industry/2011/03/28/a-technology-bubble-history-says-no/" target="_blank">this article from TNW</a> debunking the theory really caught my eye. This is not another technology bubble, this is <strong>natural economic growth</strong> resulting from the real world adoption of new technologies that is (finally) starting to happen.


Related posts:<ol><li><a href='http://erisds.co.uk/business/future-of-web-design-my-thoughts-two-months-on' rel='bookmark' title='Permanent Link: 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/internet/the-explicitweb-podcast' rel='bookmark' title='Permanent Link: The ExplicitWeb Podcast'>The ExplicitWeb Podcast</a><small>Last week marked the launch of the 7th ExplicitWeb podcast,...</small></li>
<li><a href='http://erisds.co.uk/business/how-to-solve-problematic-client-relationships-back-to-basics' rel='bookmark' title='Permanent Link: How to Solve Problematic Client Relationships: Back to Basics'>How to Solve Problematic Client Relationships: Back to Basics</a><small>Please Note: This is the companion blog post to a...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-large wp-image-2103" title="moneybubblewrap" src="http://erisds.co.uk/wp-content/uploads/2011/04/moneybubblewrap-e1302076013871-600x215.jpg" alt="Technology Market Bubble" width="600" height="215" /></p>
<p><strong>Despite the current economic turmoil, many people are warning that the <a href="http://techmeme.com/search/query?q=bubble&amp;wm=false" title="Technology Bubble" target="_blank">technology market is falling foul of another bubble</a>.</strong> I&#8217;ve been following the discussion with fascination, and last week <a title="A technology bubble? History says no." href="http://thenextweb.com/industry/2011/03/28/a-technology-bubble-history-says-no/" target="_blank">this article from TNW</a> debunking the theory really caught my eye. This is not another technology bubble, this is <strong>natural economic growth</strong> resulting from the real world adoption of new technologies that is (finally) starting to occur.</p>
<p>As e-commerce took off in the mid-to-late 90s the tech industry got a glimpse of the future: <strong>everyone and everything would be online, <em>all the time</em></strong>. Suddenly the potential value of Internet real estate became clear and investors all happily jumped on the bandwagon. What no-one seemed to grasp at that time (and still don&#8217;t) is that the rush of early adopters was not an indicator of how quickly new online technology was going to be adopted by the mainstream (where the real money is).</p>
<h3>A classic case of supply and demand going <em>horribly</em> wrong.</h3>
<p>Companies and VCs everywhere were investing unbelievable figures to get ready to supply what they expected would be enormous demand for their services, but the huge rush of demand never came. Even today, 10 years later, there are only a few online services which really, truly permeate the average day of an average person, <a title="Facebook Usage Statistics" href="http://www.facebook.com/press/info.php?statistics" target="_blank">Facebook being the prime example</a>. Twitter, the service that I love and use the most, is something that the majority of people have heard of, and maybe even have an account on, <a href="http://www.businessinsider.com/chart-of-the-day-how-many-users-does-twitter-really-have-2011-3/" title="How many users does twitter really have" target="_blank">but they aren&#8217;t using it yet</a>.</p>
<p>The average person is only just starting to use Facebook (sometimes), shop online (<a href="http://econsultancy.com/uk/blog/7026-christmas-e-commerce-stats-round-up-2" title="Christmas e-commerce stats round up" target="_blank">mostly at Christmas</a>), and use Google to find stuff out (when they remember Google exists). However, as some parts of the Internet are finally starting to saturate the mainstream of the market, we are beginning to get real world data indicating the <a href="http://mashable.com/2011/01/17/facebooks-ad-revenue-hit-1-86b-for-2010/" title="Facebook ad revenue">true value</a> of potential <a href="http://mashable.com/2011/01/24/twitter-revenue-150-million/" title="twitter revenue" target="_blank">revenue streams</a> that can be derived online. This means that investors can part with their money with confidence again.</p>
<h3>20 years of the FTSE100</h3>
<div id="attachment_2115" class="wp-caption aligncenter" style="width: 610px"><img class="size-large wp-image-2115" title="graph" src="http://erisds.co.uk/wp-content/uploads/2011/04/graph-600x278.jpg" alt="" width="600" height="278" /><p class="wp-caption-text">FTSE100 Month Close Figures 1990-2011</p></div>
<p>The last 20 years of the FTSE100 tell an interesting tale. Whilst the markets are climbing back rapidly from the impending-recession related crash in 2009, there&#8217;s no sign that the markets are significantly strong at the moment. It appears that we&#8217;re just about where we should be.</p>
<p>Someone somewhere is always predicting <a href="http://john.onolan.org/the-mobile-web-is-not-the-next-big-thing/" target="_blank" title="The mobile web is not the next big thing">the next big thing</a>, or conducting a PR campaign about how the Internet/e-commerce/the mobile web has finally arrived. I&#8217;m not saying the Internet has finally arrived, or that this is the year the mobile web goes truly mainstream, or anything like that. Slowly but surely Internet usage is increasing as well as adoption, and the average user is more than just connected, they&#8217;re becoming involved. As this continues I believe we will see increased confidence in the markets, massive valuations and buy-outs of tech companies will continue, and perhaps finally, 10 years on, this is sustainable.</p>
<p>Maybe if things had been different, we would have seen steady (but increasing) growth starting in the mid 90s and still ongoing today. Instead everyone jumped aboard a little too quickly and the whole thing went under. That&#8217;s why I don&#8217;t believe the current markets and valuations indicate another bubble&#8230; I think we&#8217;re just getting back on course.</p>


<p>Related posts:<ol><li><a href='http://erisds.co.uk/business/future-of-web-design-my-thoughts-two-months-on' rel='bookmark' title='Permanent Link: 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/internet/the-explicitweb-podcast' rel='bookmark' title='Permanent Link: The ExplicitWeb Podcast'>The ExplicitWeb Podcast</a><small>Last week marked the launch of the 7th ExplicitWeb podcast,...</small></li>
<li><a href='http://erisds.co.uk/business/how-to-solve-problematic-client-relationships-back-to-basics' rel='bookmark' title='Permanent Link: How to Solve Problematic Client Relationships: Back to Basics'>How to Solve Problematic Client Relationships: Back to Basics</a><small>Please Note: This is the companion blog post to a...</small></li>
</ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/erisds?a=duiQHxHy3vU:kuqEl1goP_s:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/erisds?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=duiQHxHy3vU:kuqEl1goP_s:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/erisds?i=duiQHxHy3vU:kuqEl1goP_s:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=duiQHxHy3vU:kuqEl1goP_s:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/erisds?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=duiQHxHy3vU:kuqEl1goP_s:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/erisds?i=duiQHxHy3vU:kuqEl1goP_s:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=duiQHxHy3vU:kuqEl1goP_s:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/erisds?i=duiQHxHy3vU:kuqEl1goP_s:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=duiQHxHy3vU:kuqEl1goP_s:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/erisds?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://erisds.co.uk/business/another-dot-com-boom/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Awesome: 1. Real-time radiation levels, Twitter heartbeat &amp; BBC #fail</title>
		<link>http://erisds.co.uk/awesome/awesome-1-real-time-radiation-levels-twitter-heartbeat-bbc-fail</link>
		<comments>http://erisds.co.uk/awesome/awesome-1-real-time-radiation-levels-twitter-heartbeat-bbc-fail#comments</comments>
		<pubDate>Fri, 25 Mar 2011 23:00:10 +0000</pubDate>
		<dc:creator>ErisDS</dc:creator>
				<category><![CDATA[Awesome]]></category>
		<category><![CDATA[crowdsourcing]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://erisds.co.uk/?p=2048</guid>
		<description><![CDATA[An introduction This is the first in a new series of blog posts I will be writing about the cool things I discover in my travels around the web. Twitter provides a wealth of wonder every day, RSS provides regular treats &#38; the cool people I work &#38; play with are always digging up treasures. [...]


Related posts:<ol><li><a href='http://erisds.co.uk/internet/digging-twitter' rel='bookmark' title='Permanent Link: 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/code/twitter-oauth-simple-curl-requests-for-your-own-data' rel='bookmark' title='Permanent Link: Twitter OAuth: Simple cURL requests for your own data'>Twitter OAuth: Simple cURL requests for your own data</a><small>Having to include an entire PHP OAuth library every time...</small></li>
<li><a href='http://erisds.co.uk/internet/5-top-resources-for-twitter-success' rel='bookmark' title='Permanent Link: 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>
</ol>]]></description>
			<content:encoded><![CDATA[<h2>An introduction</h2>
<p><strong>This is the first in a new series of blog posts I will be writing about the cool things I discover in my travels around the web. </strong></p>
<p>Twitter provides a wealth of wonder every day, RSS provides regular treats &amp; the cool people I work &amp; play with are always digging up treasures. I often forget about the amazing things I discover on the Internet &#8211; they get lost in the endless stream of starred articles, favourited tweets &amp; unread emails. So I thought I&#8217;d experiment with sharing this info in short blog posts with little or no commentary.</p>
<p>Each &#8220;Awesome&#8221; blogpost will contain one or more items I&#8217;ve recently discovered. I&#8217;m not going to set any expectations for frequency, or even the currency of the information, I guess it all depends on how Awesome the internet is being!</p>
<p>So without further ado&#8230;</p>
<h2>Pachube &#8211; Real-Time Radiation Monitoring in Japan</h2>
<p>Given the recent events in Japan, the fear factor, public health risk and disinformation from the government, this to me is the perfect example of Internet Awesome. This clever use of the Pachube real-time data monitoring service is crowdsourcing at it&#8217;s best.<br />
<a href="http://blog.pachube.com/2011/03/real-time-radiation-monitoring-in-japan.html"  target="_blank"><img src="http://erisds.co.uk/wp-content/uploads/2011/03/pachube1-600x466.png" alt="" title="pachube" width="600" height="466" class="alignnone size-large wp-image-2086" /></a><br />
Also, it turns out the Pachube offices are just a few doors down from the MOO offices in London where I work *waves*.</p>
<h2>Does Twitter have a Heartbeat?</h2>
<p>Some very clever research on twitter sentiment analysis being carried out by my very clever friend <a href="http://rawkes.com" target="_blank">Rob Hawkes</a> has turned up this intriguing graph. There&#8217;s no proof it&#8217;s consistent and not caused by a bug as yet, but it caught my eye nonetheless. If it turns out to be relatively consistent, I think it will end up being one of life&#8217;s little mysteries. The answer is 42 I guess!<br />
<a href="http://forrst.com/posts/Twitter_may_have_a_sentiment_heartbeat-tEI"  target="_blank"><img class="aligncenter size-large wp-image-2078" title="Twitter Sentiment Heartbeat" src="http://erisds.co.uk/wp-content/uploads/2011/03/twittersentiment.png" alt="" width="512" height="296" /></a></p>
<h2>BBC Fail &#8211; WiFi in Speed Shocker</h2>
<p>Seems to me that whoever wrote this article needs to check up on the <a href="http://wireless.wikia.com/wiki/Wi-Fi#The_Three_Rules_of_Wireless_Networking" target="_blank">Three Rules of Wireless Networking</a>.<br />
<a href="http://www.bbc.co.uk/news/technology-12688839"  target="_blank"><img class="alignnone size-large wp-image-2074" title="bbcfail" src="http://erisds.co.uk/wp-content/uploads/2011/03/bbcfail1-600x494.png" alt="" width="600" height="494" /></a></p>
<p>Let me know what you think of these little treasures :)</p>


<p>Related posts:<ol><li><a href='http://erisds.co.uk/internet/digging-twitter' rel='bookmark' title='Permanent Link: 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/code/twitter-oauth-simple-curl-requests-for-your-own-data' rel='bookmark' title='Permanent Link: Twitter OAuth: Simple cURL requests for your own data'>Twitter OAuth: Simple cURL requests for your own data</a><small>Having to include an entire PHP OAuth library every time...</small></li>
<li><a href='http://erisds.co.uk/internet/5-top-resources-for-twitter-success' rel='bookmark' title='Permanent Link: 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>
</ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/erisds?a=nzRB8lBy-mA:VNqL0_4s-TI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/erisds?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=nzRB8lBy-mA:VNqL0_4s-TI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/erisds?i=nzRB8lBy-mA:VNqL0_4s-TI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=nzRB8lBy-mA:VNqL0_4s-TI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/erisds?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=nzRB8lBy-mA:VNqL0_4s-TI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/erisds?i=nzRB8lBy-mA:VNqL0_4s-TI:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=nzRB8lBy-mA:VNqL0_4s-TI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/erisds?i=nzRB8lBy-mA:VNqL0_4s-TI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/erisds?a=nzRB8lBy-mA:VNqL0_4s-TI:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/erisds?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://erisds.co.uk/awesome/awesome-1-real-time-radiation-levels-twitter-heartbeat-bbc-fail/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

