<?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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>reviewmylife</title>
	
	<link>http://www.reviewmylife.co.uk/blog</link>
	<description>Programming, technology and general banter.</description>
	<pubDate>Mon, 06 Jul 2009 09:59:35 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/reviewmylife" type="application/rss+xml" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Freviewmylife" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Freviewmylife" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Freviewmylife" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/reviewmylife" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Freviewmylife" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Freviewmylife" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Freviewmylife" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><item>
		<title>Telephone call log spreadsheet</title>
		<link>http://feedproxy.google.com/~r/reviewmylife/~3/zE-DNra8AJE/</link>
		<comments>http://www.reviewmylife.co.uk/blog/2009/07/06/telephone-call-log-spreadsheet/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 08:17:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Life]]></category>

		<category><![CDATA[call]]></category>

		<category><![CDATA[log]]></category>

		<category><![CDATA[spreadsheet]]></category>

		<category><![CDATA[telephone]]></category>

		<category><![CDATA[xls]]></category>

		<guid isPermaLink="false">http://www.reviewmylife.co.uk/blog/?p=370</guid>
		<description><![CDATA[It can be well worth keeping a log of phone calls to companies such as banks, utility companies and anyone else who you have an account with. You never know when it could be useful to have this information.
For example this week I received some unsolicited credit card cheques from Natwest. I have previously been [...]]]></description>
			<content:encoded><![CDATA[<p>It can be well worth keeping a log of phone calls to companies such as banks, utility companies and anyone else who you have an account with. You never know when it could be useful to have this information.</p>
<p>For example this week I received some unsolicited credit card cheques from Natwest. I have previously been sent these by Natwest and I remember that I phoned them up to ask them not to send them to me anymore. I know I have called them at least once and I suspect that I have called them twice. As they are clearly not honouring my preferences I am writing a letter of complaint to them. </p>
<p>Unfortunately I don&#8217;t know the dates (or even whether I made one or two) of my calls to them. I can still write the letter, but if I had recorded my calls to them I could have been very specific about details of when I told them not to send me any more of their credit card cheques.</p>
<p>Here is the XLS spreadsheet that I&#8217;ve put together to record future calls.</p>
<p><a href="http://www.reviewmylife.co.uk/data/2009/0705/telephone-log.xls">Telephone log spreadsheet</a> - 17kb</p>
<p></p><div class="aizatto_related_posts"><span class="aizatto_related_posts_header" >Related Posts</span><ul></ul></div><script src="http://feeds.feedburner.com/~s/reviewmylife?i=http://www.reviewmylife.co.uk/blog/2009/07/06/telephone-call-log-spreadsheet/" type="text/javascript" charset="utf-8"></script>
<p><a href="http://feedads.g.doubleclick.net/~a/nEyd6fsIe6hYigkPXfcMXIsF5nI/0/da"><img src="http://feedads.g.doubleclick.net/~a/nEyd6fsIe6hYigkPXfcMXIsF5nI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/nEyd6fsIe6hYigkPXfcMXIsF5nI/1/da"><img src="http://feedads.g.doubleclick.net/~a/nEyd6fsIe6hYigkPXfcMXIsF5nI/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reviewmylife?a=zE-DNra8AJE:G8M4zwGOU8U:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=zE-DNra8AJE:G8M4zwGOU8U:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/reviewmylife?i=zE-DNra8AJE:G8M4zwGOU8U:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=zE-DNra8AJE:G8M4zwGOU8U:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/reviewmylife?i=zE-DNra8AJE:G8M4zwGOU8U:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=zE-DNra8AJE:G8M4zwGOU8U:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/reviewmylife?i=zE-DNra8AJE:G8M4zwGOU8U:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=zE-DNra8AJE:G8M4zwGOU8U:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=zE-DNra8AJE:G8M4zwGOU8U:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=zE-DNra8AJE:G8M4zwGOU8U:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reviewmylife/~4/zE-DNra8AJE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.reviewmylife.co.uk/blog/2009/07/06/telephone-call-log-spreadsheet/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.reviewmylife.co.uk/blog/2009/07/06/telephone-call-log-spreadsheet/</feedburner:origLink></item>
		<item>
		<title>2010 One Page Excel Calendar</title>
		<link>http://feedproxy.google.com/~r/reviewmylife/~3/5qqjz3uJAbQ/</link>
		<comments>http://www.reviewmylife.co.uk/blog/2009/03/09/2010-one-page-excel-calendar/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 07:31:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Computing]]></category>

		<category><![CDATA[2010 calendar]]></category>

		<category><![CDATA[2010 excel calendar]]></category>

		<category><![CDATA[Excel]]></category>

		<category><![CDATA[one page calendar]]></category>

		<guid isPermaLink="false">http://www.reviewmylife.co.uk/blog/?p=357</guid>
		<description><![CDATA[We&#8217;re well into 2009 so to follow on from my 2009 Excel one page calendar it seems time to put up the yearly calendar for 2010.

As before I&#8217;ve done a blank one with just the days / months marked out, and one with the 2010 UK bank holidays highlighted.
2010 Excel calendar - blank (7kb)
2010 Excel [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re well into 2009 so to follow on from my <a href="http://www.reviewmylife.co.uk/blog/2008/08/29/2009-one-page-excel-calendar/">2009 Excel one page calendar</a> it seems time to put up the yearly calendar for 2010.</p>
<p><img src="http://www.reviewmylife.co.uk/data/2009/0309/2010-excel-calendar.gif" width="420" height="187" alt="2010 Excel one page calendar"></p>
<p>As before I&#8217;ve done a blank one with just the days / months marked out, and one with the 2010 UK bank holidays highlighted.</p>
<p><a href="http://www.reviewmylife.co.uk/data/2009/0309/calendar2010.zip">2010 Excel calendar</a> - blank (7kb)<br />
<a href="http://www.reviewmylife.co.uk/data/2009/0309/calendar2010-uk-bank-holidays.zip">2010 Excel calendar</a> - with UK Bank Holidays highlighted (7kb)</p>
<p>Like before you should be able to get it to fit on your computer screen without any scrolling - you may need to adjust the box sizes, or zoom level depending on the resolution of your monitor.</p>
<p></p><div class="aizatto_related_posts"><span class="aizatto_related_posts_header" >Related Posts</span><ul></ul></div><script src="http://feeds.feedburner.com/~s/reviewmylife?i=http://www.reviewmylife.co.uk/blog/2009/03/09/2010-one-page-excel-calendar/" type="text/javascript" charset="utf-8"></script>
<p><a href="http://feedads.g.doubleclick.net/~a/n3z7LKwZzndHWTP6unZpHi-pquw/0/da"><img src="http://feedads.g.doubleclick.net/~a/n3z7LKwZzndHWTP6unZpHi-pquw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/n3z7LKwZzndHWTP6unZpHi-pquw/1/da"><img src="http://feedads.g.doubleclick.net/~a/n3z7LKwZzndHWTP6unZpHi-pquw/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reviewmylife?a=5qqjz3uJAbQ:AUYRy0Xxx4g:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=5qqjz3uJAbQ:AUYRy0Xxx4g:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/reviewmylife?i=5qqjz3uJAbQ:AUYRy0Xxx4g:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=5qqjz3uJAbQ:AUYRy0Xxx4g:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/reviewmylife?i=5qqjz3uJAbQ:AUYRy0Xxx4g:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=5qqjz3uJAbQ:AUYRy0Xxx4g:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/reviewmylife?i=5qqjz3uJAbQ:AUYRy0Xxx4g:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=5qqjz3uJAbQ:AUYRy0Xxx4g:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=5qqjz3uJAbQ:AUYRy0Xxx4g:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=5qqjz3uJAbQ:AUYRy0Xxx4g:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reviewmylife/~4/5qqjz3uJAbQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.reviewmylife.co.uk/blog/2009/03/09/2010-one-page-excel-calendar/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.reviewmylife.co.uk/blog/2009/03/09/2010-one-page-excel-calendar/</feedburner:origLink></item>
		<item>
		<title>Phoload interview</title>
		<link>http://feedproxy.google.com/~r/reviewmylife/~3/LBAgYbWRWEA/</link>
		<comments>http://www.reviewmylife.co.uk/blog/2008/12/01/phoload-interview/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 06:16:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Website building]]></category>

		<category><![CDATA[download]]></category>

		<category><![CDATA[game]]></category>

		<category><![CDATA[Java]]></category>

		<category><![CDATA[midlet]]></category>

		<category><![CDATA[midp]]></category>

		<category><![CDATA[mobile]]></category>

		<category><![CDATA[Phoload]]></category>

		<category><![CDATA[phone]]></category>

		<guid isPermaLink="false">http://www.reviewmylife.co.uk/blog/?p=342</guid>
		<description><![CDATA[




Phoload is a new website where you can download free mobile software. We recently interviewed Phoload CEO Jamie McDonald.
What is phoload?
Phoload showcases free-to-download mobile games and applications that have been uploaded directly to the site by software developers. Users of the website can download, rate, review and recommend the software. We’re hoping to build a [...]]]></description>
			<content:encoded><![CDATA[<table border="0" cellspacing="10" align="right">
<tr>
<td>
<img src="http://www.reviewmylife.co.uk/data/2008/1130/phoload-main-page.gif" border="0" width="250" height="195" alt="phoload main page" /></td>
</tr>
</table>
<p>Phoload is a new website where you can <a href="http://www.phoload.com/">download free mobile software</a>. We recently interviewed Phoload CEO Jamie McDonald.</p>
<p><strong>What is phoload?</strong></p>
<p>Phoload showcases free-to-download mobile games and applications that have been uploaded directly to the site by software developers. Users of the website can download, rate, review and recommend the software. We’re hoping to build a community around the software, with participation from both users and developers.</p>
<p><strong>What does the name &#8216;phoload&#8217; mean?</strong></p>
<p>Contrary to some articles about us, it has nothing to do with &#8216;pho&#8217; noodles! It is an amalgam of &#8216;phone&#8217; and &#8216;download&#8217;. We wanted a name that was short, snappy and did not have many existing search results. We also rather liked the aesthetic appearance of the letters. </p>
<p><strong>Why did you decide to create phoload?</strong></p>
<p>We&#8217;ve been mobile software enthusiasts for a long time, but I think it is only in the last few years that we have seen the emergence of a whole raft of startups and individuals creating free-to-download location based mobile apps, mobile social networks, and messaging software. We wanted to create a site that made discovering and downloading all this fantastic new mobile software as easy and enjoyable as possible for users. </p>
<p><strong>What are the most popular downloads?</strong></p>
<p>As of today, the most popular download on Phoload is amazeGPS, which is a mobile satnav application. In our top ten we also have another mapping application, a language translator, a music player, a scientific calculator, a couple of apps that interface to various information feeds, as well as several games. I think that the top ten really shows the diversity of mobile software available today. </p>
<p><strong>Which phones are people downloading software onto?</strong></p>
<p>Principally, Nokia, Sony Ericcson, Samsung and Blackberry phones (in that order of popularity). The most popular phones are almost all smartphones or other high end phones, with the most popular phone with Phoload users being the Nokia N95. Since launching support for Android last week, we&#8217;ve also seen a large number of T-Mobile G1s browsing and downloading software from the site. </p>
<p><strong>What are your mobile software predictions for 2009?</strong></p>
<p>I don&#8217;t think we are going to see anything revolutionary in 2009, just a continuation of the trends that have already started. That is to say, increasing usage and awareness of mobile software, increasing smartphone adoption, and the increasing popularity of mobile social networks and location based applications. I also think that the Android platform has a bright future. It certainly has enthused the developer community. </p>
<p><strong>What technology is behind the site?</strong></p>
<p>Phoload is written in Java. We use the excellent Stripes web framework, and Hibernate for mapping our Java objects to the database. As Phoload is a read-mostly site, we do a lot of caching using Ehcache both as a Hibernate second level cache, and for caching frequently accessed results that have been detached from Hibernate. </p>
<p><strong>How is the site hosted?</strong></p>
<p>On a dedicated server in Dallas in the US. We host with an excellent New Zealand based company called RimuHosting. </p>
<p><strong>What challenges did you face in getting the site launched?</strong></p>
<p>From a development perspective, the toughest challenge was creating a mobile software distribution system that handles the device fragmentation (especially in J2ME devices) in the best possible way. The system had to make it as easy as possible for developers to upload, and specify phone compatibilities for, multiple versions of a single item of software, while masking this complexity from users. I think that we have done well in this area.</p>
<p>Another challenge was sourcing the initial portfolio of mobile software, which was a lot of work. We spent many hours searching for and emailing developers. </p>
<p><strong>What strategies have you used to get people to visit your site?</strong></p>
<p>To promote the site, we started by emailing mobile industry and news site blogs, telling them about Phoload. We’ve found that this strategy has worked pretty well and we’re pleased with the press that we have received so far. We also try to promote Phoload by promoting the software on the site, highlighting relevant software to bloggers, and to users on forums etc. etc.  </p>
<p><strong>A search on Google for &#8216;phoload&#8217; on currently gives 11200 results, how did you manage to get mentioned on so many web pages?</strong></p>
<p>First of all, I think Google might be exaggerating a little, as when you click through to the last page of search results, there are actually far fewer results. But, there are still plenty, and I think one of the reasons for this is the blog coverage that I previously mentioned. Many of articles written about Phoload have been syndicated all over the web, so this accounts for a lot of results. These articles also prompt follow up articles and interviews, so there is a large ripple effect there. </p>
<p><strong>How is the site funded?</strong></p>
<p>We are self-funded. </p>
<p><strong>What are your plans for monetizing the site?</strong></p>
<p>We don&#8217;t plan to have any software sales on the site. We want to keep it purely focused on free-to-download software. Eventually, we’ll put some non-intrusive ads on the site. We&#8217;ll probably do this once our hosting costs start increasing. </p>
<p><strong>Why should developers give their software away for free on this site?</strong></p>
<table border="0" cellspacing="10" align="left">
<tr>
<td>
<img src="http://www.reviewmylife.co.uk/data/2008/1130/phoload-atomic.gif" border="0" width="250" height="196" alt="phoload atomic" /></td>
</tr>
</table>
<p>Primarily, developers will gain users and publicity. We hope to provide an excellent service to developers, and those who upload their software receive pages showcasing their products on the site, regular download reports, and feedback from the user community.  </p>
<p>Also, we don’t just accept freeware, we also accept ad-supported and demo/trial software, and demo software can be associated with a purchase link to an external website. </p>
<p><strong>How did you find the initial mobile software for the site?</strong></p>
<p>On the whole, we used Google. We scoured the internet searching for mobile software that we liked and then contacted the developers of the software directly to ask if they would like to upload their software to Phoload. </p>
<p><strong>What kind of testing do you do on the submitted software?</strong></p>
<p>If it&#8217;s compatible with a phone we have, we&#8217;ll give it a try and report any feedback we have to the developer. However, we don’t make any guarantees to our users that the software has been tested.</p>
<p><strong>Currently you support J2ME. Are there plans to offer software for written in other languages - e.g. Symbian, Android?</strong></p>
<p>Yes, we launched Android support on the site last week and are really pleased with the amount of traffic the Android section of Phoload has received so far. We plan to add support for more software platforms soon, starting with Symbian. </p>
<p><strong>Where do you want the site will be in one years time?</strong></p>
<p>Hopefully, Phoload will be established as one of the best places to download and discuss the latest free mobile software. Also, by then, we will support all of the major mobile software platforms.</p>
<p><strong>And finally can you give us a few tips for anyone setting up a new website of their own?</strong></p>
<p>I think that virtually everything, from starting the company, sorting out the legal documents, contacting developers, and of course developing the site, took longer than we anticipated. So, I would encourage people to be realistic about how much time everything takes.</p>
<p>One specific mistake we made was with regard to search engine optimisation. I think if you anticipate that you will receive most of your traffic from search engines, then you have to think deeply about this from the start and during the whole design process. We thought we had done this (with search engine friendly urls etc.), but we still found that we received duplicate results in the Google index due to session IDs creeping into the urls unnecessarily, and both the <a href="http://www.phoload.com/">www.phoload.com</a> and phoload.com domains being indexed separately. We’ve fixed these issues now but wish we had fully addressed them before launch.</p>
<p><strong>Thanks for your time.</strong><br />
<strong>You can visit Phoload at <a href="http://www.phoload.com/">http://www.phoload.com/</a></strong>.</p>
<p></p><div class="aizatto_related_posts"><span class="aizatto_related_posts_header" >Related Posts</span><ul></ul></div><script src="http://feeds.feedburner.com/~s/reviewmylife?i=http://www.reviewmylife.co.uk/blog/2008/12/01/phoload-interview/" type="text/javascript" charset="utf-8"></script>
<p><a href="http://feedads.g.doubleclick.net/~a/uF2pbETgc4qr2TEPYjHugCtMe0M/0/da"><img src="http://feedads.g.doubleclick.net/~a/uF2pbETgc4qr2TEPYjHugCtMe0M/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/uF2pbETgc4qr2TEPYjHugCtMe0M/1/da"><img src="http://feedads.g.doubleclick.net/~a/uF2pbETgc4qr2TEPYjHugCtMe0M/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reviewmylife?a=LBAgYbWRWEA:pxzfmtNfyoI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=LBAgYbWRWEA:pxzfmtNfyoI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/reviewmylife?i=LBAgYbWRWEA:pxzfmtNfyoI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=LBAgYbWRWEA:pxzfmtNfyoI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/reviewmylife?i=LBAgYbWRWEA:pxzfmtNfyoI:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=LBAgYbWRWEA:pxzfmtNfyoI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/reviewmylife?i=LBAgYbWRWEA:pxzfmtNfyoI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=LBAgYbWRWEA:pxzfmtNfyoI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=LBAgYbWRWEA:pxzfmtNfyoI:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=LBAgYbWRWEA:pxzfmtNfyoI:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reviewmylife/~4/LBAgYbWRWEA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.reviewmylife.co.uk/blog/2008/12/01/phoload-interview/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.reviewmylife.co.uk/blog/2008/12/01/phoload-interview/</feedburner:origLink></item>
		<item>
		<title>Find out the cost of calling any telephone number</title>
		<link>http://feedproxy.google.com/~r/reviewmylife/~3/FZULQPGNXfU/</link>
		<comments>http://www.reviewmylife.co.uk/blog/2008/10/07/find-out-the-cost-of-calling-any-telephone-number/#comments</comments>
		<pubDate>Tue, 07 Oct 2008 06:14:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Money]]></category>

		<guid isPermaLink="false">http://www.reviewmylife.co.uk/blog/?p=336</guid>
		<description><![CDATA[Often you will see UK telephone numbers with codes such as 087xx, and a price for calling that number will be listed. How do you know that the price is actually correct?
I would have thought the BT would have a simple page where you can enter a telephone number into a box and be told [...]]]></description>
			<content:encoded><![CDATA[<p>Often you will see UK telephone numbers with codes such as 087xx, and a price for calling that number will be listed. How do you know that the price is actually correct?</p>
<p>I would have thought the BT would have a simple page where you can enter a telephone number into a box and be told instantly the correct cost of calling it. I&#8217;ve been unable to find such a page but I have (after a fair bit of searching) managed to find out how to get this information from BT&#8217;s web site. I wanted the information from BT&#8217;s website as it is more likely to be accurate and up to date than from any other site.</p>
<p>I was prompted to find out how to do this as I wanted to be sure of the cost of an access number for calling a Japaneese mobile phone. The web page of the dialing company told me it would cost 7p / minute.</p>
<p><img src="http://www.reviewmylife.co.uk/data/2008/1005/0871-call-cost.gif" border="0" width="402" height="94" alt="0871 call cost" /></p>
<p>Looking up the price seems to be a two stage process. You need to find the Tariff Guide on their <a href="http://www.productsandservices.bt.com/consumerProducts/displayTopic.do?topicId=15718&#038;s_cid=con_FURL_personal/pricing">Products and Services page</a> in the Personal section of their site. </p>
<p>You need to click on the <a href="http://www.productsandservices.bt.com/consumer/consumerProducts/pdf/SpecialisedNos.pdf">Residential and Business special number call prices PDF</a> link under the Pricing information heading.</p>
<p>This document has a large list of the starting codes of all phone numbers. You need to search through this list until you find the one that matches the number you have. You then need to make a note of the &#8216;Type of call&#8217; code. In my case it is &#8216;g13&#8242;.</p>
<p><img src="http://www.reviewmylife.co.uk/data/2008/1005/telephone-number-lookup.gif" border="0" width="289" height="185" alt="telephone number lookup" /></p>
<p>Further down the document you will find another table that tells you the cost of calling each &#8216;Type of call&#8217; number. By cross-referencing these two pieces of information I&#8217;ve confirmed that the number is correctly advertised as costing 7p / minute.</p>
<p><img src="http://www.reviewmylife.co.uk/data/2008/1005/call-cost-table.gif" border="0" width="434" height="98" alt="call cost table" /></p>
<p></p><div class="aizatto_related_posts"><span class="aizatto_related_posts_header" >Related Posts</span><ul></ul></div><script src="http://feeds.feedburner.com/~s/reviewmylife?i=http://www.reviewmylife.co.uk/blog/2008/10/07/find-out-the-cost-of-calling-any-telephone-number/" type="text/javascript" charset="utf-8"></script>
<p><a href="http://feedads.g.doubleclick.net/~a/b6hc8oOYtchOz0gSv0bE1ZWCr4c/0/da"><img src="http://feedads.g.doubleclick.net/~a/b6hc8oOYtchOz0gSv0bE1ZWCr4c/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/b6hc8oOYtchOz0gSv0bE1ZWCr4c/1/da"><img src="http://feedads.g.doubleclick.net/~a/b6hc8oOYtchOz0gSv0bE1ZWCr4c/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reviewmylife?a=FZULQPGNXfU:YLIGKY-o3zE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=FZULQPGNXfU:YLIGKY-o3zE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/reviewmylife?i=FZULQPGNXfU:YLIGKY-o3zE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=FZULQPGNXfU:YLIGKY-o3zE:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/reviewmylife?i=FZULQPGNXfU:YLIGKY-o3zE:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=FZULQPGNXfU:YLIGKY-o3zE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/reviewmylife?i=FZULQPGNXfU:YLIGKY-o3zE:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=FZULQPGNXfU:YLIGKY-o3zE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=FZULQPGNXfU:YLIGKY-o3zE:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=FZULQPGNXfU:YLIGKY-o3zE:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reviewmylife/~4/FZULQPGNXfU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.reviewmylife.co.uk/blog/2008/10/07/find-out-the-cost-of-calling-any-telephone-number/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.reviewmylife.co.uk/blog/2008/10/07/find-out-the-cost-of-calling-any-telephone-number/</feedburner:origLink></item>
		<item>
		<title>Triangle Identification - C++ solution and test code</title>
		<link>http://feedproxy.google.com/~r/reviewmylife/~3/3Iwr9uABzuI/</link>
		<comments>http://www.reviewmylife.co.uk/blog/2008/09/23/triangle-identification-c-solution-and-test-code/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 06:27:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[C++]]></category>

		<category><![CDATA[code]]></category>

		<category><![CDATA[interview question]]></category>

		<category><![CDATA[solution]]></category>

		<category><![CDATA[source]]></category>

		<category><![CDATA[source code]]></category>

		<category><![CDATA[test code]]></category>

		<category><![CDATA[triangle identification]]></category>

		<category><![CDATA[triangle type]]></category>

		<guid isPermaLink="false">http://www.reviewmylife.co.uk/blog/?p=234</guid>
		<description><![CDATA[Here is another interview coding question that I have heard of.
You have to write a function to identify the triangle type. You have to return a number between 1 or 4 to identify either a valid triangle type or an error.
The solution is very simple requiring only one condensed line of code to identify each [...]]]></description>
			<content:encoded><![CDATA[<p>Here is another interview coding question that I have heard of.</p>
<p>You have to write a function to identify the triangle type. You have to return a number between 1 or 4 to identify either a valid triangle type or an error.</p>
<p>The solution is very simple requiring only one condensed line of code to identify each triangle type. Two lines of code identify error cases. One of the error cases identifies input with 0 or negative lengths. The other error case identifies line lengths that don&#8217;t make a triangle or which make a segment (thanks to Yabba for pointing out these error cases). </p>
<p>As an exercise you could try to extend the solution to identify right-angled triangles as well.</p>
<pre>
<font color="#0000ff">const</font><font color="#0000ff"> int</font> SCALENE<b><font color="#000000"> =</font></b><font color="#000000"> 1</font><b><font color="#000000">;</font></b><font color="#0000ff">
const</font><font color="#0000ff"> int</font> ISOSCELES<b><font color="#000000"> =</font></b><font color="#000000"> 2</font><b><font color="#000000">;</font></b><font color="#0000ff">
const</font><font color="#0000ff"> int</font> EQUILATERAL<b><font color="#000000"> =</font></b><font color="#000000"> 3</font><b><font color="#000000">;</font></b><font color="#0000ff">
const</font><font color="#0000ff"> int</font> ERROR<b><font color="#000000"> =</font></b><font color="#000000"> 4</font><b><font color="#000000">;</font></b><font color="#0000ff">

int</font> TriangleType<b><font color="#000000">(</font></b><font color="#0000ff">int</font> x<b><font color="#000000">,</font></b><font color="#0000ff"> int</font> y<b><font color="#000000">,</font></b><font color="#0000ff"> int</font> z<b><font color="#000000">)
{</font></b><font color="#0000ff">
	if</font><b><font color="#000000"> ((</font></b>x<b><font color="#000000"> +</font></b> y<b><font color="#000000"> &lt;=</font></b> z<b><font color="#000000">) || (</font></b>x<b><font color="#000000"> +</font></b> z<b><font color="#000000"> &lt;=</font></b> y<b><font color="#000000">) || (</font></b>z<b><font color="#000000"> +</font></b> y<b><font color="#000000"> &lt;=</font></b> x<b><font color="#000000">))</font></b><font color="#0000ff"> return</font> ERROR<b><font color="#000000">;</font></b><font color="#0000ff">
	if</font><b><font color="#000000"> (</font></b>x<b><font color="#000000">&lt;=</font></b><font color="#000000">0</font><b><font color="#000000"> ||</font></b> y<b><font color="#000000">&lt;=</font></b><font color="#000000">0</font><b><font color="#000000"> ||</font></b> z<b><font color="#000000">&lt;=</font></b><font color="#000000">0</font><b><font color="#000000">)</font></b><font color="#0000ff"> return</font> ERROR<b><font color="#000000">;</font></b><font color="#0000ff">
	if</font><b><font color="#000000"> (</font></b>x<b><font color="#000000"> ==</font></b> y<b><font color="#000000"> &amp;&amp;</font></b> y<b><font color="#000000"> ==</font></b> z<b><font color="#000000">)</font></b><font color="#0000ff"> return</font> EQUILATERAL<b><font color="#000000">;</font></b><font color="#0000ff">
	if</font><b><font color="#000000"> (</font></b>x<b><font color="#000000"> ==</font></b> y<b><font color="#000000"> ||</font></b> y<b><font color="#000000"> ==</font></b> z<b><font color="#000000"> ||</font></b> z<b><font color="#000000"> ==</font></b> x<b><font color="#000000">)</font></b><font color="#0000ff"> return</font> ISOSCELES<b><font color="#000000">;</font></b><font color="#0000ff">
	return</font> SCALENE<b><font color="#000000">;
}</font></b>
</pre>
<p>The more interesting code comes from testing the function. To test the function I pass in a series of triangle side lengths. I also pass in the expected result. If the actual result matches the expected result then the test passes. </p>
<p>The test data is written in a way that allows each test to be defined in a single line of code which makes it very easy to extend.</p>
<p>This easy extendibility was fortunate as my original version of this solution missed out the cases where the line lengths don&#8217;t make a triangle (e.g. 1, 1, 5), and where the line lengths make a segment (e.g. 2, 2, 4).</p>
<pre>
<font color="#0000ff">void</font> TriangleTest<b><font color="#000000">()
{</font></b><font color="#0000ff">
const</font><font color="#0000ff"> int</font> testDataSize<b><font color="#000000"> =</font></b><font color="#000000"> 14</font><b><font color="#000000">;</font></b><font color="#0000ff">

int</font> testData<b><font color="#000000">[</font></b>testDataSize<b><font color="#000000">][</font></b><font color="#000000">4</font><b><font color="#000000">] = {
	{</font></b><font color="#000000">9</font><b><font color="#000000">,</font></b><font color="#000000"> 9</font><b><font color="#000000">,</font></b><font color="#000000"> 9</font><b><font color="#000000">,</font></b> EQUILATERAL<b><font color="#000000">},
	{</font></b><font color="#000000">4</font><b><font color="#000000">,</font></b><font color="#000000"> 5</font><b><font color="#000000">,</font></b><font color="#000000"> 5</font><b><font color="#000000">,</font></b> ISOSCELES<b><font color="#000000">},
	{</font></b><font color="#000000">5</font><b><font color="#000000">,</font></b><font color="#000000"> 4</font><b><font color="#000000">,</font></b><font color="#000000"> 5</font><b><font color="#000000">,</font></b> ISOSCELES<b><font color="#000000">},
	{</font></b><font color="#000000">5</font><b><font color="#000000">,</font></b><font color="#000000"> 3</font><b><font color="#000000">,</font></b><font color="#000000"> 3</font><b><font color="#000000">,</font></b> ISOSCELES<b><font color="#000000">},
	{</font></b><font color="#000000">0</font><b><font color="#000000">,</font></b><font color="#000000"> 0</font><b><font color="#000000">,</font></b><font color="#000000"> 0</font><b><font color="#000000">,</font></b> ERROR<b><font color="#000000">},</font></b><i><font color="#009900"> // 0 number checks
</font></i><b><font color="#000000">	{</font></b><font color="#000000">0</font><b><font color="#000000">,</font></b><font color="#000000"> 1</font><b><font color="#000000">,</font></b><font color="#000000"> 2</font><b><font color="#000000">,</font></b> ERROR<b><font color="#000000">},
	{</font></b><font color="#000000">1</font><b><font color="#000000">,</font></b><font color="#000000"> 0</font><b><font color="#000000">,</font></b><font color="#000000"> 2</font><b><font color="#000000">,</font></b> ERROR<b><font color="#000000">},
	{</font></b><font color="#000000">1</font><b><font color="#000000">,</font></b><font color="#000000"> 2</font><b><font color="#000000">,</font></b><font color="#000000"> 0</font><b><font color="#000000">,</font></b> ERROR<b><font color="#000000">},
	{-</font></b><font color="#000000">1</font><b><font color="#000000">, -</font></b><font color="#000000">1</font><b><font color="#000000">, -</font></b><font color="#000000">1</font><b><font color="#000000">,</font></b> ERROR<b><font color="#000000">},</font></b><i><font color="#009900"> // negative number checks
</font></i><b><font color="#000000">	{-</font></b><font color="#000000">1</font><b><font color="#000000">,</font></b><font color="#000000"> 1</font><b><font color="#000000">,</font></b><font color="#000000"> 2</font><b><font color="#000000">,</font></b> ERROR<b><font color="#000000">},
	{</font></b><font color="#000000">1</font><b><font color="#000000">, -</font></b><font color="#000000">1</font><b><font color="#000000">,</font></b><font color="#000000"> 2</font><b><font color="#000000">,</font></b> ERROR<b><font color="#000000">},
	{</font></b><font color="#000000">1</font><b><font color="#000000">,</font></b><font color="#000000"> 2</font><b><font color="#000000">, -</font></b><font color="#000000">1</font><b><font color="#000000">,</font></b> ERROR<b><font color="#000000">},
	{</font></b><font color="#000000">2</font><b><font color="#000000">,</font></b><font color="#000000"> 2</font><b><font color="#000000">,</font></b><font color="#000000"> 4</font><b><font color="#000000">,</font></b> ERROR<b><font color="#000000">},</font></b><i><font color="#009900"> // line segment not a triangle
</font></i><b><font color="#000000">	{</font></b><font color="#000000">1</font><b><font color="#000000">,</font></b><font color="#000000"> 1</font><b><font color="#000000">,</font></b><font color="#000000"> 5</font><b><font color="#000000">,</font></b> ERROR<b><font color="#000000">}</font></b><i><font color="#009900"> // not a triangle
</font></i><b><font color="#000000">};</font></b><font color="#0000ff">

for</font><b><font color="#000000"> (</font></b><font color="#0000ff">int</font> i<b><font color="#000000">=</font></b><font color="#000000">0</font><b><font color="#000000">;</font></b> i<b><font color="#000000">&lt;</font></b>testDataSize<b><font color="#000000">; ++</font></b>i<b><font color="#000000">)
{</font></b><font color="#0000ff">
	int</font> result<b><font color="#000000"> =</font></b> TriangleType<b><font color="#000000">(</font></b>
		testData<b><font color="#000000">[</font></b>i<b><font color="#000000">][</font></b><font color="#000000">0</font><b><font color="#000000">],</font></b> testData<b><font color="#000000">[</font></b>i<b><font color="#000000">][</font></b><font color="#000000">1</font><b><font color="#000000">],</font></b> testData<b><font color="#000000">[</font></b>i<b><font color="#000000">][</font></b><font color="#000000">2</font><b><font color="#000000">]);</font></b><font color="#0000ff">
	if</font><b><font color="#000000"> (</font></b>result<b><font color="#000000"> ==</font></b> testData<b><font color="#000000">[</font></b>i<b><font color="#000000">][</font></b><font color="#000000">3</font><b><font color="#000000">])
	{</font></b>
		cout<b><font color="#000000"> &lt;&lt;</font></b><font color="#990000"> " Pass: triangleType("</font><b><font color="#000000">
			&lt;&lt;</font></b> testData<b><font color="#000000">[</font></b>i<b><font color="#000000">][</font></b><font color="#000000">0</font><b><font color="#000000">] &lt;&lt;</font></b><font color="#990000"> ", "</font><b><font color="#000000">
			&lt;&lt;</font></b> testData<b><font color="#000000">[</font></b>i<b><font color="#000000">][</font></b><font color="#000000">1</font><b><font color="#000000">] &lt;&lt;</font></b><font color="#990000"> ", "</font><b><font color="#000000">
			&lt;&lt;</font></b> testData<b><font color="#000000">[</font></b>i<b><font color="#000000">][</font></b><font color="#000000">2</font><b><font color="#000000">] &lt;&lt;</font></b><font color="#990000"> ")=="</font><b><font color="#000000"> &lt;&lt;</font></b> result<b><font color="#000000"> &lt;&lt;</font></b> endl<b><font color="#000000">;
	}</font></b><font color="#0000ff">
	else</font><b><font color="#000000">
	{</font></b>
		cout<b><font color="#000000"> &lt;&lt;</font></b><font color="#990000"> "!Fail: triangleType("</font><b><font color="#000000">
			&lt;&lt;</font></b> testData<b><font color="#000000">[</font></b>i<b><font color="#000000">][</font></b><font color="#000000">0</font><b><font color="#000000">] &lt;&lt;</font></b><font color="#990000"> ", "</font><b><font color="#000000">
			&lt;&lt;</font></b> testData<b><font color="#000000">[</font></b>i<b><font color="#000000">][</font></b><font color="#000000">1</font><b><font color="#000000">] &lt;&lt;</font></b><font color="#990000"> ", "</font><b><font color="#000000">
			&lt;&lt;</font></b> testData<b><font color="#000000">[</font></b>i<b><font color="#000000">][</font></b><font color="#000000">2</font><b><font color="#000000">] &lt;&lt;</font></b><font color="#990000"> ")=="</font><b><font color="#000000"> &lt;&lt;</font></b> result<b><font color="#000000">
			&lt;&lt;</font></b><font color="#990000"> " Expected: "</font><b><font color="#000000"> &lt;&lt;</font></b> testData<b><font color="#000000">[</font></b>i<b><font color="#000000">][</font></b><font color="#000000">3</font><b><font color="#000000">] &lt;&lt;</font></b> endl<b><font color="#000000">;
	}
}
}</font></b>
</pre>
<p></p><div class="aizatto_related_posts"><span class="aizatto_related_posts_header" >Related Posts</span><ul></ul></div><script src="http://feeds.feedburner.com/~s/reviewmylife?i=http://www.reviewmylife.co.uk/blog/2008/09/23/triangle-identification-c-solution-and-test-code/" type="text/javascript" charset="utf-8"></script>
<p><a href="http://feedads.g.doubleclick.net/~a/mayhJKOHwjKi6uIANR48FuIRzsc/0/da"><img src="http://feedads.g.doubleclick.net/~a/mayhJKOHwjKi6uIANR48FuIRzsc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/mayhJKOHwjKi6uIANR48FuIRzsc/1/da"><img src="http://feedads.g.doubleclick.net/~a/mayhJKOHwjKi6uIANR48FuIRzsc/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reviewmylife?a=3Iwr9uABzuI:87pX2KsUUwM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=3Iwr9uABzuI:87pX2KsUUwM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/reviewmylife?i=3Iwr9uABzuI:87pX2KsUUwM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=3Iwr9uABzuI:87pX2KsUUwM:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/reviewmylife?i=3Iwr9uABzuI:87pX2KsUUwM:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=3Iwr9uABzuI:87pX2KsUUwM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/reviewmylife?i=3Iwr9uABzuI:87pX2KsUUwM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=3Iwr9uABzuI:87pX2KsUUwM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=3Iwr9uABzuI:87pX2KsUUwM:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=3Iwr9uABzuI:87pX2KsUUwM:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reviewmylife/~4/3Iwr9uABzuI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.reviewmylife.co.uk/blog/2008/09/23/triangle-identification-c-solution-and-test-code/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.reviewmylife.co.uk/blog/2008/09/23/triangle-identification-c-solution-and-test-code/</feedburner:origLink></item>
		<item>
		<title>Reverse the words in a sentence - C++ solution and test code</title>
		<link>http://feedproxy.google.com/~r/reviewmylife/~3/TvRot71Ap-w/</link>
		<comments>http://www.reviewmylife.co.uk/blog/2008/09/16/reverse-the-words-in-a-sentence-c-solution-and-test-code/#comments</comments>
		<pubDate>Tue, 16 Sep 2008 06:21:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[C++]]></category>

		<category><![CDATA[code]]></category>

		<category><![CDATA[interview question]]></category>

		<category><![CDATA[reverse a string]]></category>

		<category><![CDATA[reverse string]]></category>

		<category><![CDATA[reverse words]]></category>

		<category><![CDATA[solution]]></category>

		<category><![CDATA[source]]></category>

		<category><![CDATA[source code]]></category>

		<category><![CDATA[test code]]></category>

		<guid isPermaLink="false">http://www.reviewmylife.co.uk/blog/?p=236</guid>
		<description><![CDATA[Here is a solution to the standard interview questions of reversing the letters in the words of a sentence. It is a more complex version of the even more common &#8220;reverse a string&#8221; question. I also include my test code.
There are two main parts to this. The first identifies where the word boundaries are. The [...]]]></description>
			<content:encoded><![CDATA[<p>Here is a solution to the standard interview questions of reversing the letters in the words of a sentence. It is a more complex version of the even more common &#8220;reverse a string&#8221; question. I also include my test code.</p>
<p>There are two main parts to this. The first identifies where the word boundaries are. The second reverses the letters between two positions in the array.</p>
<p>The wordStart and wordEnd variables keep track of the word boundaries. We first look for the start of the word and then the end and store the positions. These values are then passed to ReverseWord along with the character array. ReverseWord does some simple character swapping to reverse the word.</p>
<pre>
<font color="#0000ff">void</font> ReverseWords<b><font color="#000000">(</font></b><font color="#0000ff">char</font> string<b><font color="#000000">[])
{</font></b><font color="#0000ff">
	int</font> length<b><font color="#000000"> =</font></b> StringLength<b><font color="#000000">(</font></b>string<b><font color="#000000">);</font></b><font color="#0000ff">
	int</font> wordStart<b><font color="#000000"> = -</font></b><font color="#000000">1</font><b><font color="#000000">;</font></b><font color="#0000ff">
	int</font> wordEnd<b><font color="#000000"> = -</font></b><font color="#000000">1</font><b><font color="#000000">;</font></b><font color="#0000ff">
	for</font><b><font color="#000000"> (</font></b><font color="#0000ff">int</font> i<b><font color="#000000">=</font></b><font color="#000000">0</font><b><font color="#000000">;</font></b> i<b><font color="#000000">&lt;</font></b>length<b><font color="#000000">; ++</font></b>i<b><font color="#000000">)
	{</font></b><font color="#0000ff">
		if</font><b><font color="#000000"> (</font></b>string<b><font color="#000000">[</font></b>i<b><font color="#000000">] ==</font></b><font color="#990000"> ' '</font><b><font color="#000000"> &amp;&amp;</font></b> wordStart<b><font color="#000000"> == -</font></b><font color="#000000">1</font><b><font color="#000000">)
		{</font></b><font color="#0000ff">
			continue</font><b><font color="#000000">;
		}</font></b><font color="#0000ff">
		else if</font><b><font color="#000000"> (</font></b>wordStart<b><font color="#000000"> == -</font></b><font color="#000000">1</font><b><font color="#000000">)
		{</font></b>
			wordStart<b><font color="#000000"> =</font></b> i<b><font color="#000000">;
		}</font></b><font color="#0000ff">
		if</font><b><font color="#000000"> (</font></b>wordStart<b><font color="#000000"> != -</font></b><font color="#000000">1</font><b><font color="#000000"> &amp;&amp;</font></b> string<b><font color="#000000">[</font></b>i<b><font color="#000000">] ==</font></b><font color="#990000"> ' '</font><b><font color="#000000">)
		{</font></b>
			wordEnd<b><font color="#000000"> =</font></b> i<b><font color="#000000">-</font></b><font color="#000000">1</font><b><font color="#000000">;</font></b>
			ReverseWord<b><font color="#000000">(</font></b>string<b><font color="#000000">,</font></b> wordStart<b><font color="#000000">,</font></b> wordEnd<b><font color="#000000">);</font></b>
			wordStart<b><font color="#000000"> = -</font></b><font color="#000000">1</font><b><font color="#000000">;</font></b>
			wordEnd<b><font color="#000000"> = -</font></b><font color="#000000">1</font><b><font color="#000000">;
		}
	}</font></b><font color="#0000ff">
	if</font><b><font color="#000000"> (</font></b>wordStart<b><font color="#000000"> != -</font></b><font color="#000000">1</font><b><font color="#000000">)
	{</font></b>
		wordEnd<b><font color="#000000"> =</font></b> length<b><font color="#000000">-</font></b><font color="#000000">1</font><b><font color="#000000">;</font></b>
		ReverseWord<b><font color="#000000">(</font></b>string<b><font color="#000000">,</font></b> wordStart<b><font color="#000000">,</font></b> wordEnd<b><font color="#000000">);
	}
}</font></b><font color="#0000ff">

void</font> ReverseWord<b><font color="#000000">(</font></b><font color="#0000ff">char</font> string<b><font color="#000000">[],</font></b><font color="#0000ff"> int</font> wordStart<b><font color="#000000">,</font></b><font color="#0000ff"> int</font> wordEnd<b><font color="#000000">)
{</font></b><font color="#0000ff">
	int</font> midPoint<b><font color="#000000"> = (</font></b>wordStart<b><font color="#000000">+</font></b>wordEnd<b><font color="#000000">)/</font></b><font color="#000000">2</font><b><font color="#000000">;</font></b><font color="#0000ff">
	for</font><b><font color="#000000"> (</font></b><font color="#0000ff">int</font> l<b><font color="#000000">=</font></b>wordStart<b><font color="#000000">,</font></b> r<b><font color="#000000">=</font></b>wordEnd<b><font color="#000000">;</font></b> l<b><font color="#000000">&lt;=</font></b>midPoint<b><font color="#000000">; ++</font></b>l<b><font color="#000000">, --</font></b>r<b><font color="#000000">)
	{</font></b><font color="#0000ff">
		char</font> tmp<b><font color="#000000"> =</font></b> string<b><font color="#000000">[</font></b>l<b><font color="#000000">];</font></b>
		string<b><font color="#000000">[</font></b>l<b><font color="#000000">] =</font></b> string<b><font color="#000000">[</font></b>r<b><font color="#000000">];</font></b>
		string<b><font color="#000000">[</font></b>r<b><font color="#000000">] =</font></b> tmp<b><font color="#000000">;
	}
}</font></b>
</pre>
<p>Here is the test code. For each test a character array is passed to the word reversing function. The result is then compared against the expected result. If they match the test passes. If they don&#8217;t match then the test fails. I&#8217;ve tried to test the obvious cases. You could easily find flaws in the word reversal function but it is probably good enough to get you onto the next question.</p>
<pre>
<font color="#0000ff">void</font> ReverseWordsTest<b><font color="#000000">()
{</font></b><font color="#0000ff">
	char</font> test1<b><font color="#000000">[] =</font></b><font color="#990000"> "cat and dog"</font><b><font color="#000000">;</font></b><font color="#0000ff">
	char</font> expected1<b><font color="#000000">[] =</font></b><font color="#990000"> "tac dna god"</font><b><font color="#000000">;</font></b>
	ReverseAndCheck<b><font color="#000000">(</font></b>test1<b><font color="#000000">,</font></b> expected1<b><font color="#000000">);</font></b><font color="#0000ff">

	char</font> test2<b><font color="#000000">[] =</font></b><font color="#990000"> "cat and dog "</font><b><font color="#000000">;</font></b><font color="#0000ff">
	char</font> expected2<b><font color="#000000">[] =</font></b><font color="#990000"> "tac dna god "</font><b><font color="#000000">;</font></b>
	ReverseAndCheck<b><font color="#000000">(</font></b>test2<b><font color="#000000">,</font></b> expected2<b><font color="#000000">);</font></b><font color="#0000ff">

	char</font> test3<b><font color="#000000">[] =</font></b><font color="#990000"> " cat and dog"</font><b><font color="#000000">;</font></b><font color="#0000ff">
	char</font> expected3<b><font color="#000000">[] =</font></b><font color="#990000"> " tac dna god"</font><b><font color="#000000">;</font></b>
	ReverseAndCheck<b><font color="#000000">(</font></b>test3<b><font color="#000000">,</font></b> expected3<b><font color="#000000">);</font></b><font color="#0000ff">

	char</font> test4<b><font color="#000000">[] =</font></b><font color="#990000"> " cat and dog "</font><b><font color="#000000">;</font></b><font color="#0000ff">
	char</font> expected4<b><font color="#000000">[] =</font></b><font color="#990000"> " tac dna god "</font><b><font color="#000000">;</font></b>
	ReverseAndCheck<b><font color="#000000">(</font></b>test4<b><font color="#000000">,</font></b> expected4<b><font color="#000000">);</font></b><font color="#0000ff">

	char</font> test5<b><font color="#000000">[] =</font></b><font color="#990000"> "cat  and dog"</font><b><font color="#000000">;</font></b><font color="#0000ff">
	char</font> expected5<b><font color="#000000">[] =</font></b><font color="#990000"> "tac  dna god"</font><b><font color="#000000">;</font></b>
	ReverseAndCheck<b><font color="#000000">(</font></b>test5<b><font color="#000000">,</font></b> expected5<b><font color="#000000">);</font></b><font color="#0000ff">

	char</font> test6<b><font color="#000000">[] =</font></b><font color="#990000"> "catanddog"</font><b><font color="#000000">;</font></b><font color="#0000ff">
	char</font> expected6<b><font color="#000000">[] =</font></b><font color="#990000"> "goddnatac"</font><b><font color="#000000">;</font></b>
	ReverseAndCheck<b><font color="#000000">(</font></b>test6<b><font color="#000000">,</font></b> expected6<b><font color="#000000">);</font></b><font color="#0000ff">

	char</font> test7<b><font color="#000000">[] =</font></b><font color="#990000"> ""</font><b><font color="#000000">;</font></b><font color="#0000ff">
	char</font> expected7<b><font color="#000000">[] =</font></b><font color="#990000"> ""</font><b><font color="#000000">;</font></b>
	ReverseAndCheck<b><font color="#000000">(</font></b>test7<b><font color="#000000">,</font></b> expected7<b><font color="#000000">);
}</font></b><font color="#0000ff">

void</font> ReverseAndCheck<b><font color="#000000">(</font></b><font color="#0000ff">char</font> string<b><font color="#000000">[],</font></b><font color="#0000ff"> char</font> expected<b><font color="#000000">[])
{</font></b>
	ReverseWords<b><font color="#000000">(</font></b>string<b><font color="#000000">);</font></b><font color="#0000ff">
	if</font><b><font color="#000000"> (</font></b>MatchingStrings<b><font color="#000000">(</font></b>string<b><font color="#000000">,</font></b> expected<b><font color="#000000">))
	{</font></b>
	cout<b><font color="#000000"> &lt;&lt;</font></b><font color="#990000"> " Pass: "</font><b><font color="#000000"> &lt;&lt;</font></b> string<b><font color="#000000"> &lt;&lt;</font></b> endl<b><font color="#000000">;
	}</font></b><font color="#0000ff">
	else</font><b><font color="#000000">
	{</font></b>
	cout<b><font color="#000000"> &lt;&lt;</font></b><font color="#990000"> "!Fail: "</font><b><font color="#000000"> &lt;&lt;</font></b> string<b><font color="#000000"> &lt;&lt;</font></b><font color="#990000"> " != "</font><b><font color="#000000"> &lt;&lt;</font></b> expected<b><font color="#000000"> &lt;&lt;</font></b> endl<b><font color="#000000">;
	}
}</font></b><font color="#0000ff">

bool</font> MatchingStrings<b><font color="#000000">(</font></b><font color="#0000ff">char</font> string1<b><font color="#000000">[],</font></b><font color="#0000ff"> char</font> string2<b><font color="#000000">[])
{</font></b><font color="#0000ff">
	int</font> length<b><font color="#000000"> =</font></b> StringLength<b><font color="#000000">(</font></b>string1<b><font color="#000000">);</font></b><font color="#0000ff">
	if</font><b><font color="#000000"> (</font></b>length<b><font color="#000000"> !=</font></b> StringLength<b><font color="#000000">(</font></b>string2<b><font color="#000000">))
	{</font></b><font color="#0000ff">
		return</font><b><font color="#000000"> false</font></b><b><font color="#000000">;
	}</font></b><font color="#0000ff">

	for</font><b><font color="#000000"> (</font></b><font color="#0000ff">int</font> i<b><font color="#000000">=</font></b><font color="#000000">0</font><b><font color="#000000">;</font></b> i<b><font color="#000000">&lt;</font></b>length<b><font color="#000000">; ++</font></b>i<b><font color="#000000">)
	{</font></b><font color="#0000ff">
		if</font><b><font color="#000000"> (</font></b>string1<b><font color="#000000">[</font></b>i<b><font color="#000000">] !=</font></b> string2<b><font color="#000000">[</font></b>i<b><font color="#000000">])
		{</font></b><font color="#0000ff">
			return</font><b><font color="#000000"> false</font></b><b><font color="#000000">;
		}
	}</font></b><font color="#0000ff">

	return</font><b><font color="#000000"> true</font></b><b><font color="#000000">;
}</font></b><font color="#0000ff">

int</font> StringLength<b><font color="#000000">(</font></b><font color="#0000ff">char</font> string<b><font color="#000000">[])
{</font></b><font color="#0000ff">
	int</font> index<b><font color="#000000"> =</font></b><font color="#000000"> 0</font><b><font color="#000000">;</font></b><font color="#0000ff">
	char</font> s<b><font color="#000000"> =</font></b> string<b><font color="#000000">[</font></b>index<b><font color="#000000">];</font></b><font color="#0000ff">
	while</font><b><font color="#000000"> (</font></b>s<b><font color="#000000">)
	{
		++</font></b>index<b><font color="#000000">;</font></b>
		s<b><font color="#000000"> =</font></b> string<b><font color="#000000">[</font></b>index<b><font color="#000000">];
	}</font></b><font color="#0000ff">
	return</font> index<b><font color="#000000">;
}</font></b>
</pre>
<p></p><div class="aizatto_related_posts"><span class="aizatto_related_posts_header" >Related Posts</span><ul></ul></div><script src="http://feeds.feedburner.com/~s/reviewmylife?i=http://www.reviewmylife.co.uk/blog/2008/09/16/reverse-the-words-in-a-sentence-c-solution-and-test-code/" type="text/javascript" charset="utf-8"></script>
<p><a href="http://feedads.g.doubleclick.net/~a/K5DN7Xm0cnXzuiCFnV5eEEDtQ-4/0/da"><img src="http://feedads.g.doubleclick.net/~a/K5DN7Xm0cnXzuiCFnV5eEEDtQ-4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/K5DN7Xm0cnXzuiCFnV5eEEDtQ-4/1/da"><img src="http://feedads.g.doubleclick.net/~a/K5DN7Xm0cnXzuiCFnV5eEEDtQ-4/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reviewmylife?a=TvRot71Ap-w:SJn7R2BkDqU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=TvRot71Ap-w:SJn7R2BkDqU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/reviewmylife?i=TvRot71Ap-w:SJn7R2BkDqU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=TvRot71Ap-w:SJn7R2BkDqU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/reviewmylife?i=TvRot71Ap-w:SJn7R2BkDqU:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=TvRot71Ap-w:SJn7R2BkDqU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/reviewmylife?i=TvRot71Ap-w:SJn7R2BkDqU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=TvRot71Ap-w:SJn7R2BkDqU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=TvRot71Ap-w:SJn7R2BkDqU:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=TvRot71Ap-w:SJn7R2BkDqU:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reviewmylife/~4/TvRot71Ap-w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.reviewmylife.co.uk/blog/2008/09/16/reverse-the-words-in-a-sentence-c-solution-and-test-code/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.reviewmylife.co.uk/blog/2008/09/16/reverse-the-words-in-a-sentence-c-solution-and-test-code/</feedburner:origLink></item>
		<item>
		<title>2008 - 2009 UK Tax Graphs</title>
		<link>http://feedproxy.google.com/~r/reviewmylife/~3/jYCRzSndLOo/</link>
		<comments>http://www.reviewmylife.co.uk/blog/2008/09/01/2008-2009-uk-tax-graphs/#comments</comments>
		<pubDate>Mon, 01 Sep 2008 12:20:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Money]]></category>

		<category><![CDATA[2008-2009]]></category>

		<category><![CDATA[Excel]]></category>

		<category><![CDATA[graph]]></category>

		<category><![CDATA[graphing]]></category>

		<category><![CDATA[income tax]]></category>

		<category><![CDATA[national insurance]]></category>

		<category><![CDATA[ni]]></category>

		<category><![CDATA[NICs]]></category>

		<category><![CDATA[tax]]></category>

		<category><![CDATA[tax band]]></category>

		<category><![CDATA[uk tax]]></category>

		<guid isPermaLink="false">http://www.reviewmylife.co.uk/blog/?p=302</guid>
		<description><![CDATA[I&#8217;ve produced some graphs using data about the 2008 - 2009 UK tax situation.
I&#8217;ve tried to make them accurate but beware that I&#8217;m not a tax expert so there could well be errors. They have been created for interest only, not for serious use.
The first graph is showing how much income tax you pay depending [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve produced some graphs using data about the 2008 - 2009 UK tax situation.</p>
<p>I&#8217;ve tried to make them accurate but beware that I&#8217;m not a tax expert so there could well be errors. They have been created for interest only, not for serious use.</p>
<p>The first graph is showing how much income tax you pay depending on how much you earn. This graph is based on the standard un-adjusted tax free allowance of £6305, a 20% band for the next £34800 and 40% after that.</p>
<p><img src="http://www.reviewmylife.co.uk/data/2008/0901/income-tax-08-09.gif" border="0" width="410" height="291" alt="income tax 08 09" /></p>
<p>Next is a similar graph but for national insurance contribution. I&#8217;ve used £105 per week as being free from NICs, 11% for £105-£770 per week and 1% after that.</p>
<p><img src="http://www.reviewmylife.co.uk/data/2008/0901/national-insurance-08-09.gif" border="0" width="404" height="301" alt="national insurance 08 09" /></p>
<p>The third graph combines the total of the two to show the total taxation.</p>
<p><img src="http://www.reviewmylife.co.uk/data/2008/0901/total-tax-08-09.gif" border="0" width="408" height="281" alt="total tax 08 09" /></p>
<p>The final graph shows what percentage of your gross income you pay as tax. The interesting shape is caused by the National Insurance contributions changing to 1% before the 40% tax band kicks in.</p>
<p><img src="http://www.reviewmylife.co.uk/data/2008/0901/percentage-of-income-as-tax-08-09.gif" border="0" width="408" height="293" alt="percentage of income as tax 08 09" /></p>
<p>You may spot that when your salary reaches just over £40k the percentage of salary that you pay in tax actually goes down by a very small amount before going back up again.</p>
<p></p><div class="aizatto_related_posts"><span class="aizatto_related_posts_header" >Related Posts</span><ul></ul></div><script src="http://feeds.feedburner.com/~s/reviewmylife?i=http://www.reviewmylife.co.uk/blog/2008/09/01/2008-2009-uk-tax-graphs/" type="text/javascript" charset="utf-8"></script>
<p><a href="http://feedads.g.doubleclick.net/~a/6kycYQ61dkT75iQNSN1hMUYtfdg/0/da"><img src="http://feedads.g.doubleclick.net/~a/6kycYQ61dkT75iQNSN1hMUYtfdg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/6kycYQ61dkT75iQNSN1hMUYtfdg/1/da"><img src="http://feedads.g.doubleclick.net/~a/6kycYQ61dkT75iQNSN1hMUYtfdg/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reviewmylife?a=jYCRzSndLOo:uw8Clmlt0uw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=jYCRzSndLOo:uw8Clmlt0uw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/reviewmylife?i=jYCRzSndLOo:uw8Clmlt0uw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=jYCRzSndLOo:uw8Clmlt0uw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/reviewmylife?i=jYCRzSndLOo:uw8Clmlt0uw:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=jYCRzSndLOo:uw8Clmlt0uw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/reviewmylife?i=jYCRzSndLOo:uw8Clmlt0uw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=jYCRzSndLOo:uw8Clmlt0uw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=jYCRzSndLOo:uw8Clmlt0uw:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=jYCRzSndLOo:uw8Clmlt0uw:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reviewmylife/~4/jYCRzSndLOo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.reviewmylife.co.uk/blog/2008/09/01/2008-2009-uk-tax-graphs/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.reviewmylife.co.uk/blog/2008/09/01/2008-2009-uk-tax-graphs/</feedburner:origLink></item>
		<item>
		<title>2009 One Page Excel Calendar</title>
		<link>http://feedproxy.google.com/~r/reviewmylife/~3/THUpb0x98yI/</link>
		<comments>http://www.reviewmylife.co.uk/blog/2008/08/29/2009-one-page-excel-calendar/#comments</comments>
		<pubDate>Fri, 29 Aug 2008 09:48:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Computing]]></category>

		<category><![CDATA[2009 calendar]]></category>

		<category><![CDATA[2009 excel calendar]]></category>

		<category><![CDATA[2009 planner]]></category>

		<category><![CDATA[calendar]]></category>

		<category><![CDATA[Excel]]></category>

		<category><![CDATA[one page calendar]]></category>

		<category><![CDATA[planner]]></category>

		<category><![CDATA[yearly]]></category>

		<guid isPermaLink="false">http://www.reviewmylife.co.uk/blog/?p=293</guid>
		<description><![CDATA[Following on from my 2008 Excel one page calendar I&#8217;ve produced a new yearly calendar for 2009.

This time I&#8217;ve done a blank one with just the days / months marked out, and one with the UK bank holidays highlighted.
2009 Excel calendar - blank (7kb)
2009 Excel calendar - with UK Bank Holidays highlighted (7kb)
Like before you [...]]]></description>
			<content:encoded><![CDATA[<p>Following on from my <a href="http://www.reviewmylife.co.uk/blog/2008/01/03/2008-excel-one-page-calendar/">2008 Excel one page calendar</a> I&#8217;ve produced a new yearly calendar for 2009.</p>
<p><img src="http://www.reviewmylife.co.uk/data/2008/0826/2009-excel-calendar.gif" width="420" height="188" alt="2009 Excel one page calendar"></p>
<p>This time I&#8217;ve done a blank one with just the days / months marked out, and one with the UK bank holidays highlighted.</p>
<p><a href="http://www.reviewmylife.co.uk/data/2008/0826/Calendar2009.zip">2009 Excel calendar</a> - blank (7kb)<br />
<a href="http://www.reviewmylife.co.uk/data/2008/0826/Calendar2009-UK-Bank-Holidays.zip">2009 Excel calendar</a> - with UK Bank Holidays highlighted (7kb)</p>
<p>Like before you should be able to get it to fit on your computer screen without any scrolling - you may need to adjust the box sizes, or zoom level depending on the resolution of your monitor.</p>
<p></p><div class="aizatto_related_posts"><span class="aizatto_related_posts_header" >Related Posts</span><ul></ul></div><script src="http://feeds.feedburner.com/~s/reviewmylife?i=http://www.reviewmylife.co.uk/blog/2008/08/29/2009-one-page-excel-calendar/" type="text/javascript" charset="utf-8"></script>
<p><a href="http://feedads.g.doubleclick.net/~a/7soEgml_sZY-eIEGYFxjx1A2vD4/0/da"><img src="http://feedads.g.doubleclick.net/~a/7soEgml_sZY-eIEGYFxjx1A2vD4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/7soEgml_sZY-eIEGYFxjx1A2vD4/1/da"><img src="http://feedads.g.doubleclick.net/~a/7soEgml_sZY-eIEGYFxjx1A2vD4/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reviewmylife?a=THUpb0x98yI:CHC1CPPKwB0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=THUpb0x98yI:CHC1CPPKwB0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/reviewmylife?i=THUpb0x98yI:CHC1CPPKwB0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=THUpb0x98yI:CHC1CPPKwB0:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/reviewmylife?i=THUpb0x98yI:CHC1CPPKwB0:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=THUpb0x98yI:CHC1CPPKwB0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/reviewmylife?i=THUpb0x98yI:CHC1CPPKwB0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=THUpb0x98yI:CHC1CPPKwB0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=THUpb0x98yI:CHC1CPPKwB0:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reviewmylife?a=THUpb0x98yI:CHC1CPPKwB0:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/reviewmylife?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reviewmylife/~4/THUpb0x98yI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.reviewmylife.co.uk/blog/2008/08/29/2009-one-page-excel-calendar/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.reviewmylife.co.uk/blog/2008/08/29/2009-one-page-excel-calendar/</feedburner:origLink></item>
	</channel>
</rss>
