<?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>Ciaran&#039;s Random Writings &#187; Laconica</title>
	<atom:link href="http://ciarang.com/posts/category/software/laconica/feed" rel="self" type="application/rss+xml" />
	<link>http://ciarang.com</link>
	<description>Random things I&#039;ve written about stuff</description>
	<lastBuildDate>Thu, 02 Feb 2012 17:46:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Commit Visualisation Revisited</title>
		<link>http://ciarang.com/posts/commit-visualisation-revisited</link>
		<comments>http://ciarang.com/posts/commit-visualisation-revisited#comments</comments>
		<pubDate>Thu, 03 Sep 2009 21:08:26 +0000</pubDate>
		<dc:creator>CiaranG</dc:creator>
				<category><![CDATA[Git]]></category>
		<category><![CDATA[Laconica]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[StatusNet]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ciarang.com/?p=716</guid>
		<description><![CDATA[I wrote briefly about code_swarm last year &#8211; a tool to generate visualisations of a project&#8217;s commit history. Today, via Brenda Wallace, I found out about a new variation on the same theme &#8211; so new it hasn&#8217;t been released or even named yet. Apparently though the author, Andrew Caudwell, is planning to release the [...]]]></description>
			<content:encoded><![CDATA[<p>I wrote briefly about <a href="http://ciarang.com/posts/apache-commit-visualisation-code_swarm">code_swarm last year</a> &#8211; a tool to generate visualisations of a project&#8217;s commit history. Today, via <a href="http://www.br3nda.com/">Brenda Wallace</a>, I found out about a new variation on the same theme &#8211; so new it hasn&#8217;t been released or even named yet. Apparently though the author, Andrew Caudwell, is planning to release the source in the very near future.</p>
<p>The following video, also courtesy of Brenda Wallace, shows the output generated from the StatusNet (formerly Laconica) git repository:</p>
<p><img src="http://ciarang.com/wp-content/plugins/flash-video-player/default_video_player.gif" /></p>
<p>I think this is really impressive stuff, and not just because I&#8217;m in it. There&#8217;s a better quality version <a href="http://www.youtube.com/watch?v=lP3JaOFy-qM">on YouTube</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ciarang.com/posts/commit-visualisation-revisited/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Microblog as an Information Hub</title>
		<link>http://ciarang.com/posts/the-microblog-as-an-information-hub</link>
		<comments>http://ciarang.com/posts/the-microblog-as-an-information-hub#comments</comments>
		<pubDate>Tue, 31 Mar 2009 16:22:59 +0000</pubDate>
		<dc:creator>CiaranG</dc:creator>
				<category><![CDATA[Laconica]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[StatusNet]]></category>
		<category><![CDATA[XMPP]]></category>

		<guid isPermaLink="false">http://ciarang.com/?p=655</guid>
		<description><![CDATA[Something that&#8217;s becoming obvious to me lately is the unintended suitability of a microblog to act as an information hub. To clarify the term microblog here, many may understand that as Twitter, but that would be a bad example because a) it&#8217;s both a single public instance of a microblog, and b) it doesn&#8217;t have [...]]]></description>
			<content:encoded><![CDATA[<p>Something that&#8217;s becoming obvious to me lately is the unintended suitability of a microblog to act as an information hub. To clarify the term microblog here, many may understand that as Twitter, but that would be a bad example because a) it&#8217;s both a single public instance of a microblog, and b) it doesn&#8217;t have all the capabilities that make this so interesting.</p>
<p>Therefore a good example of what I&#8217;m talking about would be a private instance of <a href="http://laconi.ca" class="broken_link">Laconica</a> running on a local network, or perhaps in a private setup on the public internet. I say private because some of the examples I&#8217;m going to give are most appropriate for a private setup.</p>
<p><span id="more-655"></span></p>
<p>So let&#8217;s consider some examples of information you might push to a microblog on a home network, each going to a different user account:
<ul>
<li>Security camera events</li>
<li>Music played</li>
<li><a href="http://projects.ciarang.com/p/toothspy">Bluetooth device presence monitoring</a> &#8211; i.e. who&#8217;s at home?</li>
<li>TV recording information &#8211; <a href="http://opensource.blogs.weloveit.info/?p=13" class="broken_link">e.g. from MythTV</a></li>
</ul>
<p>Some of the above would also apply to an internal company network. These ones definitely do: (my examples are biased towards a software development company)</p>
<ul>
<li>General news and announcements</li>
<li>Automated build process status</li>
<li>Bug tracker issues opened/closed/commented &#8211; <a href="http://micro.ciarang.com/laconicatrac">example</a></li>
<li>Automated QA test results</li>
<li>Version control commits</li>
<li>Birthdays, social events</li>
<li>Network/IT status &#8211; <a href="http://identi.ca/shstatus">example</a></li>
<li>Wiki/intranet changes</li>
<li>Local traffic/transport updates &#8211; <a href="http://identi.ca/traffichouston">example</a></li>
</ul>
<p>With these examples in mind why does a microblog, not designed for this purpose, lend itself so well to being a hub for all this information. And why have such a hub at all?</p>
<p>Firstly, from the user perspective, there are a wide variety of friendly ways of accessing all this information either in real time, on demand, or retrospectively, and all of these can be mixed and matched easily and simply. For example, subscribe via XMPP to things you need to know about in real time, grab RSS/Atom feeds for important but not real-time stuff, browse the via the web interface for others, and <a href="http://ciarang.com/posts/lacon-ical">integrate some into your calendar</a>. All kinds of other useful machine-readable information also come for free &#8211; microformats, RDF, FOAF, for example.</p>
<p>In addition to these methods, an ever expanding range of <a href="http://laconi.ca/trac/wiki/Apps" class="broken_link">desktop and mobile device clients</a> is available.</p>
<p>On the publishing side things are easy too because as well as a simple <a href="http://laconi.ca/trac/wiki/API" class="broken_link">API</a> for posting notices, there is already a range of ready-made tools for doing so. For example, many information sources already produce an RSS and/or Atom feed &#8211; these can be easily hooked up using <a href="http://ciarang.com/posts/feed2omb">feed2omb</a>. For sources that produce output in the form of emails, Laconica will accept those directly, and various solutions exist for SMS.</p>
<p>Amongst all the above machine generated data, you can intersperse the obligatory microblogging-style &#8220;Jill in accounts is eating an egg sandwich&#8221; trivia, or more seriously the &#8220;Jack is heading back from a meeting where the terms of the new contract with Acme Widgets were finalised&#8221;.</p>
<p>I think so far this is just scraping the surface of what&#8217;s possible. If you want to join in, the <a href="http://laconi.ca" class="broken_link">Laconica</a> software is Open Source and has deliberately low install dependencies to allow it to work on the widest range of possible platforms. Also of interest is the recently announced <a href="http://status.net/">status.net</a> which will soon be providing turnkey hosted Laconica instances, both public and private.</p>
]]></content:encoded>
			<wfw:commentRss>http://ciarang.com/posts/the-microblog-as-an-information-hub/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lacon-iCal &#8211; a Laconica plugin for iCalendar feeds</title>
		<link>http://ciarang.com/posts/lacon-ical</link>
		<comments>http://ciarang.com/posts/lacon-ical#comments</comments>
		<pubDate>Wed, 04 Mar 2009 20:21:04 +0000</pubDate>
		<dc:creator>CiaranG</dc:creator>
				<category><![CDATA[Laconica]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[StatusNet]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://ciarang.com/?p=629</guid>
		<description><![CDATA[Lacon-iCal is a plugin for the Laconica microblogging platform that provides an iCalendar (RFC 2445) feed for each user&#8217;s notices. This initial release makes use of the new plugin system, and therefore requires Laconica version 0.7.2 or higher. The project repository is hosted at Gitorious and currently consists of a single file. Installation is simple [...]]]></description>
			<content:encoded><![CDATA[<p>Lacon-iCal is a plugin for the Laconica microblogging platform that provides an iCalendar (<a href="http://tools.ietf.org/html/rfc2445">RFC 2445</a>) feed for each user&#8217;s notices. This initial release makes use of the new plugin system, and therefore requires Laconica version 0.7.2 or higher.</p>
<p>The <a href="http://gitorious.org/projects/lacon-ical">project repository</a> is hosted at Gitorious and currently consists of a single file. Installation is simple &#8211; first, place that file in Laconica&#8217;s plugins directory, and then add the following to the end of config.php:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">addPlugin<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'ICal'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'limit'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">20</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>The 20 is the maximum number of notices that will be present in a feed &#8211; set this to a value that suits your installation.</p>
<p>Once the above is done, the plugin is installed, and you can access a user&#8217;s iCalendar feed by appending /ical to their profile url, so <i>http://example.com/bob/ical</i> would be bob&#8217;s iCalendar feed, assuming that example.com was running Laconica, and bob was a user there, neither of which is true.</p>
]]></content:encoded>
			<wfw:commentRss>http://ciarang.com/posts/lacon-ical/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Laconica on Debian Etch with PostgreSQL</title>
		<link>http://ciarang.com/posts/laconica-etch-postgresql</link>
		<comments>http://ciarang.com/posts/laconica-etch-postgresql#comments</comments>
		<pubDate>Wed, 24 Sep 2008 15:54:55 +0000</pubDate>
		<dc:creator>CiaranG</dc:creator>
				<category><![CDATA[Laconica]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[StatusNet]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blog.ciarang.com/?p=419</guid>
		<description><![CDATA[A quick guide to getting Laconica up and running on Debian Etch using PostgreSQL as the database. The starting point for all this is a clean install of the netinst version, with no additional software selected during the install. Everything here is done as the root user. If this all seems a bit long-winded, that&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>A quick guide to getting <a href="http://laconi.ca" class="broken_link">Laconica</a> up and running on Debian Etch using PostgreSQL as the database. The starting point for all this is a clean install of the netinst version, with no additional software selected during the install. Everything here is done as the root user.</p>
<p>If this all seems a bit long-winded, that&#8217;s because it is, but I thought it was better to cover everything from a clean install. In theory you should be able to follow this to the letter and end up with a working Laconica. Corrections will be gratefully received.</p>
<p><span id="more-419"></span></p>
<p>We&#8217;re going to use some software from <em>backports</em> to make life slightly easier, so the first thing to do is to add the following line to /etc/apt/sources.list:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">deb http://www.backports.org/debian etch-backports main contrib non-free</pre></div></div>

<p>&#8230;and do this:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">apt-get update
apt-get install debian-backports-keyring</pre></div></div>

<p>Having done that, we can install some of the software we need:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">apt-get install git-core
apt-get install apache2
apt-get install libapache2-mod-php5 php5-cli php-pear php5-pgsql php5-curl libgmp3c2
apt-get -t etch-backports install postgresql-8.3
pear install channel://pear.php.net/Validate-0.8.1
pear install DB_DataObject
pear install Mail
pear install Net_SMTP
wget http://ciarang.com/stuff/php5-gmp_520-8etch11_i386.deb
dpkg -i php5-gmp_520-8etch11_i386.deb
rm php5-gmp_520-8etch11_i386.deb</pre></div></div>

<p>A word of warning on that .deb file for the PHP5 GMP support &#8211; you should really recompile php yourself to get that module. I should have done that as well, but instead I grabbed it from <a href="http://www.vortex-tech.com/2008/05/16/latest-php5-gmp-for-etch/">here</a>. If you&#8217;re more sensible, the compile instructions are linked from there too.</p>
<p>Anyway, whether you took the sensible option or not, we now need the Laconica source:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">cd /var/www
git clone git://gitorious.org/laconica/mainline.git laconica
cd laconica
cp htaccess.sample .htaccess
cp config.php.sample config.php</pre></div></div>

<p>The next job is to set up the database:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">su postgres
psql</pre></div></div>

<p>As always, I will use my luggage combination for the database password. You&#8217;ll see this referenced again later in these instructions, so each time use your luggage combination instead if for some strange reason it isn&#8217;t the same. So, at the psql prompt, which is where we are now:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">create user laconica with password '1234';
create database laconica with owner laconica encoding 'UTF8';
\q</pre></div></div>

<p>Now stop impersonating the postgres user, and create the database tables themselves as the laconica user:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">exit
psql -h localhost -U laconica -d laconica -f db/laconica_pg.sql</pre></div></div>

<p>Next, some editing in Laconica config.php file. These are just the settings you NEED to change &#8211; leave everything else alone until you have it up and running:</p>
<ul>
<li>['site']['path'] = &#8221;;</li>
<li>['site']['server'] = &#8216;your.domain.here&#8217;;</li>
<li>['site']['fancy] = true;</li>
<li>['db']['database'] = &#8216;pgsql://laconica:1234@localhost/laconica&#8217;;</li>
<li>['db']['ini_laconica'] = $config['db']['schema_location'].&#8217;/laconica.ini&#8217;;</li>
<li>['db']['quote_identifiers'] = true;</li>
<li>['db']['type'] = &#8216;pgsql&#8217;;</li>
</ul>
<p>Also add the following to the config to deal with the lack of a sys_get_temp_dir function in PHP 5.2.0:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">include</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">dirname</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">__FILE__</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/extlib/get_temp_dir.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>At the same time, change the RewriteBase directive at the top of .htaccess to read &#8220;RewriteBase /&#8221;.</p>
<p>Now create the file /etc/apache2/sites-available/laconica with contents like this, putting the correct domain for your laconica install in place of your.domain.here:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">&lt;VirtualHost *&gt;
        ServerName linton
        ServerAlias 192.168.0.21
&nbsp;
        DocumentRoot /var/www/laconica
        &lt;Directory /var/www/laconica&gt;
                AllowOverride All
                Order allow,deny
                allow from all
        &lt;/Directory&gt;
&nbsp;
        ErrorLog /var/log/apache2/error.log
&nbsp;
        LogLevel warn
&nbsp;
        CustomLog /var/log/apache2/access.log combined
&lt;/VirtualHost&gt;</pre></div></div>

<p>Enable the new site and the Apache modules we need, and restart Apache:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">a2ensite laconica
a2enmod rewrite
a2enmod php5
apache2 <span style="color: #660033;">-k</span> restart</pre></div></div>

<p>All being well, if you visit your server in a browser you should be presented with a working (if ugly) Laconica install. Time to test and then start configuring.</p>
]]></content:encoded>
			<wfw:commentRss>http://ciarang.com/posts/laconica-etch-postgresql/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>feed2omb &#8211; A feed to microblog posting tool</title>
		<link>http://ciarang.com/posts/feed2omb</link>
		<comments>http://ciarang.com/posts/feed2omb#comments</comments>
		<pubDate>Sun, 31 Aug 2008 10:29:17 +0000</pubDate>
		<dc:creator>CiaranG</dc:creator>
				<category><![CDATA[Laconica]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[StatusNet]]></category>

		<guid isPermaLink="false">http://blog.ciarang.com/?p=366</guid>
		<description><![CDATA[Update: For the latest version and up to date documentation, please see the project page. feed2omb is a simple tool that takes input from Atom or RSS feeds and posts updates to the open microblogging service of your choice. It should also (though I&#8217;m not going to try it) quite happily post to Twitter. The [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update: For the latest version and up to date documentation, please see <a href="http://projects.ciarang.com/p/feed2omb">the project page</a></strong>.</p>
<p><strong>feed2omb</strong> is a simple tool that takes input from Atom or RSS feeds and posts updates to the open microblogging service of your choice. It should also (though I&#8217;m not going to try it) quite happily post to Twitter.</p>
<p>The feed reading is handled by Mark Pilgrim&#8217;s excellent <a href="http://www.feedparser.org/" class="broken_link">Universal Feed Parser</a> so it should be able to deal with any feed you throw at it. On the posting side, you can send the updates to open microblogging services such as those based on <a href="http://laconi.ca" class="broken_link">Laconica</a> &#8211; this includes <a href="http://identi.ca">Identica</a>.</p>
<p><span id="more-366"></span></p>
<p><strong>Installation:</strong></p>
<p>You should be able to run this on any operating system where you can install Python (tested with 2.5). In addition to <a href="http://ciarang.com/feed2omb/feed2omb-0.5.zip">feed2omb</a> itself, you need the <a href="http://www.feedparser.org/" class="broken_link">Universal Feed Parser</a> and <a href="http://www.voidspace.org.uk/python/configobj.html">ConfigObj</a>. Both dependencies can either be installed properly or just placed in the same directory as feed2omb.</p>
<p><strong>Usage:</strong>
<p>Create one or more config files (one for each feed) using the <a href="http://git.ciarang.com/?p=feed2omb.git;a=blob;f=sample.config;h=a4bba6348943107548a48aa92084c56bd3af344d;hb=HEAD">sample.config</a> file as an example.</p>
<p>Run <em>feed2omb.py &#45;&#45;update &#45;&#45;test yours.config</em> to check everything is working. This will not post anything, but just output the new messages it finds. If everything looks good, you can run again with the <em>&#8211;test</em> option and schedule this to run on a regular basis.</p>
<p>You can specify as many config files as you need &#8211; each will be processed in turn. For help on the command line, use <em>feed2omb.py &#45;&#45;help</em>.</p>
<p><strong>Other Options</strong></p>
<p>Instead of <em>&#45;&#45;update</em>, you can specify <em>&#45;&#45;eat</em>. In this case, new messages found will be marked as sent, but will not actually be sent. This is useful when setting up a new feed, to prevent the sending of lots of old items.</p>
<p>The <em>&#45;&#45;max</em> restricts processing to a specified number of items per run. For example, specify <em>&#45;&#45;max=1</em> to only process one item. When set up this way, even if there are multiple new items in the feed, only one (the oldest) will be processed on each run. This can be used to avoid flooding the omb service with a batch of messages all at once.</p>
<p><strong>FAQ:</strong></p>
<p><strong>Q:</strong> Now twitterfeed.com supports Laconica, why not just use that or something like it?<br/><br />
<strong>A:</strong> That would be easier, but: a) you have to give it your account details, b) it&#8217;s not &#8216;open&#8217; and you can&#8217;t customise it, and c) you might be running a private Laconica instance on a non-public network.</p>
<p><strong>Q:</strong> Where&#8217;s the source code?<br/><br />
<strong>A:</strong> In the zipped download (see above), or you can browse the <a href="http://git.ciarang.com/?p=feed2omb.git;a=summary">git repository</a> or clone it using git from there &#8211; e.g.:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">   <span style="color: #c20cb9; font-weight: bold;">git</span> clone http:<span style="color: #000000; font-weight: bold;">//</span>git.ciarang.com<span style="color: #000000; font-weight: bold;">/</span>feed2omb.git</pre></div></div>

<p><strong>Q:</strong> What license is this released under?<br/><br />
<strong>A:</strong> <a href="http://www.fsf.org/licensing/licenses/agpl-3.0.html">AGPL v3</a></p>
<p><strong>Q:</strong> Can it output the author&#8217;s name along with the entry&#8217;s title?<br/><br />
<strong>A:</strong> Yes, version 0.5 adds a &#8216;msgmode&#8217; setting to the config file. With this set to &#8216;title&#8217; (the default) just the entry&#8217;s title is sent. Setting it to &#8216;authtitle&#8217; sends the author&#8217;s name followed by the title &#8211; this is useful for feeds with multiple authors, or aggregated feeds such as those sourced from a Planet installation.</p>
<p><strong>Q:</strong> Why isn&#8217;t my question answered here?<br/><br />
<strong>A:</strong> You haven&#8217;t asked it yet. Ask <a href="http://ciarang.com/who/">me</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ciarang.com/posts/feed2omb/feed</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
	</channel>
</rss>

