<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Marcus Povey &#187; Software</title>
	<atom:link href="http://www.marcus-povey.co.uk/category/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.marcus-povey.co.uk</link>
	<description>Making the world a better place, one byte at a time...</description>
	<lastBuildDate>Mon, 06 Feb 2012 19:13:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.1</generator>
	<atom:link rel='hub' href='http://www.marcus-povey.co.uk/?pushpress=hub'/>
		<item>
		<title>Elgg Multisite moves to GitHub</title>
		<link>http://www.marcus-povey.co.uk/2012/02/06/elgg-multisite-moves-to-github/</link>
		<comments>http://www.marcus-povey.co.uk/2012/02/06/elgg-multisite-moves-to-github/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 15:32:59 +0000</pubDate>
		<dc:creator>Marcus Povey</dc:creator>
				<category><![CDATA[elgg]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[elgg 1.8]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[multisite]]></category>

		<guid isPermaLink="false">http://www.marcus-povey.co.uk/?p=940</guid>
		<description><![CDATA[Many moons ago I wrote an extension to Elgg which allows you to run multiple Elgg sites off of a single install of the codebase. Following some feedback from the wider world, as well as Elgg&#8217;s decision some time ago to move over to github I&#8217;ve tidied up the archive and moved it over to [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.marcus-povey.co.uk/wp-content/elggt.jpg" alt="" align="right" /><a href="http://www.marcus-povey.co.uk/2010/04/19/multiple-site-support-elgg/">Many moons ago I wrote an extension</a> to <a href="http://elgg.org">Elgg</a> which allows you to run multiple Elgg sites off of a single install of the codebase.</p>
<p>Following some feedback from the wider world, as well as Elgg&#8217;s decision some time ago to move over to <a href="https://github.com/elgg">github</a> I&#8217;ve tidied up the archive and <a href="https://github.com/mapkyca/Elgg-Multisite">moved it over to github as well</a>.</p>
<p>I have taken the opportunity to perform a provisional migration to support Elgg 1.8, although there are bound to be some outstanding issues. Hopefully this github archive will make collaboration a little bit easier!</p>
<p>Have a play!</p>
<p>&raquo; <a href="https://github.com/mapkyca/Elgg-Multisite">Github Project Page</a></p>
<div class="wsbuttons">
	<div class="shareblob facebook">
		<div class="fb-like" data-href="http://www.marcus-povey.co.uk/2012/02/06/elgg-multisite-moves-to-github/" data-send="false" data-layout="box_count" data-width="60" data-show-faces="false" data-colorscheme="light"></div>
	</div>

	<div class="shareblob google">
		<div class="g-plusone" data-size="tall" data-href="http://www.marcus-povey.co.uk/2012/02/06/elgg-multisite-moves-to-github/"></div>
	</div>

	<div class="shareblob twitter">
		<div class="twitter">
			<a href="https://twitter.com/share?url=http%3A%2F%2Fwww.marcus-povey.co.uk%2F2012%2F02%2F06%2Felgg-multisite-moves-to-github%2F&count=vertical" class="twitter-share-button" data-lang="en">Tweet</a>
			<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
		</div>
	</div>

</div>
	]]></content:encoded>
			<wfw:commentRss>http://www.marcus-povey.co.uk/2012/02/06/elgg-multisite-moves-to-github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stop giving me little bits of paper!</title>
		<link>http://www.marcus-povey.co.uk/2012/01/27/stop-giving-me-little-bits-of-paper/</link>
		<comments>http://www.marcus-povey.co.uk/2012/01/27/stop-giving-me-little-bits-of-paper/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 15:45:26 +0000</pubDate>
		<dc:creator>Marcus Povey</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[credit]]></category>
		<category><![CDATA[debit]]></category>
		<category><![CDATA[mastercard]]></category>
		<category><![CDATA[pdq]]></category>
		<category><![CDATA[pos]]></category>
		<category><![CDATA[receipt]]></category>
		<category><![CDATA[till]]></category>
		<category><![CDATA[visa]]></category>

		<guid isPermaLink="false">http://www.marcus-povey.co.uk/?p=925</guid>
		<description><![CDATA[Every time I go shopping I end up with a pocket full of till receipts. Aside from the few things I buy offline which are business related (as an IT consultant most physical things I buy are bought off the internet) these receipts invariably end up in the bin. What a waste of paper. Given [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/smaku/2854571429/"><img src="http://farm4.staticflickr.com/3009/2854571429_d86f05500b_m.jpg" align="right" width="200"></a>Every time I go shopping I end up with a pocket full of till receipts.</p>
<p>Aside from the few things I buy offline which are business related (as an IT consultant most physical things I buy are bought off the internet) these receipts invariably end up in the bin.</p>
<p>What a waste of paper.</p>
<p>Given that now, in the UK at least, we are largely a cashless society &#8211; how hard would it be for these receipts to simply be emailed?</p>
<p>When you sign up for a credit card you could optionally give an email address to which to send the receipts. For individuals this could be your home email address (but of course doesn&#8217;t have to be), and for business accounts this could be the address of your accountant &#8211; bam, no more hunting down lost till stubs on tax day!</p>
<p>For simple PDQ machines the receipt could be emailed by your card company so there won&#8217;t be anything extra to do. All that would be required is to suppress the printing of the customer copy and a little bit of education.</p>
<p>Itemised receipts like the ones you get at Tescos would require a little more work as it&#8217;d be the store&#8217;s back end process that would do the actual mailing. The email address itself however can easily be stored on the card&#8217;s chip and saved along with the receipt in the shop&#8217;s back end system for later mailing.</p>
<p>Apple, typically ahead of the curve (not unsurprising given their industry) do this already, but this requires an in store registration process &#8211; impractical for anything other than purchasing the occasional big ticket item.</p>
<p>Its now 2012 &#8211; why do I still have pockets full of useless bits of paper?</p>
<p>Just a thought.</p>
<p><small><em>Image &#8220;<a href="http://www.flickr.com/photos/smaku/2854571429/">Receipts galore</a>&#8221; by <a href="http://www.flickr.com/photos/smaku/">Smaku</a></em></small></p>
<div class="wsbuttons">
	<div class="shareblob facebook">
		<div class="fb-like" data-href="http://www.marcus-povey.co.uk/2012/01/27/stop-giving-me-little-bits-of-paper/" data-send="false" data-layout="box_count" data-width="60" data-show-faces="false" data-colorscheme="light"></div>
	</div>

	<div class="shareblob google">
		<div class="g-plusone" data-size="tall" data-href="http://www.marcus-povey.co.uk/2012/01/27/stop-giving-me-little-bits-of-paper/"></div>
	</div>

	<div class="shareblob twitter">
		<div class="twitter">
			<a href="https://twitter.com/share?url=http%3A%2F%2Fwww.marcus-povey.co.uk%2F2012%2F01%2F27%2Fstop-giving-me-little-bits-of-paper%2F&count=vertical" class="twitter-share-button" data-lang="en">Tweet</a>
			<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
		</div>
	</div>

</div>
	]]></content:encoded>
			<wfw:commentRss>http://www.marcus-povey.co.uk/2012/01/27/stop-giving-me-little-bits-of-paper/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Life hack: Connecting @ifttt to @rememberthemilk</title>
		<link>http://www.marcus-povey.co.uk/2012/01/19/life-hack-connecting-ifttt-to-remember-the-milk/</link>
		<comments>http://www.marcus-povey.co.uk/2012/01/19/life-hack-connecting-ifttt-to-remember-the-milk/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 16:34:56 +0000</pubDate>
		<dc:creator>Marcus Povey</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[ifttt]]></category>
		<category><![CDATA[lifehack]]></category>
		<category><![CDATA[remember the milk]]></category>
		<category><![CDATA[rtm]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.marcus-povey.co.uk/?p=956</guid>
		<description><![CDATA[For a little while now I have been using the online todo list Remember The Milk to keep track of the numerous disparate tasks and projects I&#8217;ve got going on at any one time. Using lists, tags and smart searches I&#8217;ve managed to not only never lose track of a task. I estimate this has [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.marcus-povey.co.uk/wp-content/ifttt-logo.png" align="right" />For a little while now I have been using the online todo list <a href="http://www.rememberthemilk.com">Remember The Milk</a> to keep track of the numerous disparate tasks and projects I&#8217;ve got going on at any one time. </p>
<p>Using lists, tags and smart searches I&#8217;ve managed to not only never lose track of a task. I estimate this has made me about a billion times more efficient, and has reduced stress levels a thousand fold. </p>
<p>Additionally, I use the new and <a href="http://ifttt.com">increasingly indispensable ifttt beta</a> to automate a bunch of tasks around the internet; e.g. to grab a copy of Facebook pictures I get tagged in, <a href="http://www.marcus-povey.co.uk/2011/12/08/idea-lets-give-roads-junctions-and-intersections-urls/">send me an SMS when the there&#8217;s a problem on my girlfriend&#8217;s route to work</a>, etc.</p>
<p>Every so often something happens on the internet and, rather than undertaking a specific action, you want to be prompted to undertake some appropriate action. Wouldn&#8217;t it be sweet if when these things happened you could have a virtual PA drop a note on your daily todo list?</p>
<p><strong>Twitter to the rescue!</strong></p>
<p>Sadly, Ifttt doesn&#8217;t have a Remember the milk channel (yet) but, like many web apps, Remember the milk has a <a href="http://twitter.com/rtm">twitter bot</a>. If you add this bot as a friend and <a href="https://www.rememberthemilk.com/services/twitter/">associate your RTM account with your twitter account</a> you are able to add things to your task list by sending the bot a direct message.</p>
<p>Ifttt has a twitter task, so all you need to do to add something to your task list when an action is triggered is begin the twitter message with &#8220;d rtm&#8221;, e.g.</p>
<blockquote><p>d rtm Write about Latakoo&#8217;s latest blog ^today #work</p></blockquote>
<p>You can use RTM markup in your message to control what list it goes to, set due dates etc.</p>
<p>My standard use case is to prompt me to write a blog post in response to a client updating their blog, or to tell me cover my car&#8217;s windscreen when it&#8217;s forecast to snow the next day. I&#8217;m sure there&#8217;s much more you can do with it!</p>
<div class="wsbuttons">
	<div class="shareblob facebook">
		<div class="fb-like" data-href="http://www.marcus-povey.co.uk/2012/01/19/life-hack-connecting-ifttt-to-remember-the-milk/" data-send="false" data-layout="box_count" data-width="60" data-show-faces="false" data-colorscheme="light"></div>
	</div>

	<div class="shareblob google">
		<div class="g-plusone" data-size="tall" data-href="http://www.marcus-povey.co.uk/2012/01/19/life-hack-connecting-ifttt-to-remember-the-milk/"></div>
	</div>

	<div class="shareblob twitter">
		<div class="twitter">
			<a href="https://twitter.com/share?url=http%3A%2F%2Fwww.marcus-povey.co.uk%2F2012%2F01%2F19%2Flife-hack-connecting-ifttt-to-remember-the-milk%2F&count=vertical" class="twitter-share-button" data-lang="en">Tweet</a>
			<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
		</div>
	</div>

</div>
	]]></content:encoded>
			<wfw:commentRss>http://www.marcus-povey.co.uk/2012/01/19/life-hack-connecting-ifttt-to-remember-the-milk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing schedulabl.es</title>
		<link>http://www.marcus-povey.co.uk/2012/01/16/introducing-schedulabl-es/</link>
		<comments>http://www.marcus-povey.co.uk/2012/01/16/introducing-schedulabl-es/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 08:42:00 +0000</pubDate>
		<dc:creator>Marcus Povey</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[schedules]]></category>
		<category><![CDATA[share]]></category>
		<category><![CDATA[social]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[time]]></category>
		<category><![CDATA[timeshare]]></category>
		<category><![CDATA[tracking]]></category>

		<guid isPermaLink="false">http://www.marcus-povey.co.uk/?p=919</guid>
		<description><![CDATA[I&#8217;d like to take the opportunity to introduce a little project of mine I&#8217;m working on &#8211; schedulabl.es, a way to make time sharing simple. The blurb: You have something you want to share time on, perhaps a holiday home or a car. You want to manage who has access to it and when. Simple! [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://schedulabl.es" target="_blank"><img src="http://www.marcus-povey.co.uk/wp-content/schedulables_top.png" width="200" align="right" /></a>I&#8217;d like to take the opportunity to introduce a little project of mine I&#8217;m working on &#8211; <a href="http://schedulabl.es">schedulabl.es</a>, a way to make time sharing simple.</p>
<p>The blurb:</p>
<blockquote><p>
You have something you want to share time on, perhaps a holiday home or a car.</p>
<p>You want to manage who has access to it and when.</p>
<p><strong>Simple!</strong>
</p></blockquote>
<p>Using <a href="http://schedulabl.es">schedulabl.es</a> you can create a time share, send it with your friends and manage bookings both at your desk and on the move using your smart phone.</p>
<p>Hopefully this will be of use to you!</p>
<p>&raquo; <a href="http://schedulabl.es">Sign up for early access&#8230;</a></p>
<div class="wsbuttons">
	<div class="shareblob facebook">
		<div class="fb-like" data-href="http://www.marcus-povey.co.uk/2012/01/16/introducing-schedulabl-es/" data-send="false" data-layout="box_count" data-width="60" data-show-faces="false" data-colorscheme="light"></div>
	</div>

	<div class="shareblob google">
		<div class="g-plusone" data-size="tall" data-href="http://www.marcus-povey.co.uk/2012/01/16/introducing-schedulabl-es/"></div>
	</div>

	<div class="shareblob twitter">
		<div class="twitter">
			<a href="https://twitter.com/share?url=http%3A%2F%2Fwww.marcus-povey.co.uk%2F2012%2F01%2F16%2Fintroducing-schedulabl-es%2F&count=vertical" class="twitter-share-button" data-lang="en">Tweet</a>
			<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
		</div>
	</div>

</div>
	]]></content:encoded>
			<wfw:commentRss>http://www.marcus-povey.co.uk/2012/01/16/introducing-schedulabl-es/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>DNS is a symptom of broken search #sopa</title>
		<link>http://www.marcus-povey.co.uk/2012/01/10/dns-is-a-symptom-of-broken-search-sopa/</link>
		<comments>http://www.marcus-povey.co.uk/2012/01/10/dns-is-a-symptom-of-broken-search-sopa/#comments</comments>
		<pubDate>Tue, 10 Jan 2012 16:30:51 +0000</pubDate>
		<dc:creator>Marcus Povey</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[distributed]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[p2p]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[sopa]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.marcus-povey.co.uk/?p=944</guid>
		<description><![CDATA[The Domain Name System &#8211; which much of the internet is built on &#8211; is a system of servers which turn friendly names humans understand (foo.com) into IP addresses which computers understand (111.222.333.444). It is hierarchical and to a large extent centralised. You will be the master of *.foo.com, but you have to buy foo.com [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.marcus-povey.co.uk/wp-content/no-sopa1.jpg" alt="" title="no-sopa" width="200" align="right" />The <a href="http://en.wikipedia.org/wiki/Domain_Name_System">Domain Name System</a> &#8211; which much of the internet is built on &#8211; is a system of servers which turn friendly names humans understand (foo.com) into IP addresses which computers understand (111.222.333.444).</p>
<p>It is hierarchical and to a large extent centralised. You will be the master of *.foo.com, but you have to buy foo.com off the .com registrar. </p>
<p>These top level domain registrars, if not owned by national governments, are at least strongly influenced and <a href="http://www.theregister.co.uk/2009/11/20/nominet_law/">increasingly regulated by them</a>.</p>
<p>This of course makes these registrars a tempting target for oppressive governments like China, UK and the USA, and for insane laws like <a href="http://en.wikipedia.org/wiki/Stop_Online_Piracy_Act">SOPA</a> and the <a href="http://www.marcus-povey.co.uk/2010/04/08/digital-economy-debill-passes-uk-ceases-to-have-one/">Digital Economy Act</a> which seek to control information, and shut down sites which say things the government doesn&#8217;t like.</p>
<p>Replacing this system with a less centralised model is therefore a high priority for anyone wanting to ensure the protection of the free internet.</p>
<p><strong>Turning text into numbers isn&#8217;t the real problem</strong></p>
<p>It may not be an entirely new observation here; the problem of turning a bit of text into a set of numbers is, from a user&#8217;s perspective, not what they&#8217;re after. They want to view facebook, or a photo album on flickr.</p>
<p>So finding relevant information is what we&#8217;re really trying to solve, and the entire DNS system is really just a factor of search not being good enough when the system was designed.</p>
<p>Consider&#8230;</p>
<ul>
<li>Virtually all modern browsers have auto complete search as you type query bars.</li>
<li>Browsers like Chrome only have a search bar</li>
<li>My mum types domain names, or partial domain names, or something like the domain name (depending on recollection) into Google</li>
</ul>
<p>For most cases, using the web has become synonymous with search.</p>
<p><strong>Baked in search</strong></p>
<p>So, what if search was baked in? Could this be done, and what would the web look like if it was? </p>
<p>What you&#8217;re really asking when you visit Facebook, or Amazon or any other site is &#8220;find me this thing called xxxx on the web&#8221;. </p>
<p>Similarly when a browser tries to load an image, what it&#8217;s really saying is &#8220;load me this resource called yyyy which is hosted on web server xxxx on the web&#8221;, which is really a specialisation of the previous query.</p>
<p>You&#8217;d need to have searches done in some sort of peer to peer way, and distributed using an open protocol, since you&#8217;d not want to have to search the entire web every time you looked for something. Neither would you want to maintain a local copy of the Entire World. </p>
<p>It&#8217;d probably eat a lot of bandwidth, and until computers and networks get fast enough, you&#8217;d probably still have to rely on having large search entities (google etc) do most of the donkey work, so this may not be something we can really do right now.</p>
<p>But consider, most of us now have computers in our pockets with more processing power than existed on the entire planet a few decades ago; at the beginning of the last century the speed of a communication network was limited by how fast a manual operator could open and close a circuit relay.</p>
<p>What will future networks (and personally I don&#8217;t think we&#8217;re that far off) be capable of? Discuss.</p>
<div class="wsbuttons">
	<div class="shareblob facebook">
		<div class="fb-like" data-href="http://www.marcus-povey.co.uk/2012/01/10/dns-is-a-symptom-of-broken-search-sopa/" data-send="false" data-layout="box_count" data-width="60" data-show-faces="false" data-colorscheme="light"></div>
	</div>

	<div class="shareblob google">
		<div class="g-plusone" data-size="tall" data-href="http://www.marcus-povey.co.uk/2012/01/10/dns-is-a-symptom-of-broken-search-sopa/"></div>
	</div>

	<div class="shareblob twitter">
		<div class="twitter">
			<a href="https://twitter.com/share?url=http%3A%2F%2Fwww.marcus-povey.co.uk%2F2012%2F01%2F10%2Fdns-is-a-symptom-of-broken-search-sopa%2F&count=vertical" class="twitter-share-button" data-lang="en">Tweet</a>
			<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
		</div>
	</div>

</div>
	]]></content:encoded>
			<wfw:commentRss>http://www.marcus-povey.co.uk/2012/01/10/dns-is-a-symptom-of-broken-search-sopa/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Introducing the BCT Framework</title>
		<link>http://www.marcus-povey.co.uk/2012/01/09/introducing-the-bct-framework/</link>
		<comments>http://www.marcus-povey.co.uk/2012/01/09/introducing-the-bct-framework/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 16:32:34 +0000</pubDate>
		<dc:creator>Marcus Povey</dc:creator>
				<category><![CDATA[bct]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[licence]]></category>
		<category><![CDATA[license]]></category>
		<category><![CDATA[mit]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.marcus-povey.co.uk/?p=856</guid>
		<description><![CDATA[Over on GitHub I have just open sourced a PHP web and web services framework which I&#8217;ve been making use of to build a lot of projects recently. Initially, it was built for a single project but I&#8217;ve ended up using it for many other things, and I thought it might be useful to the [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.marcus-povey.co.uk/wp-content/class-act.jpg" align="right" width="150" />Over on <a href="https://github.com/mapkyca/BCT-Framework-Core">GitHub</a> I have just open sourced a <a href="https://github.com/mapkyca/BCT-Framework-Core">PHP web and web services framework</a> which I&#8217;ve been making use of to build a lot of projects recently.</p>
<p>Initially, it was built for a single project but I&#8217;ve ended up using it for many other things, and I thought it might be useful to the Open Source community. </p>
<p><strong>Features</strong></p>
<ul>
<li>Pluggable </li>
<li>Light weight</li>
<li>Sophisticated events system</li>
<li>Abstracted database layer</li>
<li>MVC architecture</li>
<li>Virtual pages </li>
<li>Object/Metadata based data model</li>
</ul>
<p>Its designed to have much of its functionality carried in plugins, many of which I will release a little bit later just as soon I&#8217;ve had the time to tidy them up a bit!</p>
<p>Anywho, its available under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT licence</a> and hopefully it&#8217;ll be useful to you!</p>
<p>&raquo; <a href="https://github.com/mapkyca/BCT-Framework-Core">Github Project Page</a> (<a href="https://github.com/mapkyca/BCT-Framework-Plugins">Core Plugins</a>,  <a href="https://github.com/mapkyca/BCT-Framework-Plugins-Extra">Extra Plugins</a>)</p>
<div class="wsbuttons">
	<div class="shareblob facebook">
		<div class="fb-like" data-href="http://www.marcus-povey.co.uk/2012/01/09/introducing-the-bct-framework/" data-send="false" data-layout="box_count" data-width="60" data-show-faces="false" data-colorscheme="light"></div>
	</div>

	<div class="shareblob google">
		<div class="g-plusone" data-size="tall" data-href="http://www.marcus-povey.co.uk/2012/01/09/introducing-the-bct-framework/"></div>
	</div>

	<div class="shareblob twitter">
		<div class="twitter">
			<a href="https://twitter.com/share?url=http%3A%2F%2Fwww.marcus-povey.co.uk%2F2012%2F01%2F09%2Fintroducing-the-bct-framework%2F&count=vertical" class="twitter-share-button" data-lang="en">Tweet</a>
			<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
		</div>
	</div>

</div>
	]]></content:encoded>
			<wfw:commentRss>http://www.marcus-povey.co.uk/2012/01/09/introducing-the-bct-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Latakoo WordPress plugin</title>
		<link>http://www.marcus-povey.co.uk/2012/01/03/latakoo-wordpress-plugin/</link>
		<comments>http://www.marcus-povey.co.uk/2012/01/03/latakoo-wordpress-plugin/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 08:01:33 +0000</pubDate>
		<dc:creator>Marcus Povey</dc:creator>
				<category><![CDATA[Latakoo]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[embed]]></category>
		<category><![CDATA[html5 wordpress]]></category>
		<category><![CDATA[latakoo]]></category>
		<category><![CDATA[object]]></category>
		<category><![CDATA[shortcode]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.marcus-povey.co.uk/?p=816</guid>
		<description><![CDATA[Scratching even more itches, this on behalf of our lovely people using the latakoo service to host video on their blogs. So here is a WordPress plugin that simplifies embedding latakoo video on your blog by adding a latakoo shortcode. Simply install it and you will be able to link to videos directly on your [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.marcus-povey.co.uk/wp-content/latakoo.png" alt="" width="150" align="right" />Scratching even more itches, this on behalf of our lovely people using the <a href="http://latakoo.com">latakoo</a> service to host video on their blogs.</p>
<p>So here is a <a href="https://github.com/mapkyca/latakoo-wordpress">WordPress plugin</a> that simplifies embedding latakoo video on your blog by adding a latakoo shortcode. Simply install it and you will be able to link to videos directly on your account without the need to cut and paste the embed codes.</p>
<p>Later, when I have time, I plan to add some other cool stuff to it.. but that may have to wait for now.</p>
<p>Please note that this is in no way an &#8220;official&#8221; plugin.</p>
<p>» <a href="https://github.com/mapkyca/latakoo-wordpress">Plugin page on Github</a></p>
<div class="wsbuttons">
	<div class="shareblob facebook">
		<div class="fb-like" data-href="http://www.marcus-povey.co.uk/2012/01/03/latakoo-wordpress-plugin/" data-send="false" data-layout="box_count" data-width="60" data-show-faces="false" data-colorscheme="light"></div>
	</div>

	<div class="shareblob google">
		<div class="g-plusone" data-size="tall" data-href="http://www.marcus-povey.co.uk/2012/01/03/latakoo-wordpress-plugin/"></div>
	</div>

	<div class="shareblob twitter">
		<div class="twitter">
			<a href="https://twitter.com/share?url=http%3A%2F%2Fwww.marcus-povey.co.uk%2F2012%2F01%2F03%2Flatakoo-wordpress-plugin%2F&count=vertical" class="twitter-share-button" data-lang="en">Tweet</a>
			<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
		</div>
	</div>

</div>
	]]></content:encoded>
			<wfw:commentRss>http://www.marcus-povey.co.uk/2012/01/03/latakoo-wordpress-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Graph Headers plugin for WordPress</title>
		<link>http://www.marcus-povey.co.uk/2011/12/27/open-graph-headers-plugin-for-wordpress/</link>
		<comments>http://www.marcus-povey.co.uk/2011/12/27/open-graph-headers-plugin-for-wordpress/#comments</comments>
		<pubDate>Tue, 27 Dec 2011 10:24:15 +0000</pubDate>
		<dc:creator>Marcus Povey</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[opengraph]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.marcus-povey.co.uk/?p=808</guid>
		<description><![CDATA[Another itch scratched, I would like to introduce a really simple Open Graph plugin for WordPress. This plugin adds open graph headers to posts and pages on a per post basis. It has no native interface, instead it listens out for og:* headers as input in the Custom Fields section of WordPress&#8217; edit page and [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://ogp.me/"><img src="http://www.marcus-povey.co.uk/wp-content/opengraphlogo.png" align="right" width="150" /></a>Another itch scratched, I would like to introduce a really simple <a href="https://developers.facebook.com/docs/opengraph/">Open Graph</a> <a href="https://github.com/mapkyca/OpenGraphHeaders/tree/master/opengraphheaders">plugin</a> for WordPress.</p>
<p>This plugin adds open graph headers to posts and pages on a per post basis.</p>
<p>It has no native interface, instead it listens out for og:* headers as input in the Custom Fields section of WordPress&#8217; edit page and adds the ones it recognises to the page header as meta tags.</p>
<p>Once installed you will be able to add the following tags to posts:</p>
<ul>
<li><strong>og:title</strong> (defaults to page title)</li>
<li><strong>og:type</strong> (defaults to &#8220;article&#8221;)</li>
<li><strong>og:image</strong> (URL, no default)</li>
<li><strong>og:url</strong> is also used, but this is automatically filled in</li>
</ul>
<p>I wrote this in about an hour so it isn&#8217;t all that fancy, and was designed to solve a specific problem for me. Hopefully it&#8217;ll be useful to someone else out there.</p>
<p>Feel free to leave comments and send in any patches!</p>
<p>&raquo; <a href="https://github.com/mapkyca/OpenGraphHeaders/tree/master/opengraphheaders">Plugin page on Github</a></p>
<div class="wsbuttons">
	<div class="shareblob facebook">
		<div class="fb-like" data-href="http://www.marcus-povey.co.uk/2011/12/27/open-graph-headers-plugin-for-wordpress/" data-send="false" data-layout="box_count" data-width="60" data-show-faces="false" data-colorscheme="light"></div>
	</div>

	<div class="shareblob google">
		<div class="g-plusone" data-size="tall" data-href="http://www.marcus-povey.co.uk/2011/12/27/open-graph-headers-plugin-for-wordpress/"></div>
	</div>

	<div class="shareblob twitter">
		<div class="twitter">
			<a href="https://twitter.com/share?url=http%3A%2F%2Fwww.marcus-povey.co.uk%2F2011%2F12%2F27%2Fopen-graph-headers-plugin-for-wordpress%2F&count=vertical" class="twitter-share-button" data-lang="en">Tweet</a>
			<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
		</div>
	</div>

</div>
	]]></content:encoded>
			<wfw:commentRss>http://www.marcus-povey.co.uk/2011/12/27/open-graph-headers-plugin-for-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Happy Christmas! (I&#8217;m available to hire!)</title>
		<link>http://www.marcus-povey.co.uk/2011/12/21/happy-christmas-im-available-to-hire/</link>
		<comments>http://www.marcus-povey.co.uk/2011/12/21/happy-christmas-im-available-to-hire/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 20:20:54 +0000</pubDate>
		<dc:creator>Marcus Povey</dc:creator>
				<category><![CDATA[elgg]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[christmas]]></category>
		<category><![CDATA[coder]]></category>
		<category><![CDATA[consultant]]></category>
		<category><![CDATA[contract]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[for hire]]></category>
		<category><![CDATA[hire]]></category>
		<category><![CDATA[strategy]]></category>
		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.marcus-povey.co.uk/?p=891</guid>
		<description><![CDATA[Its almost Christmas, and I&#8217;m all excited by the prospect of kicking back and relaxing for a few days with friends and family. &#8230;not to mention eating all the delightful food, whose impact on my waistline I shall no doubt be tackling well into February! Its been a busy year both in my personal and [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://farm8.staticflickr.com/7031/6511528677_33d5c0ac6d_m.jpg" width="200" align="right" />Its almost Christmas, and I&#8217;m all excited by the prospect of kicking back and relaxing for a few days with friends and family.</p>
<p>&#8230;not to mention eating all the delightful food, whose impact on my waistline I shall no doubt be tackling well into February!</p>
<p>Its been a busy year both in my personal and professional life (my traditional new years post will no doubt follow sometime in March), but I would like to take the opportunity to point out that <a href="http://www.marcus-povey.co.uk/hire/">I am available to hire</a> for project work.</p>
<p><a href="mailto:marcus@marcus-povey.co.uk">Give me a nudge</a> if you would like to talk!</p>
<p>Anyway&#8230; nothing more remains but to wish you all a very merry Christmas and an awesome 2012!</p>
<div class="wsbuttons">
	<div class="shareblob facebook">
		<div class="fb-like" data-href="http://www.marcus-povey.co.uk/2011/12/21/happy-christmas-im-available-to-hire/" data-send="false" data-layout="box_count" data-width="60" data-show-faces="false" data-colorscheme="light"></div>
	</div>

	<div class="shareblob google">
		<div class="g-plusone" data-size="tall" data-href="http://www.marcus-povey.co.uk/2011/12/21/happy-christmas-im-available-to-hire/"></div>
	</div>

	<div class="shareblob twitter">
		<div class="twitter">
			<a href="https://twitter.com/share?url=http%3A%2F%2Fwww.marcus-povey.co.uk%2F2011%2F12%2F21%2Fhappy-christmas-im-available-to-hire%2F&count=vertical" class="twitter-share-button" data-lang="en">Tweet</a>
			<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
		</div>
	</div>

</div>
	]]></content:encoded>
			<wfw:commentRss>http://www.marcus-povey.co.uk/2011/12/21/happy-christmas-im-available-to-hire/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing a really simple regression tester</title>
		<link>http://www.marcus-povey.co.uk/2011/12/12/introducing-a-really-simple-regression-tester/</link>
		<comments>http://www.marcus-povey.co.uk/2011/12/12/introducing-a-really-simple-regression-tester/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 09:59:01 +0000</pubDate>
		<dc:creator>Marcus Povey</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[regression]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://www.marcus-povey.co.uk/?p=791</guid>
		<description><![CDATA[Building on what I was talking about last week, I&#8217;ve spent a little time tidying up and genericising the simple regression test framework I often find myself using and have open sourced it over on Github. So without further ado, I&#8217;d like to introduce the Really Simple Test Framework! This is a PHP command line [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.marcus-povey.co.uk/wp-content/tcf320.jpg" width="150" align="right" />Building on what I was <a href="http://www.marcus-povey.co.uk/2011/12/05/regression-testing-if-you-dont-do-it-youre-a-fscking-idiot/">talking about last week</a>, I&#8217;ve spent a little time <a href="https://github.com/mapkyca/SimpleTestFramework">tidying up and genericising the simple regression test framework I often find myself using and have open sourced it over on Github</a>.</p>
<p>So without further ado, I&#8217;d like to introduce the <a href="https://github.com/mapkyca/SimpleTestFramework">Really Simple Test Framework</a>!</p>
<p>This is a PHP command line application, so you&#8217;ll need the <code>php5-cli</code> module installed. </p>
<p><strong>Usage</strong></p>
<blockquote style="float:none"><p><code>php test.php [-p path/to/tests] [-t HelloWorldTest]</code></p></blockquote>
<p>So for example, to run all the tests in the sub directory /tests/</p>
<blockquote style="float:none"><p><code>php test.php</code></p></blockquote>
<p>To specify another directory to look in for tests</p>
<blockquote style="float:none"><p><code>php test.php -p /path/to/my/tests</code></p></blockquote>
<p>To run a specific test only, specify it by its CLASS NAME</p>
<blockquote style="float:none"><p><code>php test.php -t MyClassTest</code></p></blockquote>
<p>You can specify multiple tests to run&#8230;</p>
<blockquote style="float:none"><p><code>php test.php -t MyClassTest -t AnotherTest</code></p></blockquote>
<p>Have a butchers at the <a href="https://github.com/mapkyca/SimpleTestFramework/blob/master/README.txt">README.txt</a> for more details on writing your own tests!</p>
<p>&raquo; <a href="https://github.com/mapkyca/SimpleTestFramework">Github Project Page</a></p>
<div class="wsbuttons">
	<div class="shareblob facebook">
		<div class="fb-like" data-href="http://www.marcus-povey.co.uk/2011/12/12/introducing-a-really-simple-regression-tester/" data-send="false" data-layout="box_count" data-width="60" data-show-faces="false" data-colorscheme="light"></div>
	</div>

	<div class="shareblob google">
		<div class="g-plusone" data-size="tall" data-href="http://www.marcus-povey.co.uk/2011/12/12/introducing-a-really-simple-regression-tester/"></div>
	</div>

	<div class="shareblob twitter">
		<div class="twitter">
			<a href="https://twitter.com/share?url=http%3A%2F%2Fwww.marcus-povey.co.uk%2F2011%2F12%2F12%2Fintroducing-a-really-simple-regression-tester%2F&count=vertical" class="twitter-share-button" data-lang="en">Tweet</a>
			<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
		</div>
	</div>

</div>
	]]></content:encoded>
			<wfw:commentRss>http://www.marcus-povey.co.uk/2011/12/12/introducing-a-really-simple-regression-tester/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

