<?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>The Aust Gate</title>
	<atom:link href="http://austgate.co.uk/feed/" rel="self" type="application/rss+xml" />
	<link>http://austgate.co.uk</link>
	<description>Open Knowledge and Literature</description>
	<lastBuildDate>Mon, 23 Jan 2012 18:10:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Going to the other place &#8211; or a weekend at DrupalScienceCamp</title>
		<link>http://austgate.co.uk/2012/01/going-to-the-other-place-or-a-weekend-at-drupalsciencecamp/</link>
		<comments>http://austgate.co.uk/2012/01/going-to-the-other-place-or-a-weekend-at-drupalsciencecamp/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 18:10:47 +0000</pubDate>
		<dc:creator>iain_emsley</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[drupal]]></category>

		<guid isPermaLink="false">http://austgate.co.uk/?p=463</guid>
		<description><![CDATA[I went to the Drupal ScienceCamp  for the weekend to learn more about Drupal and also how one runs a DrupalCamp, since we are thinking of doing one in Oxford. Having come across on the Friday and met some people, the weekend really started on the Saturday, run by some of the team behind the [...]]]></description>
			<content:encoded><![CDATA[<p>I went to the <a title="Drupal Science Camp page" href="http://drupalsciencecamp.org.uk" target="_blank">Drupal ScienceCamp</a>  for the weekend to learn more about Drupal and also how one runs a DrupalCamp, since we are thinking of <a title="Potential Oxford Drupal camp" href="http://groups.drupal.org/node/191483" target="_blank">doing one in Oxford</a>. Having come across on the Friday and met some people, the weekend really started on the Saturday, run by some of the team behind the recent Drupalcon in London.</p>
<p>Having arrived early on Saturday and met <a title="Rachel Lawson's drupal page" href="http://drupal.org/user/66273" target="_blank">Rachel Lawson</a> and Euan Bayliss at NAPP Pharmaceuticals (who kindly donated the building), I caught Finn and other Drupallers. The day started off with a general welcome and then into the first session, <a title="Responsive Design in Drupal" href="http://www.drupalsciencecamp.org.uk/sessions/responsive-design-using-fluid-grids" target="_blank">Responsive Design using Fluid Grids</a>, presented by Tim Davison. This is an area where I sort of know the theory but have never fully explored so was keen to learn so that sites can run on (largely) any device. I can see one or two things that I might try this out on, though not Drupal related at the moment.</p>
<p>I stayed in the room to hear Steven Jones giving an <a title="Drupal Camp on Module Building" href="http://www.drupalsciencecamp.org.uk/sessions/introduction-module-development" target="_blank">Introduction to Module Building</a>. I&#8217;ve been writing modules for things for a bit but it always good to get a refresher and to rethink the basics. He also managed to pull off a live coding session in writing a quick module. I was impressed about that.</p>
<p>After lunch, I went to the <a title="Drupal Camp on LessCSS" href="http://www.drupalsciencecamp.org.uk/sessions/less-css-power-take-advantage-dynamic-behaviour" target="_blank">LessCSS presentation</a> which was more on the theory than a Drupal application. The framework solution tends towards large teams and to building maintainable large CSS files, rather than small projects. However its flexibility promises a way of reducing lines of code and making it more re-usable. There was a warning that getting it wrong could create large .less files and smaller CSS files but that may be a learning curve for developers. I like the fact that you have the choice of pre-compiling the .less files and loading the pure .css file or using a <a title="PHP Less compiler" href="http://leafo.net/lessphp/" target="_blank">PHP</a> or <a title="Javascript and Less CSS" href="http://lesscss.org/" target="_blank">Javascript</a> compiler to compile in the fly.</p>
<p>Following that Steve Purkiss gave a presentation on <a title="Flip Charts to features" href="http://www.drupalsciencecamp.org.uk/sessions/flip-charts-features-and-beyond" target="_blank">From Flip Charts to Features and beyond!</a> Starting out from mind maps to find out what the clients needs are and to &#8220;think first, code later&#8221; (which is the reverse of what I believe is 37Signal&#8217;s way of build first with minimal planning). This allows you to discover and use the client&#8217;s domain language and vocabulary and allows for missing elements to be found early rather than having to rebuild later. A suggestion for then beginning to build a dev site which demonstrated the states for the client with the <a title="Drupal Context module" href="http://drupal.org/project/context" target="_blank">Context</a>, <a title="Drupal Features module" href="http://drupal.org/project/features" target="_blank">Features</a> and <a title="Drupal Delta project" href="http://drupal.org/project/delta" target="_blank">Delta</a> projects. Using Drush make and drush site install as well builds the site and allows it to move it between servers but as yet, I have not quite managed to get this to work in a current environment.</p>
<p>The final session was Will Hall&#8217;s <a title="Drupal Science Camp page" href="http://www.drupalsciencecamp.org.uk/sessions/migration-upgrading-and-moving-house" target="_blank">Migration, Upgrading and Moving House</a> which focussed on the use on the <a title="Drupa migrate module" href="http://drupal.org/project/migrate" target="_blank">Migration module</a> and the idea of unstructured and structured developers. Again this is something to be explored with the drush make stuff to ensure that some current work can be moved forward. It does look like a good choice for ensuring that content can be moved between databases. Again more goodness to try shortly.</p>
<p>The Sunday was given over to a BarCamp style day which was great and sweetly flexible.</p>
<p>I went to <a title="chx on Drupal" href="http://drupal.org/user/9446" target="_blank">Károly Négyesi</a>&#8216;s presentation on the <a title="Drupal Relation project" href="http://drupal.org/project/relation" target="_blank">Relations</a> module. Whilst I cannot see an immediate use for it, it is always good to know about other approaches to relating content rather than just using views. There was some interest from those interested in CRM systems to set up donation forms or relations inside it. It appears to be an API to make relations much easier.</p>
<p>The sessions on migrating sites and high performance sites was pulled together and we overfilled the room that we started with. Steve Jones of <a title="Computer Minds site" href="http://www.computerminds.co.uk/" target="_blank">ComputerMinds</a> led the discussion about Aegir, Pantheon, MySQL, Varnish and Apache. He announced the <a title="Pergola on Github" href="https://github.com/computerminds/pergola" target="_blank">Pergola project</a> to set up a set of scripts using Puppet as a base to create a recipe based loading system to set up a site in an emergency or to ensure that changing servers can be managed to and build the site in the same way taking out any uncertainty. One useful reference is on the London Drupalcon site in the <a title="damn Quick Drupal" href="http://london2011.drupal.org/conference/sessions/damn-quick-drupal-how-make-drupal-perform-and-scale-rockstar" target="_blank">Damn Quick Drupal</a> site. There a loads of resources and options for differing servers but if a community effort can come together to educate and share knowledge, then all the better to showcase how Drupal can be set up in high performance situations on boxes of all sizes without necessarily requiring an operations team to atleast get started.</p>
<p>After lunch, we talked about Drupalcamp&#8217;s: The good, the bad and the ugly in order to get a better idea of how to run one. The notion of community and shared resources was mooted and I gather that there are thoughts to resolving this. However we learned a lot for the proposed <a title="Potential Oxford Drupal camp discussion" href="http://groups.drupal.org/node/191483" target="_blank">Oxford Drupalcamp</a> in terms of organising and setting up a site using <a title="COD distribution" href="http://usecod.com/" target="_blank">COD</a>. One of the running themes, and this is perhaps how the Barcamp style does best, was the event is more communal and less rigid. There is more flexibility to either listen or to get  a group of people together to do something. It also encourages the attendees to participate. The UK Drupal scene does appear to be fractured and in need of a place to pull information together. Perhaps this will change, I would hope so. It would be great to have one place to find UK related Drupal information easily.</p>
<p>Driving back to Oxford was a chance for a good conversation with Jam, the Acquia Community Affairs manager, and Finn which made me think and reconsider ways of doing projects and community affairs. Getting slightly lost didn&#8217;t help and I&#8217;ve spent most of today recovering and writing this post. I learned a fair amount and took notes so need to spend a day or two trying things out again. That, too me, is the sign of a good meeting.</p>
<p>(Note re:title: traditionally, Oxford and Cambridge are rivals so the title is a reference to that. I&#8217;ve lived in or near both cities and really do not particularly care about the rivalry. It is meant as more tongue in cheek.)</p>
]]></content:encoded>
			<wfw:commentRss>http://austgate.co.uk/2012/01/going-to-the-other-place-or-a-weekend-at-drupalsciencecamp/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Writing specs &#8211; a first starting point</title>
		<link>http://austgate.co.uk/2012/01/writing-specs-a-first-starting-point/</link>
		<comments>http://austgate.co.uk/2012/01/writing-specs-a-first-starting-point/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 19:59:33 +0000</pubDate>
		<dc:creator>iain_emsley</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://austgate.co.uk/?p=458</guid>
		<description><![CDATA[Our team have started on Scrum to move forward with our projects. So far, so staggering steps but, hey, we are new to it. We will learn by falling / failing and then learning from where we went wrong and fixing it. One of the things that I have been looking at, partially because, as [...]]]></description>
			<content:encoded><![CDATA[<p>Our team have started on Scrum to move forward with our projects. So far, so staggering steps but, hey, we are new to it. We will learn by falling / failing and then learning from where we went wrong and fixing it.</p>
<p>One of the things that I have been looking at, partially because, as Joel on Software&#8217;s article, <a title="Joel on Software on functional specs" href="http://www.joelonsoftware.com/articles/fog0000000036.html" target="_blank">Painless Functional Specifications &#8211; Part 1: Why Bother?</a>, puts it,</p>
<blockquote><p>When you force yourself to write a <em>good, complete</em> spec &#8230; you notice all these things and you either fix them or at least you mark them with a big red flag.</p></blockquote>
<p>The last company that I worked for never wrote specs. Documentation, pah. Not here. Not until my last three weeks where I wrote up the documentation on thirty odd projects. In theory, great, but I was describing the existing system, rather than having a system to check my programmes against spec. Projects were late and needed patching because there was no description of what was being planned to communicate.</p>
<p>I am currently working on a project which I am writing documentation for. Again I have sort of started in the wrong way. The spec has not been written at the beginning and writing it up now, I can see issues with the existing systems. I can see where they are and can fix them. No spec, not entirely clear what the issues are. It also means that other team members working on systems which interface with mine or managers need to report on progress. It takes pressure off me, the developer, to be on hand to describe how the system works or to diagnose issues before they arise (well try to anyhow).</p>
<p>So where to now? Well. I need to do some writing and create both functional and technical specs. I will learn, and possibly fail at some point only to pick myself up again. A starting point, apart from trying, is to read the other Joel on Software articles, keep researching and writing.</p>
]]></content:encoded>
			<wfw:commentRss>http://austgate.co.uk/2012/01/writing-specs-a-first-starting-point/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bridging message queues in STOMP and AMQP</title>
		<link>http://austgate.co.uk/2011/12/bridging-message-queues-in-stomp-and-amqp/</link>
		<comments>http://austgate.co.uk/2011/12/bridging-message-queues-in-stomp-and-amqp/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 21:28:04 +0000</pubDate>
		<dc:creator>iain_emsley</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[amqp]]></category>
		<category><![CDATA[messaging]]></category>
		<category><![CDATA[stomp]]></category>

		<guid isPermaLink="false">http://austgate.co.uk/?p=426</guid>
		<description><![CDATA[A recent work project has been working with messaging queues and exploring how they work. One of the issues has been how to get systems running different systems to talk to each other. One system uses ActiveMQ and another runs RabbitMQ which has led to some interest in how to effectively bridge the systems into [...]]]></description>
			<content:encoded><![CDATA[<p>A recent work project has been working with messaging queues and exploring how they work. One of the issues has been how to get systems running different systems to talk to each other. One system uses <a title="ActiveMQ site" href="http://activemq.apache.org/" target="_blank">ActiveMQ</a> and another runs <a title="RabbitMQ site" href="http://www.rabbitmq.com/" target="_blank">RabbitMQ</a> which has led to some interest in how to effectively bridge the systems into some sort of federation.</p>
<p>I&#8217;ve been using messaging to link distributed databases together through some homegrown middle-ware and services. In many cases the messages tends to be a subscription to a published message, a simple work queue in essence.</p>
<p>One issue is that Rabbit does not deal with messages in Java Messaging  System (JMS) and ActiveMQ does not deal with Advanced Message Queuing Protocol (<a title="AMQP Wikipedia page" href="http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol" target="_blank">AMQP)</a>. Fortunately Rabbit does have a Streaming Text Oriented Messaging Protocol (<a title="Wikipedia on STOMP" href="http://en.wikipedia.org/wiki/Streaming_Text_Oriented_Messaging_Protocol" target="_blank">STOMP)</a> connector which can be used in bridging systems together in conjunction with the AMQP Client plugin. (At one point, adding <a title="RabbitMQ plugins page" href="http://www.rabbitmq.com/plugins.html" target="_blank">plugin</a>s to Rabbit was a pain but with the 2.70 release, it is a question of running a simple command: rabbitmq-plugins enable &lt;plugin-name&gt;. However I fear I may be digressing.) ActiveMQ allows STOMP as one of the <a title="STOMP in ActiveMQ" href="http://activemq.apache.org/stomp.html" target="_blank">enabled protocols</a> on startup if defined as a transport connector in the XML.</p>
<p>As an exercise (a conversation that I had during drafting this post has meant that the  RabbitMQ servers may be taken out of commission on the current project but are better for another part of the project), I have set up a RabbitMQ service listening to and serving STOMP on port 61613 (the default) and with ActiveMQ listening to and serving STOMP from port 61618. Since I am using the same box I cannot get the two services listening to the same port. I have tried on a virtual machines to get Rabbit on one instance of Ubuntu to listen to ActiveMQ on a different box serving on port 61618 but got a badaddress error &#8211; which given this afternoon&#8217;s noodling around with Rabbit and ActiveMQ makes sense given that the RabbitMQ plugin appears to be producing and consuming. I found this frustrating since I could get the PHP STOMP library which <a title="Fusesource's STOMP connector" href="http://stomp.fusesource.org/documentation/php/book.html" target="_blank">Fusesource</a> produce to listen to the port in the initial experiments.</p>
<p>My original idea was to see if I could get a message sent to Rabbit from Active. Having seen the direct connection fail, I had a look at ActiveMQ&#8217;s <a title="ActiveMQ and networks of brokers" href="http://activemq.apache.org/networks-of-brokers.html" target="_blank">networking</a> section to see if I could get alter the XML configuration to include a RabbitMQ endpoint as it suggests that this should be possible. A quick test this afternoon was not exactly successful since the broker would not start if I added the networkconnection section to the default XML. The documents would suggest that it would listen but when I got the default listening to port 61613, it appears to load but the message is not passed through from RabbitMQ to ActiveMQ. When I looked at the ActiveMQ log, I saw the error <code>Wire format negotiation timeout: peer did not send his wire format</code> which is a fatal error. That would suggest that the broker will do this for JMS but not STOMP but I could be wrong on that.</p>
<p>Taking a queue from a brief discussion of <a title="JMS to JMS bridging" href="http://www.codeproject.com/KB/docview/jms_to_jms_bridge_activem.aspx" target="_blank">JMS to JMS bridging</a>, a STOMP server in Python bridging a STOM consumer to a database, I began writing a bridge which listens to the RabbitMQ endpoint and then publishes to a queue on ActiveMQ (or vice versa if the configuration is switched around) and the <a title="ActiveMQ JMS to JMS bridge" href="http://activemq.apache.org/jms-to-jms-bridge.html" target="_blank">JMS to JMS bridge</a> ActiveMQ documentation, I wrote a light weight bridge in PHP which connects the STOMP endpoints and publishes to each queue. Creating a simple consumer/producer, since I would expect any required passing between such producers to be a direct message rather than a fan-out message or topic, I managed to get the message passed across in under a second but I need to explore the amount of microseconds. The quick test that I ran suggests that there are 0.0087219 microseconds between producing a RabbitMQ message and consuming in ActiveMQ. I need to run this several times and admittedly the performance may not be desired in financial or similar high performance systems but then would that use be trying to bridge systems rather than federating like systems instead.</p>
<p>The bridge could also be used to transform the messages between protocols. As I had at one point, I had one system using RabbitMQ and AMQP which ActiveMQ does not support yet and one in ActiveMQ using JMS. To reduce the need for multiple consumers to take in the same message but in different messaging formats, then the bridge could be used to transform the message into the recipient protocol which could be useful if the message being sent is a standard one.</p>
<p>It might also allow a flexibility in having message brokers placed in different networks in that a consumer connection does not have to be maintained across the firewalls. Rather the connection is made on production so any connection does not have to have a keep-alive call being made.</p>
<p>I still need to run more tests for speed and to test the inevitable speed reduction in swapping protocols but this approach appears to make solve some messaging network problems using PHP. Looking at the <a title="Apache Camel" href="http://camel.apache.org/" target="_blank">Camel</a> documentation, this piece of code begins to look like doing the same sort of thing in PHP but right now I am not thinking about that (though the possible uses do come to mind).</p>
]]></content:encoded>
			<wfw:commentRss>http://austgate.co.uk/2011/12/bridging-message-queues-in-stomp-and-amqp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An approach to creating groups and persistent URLs in Drupal 7</title>
		<link>http://austgate.co.uk/2011/12/an-approach-to-creating-groups-and-persistent-urls-in-drupal-7/</link>
		<comments>http://austgate.co.uk/2011/12/an-approach-to-creating-groups-and-persistent-urls-in-drupal-7/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 14:58:34 +0000</pubDate>
		<dc:creator>iain_emsley</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[groups]]></category>

		<guid isPermaLink="false">http://austgate.co.uk/?p=410</guid>
		<description><![CDATA[A major project has been exploring the creation of a collaborative space using Drupal 7. Somebody else has taken this over whilst I concentrate on other parts of our system and integration but I thought I would post about the Persistent URL (PURL) creation. Fortunately Drupal 7 comes with a fair few options which the [...]]]></description>
			<content:encoded><![CDATA[<p>A major project has been exploring the creation of a collaborative space using Drupal 7. Somebody else has taken this over whilst I concentrate on other parts of our system and integration but I thought I would post about the Persistent URL (PURL) creation.</p>
<p>Fortunately Drupal 7 comes with a fair few options which the <a title="P2P Foundation on social publishing" href="http://p2pfoundation.net/Social_Publishing_with_Drupal" target="_blank">P2P Foundation has documented  on its wiki</a>.</p>
<p>One of the things that I have been looking at is how to get ad hoc groups of individuals interacting. Organic Groups (OG7 as I use Drupal 7) is a really powerful way of building an area which can be shared by a user and to grant options to create pieces of content from blog posts, Wiki pages and forums.</p>
<p>One of the early issues that I had was to create a PURL for the groups and annoyingly this does not necessarily come out of the box with the module. I came across this in the excellent presentation by <a title="Amitai's page on drupalcon site" href="http://london2011.drupal.org/users/amitaibu" target="_blank">Amitai Burstein</a> at Drupalcon in London, &#8220;<a title="Amitai Burstein talking about OG7" href="http://london2011.drupal.org/conference/sessions/og7-time-its" target="_blank">OG7 &#8211; this time it&#8217;s on</a>&#8221; when the person next to me asked how one created Purls in OG7 but there was no real answer. This slightly troubled me but I did not pay it much mind at the time.</p>
<p>The standard way would appear to be using OG7, the <a title="Drupapl" href="http://drupal.org/project/spaces" target="_blank">Spaces</a> and <a title="Drupal's Purl module" href="http://drupal.org/project/purl" target="_blank">Purl </a> modules from Drupal and some of its other requirements. Using Spaces, the developer can build features such as blogs or similar and bundle them into the area of the group namespace. The group namespace can be created in the Purl module and it creates a series of sites within your main site. Having already started building, I was not really prepared on this occasion to change and rebuild from scratch, especially as I was trying to integrate it into an existing site with its own content.</p>
<p>The solution that I came up with was to explore Views 3 and OG7 and to use the tokens supplied in the core when OG7 is enabled and also an experimental module, OG Token, which supplies the last piece of the puzzle.</p>
<p>When OG7 and OG Token are installed and a group type is set up, the group name can be used in the url to create a front page which might be along the lines of http://somehost.com/mygroup. That gives the group &#8220;mygroup&#8221; a persistent url under which we might want to have other content types, such as forums or blogs or articles, or even some homegrown content types. To associate these with the group, a replacement URL needs to be set up in the URL aliases section. Using OG Tokens allows you to use the <code>[node:og-group-audience]</code> token so that you could set up http://somehost.com/mygroup/articles/[node:title] for a root for all articles belonging to that particular group and the title gives a PURL for the article as well. The group audience is set up by the user when creating the article and the audience is set. The base content type must have this set before the content is created which is outside the scope of this post.</p>
<p>You can use views to make the URL more useful if you take the  [node:title] away and just want to show a list of all articles belonging to that group audience. (Bear in mind that more than one audience can be set for an article.) To get this working, I altered the og_content view which comes from the OG install. Using the OG Group label (the [node:og-group-audience] part of the URL), I set up the following PHP code:<br />
<code>$handler-&gt;argument = str_replace("-", " ", $argument);<br />
return TRUE;</code><br />
This allows me to take the group label and, with  a relationship set up with the Group GID, return all items belonging to that group. Using a second filter, I can then limit it to which ever content type that I want to show. An easy way of showing all of these is to use the <a title="Drupal Quick Tabs module" href="http://drupal.org/project/quicktabs" target="_blank">Quicktabs</a> module (set up a block for each of the different content type) and then you can display an AJAX block on the group homepage to show latest content.</p>
<p>So why use the group ID rather than its name? Very simple. If you can two groups called my group, the URL is mygroup and mygroup-1. However OG does not appear to store this so calling the mygroup and then trying to search on mygroup in the database could reveal content that belongs to the wrong group. Embarrassing at best but it could also expose confidential information if one or both groups are private. Munging the URL and returning the ID means that the correct content belongs to the correct group.</p>
<p>For my purposes, I wanted to create some simple content types which a user can utilise to create content for any group that they wish to (providing that they belong to them) and to share them without segmenting the site into subsites with similar features in each one. Using tokens has allowed me to do this and to maintain some separation of content using views. It also means that I can set up URLs which return relevant content at each section as well in the hope that I can use this to help the user discover content as well as having groups be discoverable and persistent.</p>
]]></content:encoded>
			<wfw:commentRss>http://austgate.co.uk/2011/12/an-approach-to-creating-groups-and-persistent-urls-in-drupal-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating a simple video gallery using Drupal 7</title>
		<link>http://austgate.co.uk/2011/12/creating-a-simple-video-gallery-using-drupal-7/</link>
		<comments>http://austgate.co.uk/2011/12/creating-a-simple-video-gallery-using-drupal-7/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 14:27:12 +0000</pubDate>
		<dc:creator>iain_emsley</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://austgate.co.uk/?p=417</guid>
		<description><![CDATA[As a side project, I&#8217;ve been looking at Media Uploads in Drupal 7. I am interested in using Media as a sort of asset management system at a machine level with web services allowing for the ingestion and listing of files. Anyhow as a side experiment, I wanted to take the idea of a video [...]]]></description>
			<content:encoded><![CDATA[<p>As a side project, I&#8217;ve been looking at Media Uploads in Drupal 7. I am interested in using Media as a sort of asset management system at a machine level with web services allowing for the ingestion and listing of files. Anyhow as a side experiment, I wanted to take the idea of a video gallery using the Youtube and Vimeo Media modules.</p>
<p>In the tutorials that I&#8217;ve seen, the gallery often links back out to the original URL but what if the listing needs to link back to a node. It is not much but I did find  away of making the link work. I like the fairly simple listing of the preview, a title and associated tags. The preview and title are obvious (and the listing could be extended by adding in a description as well.) but the tags could be used for categorising the collection folksonomically.</p>
<p>As well as Media, Media_Youtube, Media_Vimeo, I used Taxonomy and Views 3.</p>
<p>The first step was to create a video content type to take an embed url from the services and put it into Drupal and allow the user to add in a title, a description and a limited number of tags to define contents by creating a form and having the form save the node. The file URL needs to be saved as a file entity since that is what Media 2 now uses. When the form is saved, it creates a node with the url. Using the theme() functions in the templates (thanks to Finn at <a title="Ecobee's website" href="http://ecobee.coop" target="_blank">Ecobee.coop</a> for helping me with this bit), the video stream can be shown using your own template. If you just use the standard node template which comes out of the Drupal box, then you do not need to worry about this at all.  So that sets up the individual nodes which have videos and descriptions of them in. But how to view them?</p>
<p>Well that is where views comes in. I created a new view call videos/all and used the fields to select all videos at that url. I also set up a contextual filter to query the videos which were set up with tags against them to filter on the tag term and return all associated video type nodes. The default is set to show all if there are no videos with a term.</p>
<p>The one issue that I did find with this was if I wanted to have the video itself linked to the node, not just the title (which can be set when you call the title as a field). I had to use the content:NID field which is excluded from the display.</p>
<p>In the content:Video field, I set up a link which referenced the content:NID  value in the link option, had it replace the spaces with dashes and use an absolute link to provide the URL so that a preview image could be used as a link as well like Vimeo or YouTube where you have both sorts of links in the galleries.</p>
<p>(Another long-winded way of doing this is using the global PHP and using drupal_lookup_path() to turn the node id into a URL but you shouldn&#8217;t need to do this. )</p>
<p>Using these simple modules, you can create a simple Video gallery that allows you to show videos from the various web services using the Media modules. I am sure that there are other ways of doing the same thing. I am sure that I will be exploring this more as I am hoping to use Media for a variety of other projects.</p>
]]></content:encoded>
			<wfw:commentRss>http://austgate.co.uk/2011/12/creating-a-simple-video-gallery-using-drupal-7/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The book is dead, long live the book?</title>
		<link>http://austgate.co.uk/2011/12/the-book-is-dead-long-live-the-book/</link>
		<comments>http://austgate.co.uk/2011/12/the-book-is-dead-long-live-the-book/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 12:37:06 +0000</pubDate>
		<dc:creator>iain_emsley</dc:creator>
				<category><![CDATA[publishing]]></category>

		<guid isPermaLink="false">http://austgate.co.uk/?p=428</guid>
		<description><![CDATA[Forbes Magazine, via Hacker news, has an article by Trevor Butterworth, &#8216;As The Age Of The Physical Book Retreats, The Cult Of The Physical Book Advances&#8216;, which perhaps re-states where we are with publishing and bookselling. The physical book is enjoying a bit of renaissance in the sense that it appers to be viewed as [...]]]></description>
			<content:encoded><![CDATA[<p>Forbes Magazine, via Hacker news, has an article by Trevor Butterworth, &#8216;<a title="Trevor Butterworth in Forbes on the physical book" href="http://www.forbes.com/sites/trevorbutterworth/2011/12/28/as-the-age-of-the-physical-book-retreats-the-cult-of-the-physical-book-advances/" target="_blank">As The Age Of The Physical Book Retreats, The Cult Of The Physical Book Advances</a>&#8216;, which perhaps re-states where we are with publishing and bookselling.</p>
<p>The physical book is enjoying a bit of renaissance in the sense that it appers to be viewed as thing of beauty and joy. The republishing of classics in beautiful jackets and the act of booksellers becoming publishers again shows that not only are older models of publishing/bookselling returning but also that the book&#8217;s future is not solely in electronic format.</p>
<p>It is a good time to rethink a cherished, for some of us, medium that we love but also to hold onto its past as somethign still vital. I&#8217;m not sure that Butterworth adds much to the argument in his article but it is a reminder that such things can, and should be, mused on.</p>
]]></content:encoded>
			<wfw:commentRss>http://austgate.co.uk/2011/12/the-book-is-dead-long-live-the-book/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New year, new directions?</title>
		<link>http://austgate.co.uk/2011/12/new-year-new-directions/</link>
		<comments>http://austgate.co.uk/2011/12/new-year-new-directions/#comments</comments>
		<pubDate>Mon, 26 Dec 2011 11:08:45 +0000</pubDate>
		<dc:creator>iain_emsley</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://austgate.co.uk/?p=429</guid>
		<description><![CDATA[We are in the middle of the dead days, as Marcus Sedgwick describes them in one of sequences. It seems like a time for soem reflection, partially based on an intepretation of Steve Poland&#8217;s What startup to Build? post on Techcrunch. This is not to say that I an necessarily thinking of building a startup [...]]]></description>
			<content:encoded><![CDATA[<p>We are in the middle of the dead days, as Marcus Sedgwick describes them in one of sequences. It seems like a time for soem reflection, partially based on an intepretation of Steve Poland&#8217;s <a title="Steve Poland on What Startup to Build on techcrunch" href="http://techcrunch.com/2011/12/25/what-startup-to-build/" target="_blank">What startup to Build?</a> post on Techcrunch. This is not to say that I an necessarily thinking of building a startup but the recurring notion of focussing on a problem struck a chord whilst I was out walking this morning.</p>
<p>I have found myself spinning out in various directions due to existing work and personal commitments and things I am interested in. Some of these overlap in odd ways and some do not. I have largely stopped doing anyhting personal in the last few weeks for a variety of reasons but having had a couple of days off and looking at a backlog of unpublished posts on the blog, I&#8217;ve begun rethinking some of these. I have one or two things about Drupal and messaging to be published and to explore in the next few days. Admittedly these are slightly more work related but I am also interested in them.</p>
<p>I am also trying to do somethings for other people. I am admittedly way behind where I would like to be on these and have used the last couple of days off to have a think about how I tackle these and play &#8216;catch up&#8217; to produce the work that  I would be happy showing rather than just trying to get a post out or a function finished. There are things that I can fold into work from these projects and I am determined to get on with them next. When I do, I can post about them.</p>
<p>As some acquaintances know, I have a notebook full of ideas which I have collected in the last few years. The intention of these has always been to build them into something useful and to explore how large scale things and ideas can be rebuilt for the individual. At this moment I have no idea how I am necessarily going to complete them but I do see the next few days and January trying to clear up things and tie off soome loose ends.</p>
<p>This does mean that I will have to rationalise the things that I will get involved with. Admittedly I overcommitted last year and I am trying to honour these commitments, but many of these are in areas that I am interested in. So decisions, decisions. I started doing some of the things that I do because I was deeply frustrated with a job that I was in and followed my own curiosity. It took me into new areas and langauges. I managed to build things but perhaps it came out of balance. I got frustrated because I could not build all the things that I wanted to.</p>
<p>I am hoping to go back to work refreshed and invigourated as well as recomitting to the current projects. I do not want to just finish them but build something with which I am happy. Some older projects may get rebooted in the scheme of things as they become relevant to work or other projects but they may also disappear. At this moment I amnot 100% sure what will happen to them but there is a rather dusty development section which needs spring cleaning. I may also move it to a secion called, tentatively, Kitchen Table, which comes from the notion of cottage working and also that fact that my desk is an old kitchen table.</p>
<p>I am excited but nervous. Spring cleaning, moving on is not easy and I am sure that I will see old projects and not want to get rid of them but I need to. I need to whittle away cruft and prune to renew growth and have fun again. I am also learning to sit on my hands and not to start anything new for a couple of weeks at least whilst I finish the current bits of work I have said that I would get on with.</p>
<p>I believe that most of these compliment each other and the problem that I am interested in should become clearer and more focussed in due course.</p>
<p>Onwards and forwards.</p>
]]></content:encoded>
			<wfw:commentRss>http://austgate.co.uk/2011/12/new-year-new-directions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Minor musings on publishing</title>
		<link>http://austgate.co.uk/2011/12/minor-musings-on-publishing/</link>
		<comments>http://austgate.co.uk/2011/12/minor-musings-on-publishing/#comments</comments>
		<pubDate>Sat, 03 Dec 2011 14:29:37 +0000</pubDate>
		<dc:creator>iain_emsley</dc:creator>
				<category><![CDATA[publishing]]></category>

		<guid isPermaLink="false">http://austgate.co.uk/?p=422</guid>
		<description><![CDATA[I&#8217;ve been reading some of Alistair Horne&#8217;s tweets marked #pubnow on Twitter, following some of Richard Charkin&#8217;s comments in his talk. One of his tweets is that financial publishers are transforming themselves into an information platform, following another that academic publishers are joining together to create platforms. It seems that there is some confusion, if [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been reading some of Alistair Horne&#8217;s <a title="Press Futurist twitter account" href="http://twitters.com/pressfuturist" target="_blank">tweets</a> marked <a title="Twitter feed ofr #pubnow " href="https://twitter.com/#!/search?q=%23pubnow" target="_blank">#pubnow</a> on Twitter, following some of Richard Charkin&#8217;s comments in his talk.</p>
<p>One of his tweets is that financial publishers are transforming themselves into an information platform, following another that academic publishers are joining together to create platforms. It seems that there is some confusion, if not fear, about the future of publishing.</p>
<p>The idea of publishing as information, that it could be a platform, which either gives away or sells the information to the end user. The idea of a book needs to broaden from the idea of the end physical object and into the data leading to it (for academic publishing) or perhaps notes or edits for fiction.</p>
<p>In the Guardian Review today, Kathryn Hughes has a wonderful <a title="Kathryn Hughes on book design in Guardian review" href="http://www.guardian.co.uk/books/2011/dec/02/beautiful-book-covers" target="_blank">article on the re-rise of the beautifully designed book</a>. It seems that physical book is being rethought as a physical object which could conceivably be kept, rather than being seen as a consumable. I&#8217;m in awe of the cover of Erin Morgenstern&#8217;s Night Circus and will treasure that hardback; that it is incredibly well written is another keeping factor here, of course. I&#8217;ve been looking at the Vintage Modern Classic books and the Faber poetry hardbacks with a desire to sit in the shop and stroke the covers.</p>
<p>Publishing has a wonderful future ahead of it, not only a glorious past. There are moves in the industry to the new future which bode well on the fringes as well as in the forward thinking houses. Looking forward to seeing what happens. I&#8217;m trying to keep this in mind for various forthcoming projects.</p>
]]></content:encoded>
			<wfw:commentRss>http://austgate.co.uk/2011/12/minor-musings-on-publishing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Tesseract with Python for OCR</title>
		<link>http://austgate.co.uk/2011/11/using-tesseract-with-python-for-ocr/</link>
		<comments>http://austgate.co.uk/2011/11/using-tesseract-with-python-for-ocr/#comments</comments>
		<pubDate>Sun, 27 Nov 2011 18:38:59 +0000</pubDate>
		<dc:creator>iain_emsley</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[ocr]]></category>
		<category><![CDATA[open_literature]]></category>
		<category><![CDATA[tesseract]]></category>
		<category><![CDATA[textcamp]]></category>

		<guid isPermaLink="false">http://austgate.co.uk/?p=415</guid>
		<description><![CDATA[Following several conversations with Alex Butterworth over pots of tea in the crypt of St Mary&#8217;s Church in Oxford, I&#8217;ve been having a look at Python and its bindings with the Tesseract library. A quick Google search brought me to this post by Roy on building an HTTP service using Tornado. I am fairly new [...]]]></description>
			<content:encoded><![CDATA[<p>Following several conversations with Alex Butterworth over pots of tea in the crypt of St Mary&#8217;s Church in Oxford, I&#8217;ve been having a look at Python and its bindings with the <a title="Tessearct OCR library" href="http://code.google.com/p/tesseract-ocr/" target="_blank">Tesseract</a> library.</p>
<p>A quick Google search brought me to this post by Roy on building an<a title="OCR, Tornado" href="http://www.morethantechnical.com/2011/01/25/10-lines-of-code-ocr-http-service-with-python-tesseract-and-tornado/" target="_blank"> HTTP service using Tornado</a>. I am fairly new to <a title="Tornado's website" href="http://www.tornadoweb.org/" target="_blank">Tornado</a> but have been looking at it for an experiment at work. However I have been using <a title="Flask microsite app" href="http://flask.pocoo.org" target="_blank">Flask</a> for other projects such as a quick and dirty RDF browser largely based on Chris Gutteridge&#8217;s PHP browser. (At some point very soon, I need to get back to this but other projects are slightly more pressing at the moment.)</p>
<p>After a quick upgrade to version 0.8, I have managed to put something together a little like Roy&#8217;s script but I&#8217;m hoping to go further and add a storage layer before tidying it all up.</p>
<p>Unlike Roy&#8217;s script, I&#8217;ve pushed the Tesseract and file handling code outside of the server. In the long term, I&#8217;d like to split out the file handling and storage facilities from the web server which means looking at the storage. As a quick step, I&#8217;ve popped in a link to a MySQL database but a far better option would probably be a NoSQL database like CouchDB or similar. I suppose a Key / Value store like Redis could be used as well (<a title="Redisfs " href="http://blog.steve.org.uk/i_updated_my_redis_based_filesystem.html" target="_blank">Redisfs apparently does something like this</a>) as a back end. I&#8217;m keeping options open.</p>
<p>I do have a temptation to use RabbitMQ to notify various workers that a file exists which suggests that if I&#8217;m hoping to use this as a book scanner back end (discussed at the Textcamp event in August), then I need to add in an automated set of scripts which reads a directory and deals with the file and moving, storing and scanning them. Perhaps Tornado might be a long term answer but realistically it is not needed for a test project.</p>
<p>Also, Tesseract will need some training as I&#8217;ve discovered this evening playing with some newspaper text and seeing some of the results. As one of the reason I began this was to store old fanzines and newspaper articles which I&#8217;ve stored for research but are now degrading, that might be a problem.</p>
<p>Either way, this is a way of moving ahead with the book scanner conversation and building something small to scratch some itches.</p>
]]></content:encoded>
			<wfw:commentRss>http://austgate.co.uk/2011/11/using-tesseract-with-python-for-ocr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beginning APC with Drupal</title>
		<link>http://austgate.co.uk/2011/10/beginning-apc-with-drupal/</link>
		<comments>http://austgate.co.uk/2011/10/beginning-apc-with-drupal/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 19:18:41 +0000</pubDate>
		<dc:creator>iain_emsley</dc:creator>
				<category><![CDATA[Open Knowledge]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://austgate.co.uk/?p=406</guid>
		<description><![CDATA[I&#8217;ve been looking at performance in PHP as a side project. I decided to install it on Snow Leopard, having already set up PEAR and PECL. Using pecl install apc, I downloaded APC which appeared to be fine. However when I ran some scripts, I got the error: Fatal error: Unknown: apc_fcntl_unlock failed: in Unknown [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been looking at performance in PHP as a side project. </p>
<p>I decided to install it on Snow Leopard, having already set up PEAR and PECL. Using pecl install apc, I downloaded APC which appeared to be fine. However when I ran some scripts, I got the error:<br />
Fatal error: Unknown: apc_fcntl_unlock failed: in Unknown on line 0 </p>
<p>which was definitely not expected.</p>
<p>I found some useful instructions on the PHP Bug fixes (https://bugs.php.net/bug.php?id=59750 ). I ran pecl uninstall apc then installed the beta version and answered &#8220;no&#8221; to pthreadm utex locks and  &#8220;yes&#8221; to spinlocks. You will also need to add apc.rfc1867 = 1 to the php.ini file for use with Drupal 7.</p>
<p>Having done this, I no longer get any errors in the status report regarding APC and when I have got my head around Organic Groups, I&#8217;m looking forward to getting into APC and improving Drupal performance. </p>
]]></content:encoded>
			<wfw:commentRss>http://austgate.co.uk/2011/10/beginning-apc-with-drupal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

