<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.7.6(BH)" -->
<rss version="2.0"    xmlns:georss="http://www.georss.org/georss/"
>
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>Henri Bergius: category &quot;openpsa&quot;</title>
        <description>Motorcycle Adventures and Free Software from Henri Bergius</description>
        <link>http://bergie.iki.fi/blog/</link>
        <lastBuildDate>Tue, 08 May 2012 10:27:35 +0000</lastBuildDate>
        <generator>FeedCreator 1.7.6(BH)</generator>
        <language>en</language>
        <managingEditor>henri.bergius@iki.fi</managingEditor>
        <item>
            <title>Open Advice</title>
            <link>http://bergie.iki.fi/blog/open_advice/</link>
            <description><![CDATA[
<p><img src="http://bergie.iki.fi/static/1/1e171b06217a15871b011e1bc5b5d4704468fc08fc0_openadvice-small.jpg" border="0" alt="Open Advice cover" title="Open Advice" style="float:right;margin-left:10px;" />I seem to have not blogged about this, but <strong><a href="http://open-advice.org/">Open Advice</a></strong>, our book on <em>Free and Open Source Software: what we wish we had known when we started</em>, was published last month.</p>
<p>The book was edited by <a href="http://www.lydiapintscher.de/book.php">Lydia Pintscher</a> and includes essays from <a href="http://open-advice.org/author.html">42 authors</a>, many of whom you'll recognize if you tend to go to FOSS conferences. The <a href="http://lwn.net/Articles/481222/">LWN book review</a> concludes:</p>
<blockquote>Open Advice is a book that will be helpful to those who are new to FOSS, but, because of the individual voices, styles, and tones, it doesn't read like a "how to". It could even be recommended to those who aren't necessarily interested in contributing, but are curious about what this "free software thing" is all about. It is, in short, a great book for a variety of audiences and the (mostly) two or three page essays make it easy to read, while the anecdotes and recollections personalize it. The authors, editor, and everyone else who helped should be very pleased with the result. Readers will be too.</blockquote>
<p>I probably shouldn't give the ending away, but my essay on cross-project collaboration, a subject I've <a href="http://bergie.iki.fi/blog/on_cross-project_collaboration/">also blogged about</a>, ends with:</p>
<blockquote>Good luck with breaking down the project boundaries! In most cases it works if your ideas are good and presented with an open mind. But even if you do not find a common ground, as long as your implementation solves the use case for you it has not been in vain. After all, delivering software, and delivering great user experience is what counts.</blockquote>
<p>The book is licensed under <a href="http://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA</a>, and is available as free download in <a href="http://open-advice.org/Open-Advice.epub">ePub</a>, <a href="http://open-advice.org/Open-Advice.mobi">mobi</a> and <a href="http://open-advice.org/Open-Advice.pdf">PDF</a> formats, and <a href="http://www.lulu.com/shop/lydia-pintscher/open-advice/paperback/product-18889265.html">as paperback from Lulu</a>. The book sources are <a href="https://github.com/lydiapintscher/Open-Advice">available on GitHub</a>, patches welcome!</p>]]></description>
            <author>henri.bergius@iki.fi (Henri Bergius)</author>
            <georss:point>52.490002 13.4212</georss:point>
            <category>business</category>
            <pubDate>Mon, 19 Mar 2012 10:51:12 +0000</pubDate>
            <guid>http://bergie.iki.fi/midcom-permalink-1e171b17152429471b111e1a582e78e1e97125b125b</guid>
        </item>
        <item>
            <title>Business analytics with CouchDB and NoFlo</title>
            <link>http://bergie.iki.fi/blog/business_analytics_with_couchdb_and_noflo/</link>
            <description><![CDATA[
<p>The purpose of <a href="http://37signals.com/svn/posts/3002-the-three-secrets-of-business-analytics-no-rocket-science-here">business analytics</a> is to find data from the company's information systems that can be used to support decision making. What customers buy most? What do they do before a buying decision? What are the signs that a customer may be leaving?</p>

<p>For the last month we've been working in Salzburg to build such a system, the <a href="http://www.iks-project.eu/resources/intelligent-project-controlling-tool">Intelligent Project Controlling Tool</a> needed for running large collaborative research projects like <a href="http://www.iks-project.eu/">IKS</a>. Since the design we went with can be reused for other business analytics needs, I wanted to write a bit about it.</p>

<p>But first, here is how our system looks like:</p>

<p><img src="http://bergie.iki.fi/midcom-serveattachmentguid-1e0e47ad96fbfcee47a11e08d46e7126c9836c236c2/proggis-iks-projectplan-500.png" alt="Proggis displaying IKS project plan" title="" /></p>

<h2>Where does the data come from?</h2>

<p>There are many ways to gather business data. Often the information systems already contain the data needed. But it may also be hidden in a jungle of spreadsheets. Or maybe some data is simply not available, and has to be filled in manually.</p>

<p>Handling all these cases in one system is a tricky question. To solve it, we went with a two-layered strategy:</p>

<ul><li>All data used for analytics is stored as <a href="http://en.wikipedia.org/wiki/Linked_Data">Linked Data</a> in a CouchDB system</li>
<li>NoFlo workflows are used for gathering data from the diverse sources and convert it to the format needed</li>
</ul><p>In IKS's case, much of the data was available in a series of spreadsheets. With these, we built the necessary workflows for first converting the spreadsheets into XML with <a href="http://tika.apache.org/">Apache Tika</a>, and then extracting the information from them in a sensible subset of JSON-LD.</p>

<p>Because IKS is a collaborative project, information needs to be gathered from a diverse group of partner organizations. Some of them have systems that provide the needed APIs (like <a href="http://basecamphq.com/">Basecamp</a>, which <a href="http://nemein.com/en/">we</a> use), and we can just periodically import the data. But with many we decided on a simple data interchange approach: spreadsheets handled over email.</p>

<p>In this approach, user files a data request into the system. This gets picked up by NoFlo, which sends an email with the appropriate spreadsheet template to the partner. Then it starts waiting for a reply. When a reply arrives, it extracts the data from the attached spreadsheet and imports it to the system.</p>

<p>Our NoFlo processes are mostly initiated by the <a href="http://guide.couchdb.org/draft/notifications.html">CouchDB change notification API</a>. We keep them running persistently using <a href="http://blog.nodejitsu.com/keep-a-nodejs-server-up-with-forever">forever Node</a>, so whenever some operation needs to be run it happens nearly immediately.</p>

<h2>Ensuring data consistency</h2>

<p>With any automation, and especially with the email-based data interchange, things can go wrong. Because of this we tag all data that we receive with its origin, whether it was some automated operation or an imported spreadsheet. These origins are called <em>execution documents</em>. Users can browse all completed workflow executions and see what data came in from them. These can then be either accepted or rejected.</p>

<p>This way if some partner accidentally sends faulty data, or something else breaks, the incorrect information received can be easily removed. CouchDB's versioning capabilities help here.</p>

<h2>Analyzing the data</h2>

<p>CouchDB is built on top of the concept of map/reduce. Here you can modify and combine the data in lots of different ways using <a href="http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views">simple JavaScript functions</a>. In our case we elected to write all our CouchDB code in CoffeeScript for simplicity. For example, here is the reduce function in CoffeeScript that counts totals of time planned, time used, and time left per task or partner in a project:</p>

<pre><code>(keys, values, rereduce) -&gt;
    roundNumber = (rnum, rlength) -&gt;
        Math.round(parseFloat(rnum) * Math.pow(10, rlength)) / Math.pow(10, rlength)
    data =
        planned: 0.0
        spent: 0.0
        left: 0.0

    if rereduce
        for reducedData in values
            data.planned += reducedData.planned
            data.spent += reducedData.spent
        data.left = data.planned - data.spent
        return data

    for doc in values
        if doc['@type'] is 'effortallocation'
            data.planned += roundNumber doc.value, 1
        if doc['@type'] is 'effort'
            data.spent += roundNumber doc.value, 1
    data.left = roundNumber data.planned - data.spent, 1
    return data
</code></pre>

<p>If you figure out a new way to look at the data you have, simply write the needed map and reduce functions and save them into the database. CouchDB will then run them against existing data and produce numbers.</p>

<h2>Data visualizations</h2>

<p>Numbers are good, but to really see the information buried in them you need some visualizations. For this we decided to follow the <a href="http://couchapp.org/page/what-is-couchapp">CouchApp</a> idea where the user interface code is stored in the database together with the data itself. This way no application servers are needed, and you can take the whole system with you just by <a href="http://guide.couchdb.org/draft/replication.html">replicating the database</a>. Think of the possibility of doing some analysis on your company while flying to a meeting!</p>

<p>The visuals are in our case provided by <a href="http://thejit.org/">JavaScript InfoVis Toolkit</a>, a nice, MIT-licensed interactive graph library.</p>

<p>CouchDB views handle the number crunching, then CouchDB <a href="http://guide.couchdb.org/draft/transforming.html">list functions</a> process the numbers into the format needed for visualization. This leaves only a minimal amount of work for the client side.</p>

<p>For consistency <a href="https://github.com/IKS/Proggis">our application</a> has been built with <a href="https://github.com/andrzejsliwa/coffeeapp">CoffeeApp</a>, so all the database and user interface code is in <a href="http://jashkenas.github.com/coffee-script/">CoffeeScript</a>.</p>

<h2>In a nutshell</h2>

<p>Any business analytics system dealing with moderate amounts of data can be built following this approach.</p>

<ul><li><a href="http://couchdb.apache.org/">Apache CouchDB</a> is the central data store</li>
<li>All data is stored as <a href="http://json-ld.org/">JSON-LD</a> entities</li>
<li><a href="https://github.com/bergie/noflo#readme">NoFlo</a> handles all data imports</li>
<li>Analytics based on the data are done with CouchDB map/reduce</li>
<li>Visualization happens with a CouchApp using <a href="http://thejit.org/">JavaScript InfoVis Toolkit</a></li>
</ul><p><img src="http://bergie.iki.fi/midcom-serveattachmentguid-1e0e47b247c04d2e47b11e08d46e7126c9836c236c2/proggis-architecture.png" alt="Simple architecture for a business analytics system" title="" /></p>

<p>This way you have a business analytics environment that is easy to extend with more data when it becomes available. New analysis can be done by writing reasonably simple map/reduce functions, and CouchDB's replication capabilities allow you to take the system and data with you.</p>

<p>Using JSON-LD for the data storage makes a lot of sense, as this way the relations between different pieces of information are easy to handle. And using URIs for data identifiers means you can easily mash up information coming from different sources together.</p>

<p>The two-layered approach of using NoFlo for data imports, and CouchDB for analysis also allows for clean separation of concerns. In our case, I did the workflow part of things, and <a href="https://github.com/szabyg">Szaby</a> built the visualizations.</p>
]]></description>
            <author>henri.bergius@iki.fi (Henri Bergius)</author>
            <georss:point>47 13</georss:point>
            <category>business</category>
            <pubDate>Wed, 21 Sep 2011 17:52:53 +0000</pubDate>
            <guid>http://bergie.iki.fi/midcom-permalink-1e0e47a87c9e4f6e47a11e099aa3595f995ab22ab22</guid>
        </item>
        <item>
            <title>Midgard in 2010</title>
            <link>http://bergie.iki.fi/blog/midgard_in_2010/</link>
            <description><![CDATA[
<p>Wow, 2010 was quite a hectic year in the <a href="http://www.midgard-project.org/">Midgard</a> world. Here is a quick summary:</p>
<ul><li>We held three Midgard Gatherings: one in <a href="http://www.midgard-project.org/community/events/archive/view/midgard_gathering-002/">Lodz, Poland in April</a>, one in <a href="http://www.midgard-project.org/community/events/archive/view/akademy_and_midgard_gathering/">Tampere, Finland in July</a> and one in <a href="http://www.midgard-project.org/community/events/archive/view/midgard_gathering_in_fscons_2010/">Gothenburg, Sweden in November</a>. In April we announced the <a href="http://bergie.iki.fi/blog/future_directions_for_midgard/">new directions of the project</a>.</li>
<li>The project completed <a href="http://bergie.iki.fi/blog/midgard2_has_moved_to_github/">a migration to Git</a> (and <a href="https://github.com/midgardproject">GitHub</a>) for Midgard2 and Midgard MVC, together with a <a href="http://www.midgard-project.org/discussion/developer-forum/read/4cf414fe644311df818bd7a6bcc6d37ed37e.html">change in the development process</a> to facilitate a more decentralized way of working</li>
<li>The Long-Term Supported <a href="http://bergie.iki.fi/blog/long-term_support_for_midgard-ragnaroek_is_here/">Midgard1 series 8.09 Ragnaroek</a> had two releases: <a href="http://www.midgard-project.org/updates/midgard-ragnaroek-8-09-8_released/">.8</a> and <a href="http://www.midgard-project.org/updates/midgard-ragnaroek-8-09-9_released/">.9</a>. After .9 there have been <a href="http://bergie.iki.fi/blog/recent_performance_improvements_for_midgard_8-09/">substantial performance improvements</a> that still <a href="http://trac.midgard-project.org/milestone/8.09.10%20Ragnaroek">wait for release</a></li>
<li>Midgard2 had its first Long-Term Supported version <a href="http://bergie.iki.fi/blog/ratatoskr_is_out-midgard2_content_repository_goes_lts/">10.05 Ratatoskr</a>, with three releases: <a href="http://www.midgard-project.org/updates/midgard2_10-05-ratatoskr-released/">.0</a>, <a href="http://www.midgard-project.org/updates/midgard2_10-05-1-ratatoskr-lts_released/">.1</a> and <a href="http://www.midgard-project.org/updates/midgard2_10-05-2-ratatoskr-lts_released/">.2</a></li>
<li>Midgard2 started providing language bindings via <a href="http://live.gnome.org/GObjectIntrospection">GObject Introspection</a></li>
<li>Midgard2 landed into <a href="http://bergie.iki.fi/blog/midgard2_content_repository_library_is_now_in_debian/">Debian unstable</a>, <a href="http://maemo.org/packages/view/libmidgard2-2010/">Maemo Extras</a> and <a href="https://build.pub.meego.com/project/packages?project=home:piotras:midgard2">MeeGo Community OBS</a></li>
<li>Third generation of <a href="http://bergie.iki.fi/blog/get_a_preview_of_the_next_midgard_content_repository/">Midgard Content Repository had its first release</a> showcasing more flexible model definition and <a href="https://github.com/midgardproject/midgard-core/blob/master/src/vala/examples/rdf_example.vala">built-in RDF storage</a>. The new MidgardCR is written in <a href="http://live.gnome.org/Vala">Vala</a></li>
<li>First version of the <a href="http://bergie.iki.fi/blog/using_rdfa_to_make_a_web_page_editable/">Midgard Create content management interface</a> was shown</li>
<li>Midgard MVC gained a <a href="http://www.midgard-project.org/discussion/developer-forum/pake_installer_for_midgard_mvc_applications/">new application installer</a> tool and the ability to be run on the <a href="https://github.com/indeyets/appserver-in-php/wiki">PHP Application Server</a></li>
<li>The <a href="http://openpsa2.org/">OpenPSA management suite</a> was <a href="https://github.com/flack/openpsa">forked out</a> from Ragnaroek tree, ported to Midgard2 and <a href="http://bergie.iki.fi/blog/help_testing_the_openpsa_business_suite/">packaged for Ubuntu</a></li>
<li>On Maemo, Midgard-powered applications like <a href="http://maemo.org/downloads/product/Maemo5/adventure-tablet/">The Tablet of Adventure</a> and <a href="http://maemo.org/downloads/product/Maemo5/maecalories/">MaeCalories</a> provided tens of thousands of Midgard installations on mobile phones</li>
</ul><p><a href="http://www.flickr.com/photos/bergie/4815191854/in/photostream/"><img src="http://farm5.static.flickr.com/4082/4815191854_f29ebdcb23_m.jpg" border="0" alt="Patching Midgard" /></a> <a href="http://www.flickr.com/photos/bergie/4508596904/in/photostream/"><img src="http://farm3.static.flickr.com/2749/4508596904_a8a5b0cf79_m.jpg" border="0" alt="Midgard Gathering in Lodz" /></a> <a href="http://www.flickr.com/photos/bergie/4741849531/in/photostream/"><img src="http://farm5.static.flickr.com/4101/4741849531_fa5b7f0e8b_m.jpg" border="0" alt="Special-issue Midgard shirts" /></a> <a href="http://www.flickr.com/photos/bergie/4762761909/in/photostream/"><img src="http://farm5.static.flickr.com/4117/4762761909_e9405fb161_m.jpg" border="0" alt="Midgard in aKademy 2010" /></a> <a href="http://www.flickr.com/photos/bergie/5150262379/in/photostream/"><img src="http://farm2.static.flickr.com/1070/5150262379_245767e330_m.jpg" border="0" alt="Midgard Gathering in FSCONS" /></a> <a href="http://www.flickr.com/photos/bergie/4759778273/in/photostream/"><img src="http://farm5.static.flickr.com/4119/4759778273_9df7a48420_m.jpg" border="0" alt="Discussing Midgard and Tracker" /></a></p>
<p>Unfortunately at the same time the Midgard developer community has stayed quite small and insular. This will hopefully improve through easier installation, availability of Midgard libraries in Linux distributions and closer collaboration with the rest of the PHP world as a participant of the <a href="http://bergie.iki.fi/blog/php-finally_getting_an_ecosystem/">Zeta Components ecosystem</a>.</p>
<p>We still also need to solve the project governance question of either running <a href="http://www.qaiku.com/channels/show/midgard/view/1deeca09f359ab4eca011dea74d4f007179bd35bd35/">our own association</a> or joining a major organization <a href="http://bergie.iki.fi/blog/why_make_your_projects_properly_open-sustainability/">like ASF</a>. The relation between Midgard and the <a href="http://www.gnome.org/">GNOME</a> project on which we heavily rely on should also be clarified.</p>
<p>See also the <a href="http://bergie.iki.fi/blog/midgard_in_2009/">Midgard in 2009</a> post.</p>]]></description>
            <author>henri.bergius@iki.fi (Henri Bergius)</author>
            <georss:point>60 24</georss:point>
            <category>desktop</category>
            <pubDate>Tue, 11 Jan 2011 12:19:01 +0000</pubDate>
            <guid>http://bergie.iki.fi/midcom-permalink-1e01d7cf95a1df41d7c11e092657f5093f21d111d11</guid>
        </item>
        <item>
            <title>Help testing the OpenPSA business suite</title>
            <link>http://bergie.iki.fi/blog/help_testing_the_openpsa_business_suite/</link>
            <description><![CDATA[
<p><a href="http://openpsa2.org/about/">OpenPSA</a> is an web-based management suite for consulting companies. The GPLd suite includes functionalities like calendaring and contact management, product configurations, sales processes, project management and invoicing. The application was <a href="http://bergie.iki.fi/blog/2004-05-08-000/">originally developed by Nemein</a> but since 2008 has <a href="http://bergie.iki.fi/blog/free_software_at_work-openpsa2_is_making_a_return/">seen excellent maintenance work</a> by the <a href="http://www.contentcontrol-berlin.de/">Content Control</a> team.</p>
<p><img src="http://bergie.iki.fi/static/1/1dfeb47a65659cceb4711df92736d20e1e926c126c1_openpsa-screenshots.png" border="0" alt="openpsa-screenshots.png" title="openpsa-screenshots.png" /></p>
<p>As a result of last weekend's <a href="http://www.midgard-project.org/community/events/midgard_gathering_in_fscons_2010/">Midgard developer meeting</a> in FSCONS, the OpenPSA suite has now been packaged for Debian and Ubuntu. Ubuntu users can easily test the package with:</p>
<pre>$ sudo apt-add-repository ppa:midgard/ratatoskr
$ sudo apt-get update
$ sudo apt-get install openpsa2

</pre>
<p>After this, the OpenPSA suite should be running on your machine in <a href="http://localhost/openpsa2">http://localhost/openpsa2</a>. Default user account is admin / password.</p>
<p>You can also <a href="https://github.com/flack/openpsa">check out the project on GitHub</a>. Please add your <a href="https://github.com/flack/openpsa/issues">issues and ideas</a> there!</p>]]></description>
            <author>henri.bergius@iki.fi (Henri Bergius)</author>
            <georss:point>57 11</georss:point>
            <category>business</category>
            <pubDate>Mon, 08 Nov 2010 14:56:57 +0000</pubDate>
            <guid>http://bergie.iki.fi/midcom-permalink-1dfeb486f1482e4eb4811df8cfe97f9ab8f234b234b</guid>
        </item>
        <item>
            <title>CouchDb and Midgard talking with each other</title>
            <link>http://bergie.iki.fi/blog/couchdb_and_midgard_talking_with_each_other/</link>
            <description><![CDATA[
<p>
<a href="http://bergie.iki.fi/blog/jquery_and_couchdb-001/">CouchDb</a> is a really cool document-oriented map/reduce database that is nowadays an Apache project. Previously we created the <a href="http://bergie.iki.fi/blog/previewing_ajatus-the_distributed_crm/">distributed CRM application Ajatus</a> on top of the system and <a href="http://bergie.iki.fi/moblog/photo/4756887498ee11dcb5f3d7132ea5e37fe37f/">ported CouchDb to Maemo</a>.
</p>

<p>
Here in <a href="http://www.grancanariadesktopsummit.org/">Gran Canaria Desktop Summit CouchDb</a> has been somewhat a hot topic, as the <a href="https://wiki.ubuntu.com/DesktopTeam/Specs/Karmic/IntegratingWithUbuntuOne">Ubuntu project is planning to use it</a> as the content repository for desktop applications.
</p>

<p>
We had a lunch with <a href="http://twitter.com/janl">Jan Lehnardt</a> today and discussed how to make <a href="http://www.midgard2.org/">Midgard2</a> and <a href="http://couchdb.apache.org/">CouchDb</a> interoperate better, and as it happens, it is actually very easy: CouchDb has a replication protocol that we can support also in Midgard, making the two repositories able to <a href="http://blogs.gnome.org/rodrigo/2009/06/03/desktop-datasettings-replication/">synchronize content</a> with each other.
</p>

<p>
There is now a first test implementation of <em>Midgard-to-CouchDb</em> synchronization support, with better Midgard integration and <em>CouchDb-to-Midgard</em> coming soon. Check out <a href="http://github.com/bergie/org_couchdb_replication/tree/master">the Midgard MVC component on Github</a>. Anyway, already pretty cool!
</p>

<p>
Setting up replication on CouchDb admin UI:
</p>

<p>
<a href="http://bergie.iki.fi/midcom-serveattachmentguid-03d132266a5611deb15ead0e461af731f731/couchdb-midgard-replication-setup.png"><img src="http://bergie.iki.fi/midcom-serveattachmentguid-07b96ab66a5611deb1db3d42dc4f34d634d6/couchdb-midgard-replication-setup-tm.jpg" height="206" width="400" border="1" hspace="4" vspace="4" alt="Replicating from Midgard to CouchDb" title="Replicating from Midgard to CouchDb" /></a>
</p>

<p>
Midgard record replicated successfully into CouchDb:
</p>

<p>
<a href="http://bergie.iki.fi/midcom-serveattachmentguid-e7b87a866a5511dea0f259c77bdbe138e138/couchdb-replicated-midgard-person.png"><img src="http://bergie.iki.fi/midcom-serveattachmentguid-eda58e0c6a5511de85376d29cb9c8b358b35/couchdb-replicated-midgard-person-tm.jpg" height="216" width="400" border="1" hspace="4" vspace="4" alt="Replicated Midgard person record in CouchDb" title="Replicated Midgard person record in CouchDb" /></a>
</p>

<p>
I'll talk more about this and <em>repository-oriented application development</em> in my <a href="http://www.grancanariadesktopsummit.org/node/210">Midgard2: Content repository for desktop and the web</a> talk <a href="http://www.grancanariadesktopsummit.org/node/270">tomorrow at 16:45</a>. Be there!
</p>



<p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/couchdb" rel="tag">couchdb</a>, <a href="http://www.technorati.com/tag/midgard" rel="tag">midgard</a>, <a href="http://www.technorati.com/tag/replication" rel="tag">replication</a></p>


]]></description>
            <author>henri.bergius@iki.fi (Henri Bergius)</author>
            <georss:point>28.1292 -15.4513</georss:point>
            <category>mobility</category>
            <pubDate>Mon, 06 Jul 2009 17:54:34 +0000</pubDate>
            <guid>http://bergie.iki.fi/midcom-permalink-1068a7f86a5611de9505951345ab8a168a16</guid>
        </item>
        <item>
            <title>Come to celebrate the 10th Anniversary of the Midgard Project</title>
            <link>http://bergie.iki.fi/blog/come_to_celebrate_the_10th_anniversary_of_the_midgard_project/</link>
            <description><![CDATA[
<p>
<img src="http://bergie.iki.fi/midcom-serveattachmentguid-1bd103081aae11deaf74679efb5520432043/vali-party.jpg" height="175" width="200" border="0" align="right" hspace="8" vspace="4" alt="Vali raises a toast to ten years of Midgard" title="Vali raises a toast to ten years of Midgard" /><br /><a href="http://www.linuxtoday.com/developer/1999050701705NWSW">May 8th 1999</a>:
</p>

<blockquote>
The Midgard Project has finally released the first public version of Midgard Application Server Suite. The new release contains Midgard core libraries, a PHP3-based web application server for the Apache platform and the needed web-based administration tools.
</blockquote>

<p>
<a href="http://www.midgard-project.org/10/">May 8th 2009</a>:
</p>

<blockquote>
It's time for celebration - Midgard CMS turns ten in May! The decade of Midgard will be celebrated with a guest gala that is to be held at <a href="http://www.botta.fi/Etusivu.24.0.html?&amp;L=1">restaurant Ostrobotnia</a> in Helsinki, Finland.
</blockquote>

<p>
Looking forward to seeing as many of you in the party as possible! Please <a href="http://www.midgard-project.org/10/registration/">register ASAP</a> as we need to tell the restaurant how many tables are needed.
</p>
]]></description>
            <author>henri.bergius@iki.fi (Henri Bergius)</author>
            <georss:point>60.175201 24.919201</georss:point>
            <category>openpsa</category>
            <pubDate>Fri, 27 Mar 2009 09:03:18 +0000</pubDate>
            <guid>http://bergie.iki.fi/midcom-permalink-1d8682221aae11de9095cf4f0f29e05be05b</guid>
        </item>
        <item>
            <title>Free software at work: OpenPsa2 is making a return</title>
            <link>http://bergie.iki.fi/blog/free_software_at_work-openpsa2_is_making_a_return/</link>
            <description><![CDATA[
<p>
In the recent <a href="http://www.mindtrek.org/openmind/">OpenMind conference</a> we were discussing how open source projects simply <a href="http://www.linuxforums.org/misc/open_source_will_never_die.html">don't die</a> as long as there is an interested user community: Even if the original company or individual who built the application stops working on it, somebody will always rise and start maintaining it.
</p>

<p>
Last few weeks have been a great example of this. <a href="http://nemein.com/en/">Nemein</a> is the company which originally built the <a href="http://www.openpsa.org/version2">OpenPsa2</a> suite of project management and CRM tools for consulting companies. In last two years there have been some shifts in strategy, and so we ceased working on the product.
</p>

<p>
<a href="http://bergie.iki.fi/midcom-serveattachmentguid-d1ed23569ac511ddb9fb4bc603430e8f0e8f/openpsa2-ragnaroek-20081015.png"><img src="http://bergie.iki.fi/midcom-serveattachmentguid-d34177ac9ac511ddb9fb4bc603430e8f0e8f/openpsa2-ragnaroek-20081015-tm.jpg" height="214" width="400" border="1" hspace="4" vspace="4" alt="OpenPsa2 under Midgard Ragnaroek" title="OpenPsa2 under Midgard Ragnaroek" /></a>
</p>

<p>
Luckily for our users, <a href="http://freshmeat.net/projects/openpsa">OpenPsa has been out</a> under the GNU <a href="http://www.gnu.org/licenses/gpl.html">General Public License</a> <a href="http://bergie.iki.fi/blog/2004-04-29-001/">since 2004</a>. This meant that while commercial development had stopped, they were able to step in and continue where we left off. It took a while, but during this fall <a href="http://www.midgard-project.org/community/whoswho/group/a5767170112c11dca0ce71a6e774ad7bad7b/flack/">Andreas Flack</a> from <a href="http://www.contentcontrol-berlin.de/">Content Control</a> started maintaining the software.
</p>

<p>
Now the effort is starting to bear fruit. <a href="http://www.midgard-project.org/">Midgard</a> world <a href="http://www.midgard-project.org/midgard/8.09/">has recently settled</a> into a new <a href="http://bergie.iki.fi/blog/midgard_and_synchronized_releases/">synchronized release model</a>, and <a href="http://www.midgard-project.org/discussion/developer-forum/openpsa_and_releases/">OpenPsa is swiftly catching up</a> with the rest of the architecture. We expect that it may be released with the <a href="http://trac.midgard-project.org/milestone/8.09.2%20Ragnaroek">Ragnaroek 8.09.2</a> revision.
</p>

<p>
Good work, Andreas!
</p>
]]></description>
            <author>henri.bergius@iki.fi (Henri Bergius)</author>
            <georss:point>60.187199 24.9706</georss:point>
            <category>openpsa</category>
            <pubDate>Wed, 15 Oct 2008 14:30:34 +0000</pubDate>
            <guid>http://bergie.iki.fi/midcom-permalink-d3a5a6fa9ac511ddb9fb4bc603430e8f0e8f</guid>
        </item>
        <item>
            <title>ETech 2009 CFP: Building the peer-to-peer business network</title>
            <link>http://bergie.iki.fi/blog/etech_2009_cfp-building_the_peer-to-peer_business_network/</link>
            <description><![CDATA[
<p>
<a href="http://en.oreilly.com/et2009/public/content/home">ETech 2009</a>, the O'Reilly conference on emerging technologies now <a href="http://www.boingboing.net/2008/08/04/etech-2009-call-for.html">has a call for papers</a>. Here is my proposal for the <em>"Nomadism &amp; Shedworking"</em> track:
</p>

<blockquote>
The recent direction of business applications has been centralization to web-based systems, easing deployment, upgrades and management of application security. However, at same time centralization provides new risks like the introduction of a <a href="http://www.chrisbrogan.com/when-google-owns-you/">single point of failure</a> for application usage and in most cases inability to work offline.
<br /><br />At the same time, working culture has started so shift more towards networked individuals, or "web workers" forming ad-hoc coalitions to work on various projects. For them, centralized applications might not be desirable due to data ownership and infrastructure requirements.
<br /><br />Moving the applications from centralized web servers to a peer-to-peer network allows web workers to be in control of their own data, stay productive even in unstable connectivity situations, and collaborate easily with their colleagues in an ad-hoc way.
<br /><br />This talk outlines some ways to move forward in building peer-to-peer networked business applications. There are many open source frameworks targeting the problem, including replicated databases like <a href="http://incubator.apache.org/couchdb/">CouchDb</a> and <a href="http://syncwith.us/">Prophet</a>, and application-oriented P2P networks like <a href="http://swallow.sourceforge.net/">Swallow/DBE</a>. These will be discussed together with some real-world examples of business applications built with them:
<br /><br /><a href="http://www.ajatus.info/">Ajatus</a> - a "<a href="http://blogs.law.harvard.edu/vrm/2007/11/16/crm-gets-personal/">Personal CRM</a>" built on top of CouchDb, a RESTful replicated object database
<br /><a href="http://bergie.iki.fi/blog/how-openpsa-uses-dbe.html">OpenPsa</a> - project management system <a href="http://bergie.iki.fi/blog/finding-resources-automatically-in-openpsa.html">doing resourcing</a> over the <a href="http://www.digital-ecosystem.org/">DBE</a> P2P network
<br /><a href="http://syncwith.us/">Simple Defects</a> - a P2P bug tracking system built on top of the Prophet replicated database
<br /><br />The first phase of P2P business applications will likely be services operating in closed networks of users' social networking or instant messaging contacts. But the P2P model can also provide opportunities for wider networking, making it possible to find new project partners or collaborators anywhere in the world. This wider-ranging business network will introduce new challenges like security and reputation management. Some ideas related to this will also be discussed.
</blockquote>

<p>
Other interesting projects in this sphere I did not mention are <a href="http://telepathy.freedesktop.org/wiki/Tubes">Telepathy Tubes</a> and <a href="http://ulno.net/f2f/">F2F</a>. We have also had some ideas for how <a href="http://bergie.iki.fi/blog/xmpp_publish-subscribe_for_midgard_and_ajatus_replication.html">Midgard could do this</a>...
</p>
]]></description>
            <author>henri.bergius@iki.fi (Henri Bergius)</author>
            <georss:point>51.567902 -0.109408</georss:point>
            <category>desktop</category>
            <pubDate>Wed, 06 Aug 2008 16:59:04 +0000</pubDate>
            <guid>http://bergie.iki.fi/midcom-permalink-f9f2bb5a63d811ddad944d68893d4ea74ea7</guid>
        </item>
        <item>
            <title>Scrum in management of a small software consultancy</title>
            <link>http://bergie.iki.fi/blog/scrum_in_management_of_a_small_software_consultancy/</link>
            <description><![CDATA[
<p>
Over the years we at <a href="http://nemein.com/">Nemein</a> have been experimenting with various ways of keeping our operations managed. Now with some personnel changes including <a href="http://www.runtoshop.com/contact.html">Joe's</a> departure it was a good time to change the way we work again.
</p>

<p>
I had some goals:
</p>

<ul><li>Keeping status of different projects up-to-date with more accuracy</li>
<li>Ensuring our sales and project management knows if some project is being blocked by missing materials</li>
<li>Enabling a more distributed, <a href="http://webworkerdaily.com/2006/09/04/going-bedouin/">web working</a> culture</li>
</ul><p>
We're a small company of <a href="http://nemein.com/en/people/">less than 10 people</a>, and as such most project management methods have not been very successful for us. In general they have been made for situations where same person or team keeps on working on a project for several months, whereas in our situation a person typically works on several projects every day.
</p>

<p>
I discussed this over some beers with <a href="http://teroheikkinen.iki.fi/">Tero Heikkinen</a> from <a href="http://plazes.com/plazes/135439_rohea">Rohea</a>, and he told me how they were implementing <a href="http://en.wikipedia.org/wiki/Scrum_(development)">Scrum</a> in their small company. While their number of different projects running at the same time is a bit smaller, their situation otherwise is quite similar: <a href="http://www.midgard-project.org/">same technologies</a> used, <a href="http://www.ajatus.info/">Ajatus</a> for work tracking, etc.
</p>

<p>
We had a company <a href="http://flickr.com/photos/bergie/2544964382/">sauna evening</a> and I presented Tero's ideas there: we would partially implement the Scrum model, and keep tuning it to our needs. At the first phase this means:
</p>

<ul><li>Every morning we have an all-hands 15-20min meeting ("the daily Scrum") where everybody goes over what they have been doing the previous day, and what they were planning to do today. If they are being blocked by something missing: a software bug, missing information or other materials, this is also brought forward</li>
<li>Every project has a file in <a href="http://docs.google.com/">Google Docs</a> where we keep the project status and task list (Backlog). This task list is updated based on what comes up in the morning meeting</li>
<li>Work hours are reported with Ajatus. Rohea also uses it for project <a href="http://www.controlchaos.com/about/burndown.php">burn-down charts</a>, and once their add-on for that is finished we may do the same</li>
<li><a href="http://nemein.com/en/people/semi/">Emilia</a>, the project manager (or Scrum Master) is responsible for resolving possible impediments and maintaining the per-project status files</li>
</ul><p>
The approach we have taken should be quite pragmatic and low-tech. Instead of fancy project management software we use simple word processing for status data. And thanks to Google Docs the documents produced are accessible and editable from anywhere.
</p>

<p>
Similarly the actual meetings are quite easy to manage. The people who are at the office attend there, and others attend either via a Skype or mobile phone conference call, depending on network availability. We decided to have them at 10am so that everybody will be able to participate. Even if there is a Sprint or meeting scheduled for the same time, the short time needed for our all-hands meeting means it can be held over a "cigarette break".
</p>

<p>
Ajatus is the only more experimental piece of software in our puzzle. In our company, we use it for hour reporting, expense tracking and keeping meeting minutes. For these it works quite well, although more reporting tools are definitely needed. The alpha status of <a href="http://incubator.apache.org/couchdb/">CouchDb</a>, the database software powering Ajatus has bit us a few times by database corruption (caused by OSX-specific erlang bug) or simply difficult installation procedure, but these problems will hopefully improve over time.
</p>

<p>
We're now in the second week of this model, and at least the gut feel is that this has improved coordination inside the company. The next challenge then is to let the customer get involved in the process. This can mean just sharing the project status files, or even giving them access to actual meetings or the Ajatus data.
</p>
]]></description>
            <author>henri.bergius@iki.fi (Henri Bergius)</author>
            <georss:point>60.164001 24.7365</georss:point>
            <category>business</category>
            <pubDate>Wed, 11 Jun 2008 13:00:53 +0000</pubDate>
            <guid>http://bergie.iki.fi/midcom-permalink-6c5f6d0437b611dda561bf640ff5f9baf9ba</guid>
        </item>
        <item>
            <title>XMPP publish/subscribe for Midgard and Ajatus replication</title>
            <link>http://bergie.iki.fi/blog/xmpp_publish-subscribe_for_midgard_and_ajatus_replication/</link>
            <description><![CDATA[
<p>On the side of <a href="http://fosdem.org/2008/">FOSDEM</a> we went today to the <a href="http://wiki.jabber.org/index.php/FOSDEM_2008">XMPP devcon</a> held here in Brussels. In there we started formulating our ideas of <a href="http://www.coverfire.com/archives/2006/04/25/jabberxmpp-pubsub/">XMPP publish/subscribe</a> (<a href="http://www.xmpp.org/extensions/xep-0060.html">XEP-0060</a>) based replication for both <a href="http://www.midgard-project.org/">Midgard</a> and <a href="http://www.ajatus.info/">Ajatus</a>.</p>

<p>This post contains very early ideas, but we would be happy to get some feedback on them.</p>

<h2>Basic idea</h2>

<p>Each Midgard or Ajatus server runs a "synchronization daemon" which is connected to a XMPP server using some JID identity.</p>

<p>The sync daemon registers a set of pub/sub nodes corresponding to the content structure on the Midgard or Ajatus instance:</p>

<ul><li>in Midgard: Sitegroups, MgdSchema types, paths (possibly a regexp), approval state

<ul><li><code>/midgard_article/all</code>, <code>/midgard_article/approved</code></li>
</ul></li>
<li>in Ajatus: tags</li>
</ul><p>The pub/sub nodes can be set up with some access control rules. For example, Ajatus tags would by default require "whitelist" authorization to subscribe.</p>

<p>When content is changed, the sync daemon gets notified about it (via D-Bus signals in Midgard, and via CouchDb external indexer API in Ajatus).
The content object (and immediate children like parameters and file attachments) is serialized into the syndication format and sent onward as a XMPP "pub" leaf. If the object appears on multiple nodes (multiple Ajatus tags for instance), the "pub" leaf is sent to all of them.</p>

<p>XMPP server and the federated network will then handle notifying the subscribers of the nodes about the new leaf.</p>

<p>The subscribers will receive the leaf, and unserialize it to the Ajatus or Midgard database.</p>

<h2>Communication between sync daemon and application</h2>

<p>The sync daemon should exist as an entity separate from the actual user application. Communication between the sync daemon and Midgard or Ajatus should happen via the application database.</p>

<p>This means that XMPP pub/sub whitelists for Ajatus tags would be maintained in the ajatus_db (non-replicated) database, and the sync daemon would read them from there. The Jabber server credentials would also be stored in the same database.</p>

<h3>Information about resources from jabber buddies</h3>

<p>User's replication partners are stored as local contacts in the application database. In Ajatus this means "Contacts" and in Midgard "midgard_person" objects. Both storage models have optional JID field.</p>

<p>If JID is marked for a contact, the sync daemon should at startup (or at an interval) try to discover if the contact has pub/sub resources available.</p>

<h2>Content transformation in replication stage</h2>

<p>While mainly intended for Midgard-to-Midgard and Ajatus-to-Ajatus replication, the same mechanisms could work across different systems.</p>

<p>For this, the sync daemon on the subscribing end should support XSLT transformations before content is unserialized into the system. The XSLT transformation templates should be configurable per subscription.</p>

<h2>Hermod / Hermóðr (Midgard replication)</h2>

<ul><li>"in Norse mythology, messenger of the gods. He was a son of the principal god, Odin, and his wife, Frigg. Known as Hermod the Swift, he was called upon by the other gods when they had a task requiring speed and urgency." - Encyclopedia Britannica</li>
<li>Written in Python

<ul><li>Using twisted framework or x60br XMPP library</li>
<li>using standard Midgard MgdSchema object serialize/unserialize methods</li>
</ul></li>
<li>How to proof-of-concept before D-Bus? Some watcher in MidCOM? (watcher touches spool file)</li>
</ul><h2>PillowTalk (Ajatus and CouchDb replication)</h2>

<ul><li>Written on Erlang</li>
<li>Extendable through plugins

<ul><li>Content parsers (Midgard2Ajatus, Ajatus2Midgard)</li>
<li>Security</li>
<li>CDATA JSON block or convert to XML? (Decision of the content parser?)</li>
</ul></li>
</ul><p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/ajatus">ajatus</a>, <a href="http://www.technorati.com/tag/midgard">midgard</a>, <a href="http://www.technorati.com/tag/jabber">jabber</a>, <a href="http://www.technorati.com/tag/replication">replication</a>, <a href="http://www.technorati.com/tag/synchronization">synchronization</a>, <a href="http://www.technorati.com/tag/xmpp">xmpp</a></p>
]]></description>
            <author>henri.bergius@iki.fi (Henri Bergius)</author>
            <georss:point>50.810799 4.38179</georss:point>
            <category>openpsa</category>
            <pubDate>Sun, 24 Feb 2008 14:33:46 +0000</pubDate>
            <guid>http://bergie.iki.fi/midcom-permalink-817b836ae2e511dc98f8c5453da2fbfcfbfc</guid>
        </item>
        <item>
            <title>Offline web applications: a technology trend of 2008</title>
            <link>http://bergie.iki.fi/blog/offline_web_applications-a_technology_trend_of_2008/</link>
            <description><![CDATA[
<p>
MIT Technology Review's <a href="http://www.technologyreview.com/specialreports/specialreport.aspx?id=25">10 Emerging Technologies of 2008</a> report includes <a href="http://www.technologyreview.com/read_article.aspx?ch=specialsections&amp;sc=emerging08&amp;id=20245">offline web applications</a> as a rising trend. When developing <a href="http://www.ajatus.info/">Ajatus</a>, our new <a href="http://blogs.law.harvard.edu/vrm/2007/11/16/crm-gets-personal/">P2P personal CRM</a> the <a href="http://bergie.iki.fi/blog/the_old_offline_vs-online_debate.html">offline issue</a> was often in our minds. We even <a href="http://www.ajatus.info/documentation/ajatus_manifesto/">wrote in the manifesto</a>:
</p>

<blockquote>
Ideas may come to you when you're sitting in a bus, boarding an airplane or visiting a hospital. For a CRM to work the data must be available and editable in any situation.
</blockquote>

<p>
Having now <a href="http://bergie.iki.fi/blog/replicating_ajatus_with_your_colleagues.html">dogfooded Ajatus</a> for almost two months, I have to say this has been an important aspect. It is powerful to have all your customer and project data with you at all times, and still be able to use it via the <a href="http://www.ajatus.info/documentation/ajatus_manifesto/#d0e70a7e577a59dc13d3774c6d58f23c">familiar web UI</a>.
</p>

<p>
<a href="http://bergie.iki.fi/midcom-serveattachmentguid-b51ecc88efb811dc932cedc2ad93e088e088/ajatus-on-fluid-1.png"><img src="http://bergie.iki.fi/midcom-serveattachmentguid-b7d913f2efb811dc819dc7559d0c9f629f62/ajatus-on-fluid-1-tm.jpg" height="202" width="400" border="1" hspace="4" vspace="4" alt="Ajatus 0.6 running on Fluid SSB" title="Ajatus 0.6 running on Fluid SSB" /></a>
</p>

<p>
Offline is useful. You can write your notes in every meeting, update them in train, report expenses as they incur. And most importantly, as long as your computer is running, the application is never down. And still, though <a href="http://bergie.iki.fi/blog/replicating_ajatus_with_your_colleagues.html">replication</a> your data <a href="http://www.ajatus.info/documentation/ajatus_manifesto/#632d8b863e781e93a8430a09f779985e">will be safe</a> with your peers or the corporate server.
</p>

<p>
This is aspect even more important when you start <a href="http://flickr.com/photos/bergie/2213910877/">running the app on ultra-portable devices,</a> or <a href="http://bergie.iki.fi/blog/the_cell_phone_is_the_computer.html">go outside the industrialized world</a>.
</p>

<p style="text-align:right;">
<span style="font-size:10pt;">
<br />Technorati Tags: </span><span style="font-size:10pt;"><a href="http://www.technorati.com/tag/ajatus">ajatus</a></span><span style="font-size:10pt;">, </span><span style="font-size:10pt;"><a href="http://www.technorati.com/tag/offline">offline</a></span><span style="font-size:10pt;">, </span><span style="font-size:10pt;"><a href="http://www.technorati.com/tag/web">web</a></span><span style="font-size:10pt;">, </span><span style="font-size:10pt;"><a href="http://www.technorati.com/tag/replication">replication</a></span>
</p>
]]></description>
            <author>henri.bergius@iki.fi (Henri Bergius)</author>
            <georss:point>60.1754 24.9191</georss:point>
            <category>mobility</category>
            <pubDate>Wed, 20 Feb 2008 18:33:41 +0000</pubDate>
            <guid>http://bergie.iki.fi/midcom-permalink-5c49ecf4dfe211dca0a0ff7609b5b860b860</guid>
        </item>
        <item>
            <title>Conferences this spring</title>
            <link>http://bergie.iki.fi/blog/conferences_this_spring/</link>
            <description><![CDATA[
<p>
While last autumn was more quiet, this spring seems to have a number of events that I'm going to:
</p>

<ul><li>Feb 15th - 17th: <strong><a href="http://www.midgard-project.org/community/events/midgard_developer_meeting-001.html">Midgard developer meeting</a></strong> in <a href="http://en.wikipedia.org/wiki/Link%C3%B6ping">Linköping</a>, Sweden. Lots of hacking and talking about Midgard 2 and <a href="http://bergie.iki.fi/blog/some_plans_for_midcom_3.html">MidCOM 3</a></li>
<li>Feb 22nd - 24th: <strong><a href="http://fosdem.org/2008/">FOSDEM</a></strong> in <a href="http://en.wikipedia.org/wiki/Brussels">Brussels</a>, Belgium. I'm going for <a href="http://www.obooe.eu/en">Open Business Organisations of Europe</a> (OBOOE) meeting on behalf of <a href="http://www.coss.fi/web/coss/home">COSS</a> and Jerry will give a <a href="http://protoblogr.net/blog/view/ajatus_lightning_talk-_fosdem.html">lighting talk on Ajatus</a></li>
<li>Apr 11th - 12th: <strong><a href="http://www.mediapaivat.fi/english/">Helsinki Media Conference</a></strong> in <a href="http://en.wikipedia.org/wiki/Helsinki">Helsinki</a>, Finland. I will be talking about <a href="http://bergie.iki.fi/blog/putting_attention_to_midgard.html">attention profiling</a>.</li>
<li>Apr 17th - 19th: <strong><a href="http://fisl.softwarelivre.org/9.0/www/">FISL 9.0</a></strong> in <a href="http://en.wikipedia.org/wiki/Porto_Alegre">Porto Alegre</a>, Brazil. I will be talking about <a href="http://www.freedesktop.org/wiki/Software/GeoClue">GeoClue</a></li>
<li>Jun 3rd: <strong><a href="http://www.coss.fi/web/servoss/home">ServOSS seminar</a></strong> in <a href="http://en.wikipedia.org/wiki/Helsinki">Helsinki</a>, Finland. I will be talking about interaction between <a href="http://nemein.com/en/">a company</a> and <a href="http://www.midgard-project.org/">a free software community</a></li>
</ul><p>
Looking forward to meeting many of you in these events! The July conferences of <strong><a href="http://guadec.expectnation.com/public/content/main">GUADEC</a></strong><a href="http://guadec.expectnation.com/public/content/main"> in Istanbul</a> and <strong><a href="http://wiki.openstreetmap.org/index.php/State_Of_The_Map_2008">State of the Map</a></strong><a href="http://wiki.openstreetmap.org/index.php/State_Of_The_Map_2008"> in Limerick</a> sound interesting as well.
</p>

<p>
It is possible to follow my movements <a href="http://www.dopplr.com/traveller/bergie">through Dopplr</a>:
</p>

<p>
<img src="http://bergie.iki.fi/midcom-serveattachmentguid-73c4fed2efb411dcb11c07d70557430f430f/dopplr-travel-map-2008-1.jpg" height="257" width="400" border="1" hspace="4" vspace="4" alt="Dopplr travel map" title="Dopplr travel map" /><br /><span style="font-size:10pt;">
<br /></span>
</p>

<p style="text-align:right;">
<span style="font-size:10pt;">
<br />Technorati Tags: </span><span style="font-size:10pt;"><a href="http://www.technorati.com/tag/ajatus">ajatus</a></span><span style="font-size:10pt;">, </span><span style="font-size:10pt;"><a href="http://www.technorati.com/tag/geoclue">geoclue</a></span><span style="font-size:10pt;">, </span><span style="font-size:10pt;"><a href="http://www.technorati.com/tag/obooe">obooe</a></span>
</p>
]]></description>
            <author>henri.bergius@iki.fi (Henri Bergius)</author>
            <georss:point>58.390202 15.6556</georss:point>
            <category>midgard</category>
            <pubDate>Sat, 16 Feb 2008 21:46:37 +0000</pubDate>
            <guid>http://bergie.iki.fi/midcom-permalink-a64e8d9edcd811dcb4b173276fe97ff97ff9</guid>
        </item>
        <item>
            <title>Replicating Ajatus with your colleagues</title>
            <link>http://bergie.iki.fi/blog/replicating_ajatus_with_your_colleagues/</link>
            <description><![CDATA[
<p><a href="http://bergie.iki.fi/blog/previewing_ajatus-the_distributed_crm.html">I've mentioned before</a> that <a href="http://www.ajatus.info/">Ajatus</a> is a P2P CRM, but what does that mean? It means that Ajatus has been <a href="http://www.ajatus.info/documentation/ajatus_manifesto/">designed</a> to be a personal tool for information management, but that is has also been designed to help you connect with anyone you need to work with.</p>

<p>The means to that is <a href="http://www.couchdb.org/">CouchDb's</a> integrated <a href="http://www.couchdbwiki.com/index.php?title=Basic_Concepts#Distributed" title="Basic_Concepts#Distributed">replication feature</a>. With it you can easily share your Ajatus data with anybody in the network, or just keep your laptop and desktop system in sync.</p>

<p>At the moment we only support full replication over HTTP, but the plan is to support replicating only data with specific tags (for example, only data related to a specific project), and to do it over <a href="http://www.xmpp.org/">XMPP</a>.</p>

<p>As things are, here is how you set up Ajatus replication on a Mac OS X system:</p>

<p>First allow CouchDb to talk to the outside world (<strong>note:</strong> it is a good idea to keep the firewall up when not replicating!):</p>

<p><a href="http://bergie.iki.fi/midcom-serveattachmentguid-e06ac9eaba3511dcb36e0964b98f3e553e55/beam-accept-connections-leopard.png"><img src="http://bergie.iki.fi/midcom-serveattachmentguid-e2bfa65cba3511dc8d8b792ae493de99de99/beam-accept-connections-leopard-tm.jpg" height="109" width="258" border="1" hspace="4" vspace="4" alt="Beam-Accept-Connections-Leopard" /></a></p>

<p>Then access the CouchDb <a href="http://bergie.iki.fi/blog/couchdb_0-7-0_is_out.html">management console</a> in <a href="http://localhost:5984/_utils/">http://localhost:5984/_utils/</a> and go to "Replication". Set up the replication paths there. The database you're interested in is "<em>ajatus_db_content</em>" (by default, see <a href="http://www.ajatus.info/documentation/installation/#d3f49ff7e6e57d0a1a3671214fc1681a">advanced setup</a>):</p>

<p><a href="http://bergie.iki.fi/midcom-serveattachmentguid-deb00d22ba3511dcb15917ca467db9f8b9f8/ajatus-replication-setup.png"><img src="http://bergie.iki.fi/midcom-serveattachmentguid-df6beb0aba3511dc80e977c26d0abfa1bfa1/ajatus-replication-setup-tm.jpg" height="104" width="398" border="1" hspace="4" vspace="4" alt="Ajatus-Replication-Setup" /></a></p>

<p>Once you have entered the paths just click "Replicate" and wait a sec. Replication is one way, so remember to also replicate back from the other server!</p>

<p>When replication is done your Ajatus system should have data entered on multiple systems:</p>

<p><a href="http://bergie.iki.fi/midcom-serveattachmentguid-d9684e1aba3511dc8d8b792ae493de99de99/ajatus-multiple-creators.png"><img src="http://bergie.iki.fi/midcom-serveattachmentguid-dd283074ba3511dc8f284911300608c408c4/ajatus-multiple-creators-tm.jpg" height="81" width="296" border="1" hspace="4" vspace="4" alt="Ajatus-Multiple-Creators" /></a></p>

<p><a href="http://www.nemein.com/en/">My company</a> is now <a href="http://en.wikipedia.org/wiki/Dogfooding">dogfooding</a> Ajatus. At the moment we use it in <a href="http://jaiku.com/channel/ajatus/presence/22541792">full peer-to-peer mode</a>, but there are some plans to install a central server for security and backup purposes. I will post some notes on our experiences later this month.</p>

<p><strong>In related news:</strong> CouchDb <a href="http://damienkatz.net/2008/01/new_gig.html">lead developer Damien Katz has been hired by IBM</a> to work full-time on the database. This is great news for both CouchDb and Ajatus. Congratulations!</p>

<p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/ajatus">ajatus</a>, <a href="http://www.technorati.com/tag/couchdb">couchdb</a>, <a href="http://www.technorati.com/tag/replication">replication</a></p>
]]></description>
            <author>henri.bergius@iki.fi (Henri Bergius)</author>
            <georss:point>60.1754 24.9191</georss:point>
            <category>openpsa</category>
            <pubDate>Thu, 03 Jan 2008 19:55:53 +0000</pubDate>
            <guid>http://bergie.iki.fi/midcom-permalink-e408ef6eba3511dcaa0fbb45992bdd54dd54</guid>
        </item>
        <item>
            <title>First beta of Ajatus available</title>
            <link>http://bergie.iki.fi/blog/first_beta_of_ajatus_available/</link>
            <description><![CDATA[
<p>Barely made it in December, but first beta of <a href="http://www.ajatus.info/">Ajatus</a>, the distributed CRM is <a href="http://www.ajatus.info/download/ajatus_0_5_0.html">now available</a>. Enjoy!</p>

<p><a href="http://bergie.iki.fi/midcom-serveattachmentguid-db1f0208b7b011dc8405b96df8587e9d7e9d/ajatus-on-20071231.png"><img src="http://bergie.iki.fi/midcom-serveattachmentguid-db7a94c4b7b011dca728c3c4a02f424c424c/ajatus-on-20071231-tm.jpg" height="192" width="400" border="1" hspace="4" vspace="4" alt="Ajatus-On-20071231" /></a></p>

<p>Read the <a href="http://www.ajatus.info/documentation/installation/">installation instructions</a> to get started. Once <a href="http://www.couchdb.org/">CouchDb</a> 0.7+ has proper installers available things will be much easier.</p>

<p>Now for champagne... Happy new year from the <a href="http://www.nemein.com/en/">Nemein</a> team!</p>

<p><img src="http://bergie.iki.fi/midcom-serveattachmentguid-d9459294b7b011dcb5e6af462abc9d429d42/ajatus-0.5.0-launch-champagne.jpg" height="300" width="400" border="1" hspace="4" vspace="4" alt="Ajatus-0.5.0-Launch-Champagne" /></p>

<p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/ajatus">ajatus</a>, <a href="http://www.technorati.com/tag/couchdb">couchdb</a></p>
]]></description>
            <author>henri.bergius@iki.fi (Henri Bergius)</author>
            <georss:point>60.164299 24.7358</georss:point>
            <category>openpsa</category>
            <pubDate>Mon, 31 Dec 2007 14:58:34 +0000</pubDate>
            <guid>http://bergie.iki.fi/midcom-permalink-dbee4a54b7b011dca32a5f603f4deb56eb56</guid>
        </item>
        <item>
            <title>Making Ajatus feel like a native app</title>
            <link>http://bergie.iki.fi/blog/making_ajatus_feel_like_a_native_app/</link>
            <description><![CDATA[
<p><a href="http://www.ajatus.info/">Ajatus</a>, our new <a href="http://bergie.iki.fi/blog/previewing_ajatus-the_distributed_crm.html">distributed CRM app</a> is evolving very quickly. For example, this week <a href="http://jaiku.com/channel/ajatus/presence/20513937">we got</a> form validation and <a href="http://blog.shivku.com/2007/04/usability-auto-saving-users-work.html">auto-saving</a> support, and there has been talk of supporting binary file attachments.</p>

<p>As we're nearing first release, the plan is to start <a href="http://en.wikipedia.org/wiki/Eating_one%27s_own_dog_food">dogfooding</a> Ajatus quite soon. For me personally this has been cause of some concern, as Ajatus is quite browser-intensive and my <a href="http://developer.mozilla.org/devnews/index.php/2007/11/19/firefox-3-beta-1-now-available-for-download/">Firefox 3 beta</a> has proven to be crashy. So, a <a href="http://webworkerdaily.com/2007/12/13/do-you-need-a-site-specific-browser/">Web Worker Daily story on site-specific browsers</a> came at a very good time: in a couple of minutes I had <a href="http://fluidapp.com/">Fluid</a> installed and was having a separate Ajatus window launchable straight from the <a href="http://en.wikipedia.org/wiki/Dock_(computing)">OS X Dock</a>.</p>

<p>Fast, nice, and separate from whatever I may be doing in my actual browsing sessions. I like it.</p>

<p style="text-align:center;"><img src="http://bergie.iki.fi/midcom-serveattachmentguid-91e13aeaa9bc11dc8b4b21b30f5e70797079/fluid-setup-ajatus.jpg" height="180" width="398" border="1" hspace="4" vspace="4" alt="Initial Fluid setup" title="Initial Fluid setup" /><br />
Setting up Ajatus in Fluid</p>

<p style="text-align:center;"><a href="http://bergie.iki.fi/midcom-serveattachmentguid-94f97b34a9bc11dcafea6ddef7bcef24ef24/fluid-ajatus.png"><img src="http://bergie.iki.fi/midcom-serveattachmentguid-959fd89ea9bc11dcbdd62d6289af13e213e2/fluid-ajatus-tm.jpg" height="292" width="400" border="1" hspace="4" vspace="4" alt="Ajatus running as a Fluid app" title="Ajatus running as a Fluid app" /></a><br />
Ajatus as a Mac desktop app!</p>

<p><strong>Note:</strong> <a href="http://labs.mozilla.com/2007/11/prism-prototype-now-available-on-mac-and-linux/">Mozilla Lab's Prism</a> does the same with a more cross-platform, but I like Fluid for the <a href="http://webkit.org/">WebKit</a> speed and simplicity.</p>



<p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/ajatus" rel="tag">ajatus</a>, <a href="http://www.technorati.com/tag/crm" rel="tag">crm</a>, <a href="http://www.technorati.com/tag/fluid" rel="tag">fluid</a>, <a href="http://www.technorati.com/tag/osx" rel="tag">osx</a>, <a href="http://www.technorati.com/tag/prism" rel="tag">prism</a></p>


]]></description>
            <author>henri.bergius@iki.fi (Henri Bergius)</author>
            <georss:point>60.1754 24.9191</georss:point>
            <category>desktop</category>
            <pubDate>Thu, 13 Dec 2007 20:47:15 +0000</pubDate>
            <guid>http://bergie.iki.fi/midcom-permalink-960357fca9bc11dcbae22b9e38072eaf2eaf</guid>
        </item>
        <item>
            <title>CouchDb 0.7.0 is out</title>
            <link>http://bergie.iki.fi/blog/couchdb_0-7-0_is_out/</link>
            <description><![CDATA[
<p><a href="http://code.google.com/p/couchdb/downloads/list">Version 0.7.0 of CouchDb</a> was <a href="http://damienkatz.net/2007/11/couchdb_070.html">released yesterday</a>. CouchDb is a very <a href="http://bergie.iki.fi/blog/jquery_and_couchdb-001.html">interesting object database</a> that powers our <a href="http://bergie.iki.fi/blog/previewing_ajatus-the_distributed_crm.html">Ajatus CRM</a>.</p>

<p>Main changes in 0.7.0 were:</p>

<ul><li>JSON instead of XML</li><li>Javascript view engine</li><li>Easier build system</li><li>...and a nice administrative UI</li></ul><p><a href="http://bergie.iki.fi/midcom-serveattachmentguid-fddcefea952c11dca788e7d803ae48134813/couchdb-0_7-admintool.png"><img src="http://bergie.iki.fi/midcom-serveattachmentguid-ff632f78952c11dca5f22b58cc3b0de90de9/couchdb-0_7-admintool-tm.jpg" height="224" width="398" border="1" hspace="4" vspace="4" alt="Couchdb-0 7-Admintool" /></a></p>

<p>With the new release Ajatus is a lot <a href="http://www.ajatus.info/documentation/installation/">easier to set up</a> as CouchDb can be installed straight from release packages.
</p>

<p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/couchdb" rel="tag">couchdb</a></p>


]]></description>
            <author>henri.bergius@iki.fi (Henri Bergius)</author>
            <georss:point>60.1754 24.9191</georss:point>
            <category>openpsa</category>
            <pubDate>Sat, 17 Nov 2007 16:49:01 +0000</pubDate>
            <guid>http://bergie.iki.fi/midcom-permalink-ffbbddf8952c11dc83f0d5bdadf143c943c9</guid>
        </item>
        <item>
            <title>Previewing Ajatus - the distributed CRM</title>
            <link>http://bergie.iki.fi/blog/previewing_ajatus-the_distributed_crm/</link>
            <description><![CDATA[
<p>While there is no public release yet, I though to give a heads-up on a project we're working on with <a href="http://protoblogr.net/">Jerry</a>: <strong><a href="http://www.ajatus.info/">Ajatus</a></strong> is a distributed, or peer-to-peer CRM system built on top of <a href="http://bergie.iki.fi/blog/jquery_and_couchdb-001.html">CouchDb</a>.</p>

<p><a href="http://bergie.iki.fi/midcom-serveattachmentguid-ccc35b2292fe11dc8b034b3a121aeccaecca/ajatus-note-related.png"><img src="http://bergie.iki.fi/midcom-serveattachmentguid-d18c08d492fe11dc8b034b3a121aeccaecca/ajatus-note-related-tm.jpg" height="246" width="398" border="1" hspace="4" vspace="4" alt="Ajatus-Note-Related" /></a></p>

<p>What makes Ajatus so special is the approach we're taking with it. Having with <a href="http://www.openpsa.org/">OpenPsa</a> found the traditional, hierarchical CRM approach unworkable we wanted to solve the problem in a different way:</p>

<ul><li>Local, rich AJAX client everybody can run on their laptop or internet tablet</li><li>Replication to allow sharing data with partners, customers and the employer</li><li>Simple base data types (note, event, contact, ...) that users can customize and extend</li><li>Possibility to build integration tools and plug-ins in almost any language (with CouchDb's <a href="http://www.couchdbwiki.com/index.php?title=HTTP_REST_API" title="HTTP_REST_API">restful JSON interface</a>)</li><li>Speed</li></ul><p>To help us stay on the right path we even wrote an <a href="http://www.ajatus.info/documentation/ajatus_manifesto/">Ajatus Manifesto</a> to guide ourselves.</p>

<p>Currently the software already runs and does pretty much all the basic things needed. Once we get it into state where we can <a href="http://en.wikipedia.org/wiki/Eating_one%27s_own_dog_food">dogfood</a> it (in interoperation with <a href="http://www.nemein.com/en/">the company</a> OpenPsa) we will make the first release. Until then, <a href="http://www.ajatus.info/news/">stay tuned</a>, check the <a href="http://repo.or.cz/w/ajatus.git">Git repository</a> and <a href="http://jaiku.com/channel/ajatus">join the talk</a>!</p>



<p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/ajatus" rel="tag">ajatus</a>, <a href="http://www.technorati.com/tag/couchdb" rel="tag">couchdb</a>, <a href="http://www.technorati.com/tag/openpsa" rel="tag">openpsa</a></p>


]]></description>
            <author>henri.bergius@iki.fi (Henri Bergius)</author>
            <georss:point>60.1754 24.9191</georss:point>
            <category>mobility</category>
            <pubDate>Wed, 14 Nov 2007 22:13:26 +0000</pubDate>
            <guid>http://bergie.iki.fi/midcom-permalink-d237ba8092fe11dc8b034b3a121aeccaecca</guid>
        </item>
        <item>
            <title>jQuery and CouchDB</title>
            <link>http://bergie.iki.fi/blog/jquery_and_couchdb-001/</link>
            <description><![CDATA[
<p><a href="http://couchdb.com/">CouchDB</a> is a <a href="http://intertwingly.net/blog/2007/09/07/Ascetic-Database-Architectures">very interesting evolution</a> in open source data storage: an ad-hoc <a href="http://www.couchdbwiki.com/index.php?title=Basic_Concepts#What.27s_a_Document.3F" title="Basic_Concepts#What.27s_a_Document.3F">document database</a> with <a href="http://www.couchdbwiki.com/index.php?title=Technical_Overview#Distributed_Updates_and_Replication" title="Technical_Overview#Distributed_Updates_and_Replication">replication</a> support. I heard the first time about CouchDB when <a href="http://jan.prima.de/">Jan Lehnardt</a> was <a href="http://jan.prima.de/~jan/plok/archives/72-Some-Context.html">presenting it</a> in <a href="http://froscon.phpugdo.de/">FrOSCon</a> a month ago, and became immediately very interested.</p>

<p>The database is available for various different platforms, and provides a <a href="http://www.couchdbwiki.com/index.php?title=HTTP_REST_API" title="HTTP_REST_API">RESTful JSON API</a>, which makes it very easy to access basically from any programming languages. To make things even simpler, access libraries have emerged for various languages like <a href="http://www.couchdbwiki.com/index.php?title=Getting_Started_with_PHP" title="Getting_Started_with_PHP">PHP</a> and <a href="http://www.couchdbwiki.com/index.php?title=Getting_Started_with_Ruby" title="Getting_Started_with_Ruby">Ruby</a>.</p>

<p>This weekend <a href="http://protoblogr.net/blog/view/pre_release_of_the_couchdb_jquery_lib.html">Jerry Jalava released</a> a <a href="http://protoblogr.net/downloads/jqcouch.js">jQuery CouchDB access library</a>. This is an important step for us as <a href="http://www.midgard-project.org/">Midgard</a> is already making the <a href="http://trac.midgard-project.org/ticket/23">jQuery migration</a>, and <a href="http://www.nemein.com/en/">we</a> are considering to use CouchDB for a project.</p>

<p style="text-align:center;"><img src="http://bergie.iki.fi/midcom-serveattachmentguid-2980be8069ca11dcbdf0b37b7209b297b297/couch-hacking.jpg" height="300" width="400" border="1" hspace="4" vspace="4" alt="Couch-Hacking" /></p>

<p>So, <a href="http://www.couchdbwiki.com/index.php?title=Why_CouchDb">why CouchDb</a>? First of all, it is something <a href="http://damienkatz.net/2007/09/couchdb_strikes.html">new and interesting</a>. And it is multiplatform and replicated, meaning that we should be able to get our data everywhere, from a web server to <a href="http://www.apple.com/macosx/leopard/">Mac desktop</a> to an <a href="http://maemo.org/">Internet Tablet</a>. Besides regular database usage, some of the <a href="http://damienkatz.net/2006/10/couchdb_and_php.html">PHP code deployment ideas</a> are also promising.</p>



<p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/couchdb" rel="tag">couchdb</a>, <a href="http://www.technorati.com/tag/jquery" rel="tag">jquery</a></p>


]]></description>
            <author>henri.bergius@iki.fi (Henri Bergius)</author>
            <georss:point>60.1754 24.9191</georss:point>
            <category>midgard</category>
            <pubDate>Sun, 23 Sep 2007 11:52:11 +0000</pubDate>
            <guid>http://bergie.iki.fi/midcom-permalink-6baa5f0469cb11dca98ed39b4034a2e7a2e7</guid>
        </item>
        <item>
            <title>Meet Nabaztag, our new general manager</title>
            <link>http://bergie.iki.fi/blog/meet_nabaztag-our_new_general_manager/</link>
            <description><![CDATA[
<p><a href="http://www.nemein.com/en/">Nemein</a> has today acquired a new <a href="http://en.wikipedia.org/wiki/General_manager">General Manager</a> into the company. We are delighted to benefit from the experience and keen insights of the brand new <a href="http://en.wikipedia.org/wiki/Nabaztag">Nabaztag</a>. Here you can see it already settled in our office:</p>

<p><img src="http://bergie.iki.fi/midcom-serveattachmentguid-f02094c4b2a111db953eb70b1e01c2edc2ed/office-nabaztag.jpg" height="300" width="400" border="0" hspace="4" vspace="4" alt="Nabaztag in our office" title="Nabaztag in our office" /></p>

<p>The idea with the <a href="http://www.boingboing.net/2005/09/22/wifi_plastic_bunny_w.html">WiFi bunny</a> is to connect it as an ambient information display for our <a href="http://www.openpsa.org/">OpenPsa management suite</a>. Some use cases we have so far envisioned include:
<span style="font-size:0pt;">
</span></p>

<ul><li>Displaying status of the support ticket queue via the belly lights</li><li>Alerting us of new tickets</li><li>Reporting the number of invoiceable hours reported at the end of the day</li><li>Alerting of calendar events happening at the office</li><li>Generally handling status messages based on our <a href="http://beta.plazes.com/user/bergie/">Plazes locations</a></li></ul><p>Technologically this should be quite simple using OpenPsa's integrated <a href="http://bergie.iki.fi/blog/openpsa-sources-moved-to-subversion.html">notification framework</a> and the PEAR <a href="http://pear.php.net/pepr/pepr-proposal-show.php?id=463">Services_Nabaztag library</a>.</p>

<p>I will report when we have some concrete results with this.
</p>

<p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/nabaztag" rel="tag">nabaztag</a>, <a href="http://www.technorati.com/tag/erp" rel="tag">erp</a>, <a href="http://www.technorati.com/tag/openpsa" rel="tag">openpsa</a></p>


]]></description>
            <category>openpsa</category>
            <pubDate>Fri, 02 Feb 2007 09:44:34 +0000</pubDate>
            <guid>http://bergie.iki.fi/midcom-permalink-fd202feab2a111db9acea1e2dc139ed59ed5</guid>
        </item>
        <item>
            <title>Contact management and Microformats</title>
            <link>http://bergie.iki.fi/blog/contact_management_and_microformats/</link>
            <description><![CDATA[
<p>I've blogged earlier on how <a href="http://bergie.iki.fi/blog/contact-management-in-semantic-web.html" title="Contact management in semantic web">OpenPsa 2 can utilize information pulled from the websites</a> of organizations and persons entered into the system.</p>

<p>Today I added support for populating <a href="http://microformats.org/wiki/hcard" title="hCard Microformat">Microformatted contact information</a> pulled using the nice <a href="http://allinthehead.com/hkit" title="Microformat library for PHP">hKit library</a>. To use this feature simply create or edit a company and add their website URL:</p>

<p><a href="http://bergie.iki.fi/midcom-serveattachmentguid-99791b34b21311dba253351daf98b86fb86f/openpsa-contacts-enter-organization.png"><img src="http://bergie.iki.fi/midcom-serveattachmentguid-9d5628aab21311dba8da39188882639b639b/openpsa-contacts-enter-organization-tm.jpg" height="223" width="221" border="1" hspace="4" vspace="4" alt="Openpsa-Contacts-Enter-Organization" /></a></p>

<p>OpenPsa will check on the background whether the site contains hCards, and populate any information gained to the contact entry.</p>

<p>For example, <a href="http://www.bangbonsomer.com/">Bang &amp; Bonsomer</a> provides their address as a hCard in their site footer:</p>

<p><img src="http://bergie.iki.fi/midcom-serveattachmentguid-7ee47ce6b21311db82280bdf31934ee24ee2/bangbonsomer-hcard-footer.jpg" height="34" width="333" border="0" hspace="4" vspace="4" alt="Bangbonsomer-Hcard-Footer" /></p>

<p>OpenPsa finds this information and adds it to the entry:</p>

<p><a href="http://bergie.iki.fi/midcom-serveattachmentguid-88613160b21311dba3208183f5f73b423b42/openpsa-contacts-organization-details.png"><img src="http://bergie.iki.fi/midcom-serveattachmentguid-8c778fb0b21311db89a01ff53f013ddf3ddf/openpsa-contacts-organization-details-tm.jpg" height="220" width="229" border="1" hspace="4" vspace="4" alt="Openpsa-Contacts-Organization-Details" /></a></p>

<p>Couldn't be much easier. Now if only more sites provided hCards...
</p>

<p style="text-align:right;font-size:10px;">Technorati Tags: <a href="http://www.technorati.com/tag/hcard" rel="tag">hcard</a>, <a href="http://www.technorati.com/tag/microformats" rel="tag">microformats</a></p>


]]></description>
            <category>openpsa</category>
            <pubDate>Thu, 01 Feb 2007 16:45:30 +0000</pubDate>
            <guid>http://bergie.iki.fi/midcom-permalink-a0bc927cb21311db8e87dddf8e3140a540a5</guid>
        </item>
    </channel>
</rss>
