<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.7.6(BH)" -->
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>Nemein blogs</title>
        <description>Company blogs from Nemein</description>
        <link>http://nemein.com/fi/news/</link>
        <lastBuildDate>Fri, 05 Sep 2008 22:31:04 +0000</lastBuildDate>
        <generator>FeedCreator 1.7.6(BH)</generator>
        <managingEditor>sales@nemein.com</managingEditor>
        <item>
            <title>MidCOM 3 and context injectors</title>
            <link>http://nemein.com/fi/news/midcom_3_and_context_injectors.html</link>
            <description><![CDATA[
<p>
<a href="http://bergie.iki.fi/midcom-serveattachmentguid-6d7a06d478fe11dd91c201bb3cfc84878487/context-aware-life-coaching.jpg"><img src="http://bergie.iki.fi/midcom-serveattachmentguid-71401cf478fe11dd9f2e016560e4630b630b/context-aware-life-coaching-tm.jpg" height="254" width="200" border="1" align="right" hspace="8" vspace="4" alt="Context-aware life coaching ad" title="Context-aware life coaching ad" /></a>
<br />I know, according to <a href="http://bergie.iki.fi/blog/midgard_and_synchronized_releases.html">roadmap</a> we all should be now focusing in hammering out bugs in <a href="http://www.midgard-project.org/updates/view/1219823947.html">Midgard 8.09</a>, or as we call it, "<em>Ragnaroek</em>" instead of working on <a href="http://github.com/bergie/midcom">MidCOM 3</a>. But <a href="http://teroheikkinen.iki.fi/">Tero</a> had <a href="http://tepheikk.jaiku.com/presence/43534559">a specific problem</a> he needed to solve, and I wanted to ensure it was done right. And so I <a href="http://github.com/bergie/midcom/commit/1b590f1d9ad9e14dba69bdbe0628cc116935b2d7">ended up adding</a> support for <em>context injectors</em> into MidCOM 3.
<br /><span style="font-size:14pt;"><strong>
<br />What about contexts anyway?
<br /></strong></span>
</p>

<p>
<a href="http://www.midgard-project.org/api-docs/midcom/3.0/midcom_core/midcom_core_helpers_context.html">Context in MidCOM</a> is an object that contains all useful information related to the request at hand: arguments, URL, templating information. And the plan is to make it <a href="http://worrydream.com/MagicInk/#inferring_context_from_the_environment">much more</a>.
</p>

<p>
Context is the main way for controllers to find out about their environment, and for the templating system to decide which views to run and how. As we want to make the new MidCOM <a href="http://bergie.iki.fi/blog/some_thoughts_on_green_programming-php-midgard_and_simplicity.html">lean and efficient</a>, we did not want to stick everything possible into the context. But in order to solve problems developers will need more stuff there. And so the idea of context injectors was born.
</p>

<p>
Context injectors are <a href="http://www.midgard-project.org/discussion/developer-forum/some_midcom3_api_changes_to_come/">a new API</a> components can use to add or modify information in the current context. The injectors will be run in two places:
</p>

<ul><li><strong>Process injectors</strong> will be called before dispatcher loads the component and calls the controller</li>
<li><strong>Template injectors</strong> will be called after controller has finished and before a template is collected and displayed</li>
</ul>

<p>
There are many things you can do there. Some immediate use cases are:
</p>

<ul><li><strong><a href="http://bergie.iki.fi/blog/the-midgard-position.html">Geopositioning injector</a></strong> could add user's <a href="http://google-code-updates.blogspot.com/2008/08/two-new-ways-to-location-enable-your.html">current location</a> to the context so that a controller can fetch nearby data</li>
<li><strong>Theming injector</strong> could switch the template entry point (in old Midgard term's the <a href="http://www.midgard-project.org/documentation/concepts-page_and_style/">ROOT element</a>) according to user's wishes</li>
<li><strong>Mobile optimization injector</strong> could also switch the template entry point if user is accessing the site with an <a href="http://www.apple.com/iphone/">iPhone</a> or <a href="http://www.openmoko.com/product.html">OpenMoko</a></li>
</ul>

<p>
<span style="font-size:14pt;"><strong>
<br />Using context injectors
<br /></strong></span>
</p>

<p>
The way this works is relatively simple. To create an injector, you <a href="http://www.midgard-project.org/documentation/midcom-component-development/">create a component</a> and create an <em>injector class</em> to it. Depending which injector you want to provide, you either implement a <em>inject_process</em> or <em>inject_template</em> public method there. The method will have full access to the current context (in <em>$_MIDCOM-&gt;context</em>) and can add or change things there. The just declare that you have the class in the component's manifest by adding a key <em>process_injector</em> or <em>template_injector</em> with value being the class name.
</p>

<p>
MidCOM will take care of <a href="http://www.midgard-project.org/api-docs/midcom/3.0/midcom_core/midcom_core_component_loader.html">loading the component</a> in question in the right time, and of calling the injector method. This will all happen automatically once the component is installed.
</p>

<p>
If your controller or template uses context information that is not part of the default context data, then make sure to first check that the data is available via an <a href="http://tr2.php.net/isset">isset()</a>. This way your component will be able to work around missing context information if applicable to your scenario, or throw an error.
</p>

<p>
<em>Written outside in the </em><em><a href="http://plazes.com/plazes/153563_platonik">Platonik</a></em><em> waterpipe cafe in </em><em><a href="http://en.wikipedia.org/wiki/Besiktas">Beşiktaş</a></em><em>, Istanbul, while </em><em><a href="http://en.wikipedia.org/wiki/Vitis_vinifera">vine leaves</a></em><em> above keep the air cool enough for working. The picture is from </em><em><a href="http://www.fredshouse.net/2006/04/contextaware_life_coaching_ser.html">the Freds House blog</a></em><em>.</em>
</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/bergie/midgard?a=V5cd6L"><img src="http://feeds.feedburner.com/~f/bergie/midgard?i=V5cd6L" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/bergie/midgard?a=4SRPTL"><img src="http://feeds.feedburner.com/~f/bergie/midgard?i=4SRPTL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/bergie/midgard?a=FVkOFl"><img src="http://feeds.feedburner.com/~f/bergie/midgard?i=FVkOFl" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/bergie/midgard/~4/381428843" height="1" width="1"/>]]></description>
            <author>midgard@greywolves.org (Midgard Administrator)</author>
            <category>feed:d697c44bd2cdceb1c72d08693bb1639e</category>
            <pubDate>Tue, 02 Sep 2008 14:50:16 +0000</pubDate>
            <guid>http://nemein.com/fi/midcom-permalink-9c1cd5ec794f11dd868d4fc63f2c309d309d</guid>
        </item>
        <item>
            <title>Knol: a unit of knowledge</title>
            <link>http://nemein.com/fi/news/knol-a_unit_of_knowledge.html</link>
            <description><![CDATA[
<p>
Google's <a href="http://www.readwriteweb.com/archives/knol_google_takes_on_wikipedia.php">Wikipedia competitor</a> <a href="http://en.wikipedia.org/wiki/Knol">Knol</a> <a href="http://www.yugatech.com/blog/gooooogle/knol-launched-day-one-spammin-jammin/">launched</a> a while back. It seeks to make writing informative entries more appealing to authors by offering a <a href="http://googleblog.blogspot.com/2007/12/encouraging-people-to-contribute.html">cut of advertisement revenue</a> from the Knol pages. This <a href="http://www.calacanis.com/2006/10/28/wikipedia-leaves-100m-on-the-table-or-please-jimbo-reconsider/">can be a substantial thing</a> as calculations say if Wikipedia had ads the revenue from them would be <a href="http://www.watchmojo.com/web/blog/?p=626">42 million USD per year</a>.
</p>

<p>
Having read Neal Stephenson's <a href="http://en.wikipedia.org/wiki/Snow_Crash">Snow Crash</a> where the <a href="http://en.wikipedia.org/wiki/Snow_Crash#Important_characters">lead character Hiro</a>, a <a href="http://bergie.iki.fi/blog/category/haidonggumdo/">fellow swordfighter</a> and free hacker is making his living by collecting intel to upload onto the <a href="http://en.wikipedia.org/wiki/Snow_Crash#Influence_on_the_World_Wide_Web">CIC library</a>, the concept had some appeal. To test it, I created some pages:
</p>

<blockquote>
<strong><a href="http://knol.google.com/k/henri-bergius/workstreaming/205l6w1dyeyf0/2">Workstreaming</a></strong>
<br />Workstreaming means collecting activities of geographically dispersed team members into a consistent news feed, enabling managers to track process and colleagues to stay up-to-date with the day-by-day happenings.
<br /><br /><strong><a href="http://knol.google.com/k/henri-bergius/developing-p2p-business-applications/205l6w1dyeyf0/3">Developing P2P business applications</a></strong>
<br />Moving business applications to the web has solved many issues like easier deployment and backups, but at same time introduced a single point of failure in the infrastructure. A group of open source frameworks seeks to solve the issue by helping developers to migrate their applications into resilient and scalable peer-to-peer networks.
<br /><br /><strong><a href="http://knol.google.com/k/henri-bergius/haedong-kumdo/205l6w1dyeyf0/4">Haedong Kumdo</a></strong>
<br />Haedong Kumdo is a modern martial art based on ancient Korean sword techniques.
</blockquote>

<p>
This should not detract from my open content activities, as the <a href="http://knol.google.com/k/knol">Knol</a> pages are also <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons-licensed</a>.
</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/bergie/business?a=M7RMcK"><img src="http://feeds.feedburner.com/~f/bergie/business?i=M7RMcK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/bergie/business?a=qBbHjK"><img src="http://feeds.feedburner.com/~f/bergie/business?i=qBbHjK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/bergie/business?a=Im4cak"><img src="http://feeds.feedburner.com/~f/bergie/business?i=Im4cak" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/bergie/business?a=Ty0Jak"><img src="http://feeds.feedburner.com/~f/bergie/business?i=Ty0Jak" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/bergie/business/~4/378451999" height="1" width="1"/>]]></description>
            <author>midgard@greywolves.org (Midgard Administrator)</author>
            <category>feed:83f0d71c060b08df24bff2644f41d00b</category>
            <pubDate>Fri, 29 Aug 2008 13:47:07 +0000</pubDate>
            <guid>http://nemein.com/fi/midcom-permalink-e688c096762a11dd8250ffd5ae1533813381</guid>
        </item>
        <item>
            <title>Some thoughts on green programming, PHP, Midgard and simplicity</title>
            <link>http://nemein.com/fi/news/some_thoughts_on_green_programming-php-midgard_and_simplicity.html</link>
            <description><![CDATA[
<p>
<a href="http://en.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus Lerdorf's</a> excellent talk on <a href="http://talks.php.net/show/froscon08/">PHP and simplicity</a> in FrOSCon introduced me to concept of green programming. To quote the <a href="http://greenprogrammer.blogspot.com/2006/01/what-is-green-programming.html">Green Programming blog</a>:
</p>

<blockquote>
Just like we should aspire to use renewable energy sources to help the health of the planet, we should also use reusable software elements to create robust, healthy code for our customers. Eco-friendly practices might be thought of as applicable to software devlopment. Just as we are concerned with the various biota and climate of the planet, we should be concerned with the over-all health of the software eco-system.
</blockquote>

<p>
How does <a href="http://www.midgard-project.org/">Midgard</a> sit in with these ideas? Well, the current version of it does not. <a href="http://www.midgard-project.org/documentation/midcom">MidCOM 2</a> is a heavy, enterprise-oriented CMS framework that requires big machines, or even clusters to run.
</p>

<p>
But things are quite different in <a href="http://bergie.iki.fi/blog/midgard_2-more_than_just_php-more_than_just_cms.html">Midgard 2 land</a>. We have <a href="http://bergie.iki.fi/blog/some_plans_for_midcom_3.html">rewritten the MidCOM framework</a> from scratch, removing the need to have abstractions on top of abstractions to support the shift from <a href="http://www.midgard-project.org/documentation/reference/#9f42c2021f0b0efedacd0ae9d6801c5c">classic Midgard APIs</a> to the <a href="http://www.midgard-project.org/documentation/reference/#3855e6325f5459c1d4f3b9863bc7debe">new ones</a>, and from PHP4 to <a href="http://tr2.php.net/zend-engine-2.php">more object-oriented PHP versions</a>. We have also focused on simplicity and adaptability, to make MidCOM an easier environment <a href="http://bergie.iki.fi/blog/midcom_3_at_a_glance.html">to work with</a> for site developers.
</p>

<p>
While MidCOM3 is not due to be out before next March, <a href="http://teroheikkinen.iki.fi/">Tero Heikkinen</a>, an early adopter has been building some production sites with it already. And his experiences state that not only the performance is much better, but also it requires much less work from programmers.
</p>

<p>
I know <a href="http://www.sitepoint.com/blogs/2008/08/29/rasmus-lerdorf-php-frameworks-think-again/">Rasmus' argument is that frameworks are evil</a> by requiring developers to adopt to their own concepts, and by introducing unnecessary overhead. But we should look beyond mere server-level productivity, and take programmer productivity into account. A framework makes things much easier for agile teams, enabling people with different competences to work in their isolated environments. Programmers can work on the code, and designers on <a href="http://phptal.motion-twin.com/">the templates</a> for instance.
</p>

<p>
While this makes the actual development and deployment process more efficient, how much performance is lost due to the framework?
<br /><span style="font-size:14pt;"><strong>
<br />Lies, damn lies and benchmarks
<br /></strong></span>
</p>

<p>
Like Rasmus, I used an <a href="http://pecl.php.net/package/APC">APC-cached</a> simple PHP "<em>hello world</em>" file as the baseline for my benchmarks. On my <a href="http://www.marco.org/277">dog slow MacBook Air</a>, the simple PHP file was able to serve <strong>32.91</strong> requests per second.
</p>

<p>
MidCOM3, when run on <a href="http://www.midgard-project.org/updates/view/1219823947.html">Midgard 8.09</a> with APC and <a href="http://www.danga.com/memcached/">memcached</a> was able to serve <strong>8.90</strong> request per second, or in other words performed at 27% of the plain PHP file. Not too good, but considered that much SQL is run to <a href="http://www.midgard-project.org/documentation/concepts-host_and_page/">serve a Midgard page</a>, there are good explanations at this.
</p>

<p>
But compared to <a href="http://drupal.org/">Drupal</a>, which I did not install but instead calculated <a href="http://talks.php.net/show/froscon08/32">the performance</a> based on the difference between my baseline (32.91 r/s) and Rasmus' (611.78 r/s), MidCOM3 was doing quite fine. Drupal would only be serving about <strong>2.5</strong> requests per second on my box. <a href="http://framework.zend.com/">Zend Framework</a>, again calculated from <a href="http://talks.php.net/show/froscon08/29">Rasmus' data</a> would provide <strong>6.5</strong> request per second.
</p>

<p>
And this is not all. <a href="http://blogs.nemein.com/people/piotras/">Piotr Pokora</a> has done a stellar work with <a href="http://bergie.iki.fi/blog/midgard_2-more_than_just_php-more_than_just_cms.html">Midgard2</a>, which <a href="http://bergie.iki.fi/blog/midgard_and_synchronized_releases.html">will come out in spring</a> numbered 9.03. With it, MidCOM's numbers were quite a lot better: <strong>25.37</strong> requests per second, or 77% of the simple PHP file's performance. This is actually faster than the same simple PHP file on my box without APC (24.84 r/s).
</p>

<p>
I believe the MidCOM3 performance story does not end here. <a href="http://www.midgard-project.org/discussion/developer-forum/caching_midgard_requests/">Piotras has been doing experiments</a> with caching Midgard's initial request data to reduce database queries, and MidCOM3 still misses the <a href="http://www.midgard-project.org/documentation/concepts-midcom-specs-subsystems-cache/">extensive caching infrastructure</a> provided by MidCOM2. When these are in place, we may get pretty damn close to the plain PHP numbers.
</p>

<p>
So, with these numbers, I think we can say that Midgard2 will be quite a good framework for doing green programming while still retaining agile team efficiency.
</p>

<p>
<span style="font-size:14pt;"><strong>
<br />Towards a greener future</strong></span>
</p>

<p>
This matters quite a lot, as then Midgard can be run with much smaller virtual machines consuming much less electricity to serve interesting information-rich applications.
</p>

<p>
When Ragnaroek gets out in end of September we will start focusing our efforts to the new platform that already is showing so much promise. A brighter, greener, more efficient future lies ahead!
</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/bergie/midgard?a=5oTkfK"><img src="http://feeds.feedburner.com/~f/bergie/midgard?i=5oTkfK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/bergie/midgard?a=7YQeVK"><img src="http://feeds.feedburner.com/~f/bergie/midgard?i=7YQeVK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/bergie/midgard?a=0HCQak"><img src="http://feeds.feedburner.com/~f/bergie/midgard?i=0HCQak" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/bergie/midgard/~4/378036062" height="1" width="1"/>]]></description>
            <author>midgard@greywolves.org (Midgard Administrator)</author>
            <category>feed:d697c44bd2cdceb1c72d08693bb1639e</category>
            <pubDate>Fri, 29 Aug 2008 11:44:58 +0000</pubDate>
            <guid>http://nemein.com/fi/midcom-permalink-451c9fe875c611ddb22a3145e190c451c451</guid>
        </item>
        <item>
            <title>Midgard to go Vala?</title>
            <link>http://nemein.com/fi/news/midgard_to_go_vala.html</link>
            <description><![CDATA[
<p>
<img src="http://bergie.iki.fi/midcom-serveattachmentguid-60a2239e742911dd8af39301a5d7285f285f/midgard2-bubble.png" height="137" width="128" border="0" align="right" hspace="8" vspace="4" alt="Midgard 2" title="Midgard 2" /><br />Cross-posting <a href="http://boids.name/empty/articles/2008/08/27">this</a> to <a href="http://planet.gnome.org/">Planet GNOME</a>, as it is sure to be interesting to the community there, especially as <a href="http://www.midgard-project.org/">Midgard</a> is becoming <a href="http://bergie.iki.fi/blog/midgard_2-more_than_just_php-more_than_just_cms.html">much more than just CMS</a>:
</p>

<blockquote>
There is a project in works by me to rewrite Midgard’s core engine from plain C to <a href="http://live.gnome.org/Vala">Vala</a>. Midgard 8.09’s code is taking huge use of GObject infrastructure and Vala is so good in expressing GObjects that actual development is much much easier.
<br /><br />It is not surprising that the project itself will be code-named ‘Váli’. It will include both streamlining of Midgard core and use of SpiderMonkey java script language embedded engine (courtesy of Mozilla project) to allow server-side extension of the core. Some might see these changes as an attempt to bring more web developers to Midgard’s Core but as this will anyway happen after Ragnaroek, I think its pure target is to simplify work for remaining gods on a new world for mere humans.
</blockquote>

<p>
I think the <a href="http://www.midgard-project.org/community/events/midgard_gathering_2008.html">Midgard Gathering</a> in November shall be quite memorable, and not only because of the quantities of Polish vodka and sauna that will be present...
</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/bergie/midgard?a=3ri1FK"><img src="http://feeds.feedburner.com/~f/bergie/midgard?i=3ri1FK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/bergie/midgard?a=aUy5dK"><img src="http://feeds.feedburner.com/~f/bergie/midgard?i=aUy5dK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/bergie/midgard?a=b0IZwk"><img src="http://feeds.feedburner.com/~f/bergie/midgard?i=b0IZwk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/bergie/midgard/~4/376108054" height="1" width="1"/>]]></description>
            <author>midgard@greywolves.org (Midgard Administrator)</author>
            <category>feed:d697c44bd2cdceb1c72d08693bb1639e</category>
            <pubDate>Wed, 27 Aug 2008 11:14:59 +0000</pubDate>
            <guid>http://nemein.com/fi/midcom-permalink-f5077c3c743311ddba3d83c1cddb0e3f0e3f</guid>
        </item>
        <item>
            <title>Part-time Istanbullu</title>
            <link>http://nemein.com/fi/news/part-time_istanbullu.html</link>
            <description><![CDATA[
<p>
<a href="http://bergie.iki.fi/midcom-serveattachmentguid-412d06be737511ddb15dd308be3dc052c052/leanders_tower_by_night.JPG"><img src="http://bergie.iki.fi/midcom-serveattachmentguid-4321c7fc737511dd96079fb9403f8b3f8b3f/leanders_tower_by_night-tm.jpg" height="130" width="396" border="1" hspace="4" vspace="4" alt="Leander's Tower by night" title="Leander's Tower by night" /></a>
</p>

<p>
A thousand years ago, <a href="http://en.wikipedia.org/wiki/Varangians#Varangian_Guard">men from my lands</a> traveled <a href="http://en.wikipedia.org/wiki/Istanbul">here</a> in search of opportunities and adventure. Now, due to intercontinental relationships and working permits, I follow their footsteps.
</p>

<p>
While Istanbul didn't score perfectly in <a href="http://bergie.iki.fi/blog/quality_of_life-helsinki_gets_good_score.html">Monocle's Quality of Life index</a>, I still find it a quite appealing place for a <a href="http://webworkerdaily.com/2006/09/04/going-bedouin/">web worker</a>. The lifestyle is more relaxed than in the north, WiFi-equipped cafes are everywhere, food is good, and the <a href="http://en.wikipedia.org/wiki/Sultanahmet">old city</a> and <a href="http://en.wikipedia.org/wiki/Bosporus">Bosporus</a> are absolutely beautiful.
</p>

<p>
<a href="http://bergie.iki.fi/midcom-serveattachmentguid-2b87a904737511dd96079fb9403f8b3f8b3f/tophane_mosque_at_night.JPG"><img src="http://bergie.iki.fi/midcom-serveattachmentguid-2def6bc8737511dd8f73eb1418da2fa02fa0/tophane_mosque_at_night-tm.jpg" height="250" width="400" border="1" hspace="4" vspace="4" alt="Tophane mosque at night" title="Tophane mosque at night" /></a>
</p>

<p>
<a href="http://webworkerdaily.com/2006/09/04/bedouins-are-everywhere/">Web working</a> while running <a href="http://nemein.com/">a consultancy</a> in Helsinki is not the easiest thing to do, but with some <a href="http://bergie.iki.fi/blog/scrum_in_management_of_a_small_software_consultancy.html">new processes</a>, and <a href="http://bergie.iki.fi/blog/ididwork-com-simple_workstreaming_solution.html">new tools</a> I think we may be able to cope. The main thing is to learn using <a href="http://en.wikipedia.org/wiki/Telepresence">telepresence</a> tools better than we do now. 
</p>

<p>
At least the <a href="http://webworkerdaily.com/2006/09/10/a-soloists-workflow/">web working</a> test run I did <a href="http://bergie.iki.fi/travels/london-united_kingdom/">in London</a> earlier this month felt very productive. Now the plan is to split my time between Helsinki and Istanbul, and of course the mandatory conference trips. This all will be challenging for regular project work, and so good web working tips will be appreciated!
</p>

<p>
<a href="http://bergie.iki.fi/midcom-serveattachmentguid-6e3e16b6737511ddac53e1a7911ae038e038/bergie_webworking_in_miscafe.JPG"><img src="http://bergie.iki.fi/midcom-serveattachmentguid-702f97ce737511dd9a233def452ef55bf55b/bergie_webworking_in_miscafe-tm.jpg" height="214" width="398" border="1" hspace="4" vspace="4" alt="Webworking in Miscafe, Besiktas" title="Webworking in Miscafe, Besiktas" /></a>
</p>

<p>
But in any case, my reasons for being in Istanbul go <a href="http://flickr.com/photos/bergie/2708683090/in/set-72157606406011464/">far beyond</a> mere working environment and productivity...
</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/bergie/midgard?a=Gwlp2K"><img src="http://feeds.feedburner.com/~f/bergie/midgard?i=Gwlp2K" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/bergie/midgard?a=JDgyOK"><img src="http://feeds.feedburner.com/~f/bergie/midgard?i=JDgyOK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/bergie/midgard?a=EJwSsk"><img src="http://feeds.feedburner.com/~f/bergie/midgard?i=EJwSsk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/bergie/midgard/~4/375240423" height="1" width="1"/>]]></description>
            <author>midgard@greywolves.org (Midgard Administrator)</author>
            <category>feed:d697c44bd2cdceb1c72d08693bb1639e</category>
            <pubDate>Tue, 26 Aug 2008 13:46:55 +0000</pubDate>
            <guid>http://nemein.com/fi/midcom-permalink-8b38231e737b11dda0097795820422d622d6</guid>
        </item>
        <item>
            <title>Some notes from FrOSCon 2008</title>
            <link>http://nemein.com/fi/news/some_notes_from_froscon_2008.html</link>
            <description><![CDATA[
<p>
I'm again in the <a href="http://www.froscon.org/">FrOSCon conference</a> in Sankt Augustin, having found the conference <a href="http://bergie.iki.fi/blog/speaking_in_froscon_php_room.html">last time</a> reasonably big, but relaxed. I will be giving my <a href="http://docs.google.com/Present?docid=dd4m6zsj_27f793rtgf">GeoClue talk</a> again <a href="http://programm.froscon.org/2008/day_2008-08-24.en.html">on Sunday</a> (16:30 in HS5).
</p>

<p>
<img src="http://bergie.iki.fi/midcom-serveattachmentguid-95bf4cf4711911ddbc4bc7fd4ea3a0d3a0d3/froscon-follow-the-white-frog.jpg" height="143" width="397" border="1" hspace="4" vspace="4" alt="FrOSCon: Follow the white frog" title="FrOSCon: Follow the white frog" /></p>

<p>
Here are some notes from the conference:
</p>

<ul><li><a href="http://wiki.php.net/todo/php53">PHP 5.3</a> is going to have alpha2 next week. <a href="http://blog.felho.hu/whats-new-in-php-53-part-1-namespaces.html">Namespaces</a> could be <a href="http://www.midgard-project.org/documentation/concepts-midcom-specs-architecture-namespacing/">nice in MidCOM</a>, but I wonder how well they will work with the autoloader</li>
<li><a href="http://www.turtle4privacy.org/new/">Turtle</a> is a "friend-to-friend" framework to provide secure P2P data sharing in a trust network. Could be interesting with <a href="http://bergie.iki.fi/blog/xmpp_publish-subscribe_for_midgard_and_ajatus_replication.html">Midgard replication</a></li>
<li>Apache and Lighttpd support the <a href="http://john.guen.in/past/2007/4/17/send_files_faster_with_xsendfile/">X-Sendfile header</a> which we could utilize for simpler, <a href="http://teroheikkinen.iki.fi/blog/view/more_midcom_performance_available.html">fast file serving</a> with Midgard</li>
<li>The <a href="http://en.wikipedia.org/wiki/MINIX_3">MINIX</a> idea of automatically <a href="http://en.wikipedia.org/wiki/MINIX_3#Reincarnate_dead_or_sick_drivers">reincarnated user-space drivers</a> and servers is pretty cool</li>
<li>Lots of <a href="http://wiki.openmoko.org/wiki/Main_Page">OpenMoko</a> <a href="http://www.openmoko.com/product.html">FreeRunner phones</a> here!</li>
</ul>

<p>
Some interesting talks still left, including:
</p>

<ul><li><a href="http://programm.froscon.org/2008/events/194.en.html">Apache Mahout</a> machine learning system</li>
<li><a href="http://programm.froscon.org/2008/events/291.en.html">dropr</a> message queue for PHP</li>
<li>Using <a href="http://programm.froscon.org/2008/events/284.en.html">PEAR installer for website releases</a></li>
</ul>

<p>
Unfortunately the <a href="http://programm.froscon.org/2008/events/213.en.html">Atom Publishing Protocol talk</a> is only in German...
</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/bergie/midgard?a=k5DlwK"><img src="http://feeds.feedburner.com/~f/bergie/midgard?i=k5DlwK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/bergie/midgard?a=tcIu6K"><img src="http://feeds.feedburner.com/~f/bergie/midgard?i=tcIu6K" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/bergie/midgard?a=Re2Qok"><img src="http://feeds.feedburner.com/~f/bergie/midgard?i=Re2Qok" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/bergie/midgard/~4/372717034" height="1" width="1"/>]]></description>
            <author>midgard@greywolves.org (Midgard Administrator)</author>
            <category>feed:d697c44bd2cdceb1c72d08693bb1639e</category>
            <pubDate>Sat, 23 Aug 2008 13:44:27 +0000</pubDate>
            <guid>http://nemein.com/fi/midcom-permalink-0bfc36ce712011ddb462792fd66ba492a492</guid>
        </item>
        <item>
            <title>Using Yahoo! Fire Eagle with Midgard</title>
            <link>http://nemein.com/fi/news/using_yahoo-fire_eagle_with_midgard.html</link>
            <description><![CDATA[
<p>
<a href="http://fireeagle.yahoo.net/">Yahoo! Fire Eagle</a>, kind of "<a href="http://geoclue.freedesktop.org/">GeoClue</a> for the Web" <a href="http://feblog.yahoo.net/2008/08/14/fire-eagle-is-open/">was released</a> last week. It acts as <a href="http://arstechnica.com/news.ars/post/20080820-fireeagle-ignites-geo-aware-applications.html">a central hub</a> collection position information from services like <a href="http://plazes.com/">Plazes</a> and <a href="http://www.dopplr.com/">Dopplr</a>, and with <a href="http://bergie.iki.fi/blog/yahoo-fire_eagle_knows_where_my_phone_moves.html">a simple PHP script</a>, <a href="http://jaiku.com/">Jaiku</a>. <a href="http://fireeagle.yahoo.net/gallery">Services</a> needing user's location can then <a href="http://fireeagle.yahoo.net/developer">ask it from Fire Eagle</a> instead of having to support all the services separately.
</p>

<p>
<a href="http://bergie.iki.fi/blog/the-midgard-position.html">Midgard's positioning framework</a> has been Fire Eagle compatible <a href="http://bergie.iki.fi/blog/yahoo-fire_eagle_knows_where_my_phone_moves.html">since March this year</a>. Now that the service is open for <a href="http://vilunki.wordpress.com/2008/03/10/youre-invited-to-read-this-blog-post-beta/">a wider audience</a>, I though it would be useful to tell how to activate it with your Midgard-powered site.
</p>

<p>
You need to authorize <a href="http://www.midgard-project.org/">Midgard</a> with your Fire Eagle account. To do this, go to:
</p>

<pre>
http://www.example.net/midcom-exec-org.routamc.positioning/test-fireeagle.php
</pre>

<p>
and follow the authorization instructions. This is due to Fire Eagle using the nice <a href="http://en.wikipedia.org/wiki/OAuth">OAuth protocol</a>.
</p>

<p>
Once this is done <a href="http://midgardwiki.contentcontrol-berlin.de/index.php/Midcom.services.cron">MidCOM cron</a> will start tracking your Fire Eagle location. All objects you have created (photos, blogs, comments, etc) will then be automatically tagged with where you made them.
</p>

<p>
<a href="http://bergie.iki.fi/midcom-serveattachmentguid-2d746e2a6ec811ddb7764384836d09cf09cf/yahoo-fireeagle-20080820.png"><img src="http://bergie.iki.fi/midcom-serveattachmentguid-2e2a316a6ec811ddb87d8f78c20ba3d3a3d3/yahoo-fireeagle-20080820-tm.jpg" height="330" width="400" border="1" hspace="4" vspace="4" alt="Yahoo! Fire Eagle" title="Yahoo! Fire Eagle" /></a>
</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/bergie/midgard?a=INB20K"><img src="http://feeds.feedburner.com/~f/bergie/midgard?i=INB20K" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/bergie/midgard?a=rP4zxK"><img src="http://feeds.feedburner.com/~f/bergie/midgard?i=rP4zxK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/bergie/midgard?a=kGDgyk"><img src="http://feeds.feedburner.com/~f/bergie/midgard?i=kGDgyk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/bergie/midgard/~4/370041770" height="1" width="1"/>]]></description>
            <author>midgard@greywolves.org (Midgard Administrator)</author>
            <category>feed:d697c44bd2cdceb1c72d08693bb1639e</category>
            <pubDate>Wed, 20 Aug 2008 14:56:34 +0000</pubDate>
            <guid>http://nemein.com/fi/midcom-permalink-e9a483b06ecc11dd9483d92c8758dff6dff6</guid>
        </item>
        <item>
            <title>Finding out available MidCOM routes</title>
            <link>http://nemein.com/fi/news/finding_out_available_midcom_routes.html</link>
            <description><![CDATA[
<p>
<a href="http://www.midgard-project.org/documentation/midcom">MidCOM</a> is a PHP <a href="http://en.wikipedia.org/wiki/Model-view-controller">MVC</a> framework where you <a href="http://www.midgard-project.org/documentation/howto-midcom/">create a site</a> by building a tree structure and assigning components for the various folders. Each component is <a href="http://bergie.iki.fi/blog/midcom_3_at_a_glance.html">its own PHP application</a> that can handle all URL requests under that folder using a set of configured routes.
</p>

<p>
In addition to making normal requests to the various routes available, routes provided by other folders can be <a href="http://www.midgard-project.org/documentation/midcom-method-dynamic_load/">loaded dynamically</a> anywhere on the site. This is useful for instance for loading five latest news items to front page.
</p>

<p>
To make life easier, I now added a new feature to <a href="http://pear.midcom-project.org/index.php?package=midcom_admin_help&amp;release=1.2.0&amp;downloads">midcom.admin.help</a>, the online help component. Each folder will automatically list their documentation and available routes when you access their URL <em>__ais/help</em>:
</p>

<p>
<a href="http://bergie.iki.fi/midcom-serveattachmentguid-00b7e1b86ec411ddb87d8f78c20ba3d3a3d3/midcom_admin_help_routes.png"><img src="http://bergie.iki.fi/midcom-serveattachmentguid-0232a2266ec411ddb7764384836d09cf09cf/midcom_admin_help_routes-tm.jpg" height="251" width="400" border="1" hspace="4" vspace="4" alt="midcom.admin.help routes list" title="midcom.admin.help routes list" /></a>
</p>

<p>
To get this feature you only need to upgrade the help component:
</p>

<pre>
# pear upgrade midcom/midcom_admin_help
</pre><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/bergie/midgard?a=HsvbAK"><img src="http://feeds.feedburner.com/~f/bergie/midgard?i=HsvbAK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/bergie/midgard?a=YA5qGK"><img src="http://feeds.feedburner.com/~f/bergie/midgard?i=YA5qGK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/bergie/midgard?a=DiUf7k"><img src="http://feeds.feedburner.com/~f/bergie/midgard?i=DiUf7k" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/bergie/midgard/~4/370016771" height="1" width="1"/>]]></description>
            <author>midgard@greywolves.org (Midgard Administrator)</author>
            <category>feed:d697c44bd2cdceb1c72d08693bb1639e</category>
            <pubDate>Wed, 20 Aug 2008 14:26:43 +0000</pubDate>
            <guid>http://nemein.com/fi/midcom-permalink-e9323d506ecc11dd9483d92c8758dff6dff6</guid>
        </item>
        <item>
            <title>Micro-blogging as alternative corporate announcement channel</title>
            <link>http://nemein.com/fi/news/micro-blogging_as_alternative_corporate_announcement_channel.html</link>
            <description><![CDATA[
<p>
Today <a href="http://www.nebula.fi/">our ISP</a> is having <a href="http://www.nebula.fi/tiedotteet.php">major power failures</a>, and therefore many of our <a href="http://nemein.com/">web services</a> are down. For situations like this, it is good to establish an alternative channel of communications, and for us that is the <a href="http://en.wikipedia.org/wiki/Micro-blogging">micro-blogging</a> platform <a href="http://jaiku.com/">Jaiku</a>:
</p>

<p>
<a href="http://jaiku.com/channel/Nemein">http://jaiku.com/channel/Nemein</a>
</p>

<p>
<a href="http://bergie.iki.fi/midcom-serveattachmentguid-14b4442c6cfd11dd837fe1d95a0d537b537b/jaiku-channel-nemein.png"><img src="http://bergie.iki.fi/midcom-serveattachmentguid-1684f18e6cfd11dda310f95a2b716fc16fc1/jaiku-channel-nemein-tm.jpg" height="178" width="400" border="1" hspace="4" vspace="4" alt="Jaiku's Nemein channel" title="Jaiku's Nemein channel" /></a>
</p>

<p>
If you are a Jaiku user, feel free to join the channel. Others can follow it via the <a href="http://jaiku.com/channel/Nemein/feed/rss">RSS feed</a>.
</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/bergie/business?a=ZJLeVK"><img src="http://feeds.feedburner.com/~f/bergie/business?i=ZJLeVK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/bergie/business?a=5zWrDK"><img src="http://feeds.feedburner.com/~f/bergie/business?i=5zWrDK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/bergie/business?a=dWmPzk"><img src="http://feeds.feedburner.com/~f/bergie/business?i=dWmPzk" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/bergie/business?a=9ToxRk"><img src="http://feeds.feedburner.com/~f/bergie/business?i=9ToxRk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/bergie/business/~4/367907766" height="1" width="1"/>]]></description>
            <author>midgard@greywolves.org (Midgard Administrator)</author>
            <category>feed:83f0d71c060b08df24bff2644f41d00b</category>
            <pubDate>Mon, 18 Aug 2008 08:10:16 +0000</pubDate>
            <guid>http://nemein.com/fi/midcom-permalink-ef40d0866cff11dda6638deded18f273f273</guid>
        </item>
        <item>
            <title>Feature branches in Midgard development with git</title>
            <link>http://nemein.com/fi/news/feature_branches_in_midgard_development_with_git.html</link>
            <description><![CDATA[
<p>
The <a href="http://bergie.iki.fi/blog/midgard_and_synchronized_releases.html">release synchronicity plan</a> was accepted, and therefore Midgard will be switching from SVN to <a href="http://git-scm.com/">git</a>, and the concept of <a href="http://wiki.winehq.org/GitBranches">feature branches</a>.
</p>

<p>
With feature branches the idea is that each feature or bug fix is being developed in its own branch, and only landed to trunk (master in git terminology) when ready. This keeps the trunk clean and easy to test.
</p>

<p>
While the SVN migration will only happen in <a href="http://www.midgard-project.org/discussion/developer-forum/next_midgard_developer_meeting_in_october-november/">next developer meeting</a>, you can already start using git for Midgard development thanks to <a href="http://git.or.cz/course/svn.html">git-svn</a>. Once you have a working checkout, here is how you work with feature branches:
</p>

<p>
Ensure you have the latest stuff:
</p>

<pre>
git svn rebase
</pre>

<p>
Create a new branch:
</p>

<pre>
git branch mynewfeature
</pre>

<p>
Go to the new branch:
</p>

<pre>
git checkout mynewfeature
</pre>

<p>
<em>Hack, add files, commit, test</em>
</p>

<p>
Ensure the diff looks correct:
</p>

<pre>
git diff master..HEAD
</pre>

<p>
Go back to master:
</p>

<pre>
git checkout master
</pre>

<p>
Merge your feature branch:
</p>

<pre>
git merge mynewfeature
</pre>

<p>
Commit to SVN:
</p>

<pre>
git svn dcommit
</pre>

<p>
If you want to also work with other Midgard or MidCOM versions <a href="http://trac.midgard-project.org/timeline">from SVN</a>, check out the <a href="http://www.jukie.net/~bart/blog/svn-branches-in-git">how to track multiple svn branches in git</a> tutorial.
</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/bergie/midgard?a=W4ITfK"><img src="http://feeds.feedburner.com/~f/bergie/midgard?i=W4ITfK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/bergie/midgard?a=4ZKh4K"><img src="http://feeds.feedburner.com/~f/bergie/midgard?i=4ZKh4K" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/bergie/midgard?a=HpHzAk"><img src="http://feeds.feedburner.com/~f/bergie/midgard?i=HpHzAk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/bergie/midgard/~4/362077105" height="1" width="1"/>]]></description>
            <author>henri.bergius@iki.fi (Henri Bergius)</author>
            <category>feed:d697c44bd2cdceb1c72d08693bb1639e</category>
            <pubDate>Mon, 11 Aug 2008 16:15:52 +0000</pubDate>
            <guid>http://nemein.com/fi/midcom-permalink-dc04418e67c211dda8bd9f8e584cd0d8d0d8</guid>
        </item>
    </channel>
</rss>
