<?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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Richard Hart / Hates_</title>
	
	<link>http://www.ur-ban.com/blog</link>
	<description>Programming &amp; Life - ur-ban.com</description>
	<lastBuildDate>Sat, 18 Feb 2012 14:20:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Hates_" /><feedburner:info uri="hates_" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Using blocks in Ruby for lazy evaluation</title>
		<link>http://feedproxy.google.com/~r/Hates_/~3/42VRPMGLyM0/</link>
		<comments>http://www.ur-ban.com/blog/2012/02/18/using-blocks-in-ruby-for-lazy-evaluation/#comments</comments>
		<pubDate>Sat, 18 Feb 2012 13:16:21 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.ur-ban.com/blog/?p=2315</guid>
		<description><![CDATA[I&#8217;ve been working on a templating engine recently and had the need to substitute some variables on the page with the result of an slightly expensive remote API call. The first iteration was just a simple replace on the page: render_placeholder result, &#160; &#34;some_page_var&#34;, &#160; ApiWrapper.some_expensive_call def render_placeholder result, name, value &#160; result.gsub! name, value [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working on a templating engine recently and had the need to substitute some variables on the page with the result of an slightly expensive remote API call. The first iteration was just a simple replace on the page:</p>
<div class="codecolorer-container ruby vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">render_placeholder result, <br />
&nbsp; <span style="color:#996600;">&quot;some_page_var&quot;</span>, <br />
&nbsp; ApiWrapper.<span style="color:#9900CC;">some_expensive_call</span><br />
<br />
<span style="color:#9966CC; font-weight:bold;">def</span> render_placeholder result, name, value<br />
&nbsp; result.<span style="color:#CC0066; font-weight:bold;">gsub!</span> name, value<br />
<span style="color:#9966CC; font-weight:bold;">end</span></div></div>
<p>This &#8220;worked&#8221; but the problem is the call would be made even if the variable that needed replacing wasn&#8217;t on the page. The easy fix is to check it exists before making the substitution:</p>
<div class="codecolorer-container ruby vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">render_placeholder<span style="color:#006600; font-weight:bold;">&#40;</span>result, <br />
&nbsp; <span style="color:#996600;">&quot;some_page_var&quot;</span>, <br />
&nbsp; ApiWrapper.<span style="color:#9900CC;">some_expensive_call</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">if</span> has_placeholder?<span style="color:#006600; font-weight:bold;">&#40;</span>result, <span style="color:#996600;">&quot;some_page_var&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span><br />
<br />
<span style="color:#9966CC; font-weight:bold;">def</span> has_placeholder? result, name<br />
&nbsp; !!result<span style="color:#006600; font-weight:bold;">&#91;</span>name<span style="color:#006600; font-weight:bold;">&#93;</span><br />
<span style="color:#9966CC; font-weight:bold;">end</span><br />
<br />
<span style="color:#9966CC; font-weight:bold;">def</span> render_placeholder result, name, value<br />
&nbsp; result.<span style="color:#CC0066; font-weight:bold;">gsub!</span> name, value<br />
<span style="color:#9966CC; font-weight:bold;">end</span></div></div>
<p>While this works, once you have a load of results you want to replace there ends up being a lot of duplication, and it&#8217;s easy to check the wrong variable compared to what you want to replace. One way to solve it is by passing the api call as a block to the substitution method. This way we can tidy up the code:</p>
<div class="codecolorer-container ruby vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">render_placeholder<span style="color:#006600; font-weight:bold;">&#40;</span>result, <span style="color:#996600;">&quot;some_page_var&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> ApiWrapper.<span style="color:#9900CC;">some_expensive_call</span> <span style="color:#006600; font-weight:bold;">&#125;</span><br />
<br />
<span style="color:#9966CC; font-weight:bold;">def</span> has_placeholder? result, name<br />
&nbsp; !!result<span style="color:#006600; font-weight:bold;">&#91;</span>name<span style="color:#006600; font-weight:bold;">&#93;</span><br />
<span style="color:#9966CC; font-weight:bold;">end</span><br />
<br />
<span style="color:#9966CC; font-weight:bold;">def</span> render_placeholder result, name<br />
&nbsp; <span style="color:#0000FF; font-weight:bold;">return</span> <span style="color:#996600;">&quot;&quot;</span> <span style="color:#9966CC; font-weight:bold;">unless</span> has_placeholder?<span style="color:#006600; font-weight:bold;">&#40;</span>result, name<span style="color:#006600; font-weight:bold;">&#41;</span><br />
&nbsp; result.<span style="color:#CC0066; font-weight:bold;">gsub!</span> name<span style="color:#996600;">&quot;, yield<br />
end</span></div></div>
<img src="http://feeds.feedburner.com/~r/Hates_/~4/42VRPMGLyM0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ur-ban.com/blog/2012/02/18/using-blocks-in-ruby-for-lazy-evaluation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.ur-ban.com/blog/2012/02/18/using-blocks-in-ruby-for-lazy-evaluation/</feedburner:origLink></item>
		<item>
		<title>A day with Ubuntu Oneiric Ocelot (11.10)</title>
		<link>http://feedproxy.google.com/~r/Hates_/~3/TjWJysUSZTY/</link>
		<comments>http://www.ur-ban.com/blog/2012/02/10/a-day-with-ubuntu-oneiric-ocelot-11-10/#comments</comments>
		<pubDate>Fri, 10 Feb 2012 23:45:24 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[computing]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.ur-ban.com/blog/?p=2307</guid>
		<description><![CDATA[I just started a short term contract doing some RoR and was given a PC to work with. While developing on RoR on Windows is possible, it&#8217;s not what I&#8217;m used to or best at. As there were no Macs I could use, I thought I would give Linux a go. Seeing as I use [...]]]></description>
			<content:encoded><![CDATA[<p><img style="display:block; margin-left:auto; margin-right:auto;" src="http://www.ur-ban.com/galleryv2/d/16264-1/omgubuntu.png" alt="Omgubuntu" title="omgubuntu.png" border="0" width="500" height="200" /></p>
<p>I just started a short term contract doing some RoR and was given a PC to work with. While developing on RoR on Windows is possible, it&#8217;s not what I&#8217;m used to or best at. As there were no Macs I could use, I thought I would give Linux a go. Seeing as I use Vim as my editor of choice, switching over should have been relatively painless.</p>
<p>I&#8217;ll just get to the point, that for many years now I&#8217;ve always said that I don&#8217;t think Linux as a desktop OS really cuts it compared to Windows or OSX, and having used it for a day and a half I still think that&#8217;s true. Off the bat the install seemed plagued with things I just wouldn&#8217;t expect from a &#8220;modern&#8221; OS.</p>
<p>The first major blunder came during the installation process. I booted off the CD and was told that a hard drive with Windows had been detected and would I like to install Ubuntu along side it. I chose yes and was shown a screen with a dropdown with HDs and a slider to allow you to resize the partition of the drive. I split it in half and set it going. Then only when half way through did I actually look at what drive had been selected by default, it had chosen an external drive as the one to get to work on. I totally accept that I should have checked it first, but I don&#8217;t understand why I was asked if I wanted to install it beside Windows for it to then choose a drive that Windows wasn&#8217;t even on as the one to set as the selected on.</p>
<p>The pain didn&#8217;t end there. Once finally up and running, my dual monitor setup was being mirrored which was easily remedied in the display settings control panel, but then it was apparent hardware acceleration wasn&#8217;t working. You couldn&#8217;t move windows without them struggling to keep up with the pointer. Trying to enable the proprietary ATI drivers didn&#8217;t work. Do I chose the normal or the post-release drivers offered? The normal drivers installed, but the displays would <em>only</em> mirror each other and the post-release ones wouldn&#8217;t even install. So I took a chance with some commands I found on a wiki which involved stripping away all the default ATI stuff and compiling my own drivers from scratch, which eventually got it running with hardware acceleration and with both screens working independently. I had no idea what the collection of commands I had run did to the system, which left me with the un-nerving feeling that the system was sort of hanging together by a thread. I was too scared to restart incase it came back with no display at all.</p>
<p>A few people advised me to ditch the Unity manager in favour of Gnome Shell, but that just made life even worse. I couldn&#8217;t even move windows without them crawling across the screen. It just felt like a total disaster and I had absolutely no faith in the install at all.</p>
<p>I remember in 1998 hearing about Linux Mandrake and traveling all the way to some dodgy warehouse in North London to buy a copy. My experience back then was actually a good one. Everything worked as it should of and using it day to day was fine. I don&#8217;t remember having <em>any</em> display or driver problems. It was only gaming that made me return to Windows back then. What has actually been achieved in 14 years? Some transparent UI elements? To me Linux still seems plagued by constant lack of driver support. Perhaps someone can explain even why just browsing the net on Linux looks bad? Why are no good fonts distributed? If you know exactly what you&#8217;re doing then you can make do. Plenty get by, perhaps I just don&#8217;t have the patience for it.</p>
<p>I just want something that works, and after some begging I convinced the place I&#8217;m at to let me use a Mac. Setting up took a fraction of the time, admittedly I&#8217;m used to it so it&#8217;ll be quicker to get up and running, but I didn&#8217;t have to worry about any drivers, display issues or whether or not my machine would survive a reboot.</p>
<img src="http://feeds.feedburner.com/~r/Hates_/~4/TjWJysUSZTY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ur-ban.com/blog/2012/02/10/a-day-with-ubuntu-oneiric-ocelot-11-10/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.ur-ban.com/blog/2012/02/10/a-day-with-ubuntu-oneiric-ocelot-11-10/</feedburner:origLink></item>
		<item>
		<title>Ikigai</title>
		<link>http://feedproxy.google.com/~r/Hates_/~3/HIyWlaMtmPk/</link>
		<comments>http://www.ur-ban.com/blog/2012/01/28/ikigai/#comments</comments>
		<pubDate>Sat, 28 Jan 2012 21:32:42 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[books]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[people]]></category>
		<category><![CDATA[sebastian marshall]]></category>

		<guid isPermaLink="false">http://www.ur-ban.com/blog/?p=2300</guid>
		<description><![CDATA[A shot in the dark is definitely better than walking away from the chance altogether. Trying can create a percentage chance above zero, whereas walking away guarantees that it is zero. I always enjoy reading Sebastian Marshall&#8217;s blog. Primarily because I feel like I can relate to a lot of the things he talks about [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><a href="http://www.amazon.com/dp/B006M9T8NI/ref=r_soa_w_d">A shot in the dark is definitely better than walking away from the chance altogether. Trying can create a percentage chance above zero, whereas walking away guarantees that it is zero.</a></p></blockquote>
<p>I always enjoy reading Sebastian Marshall&#8217;s blog. Primarily because I feel like I can relate to a lot of the things he talks about and his general attitude towards life and business. His book is a great culmination of those things. I thoroughly recommended checking out his <a href="http://www.amazon.com/dp/B006M9T8NI/ref=r_soa_w_d">book</a> and <a href="http://www.sebastianmarshall.com/">blog</a>.</p>
<img src="http://feeds.feedburner.com/~r/Hates_/~4/HIyWlaMtmPk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ur-ban.com/blog/2012/01/28/ikigai/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.ur-ban.com/blog/2012/01/28/ikigai/</feedburner:origLink></item>
		<item>
		<title>The “Bob bug” Syndrome</title>
		<link>http://feedproxy.google.com/~r/Hates_/~3/odcfOwxfEYQ/</link>
		<comments>http://www.ur-ban.com/blog/2012/01/12/the-bob-bug-syndrome/#comments</comments>
		<pubDate>Thu, 12 Jan 2012 08:44:18 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[bugs]]></category>

		<guid isPermaLink="false">http://www.ur-ban.com/blog/?p=2292</guid>
		<description><![CDATA[Some bosses make the mistake of thinking that if the result of someone&#8217;s work is easy to use, the work itself must be easy. A guy goes in to consult for a company and runs across a bug. He raises the issue and the boss says &#8220;Oh boy &#8211; another &#8216;Bob bug&#8217; &#8211; Bob created [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><a href="http://scripting.com/stories/2012/01/09/theBossesDoEverythingBette.html">Some bosses make the mistake of thinking that if the result of someone&#8217;s work is easy to use, the work itself must be easy.</a></p></blockquote>
<p>A guy goes in to consult for a company and runs across a bug. He raises the issue and the boss says &#8220;Oh boy &#8211; another &#8216;Bob bug&#8217; &#8211; Bob created a lot of bugs.&#8221; (Bob has moved on by now). After the guy was there for a while he comes to realise that Bob wrote most of the code while the rest of the staff wrote very little. The perception that Bob created a lot of bugs was technically correct, but an analysis of bugs per line of code written show that Bob actually made fewer mistakes than his co-workers, but since he generated the majority of the app, he had the majority of the bugs.</p>
<p><a href="http://www.reddit.com/r/business/comments/oce21/some_bosses_make_the_mistake_of_thinking_that_if/c3g5zuo">Source: Reddit</a></p>
<img src="http://feeds.feedburner.com/~r/Hates_/~4/odcfOwxfEYQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ur-ban.com/blog/2012/01/12/the-bob-bug-syndrome/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.ur-ban.com/blog/2012/01/12/the-bob-bug-syndrome/</feedburner:origLink></item>
		<item>
		<title>Weight loss is a steep mountain</title>
		<link>http://feedproxy.google.com/~r/Hates_/~3/GBDwbxnh4_I/</link>
		<comments>http://www.ur-ban.com/blog/2012/01/06/weight-loss-is-a-steep-mountain/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 01:20:10 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[health]]></category>

		<guid isPermaLink="false">http://www.ur-ban.com/blog/?p=2276</guid>
		<description><![CDATA[You don&#8217;t consciously set out to put on weight so it sort of creeps up on you. You don&#8217;t put effort into getting fat. You just wake up one morning, look in the mirror and go &#8220;Geeze, what the hell happened?&#8221;. Getting fat is easy and comforting. You can relax and eat all the glorious [...]]]></description>
			<content:encoded><![CDATA[<p><img style="display:block; margin-left:auto; margin-right:auto;" src="http://www.ur-ban.com/galleryv2/d/16260-1/4f0467bc2e0aaad0790000b8.jpeg" border="0" width="550" height="356" /></p>
<p>You don&#8217;t consciously set out to put on weight so it sort of creeps up on you. You don&#8217;t put effort into getting fat. You just wake up one morning, look in the mirror and go &#8220;Geeze, what the hell happened?&#8221;.</p>
<p>Getting fat is easy and comforting. You can relax and eat all the glorious tasting things. Losing fat is a constant battle. You&#8217;ve got to kill yourself in the gym and resist the temptation of eating too much. Doesn&#8217;t mean it&#8217;s not worth doing and not possible though!</p>
<img src="http://feeds.feedburner.com/~r/Hates_/~4/GBDwbxnh4_I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ur-ban.com/blog/2012/01/06/weight-loss-is-a-steep-mountain/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.ur-ban.com/blog/2012/01/06/weight-loss-is-a-steep-mountain/</feedburner:origLink></item>
		<item>
		<title>I’ve had enough of TalkTalk</title>
		<link>http://feedproxy.google.com/~r/Hates_/~3/Sp12pMKkxBg/</link>
		<comments>http://www.ur-ban.com/blog/2012/01/04/ive-had-enough-of-talktalk/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 01:35:43 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[rants]]></category>
		<category><![CDATA[broadband]]></category>
		<category><![CDATA[offshoring]]></category>

		<guid isPermaLink="false">http://www.ur-ban.com/blog/?p=2272</guid>
		<description><![CDATA[My TalkTalk broadband hasn&#8217;t been working for the past three days and it looks like it&#8217;s never going to work as technical support refuse to believe that there is a fault. Of all the years I&#8217;ve spent calling various company&#8217;s technical support numbers, I can honestly say that TalkTalk&#8217;s is the most appalling one of [...]]]></description>
			<content:encoded><![CDATA[<p><img style="display:block; margin-left:auto; margin-right:auto;" src="http://www.ur-ban.com/galleryv2/d/16256-1/talktalk.png" alt="Talktalk" title="talktalk.png" border="0" width="336" height="164" /></p>
<p>My TalkTalk broadband hasn&#8217;t been working for the past three days and it looks like it&#8217;s never going to work as technical support refuse to believe that there is a fault. </p>
<p>Of all the years I&#8217;ve spent calling various company&#8217;s technical support numbers, I can honestly say that TalkTalk&#8217;s is the most appalling one of the lot. I&#8217;m completely livid with their so-called &#8220;support&#8221;. I&#8217;ve spent more than five hours on the phone with their &#8220;technical&#8221; team since yesterday, all while having to listen to nothing but lies and apologies for being unable to help me. Today I was on a single call that lasted three hours, which had me bounced to-and-from the same departments only to be hung up on. And I don&#8217;t mean disconnected, but actually put through to the end of call customer satisfaction survey with a cheerful &#8220;Thanks for your call&#8221;. One person even said I would have to upgrade my account to get technical support. I don&#8217;t think so.</p>
<p>&#8220;Oh, there&#8217;s no problem with your line&#8221;. Yes, I know there&#8217;s no problem with the line, I just can&#8217;t authenticate with the exchange. </p>
<p>&#8220;Oh, your router is not supported&#8221;. Yes, it&#8217;s worked fine for the past 6 years, so explain that.</p>
<p>If I even dare mention I&#8217;m on a Mac, that opens a whole other can of worms.</p>
<p>The only way I&#8217;ll be able to get any sense out of them is to have them send me a new router which I guess I have no choice but to do. Either way, I&#8217;ve had enough. I&#8217;ve already got a reconnection date from BT to move my line back to them and a Virgin Media engineer is coming round next week to get me on their internet service. I&#8217;ve heard some bad things about VM, but I really want to take advantage of the high speeds when it does work. I still have a backup broadband connection in the house I can use if it goes down at least.</p>
<p>Whoever thought offshoring technical support/call centres was a good idea should be shot. Has anyone ever had a good offshore call experience? Everyone I&#8217;ve mentioned this too has their own horror stories. Yeah, great, it cuts costs, but at what expense? Offshoring wouldn&#8217;t be so bad if it meant I could speak to someone who was actually technical. But what&#8217;s the point if I&#8217;m going to speak to someone who just reads a script to me. </p>
<p>Avoid TalkTalk at all costs.</p>
<p><strong>Update 6/1/12:</strong> Inexplicably my broadband has now started working again, a full six days after it first broke. So much for &#8220;I can assure you sir there is no problem at our end&#8221;. A new router will be arriving soon, which I had to threaten I would cancel my account over to get for free (They wanted me to renew for 12 months). Honestly, I wish I could shove the thing up someone at TalkTalk&#8217;s arse.</p>
<img src="http://feeds.feedburner.com/~r/Hates_/~4/Sp12pMKkxBg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ur-ban.com/blog/2012/01/04/ive-had-enough-of-talktalk/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.ur-ban.com/blog/2012/01/04/ive-had-enough-of-talktalk/</feedburner:origLink></item>
		<item>
		<title>Books of 2011</title>
		<link>http://feedproxy.google.com/~r/Hates_/~3/cm7rw687DLI/</link>
		<comments>http://www.ur-ban.com/blog/2012/01/02/books-of-2011/#comments</comments>
		<pubDate>Mon, 02 Jan 2012 01:36:59 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[books]]></category>

		<guid isPermaLink="false">http://www.ur-ban.com/blog/?p=2270</guid>
		<description><![CDATA[Another year another list of books that I read in 2011. I never read as much as I want/should. Why We Get Fat (11/1/2011) Start Small, Stay Small &#8211; Audiobook (30/1/2011) Never Let Go (2/2/2011) Ignore Everybody (10/2/2011) The Hero Handbook (21/2/2011) Mindfulness in Plain English (3/3/2011) Programming Amazon EC2 (18/3/2011) How to Make Money [...]]]></description>
			<content:encoded><![CDATA[<p>Another year another list of books that I read in 2011. I never read as much as I want/should.</p>
<ul>
<li>Why We Get Fat (11/1/2011)</li>
<li>Start Small, Stay Small &#8211; Audiobook (30/1/2011)</li>
<li>Never Let Go (2/2/2011)</li>
<li>Ignore Everybody (10/2/2011)</li>
<li>The Hero Handbook (21/2/2011)</li>
<li>Mindfulness in Plain English (3/3/2011)</li>
<li>Programming Amazon EC2 (18/3/2011)</li>
<li>How to Make Money (7/3/2011)</li>
<li>Eloquent Ruby (6/5/2011)</li>
<li>Snow Crash (18/5/2011)</li>
<li>Get out of Jail Free Card (19/5/2011)</li>
<li>Hyperion (6/6/2011)</li>
<li>Anything You Want (1/7/2011)</li>
<li>The Fall of Hyperion (29/7/2011)</li>
<li>Motorcycle Roadcraft (6/9/2011)</li>
<li>Sport Riding Techniques (20/9/2011)</li>
<li>Recipes with Backbone (19/12/2011)</li>
<li>The Secrets of the Rainmakers (20/12/2011)</li>
<li>The Lean Startup (25/12/2011)</li>
</ul>
<p>The only book that really stands out for me this year is &#8220;Hyperion&#8221;. I don&#8217;t usually read fiction, but on this occasion I&#8217;m extremely glad I did. Never before has a book gripped me as much as this one did. And excellent story which had me desperate to keep going to find out what happened. &#8220;Why we get fat&#8221; is a very good book on the basics of the modern science behind the obesity epidemic spreading across the world. I found it very hard to read Gary Taubes previous book &#8220;Good Calories, Bad Calories&#8221;, but this was extremely easy to take in.</p>
<p>I certainly want to be able to read more in 2012. But that&#8217;s something I say every year.</p>
<img src="http://feeds.feedburner.com/~r/Hates_/~4/cm7rw687DLI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ur-ban.com/blog/2012/01/02/books-of-2011/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.ur-ban.com/blog/2012/01/02/books-of-2011/</feedburner:origLink></item>
		<item>
		<title>The Lean Startup</title>
		<link>http://feedproxy.google.com/~r/Hates_/~3/KzikUdnZPwc/</link>
		<comments>http://www.ur-ban.com/blog/2011/12/26/the-lean-startup/#comments</comments>
		<pubDate>Mon, 26 Dec 2011 23:56:14 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[books]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[lean]]></category>

		<guid isPermaLink="false">http://www.ur-ban.com/blog/?p=2262</guid>
		<description><![CDATA[I finally finished reading The Lean Startup. The main gist is that we need to be creating fast feedback looks for products/changes we make, so that we can quickly see what is and isn&#8217;t working. It&#8217;s a good extension of what to do once you have you minimum-viable product up and running, as it&#8217;s easy [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="" src="http://www.ur-ban.com/galleryv2/d/16262-1/The-Lean-Startup.jpeg" class="aligncenter" width="200" height="290" /></p>
<p>I finally finished reading <a href="http://www.amazon.com/Lean-Startup-Entrepreneurs-Continuous-Innovation/dp/0307887898/ref=sr_1_1?ie=UTF8&#038;qid=1324942663&#038;sr=8-1">The Lean Startup</a>. The main gist is that we need to be creating fast feedback looks for products/changes we make, so that we can quickly see what is and isn&#8217;t working. It&#8217;s a good extension of what to do once you have you minimum-viable product up and running, as it&#8217;s easy to fall into the trap of just adding features, without actually adding any value. I especially liked the parts on doing a cohort study of your users. Instead of measuring figures like engagement as a total for a specific time, you would track engagement for people who signed up in January only, then sign ups in February, then March, etc. This gives you a better picture of whether you&#8217;re actually improving your service or only appearing to improve because of growing figures. </p>
<p>Overall the book wasn&#8217;t too bad. I felt that perhaps the first half was a lot more &#8220;actionable&#8221; and my interest fell off once past the half way point, so I ended up just steaming through after that. Definitely worth reading if you&#8217;re in the startup arena though.</p>
<p>I&#8217;ll be getting another copy soon anyways as I&#8217;ll be seeing Eric talk when he comes to London in January.</p>
<img src="http://feeds.feedburner.com/~r/Hates_/~4/KzikUdnZPwc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ur-ban.com/blog/2011/12/26/the-lean-startup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.ur-ban.com/blog/2011/12/26/the-lean-startup/</feedburner:origLink></item>
		<item>
		<title>The only limit, is the one you set yourself</title>
		<link>http://feedproxy.google.com/~r/Hates_/~3/4ad04SeVJv0/</link>
		<comments>http://www.ur-ban.com/blog/2011/12/14/the-only-limit-is-the-one-you-set-yourself/#comments</comments>
		<pubDate>Wed, 14 Dec 2011 01:16:05 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[life]]></category>
		<category><![CDATA[self-development]]></category>

		<guid isPermaLink="false">http://www.ur-ban.com/blog/?p=2260</guid>
		<description><![CDATA[Once you train yourself to seek out the limit in all endeavors, you’ll get better and faster at correcting the inevitable oversteps, and hit that peak performance. This recent post from 37Signals reminds me a lot of the brilliant post by Derek Sivers on there being no speed limit. Kimo&#8217;s high expectations set a new [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><a href="http://37signals.com/svn/posts/3058-seven-degrees-of-slip">Once you train yourself to seek out the limit in all endeavors, you’ll get better and faster at correcting the inevitable oversteps, and hit that peak performance.</a></p></blockquote>
<p>This recent post from 37Signals reminds me a lot of the brilliant post by Derek Sivers on there being no speed limit.</p>
<blockquote><p><a href="http://sivers.org/kimo">Kimo&#8217;s high expectations set a new pace for me. He taught me &#8220;the standard pace is for chumps&#8221; &#8211; that the system is designed so anyone can keep up. If you&#8217;re more driven than &#8220;just anyone&#8221; &#8211; you can do so much more than anyone expects. And this applies to ALL of life &#8211; not just school.</a></p></blockquote>
<p>It can be hard at times to know how hard you should be pushing or how fast you should be going. It&#8217;s easier to go with the flow rather than to push ourselves to see what we&#8217;re truly capable of.</p>
<img src="http://feeds.feedburner.com/~r/Hates_/~4/4ad04SeVJv0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ur-ban.com/blog/2011/12/14/the-only-limit-is-the-one-you-set-yourself/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.ur-ban.com/blog/2011/12/14/the-only-limit-is-the-one-you-set-yourself/</feedburner:origLink></item>
		<item>
		<title>SEO from the start</title>
		<link>http://feedproxy.google.com/~r/Hates_/~3/sYks8_XUnGE/</link>
		<comments>http://www.ur-ban.com/blog/2011/12/09/seo-from-the-start/#comments</comments>
		<pubDate>Fri, 09 Dec 2011 02:30:28 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[seo]]></category>

		<guid isPermaLink="false">http://www.ur-ban.com/blog/?p=2256</guid>
		<description><![CDATA[My generic SEO strategy for a startup is a) be the best on the Internet for b) as many topics as you possibly can be that c) matter to your paying customers &#8211; Strategic SEO for Startups Over the past couple of weeks I&#8217;ve been spending an increasing amount of time learning about SEO and [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><a href="http://www.kalzumeus.com/2010/01/24/startup-seo/">My generic SEO strategy for a startup is a) be the best on the Internet for b) as many topics as you possibly can be that c) matter to your paying customers</a> &#8211; Strategic SEO for Startups</p></blockquote>
<p>Over the past couple of weeks I&#8217;ve been spending an increasing amount of time learning about SEO and how to go about applying it to our day to day business. There&#8217;s a lot of stigma attached to doing &#8220;SEO&#8221; and while a lot of it is very shady, once you learn how to do things properly, it&#8217;s not as dirty a subject as people would have you think. Personally I&#8217;ve found the whole learning experience absolutely fascinating. </p>
<p>It&#8217;s very easy to think that SEO is something you do to your site. Adding keywords, making sure things are tagged correctly etc, but the real meat of SEO comes before all that. Researching competitors, finding keywords to compete on and own, building trustworthy and relevant linkbacks, etc. The <a href="http://www.seomoz.org/beginners-guide-to-seo">SEOMoz Beginners Guide</a> is an excellent resource for learning the basics while the link at the top is a a great way of learning how to apply the concepts to your startup/site.</p>
<p>For anyone thinking of hiring an &#8220;SEO Expert&#8221;. Be <strong>extremely</strong> cautious. There are a lot of people out there dying to sell you their <a href="http://en.wikipedia.org/wiki/Spamdexing">black hat techniques</a> to drive your search engine performance up, there are also a lot of people out there who really don&#8217;t know what they&#8217;re talking about. If someone offering to give you advice doesn&#8217;t first ask to see your analytics and your content, but rather focuses on technical changes (especially things like LOC and embedded Javascript), I&#8217;d personally look elsewhere for help.</p>
<p>There&#8217;s no point having the best content in the world if people can&#8217;t discover it, and really SEO is all about making that content discoverable.</p>
<img src="http://feeds.feedburner.com/~r/Hates_/~4/sYks8_XUnGE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ur-ban.com/blog/2011/12/09/seo-from-the-start/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.ur-ban.com/blog/2011/12/09/seo-from-the-start/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic Page Served (once) in 0.456 seconds -->

