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

<channel>
	<title>Aberration &#187; Software</title>
	<atom:link href="http://tomasz.sterna.tv/topics/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://tomasz.sterna.tv</link>
	<description>technology babbling</description>
	<lastBuildDate>Wed, 01 Feb 2012 19:19:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>How to restore GNOME 2 look to GNOME 3 desktop</title>
		<link>http://tomasz.sterna.tv/2011/12/how-to-restore-gnome-2-look-to-gnome-3-desktop/</link>
		<comments>http://tomasz.sterna.tv/2011/12/how-to-restore-gnome-2-look-to-gnome-3-desktop/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 22:25:43 +0000</pubDate>
		<dc:creator>Tomasz Sterna</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[fix]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[gnome shell]]></category>
		<category><![CDATA[gnome2]]></category>
		<category><![CDATA[gnome3]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://tomasz.sterna.tv/?p=827</guid>
		<description><![CDATA[If you don&#8217;t find the default GNOME 3 Shell appealing and would like to get back your GNOME 2 desktop, you can do it without any hassle. It&#8217;s actually one checkbox &#8211; few clicks away. But a checkbox very well hidden by GNOME Shell designers. Just click your name in the top-right corner and select [...]]]></description>
			<content:encoded><![CDATA[<p>If you don&#8217;t find the default GNOME 3 Shell appealing and would like to get back your GNOME 2 desktop, you can do it without any hassle.<br />
It&#8217;s actually one checkbox &#8211; few clicks away. But a checkbox very well hidden by GNOME Shell designers.</p>
<p>Just click your name in the top-right corner and select &#8220;System Settings&#8221;. The system settings window will appear.<br />
<a href="http://tomasz.sterna.tv/uploads/2011/12/gnome3-system-settings.png"><img src="http://tomasz.sterna.tv/uploads/2011/12/gnome3-system-settings-300x292.png" alt="" title="gnome3-system-settings" width="300" height="292" class="aligncenter size-medium wp-image-828" /></a></p>
<p>There select &#8220;System Info&#8221;. (Yes&#8230; System Info) and there select &#8220;Graphics&#8221; tab. (Yes&#8230; Graphics)<br />
<a href="http://tomasz.sterna.tv/uploads/2011/12/gnome-3-fallback-mode.png"><img src="http://tomasz.sterna.tv/uploads/2011/12/gnome-3-fallback-mode-300x227.png" alt="" title="gnome-3-fallback-mode" width="300" height="227" class="aligncenter size-medium wp-image-829" /></a></p>
<p>Now all you need is to switch ON the &#8220;Forced Fallback Mode&#8221; and relogin.<span id="more-827"></span></p>
<p>After login you will be greeted with familiar two panel desktop with defaultish look. Panels work as always, with one exception &#8211; every widget is locked in place by default. To customize it you need to right-click it holding <em>Alt</em> button. And they may be aligned to the left, center or to the right of the panel &#8211; just by dragging them where you want with the middle mouse button, holding <em>Alt</em> of course. Try it by dragging the clock to the right position where it belongs. Right-clicking the panel (holding <em>Alt</em> button, remember) gives you the standard menu to customize the panel, add widgets and create new panels.</p>
<p>If you run Ubuntu, you can even get Unity&#8217;s Indicator Applets on the panel. See <a href="http://www.webupd8.org/2011/11/indicator-applet-ported-to-gnome-3-can.html" title="Indicator Applet Ported To GNOME 3"></a> article for instructions.<br />
<a href="https://lh6.googleusercontent.com/-VY3ZkgyabZ0/Tru5HNZP3kI/AAAAAAAAAf8/XixhXrkv--Y/s1024/Zrzut%2Bekranu%2B2011-11-10%2B12%253A43%253A28.png"><img alt="GNOME 3 desktop without Gnome Shell" src="https://lh6.googleusercontent.com/-VY3ZkgyabZ0/Tru5HNZP3kI/AAAAAAAAAf8/XixhXrkv--Y/s1024/Zrzut%2Bekranu%2B2011-11-10%2B12%253A43%253A28.png" title="GNOME 3 desktop without Gnome Shell" class="aligncenter" width="500" height="280" /></a></p>
<p><small><a href="http://tomasz.sterna.tv/2011/12/how-to-restore-gnome-2-look-to-gnome-3-desktop/">How to restore GNOME 2 look to GNOME 3 desktop</a> &copy;, <a rel="license" href=""></a>.</small></p>]]></content:encoded>
			<wfw:commentRss>http://tomasz.sterna.tv/2011/12/how-to-restore-gnome-2-look-to-gnome-3-desktop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mer &#8211; What is it all about?</title>
		<link>http://tomasz.sterna.tv/2011/10/mer-what-is-it-all-about/</link>
		<comments>http://tomasz.sterna.tv/2011/10/mer-what-is-it-all-about/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 21:25:26 +0000</pubDate>
		<dc:creator>Tomasz Sterna</dc:creator>
				<category><![CDATA[Cordia]]></category>
		<category><![CDATA[Maemo]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[cordia]]></category>
		<category><![CDATA[cordia hd]]></category>
		<category><![CDATA[distribution]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[meego]]></category>
		<category><![CDATA[mer]]></category>

		<guid isPermaLink="false">http://tomasz.sterna.tv/?p=823</guid>
		<description><![CDATA[With the recent Mer Project announcement, there are a lot of people confused what Mer is about. Let me try to explain. Mer picks up the idea of MeeGo Core, and provides a very stripped down, mobile devices oriented Linux distribution. But this distribution is vendor oriented. Not end-user oriented. Mer&#8217;s goal is to provide [...]]]></description>
			<content:encoded><![CDATA[<p>With the recent <a href="http://www.mail-archive.com/meego-dev@meego.com/msg10749.html" title="Mer Announcement" target="_blank">Mer Project announcement</a>, there are a lot of people confused what Mer is about. Let me try to explain.</p>
<p>Mer picks up the idea of MeeGo Core, and provides a very stripped down, mobile devices oriented Linux distribution. But this distribution is vendor oriented. Not end-user oriented. Mer&#8217;s goal is to provide a base that vendors can build on and create end-user oriented products.</p>
<p>There are two kinds of vendors. Ones providing a &#8220;hardware adaptation&#8221; and ones providing &#8220;user experience&#8221;.</p>
<p>Hardware adaptation lies below Mer, and makes Mer run on a specific hardware. Let it be an Intel CPU based PC or Netbook or an ARM SoC based mobile device or any other esoteric hardware.</p>
<p>User Experience vendor provides a layer on top of Mer, interacting with a live human user. This may be the MeeGo Tablet UX, MeeGo Netbook UX, Plasma Active, <a href="http://cordiahd.org/" title="Cordia Hildon-Desktop" target="_blank">Cordia HD</a>, MeeGo IVI or any other User Interface.</p>
<p>This allows for many combinations and decouples the effort. Of course you can be both hardware adaptation and user experience vendor, building a complete Product.</p>
<p>Have fun in the spirit of openness.</p>
<p><small><a href="http://tomasz.sterna.tv/2011/10/mer-what-is-it-all-about/">Mer &#8211; What is it all about?</a> &copy;, <a rel="license" href=""></a>.</small></p>]]></content:encoded>
			<wfw:commentRss>http://tomasz.sterna.tv/2011/10/mer-what-is-it-all-about/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lua 5.1.4-3 for CentOS with fixed io.popen</title>
		<link>http://tomasz.sterna.tv/2011/04/lua-5-1-4-3-for-centos-with-fixed-io-popen/</link>
		<comments>http://tomasz.sterna.tv/2011/04/lua-5-1-4-3-for-centos-with-fixed-io-popen/#comments</comments>
		<pubDate>Sun, 10 Apr 2011 16:31:31 +0000</pubDate>
		<dc:creator>Tomasz Sterna</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[io.popen]]></category>
		<category><![CDATA[Lua]]></category>
		<category><![CDATA[luarocks]]></category>

		<guid isPermaLink="false">http://tomasz.sterna.tv/?p=785</guid>
		<description><![CDATA[Today I needed to install luarocks on a CentOS 4 machine to get some additional Lua packages and I got hit by: Your version of Lua does not support io.popen, which is required by LuaRocks. Please check your Lua installation. Which is strange, because I had a fresh install of lua-5.1.4-2.el4.rf from RpmForge. Rebuilding the [...]]]></description>
			<content:encoded><![CDATA[<p>Today I needed to install luarocks on a CentOS 4 machine to get some additional Lua packages and I got hit by:<br />
<code><br />
Your version of Lua does not support io.popen,<br />
which is required by LuaRocks. Please check your Lua installation.<br />
</code><br />
Which is strange, because I had a fresh install of <tt>lua-5.1.4-2.el4.rf</tt> from RpmForge.</p>
<p>Rebuilding the package didn&#8217;t help, so I started investigation. It turned out that the lua package SPEC &#8220;fixed&#8221; the CFLAGS= line in Makefile incorrectly, omitting $(MYCFLAGS) variable which is crucial to set POSIX support on Linux, thus most of POSIX support (ie. popen) was just skipped.</p>
<p>You will find fixed Lua and built LuaRocks packages at: <a href="http://codex.xiaoka.com/pub/packages/redhat/">http://codex.xiaoka.com/pub/packages/redhat/</a>. Added bonus: Lua is patched to 5.1.4-3.</p>
<p><small><a href="http://tomasz.sterna.tv/2011/04/lua-5-1-4-3-for-centos-with-fixed-io-popen/">Lua 5.1.4-3 for CentOS with fixed io.popen</a> &copy;, <a rel="license" href=""></a>.</small></p>]]></content:encoded>
			<wfw:commentRss>http://tomasz.sterna.tv/2011/04/lua-5-1-4-3-for-centos-with-fixed-io-popen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bienvenidos openSUSE</title>
		<link>http://tomasz.sterna.tv/2011/01/bienvenidos-opensuse/</link>
		<comments>http://tomasz.sterna.tv/2011/01/bienvenidos-opensuse/#comments</comments>
		<pubDate>Mon, 03 Jan 2011 18:02:04 +0000</pubDate>
		<dc:creator>Tomasz Sterna</dc:creator>
				<category><![CDATA[Mix]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://tomasz.sterna.tv/?p=762</guid>
		<description><![CDATA[Hearing many good things about openSUSE at the MeeGo Conference and being a user of their technologies (MeeGo uses OBS &#8211; openSUSE Build Service extensively), I decided to give openSUSE another shot and installed it a few days after I got back to Madrid, replacing Ubuntu &#8211; long time main system on my laptop. It [...]]]></description>
			<content:encoded><![CDATA[<p>Hearing many good things about <a href="http://www.opensuse.org/">openSUSE</a> at the MeeGo Conference and being a user of their technologies (MeeGo uses OBS &#8211; openSUSE Build Service extensively), I decided to give openSUSE another shot and installed it a few days after I got back to Madrid, replacing Ubuntu &#8211; long time main system on my laptop.</p>
<p>It was over a month ago and, oh boy, was it a good change! :-) Last time I tried SuSE several years ago I was hit by RPM-hell badly, reverted to Gentoo and never looked back. Then I grew to binary packages distribution and switched to Ubuntu.</p>
<p>When Nokia decided to ditch Maemo and its Debian based underlying technologies I wasn&#8217;t happy. Then I needed to package some things for my MeeGo ports, met <a href="https://build.opensuse.org/">OBS</a> and was amazed how great tool it is. Then I realized how good packaging tool RPM became during the years.</p>
<p>Having openSUSE as my main system gives me the solid base of stable and well tested system and access to bleeding edge software in the areas I want. <a href="https://build.opensuse.org/">OBS</a> builds the most <a href="https://build.opensuse.org/project/show?project=GNOME%3ASTABLE%3A2.30">recent GNOME</a> or web servers not only for the running (Factory) distribution but for the stable trees too. So I have the flexibility of mixed stable+experimental system I was used to running Gentoo, without the hassle of building it myself.</p>
<p>There is one more thing &#8211; openSUSE developers does not feel that they know better than the upstream developers and does not ditch features users are expecting to find in their desktop environment, replacing them with <a href="https://launchpad.net/indicator-applet">custom, unstable and incompatible thingies</a>. You still have this vanilla feeling using openSUSE &#8211; with just a bit of chameleon branding sprinkled here and there.</p>
<p><small><a href="http://tomasz.sterna.tv/2011/01/bienvenidos-opensuse/">Bienvenidos openSUSE</a> &copy;, <a rel="license" href=""></a>.</small></p>]]></content:encoded>
			<wfw:commentRss>http://tomasz.sterna.tv/2011/01/bienvenidos-opensuse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MeeGo for Archos Generation 7</title>
		<link>http://tomasz.sterna.tv/2010/12/meego-for-archos-generation-7/</link>
		<comments>http://tomasz.sterna.tv/2010/12/meego-for-archos-generation-7/#comments</comments>
		<pubDate>Tue, 28 Dec 2010 15:37:41 +0000</pubDate>
		<dc:creator>Tomasz Sterna</dc:creator>
				<category><![CDATA[Cordia]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Archos]]></category>
		<category><![CDATA[ARM]]></category>
		<category><![CDATA[meego]]></category>
		<category><![CDATA[porting]]></category>

		<guid isPermaLink="false">http://tomasz.sterna.tv/?p=764</guid>
		<description><![CDATA[After the Snapdragon fiasco I sold my Dell Streak and started working on MeeGo port for Archos 5it. Porting the MeeGo Core was very easy. I already had experience with building MeeGo images, so the only thing to get was Archos specific knowledge. openAOS is a very good resource and I had SDE firmware with [...]]]></description>
			<content:encoded><![CDATA[<p>After <abbr title="No GLES libraries makes MeeGo port impossible" style="border-bottom: 1px dashed darkred">the Snapdragon fiasco</abbr> I sold my <a href="http://codex.xiaoka.com/wiki/meego:streak">Dell Streak</a> and started working on <a href="http://codex.xiaoka.com/wiki/meego:archos">MeeGo port for Archos 5it</a>.</p>
<p>Porting the MeeGo Core was very easy. I already had experience with building MeeGo images, so the only thing to get was Archos specific knowledge. <a href="http://www.openaos.org/">openAOS</a> is a very good resource and I had <a href="http://www.archos.com/products/ta/archos_5it/dualos.html">SDE firmware</a> with openAOS multi-bootloader installed in few hours. It took me a few hours more preparing Archos specific firmware and configuration packages and building the image. Also the device kernel needed a little fix to build fine under CodeSourcery toolchain. And there I had it &#8211; <a href="http://codex.xiaoka.com/pub/meego/archos/">MeeGo Core on Archos</a> running omapfb X11 driver.</p>
<p><span id="more-764"></span>The next thing required for MeeGo is the 3D acceleration. The UI uses it for nice animations and will not work without one. Unfortunately the SGX bundle for the stock device did not work for me at all. Besides that, BuBu that got it working reported problems with scrambled font rendering.</p>
<p>So I decided to try another approach. <a href="http://repo.meego.com/MeeGo/builds/trunk/daily/non-oss/repos/armv7l/packages/armv7l/">MeeGo non-oss repository</a> has the SGX driver and GLES libraries available for N900 and Beagleboard. Archos 5it uses the same OMAP3430 with PowerVR as N900 so it should be able to use the MeeGo provided binaries. The only thing missing in Archos kernel was the DRI2 kernel level glue layer for PoverVR. So I decided to backport drivers/gpu/pvr from recent MeeGo 2.6.35.3 Linux kernel to Archos provided 2.6.27.10. It required support for OMAP clock notifications, so I backported these too. Using <a href="http://gitorious.org/~smoku/archos-buildroots/smokus-gen7">my kernel</a> and modules I was able to get fbdev-sgx X11 driver and GLES acceleration up and running.</p>
<p>Next step was building MeeGo Handset UI image to test the now-working Core.<br />
<object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/JI87fg1BgZI?fs=1&amp;hl=pl_PL&amp;rel=0&amp;color1=0x5d1719&amp;color2=0xcd311b"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/JI87fg1BgZI?fs=1&amp;hl=pl_PL&amp;rel=0&amp;color1=0x5d1719&amp;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object></p>
<p>My Archos kernel binary and MeeGo Core image with SGX acceleration working is available at <a href="http://codex.xiaoka.com/pub/meego/archos/">http://codex.xiaoka.com/pub/meego/archos/</a></p>
<p><small><a href="http://tomasz.sterna.tv/2010/12/meego-for-archos-generation-7/">MeeGo for Archos Generation 7</a> &copy;, <a rel="license" href=""></a>.</small></p>]]></content:encoded>
			<wfw:commentRss>http://tomasz.sterna.tv/2010/12/meego-for-archos-generation-7/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Dovecot 2.0.6 for Ubuntu Lucid</title>
		<link>http://tomasz.sterna.tv/2010/11/dovecot-2-0-6-for-ubuntu-lucid/</link>
		<comments>http://tomasz.sterna.tv/2010/11/dovecot-2-0-6-for-ubuntu-lucid/#comments</comments>
		<pubDate>Wed, 03 Nov 2010 16:44:25 +0000</pubDate>
		<dc:creator>Tomasz Sterna</dc:creator>
				<category><![CDATA[Announcement]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[dovecot]]></category>
		<category><![CDATA[lucid]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://tomasz.sterna.tv/?p=757</guid>
		<description><![CDATA[While upgrading my Ubuntu servers to new LTS release I realized that I need to rebuild my Dovecot packages for Lucid. It turned out, that in the meantime Dovecot moved from 1.2 version to 2.0. So it was a good time to upgrade my packages to the new version. It required a bit of package [...]]]></description>
			<content:encoded><![CDATA[<p>While upgrading my Ubuntu servers to new LTS release I realized that I need to rebuild my <a href="http://www.dovecot.org/">Dovecot</a> packages for Lucid.</p>
<p>It turned out, that in the meantime Dovecot moved from 1.2 version to 2.0. So it was a good time to upgrade my packages to the new version. It required a bit of package reworking, but the packages are ready and running fine on my <a href="http://www.chrome.pl/">Chrome.pl</a> mail server.</p>
<p>You may get these from <a href="http://codex.xiaoka.com/apt/">Xiaoka APT Repository</a>.<br />
<strong>NOTE:</strong> Sieve filtering is no longer tied to main Dovecot binary, so you may to get it separately &#8211; install <em>dovecot-pigeonhole</em> package.</p>
<p><small><a href="http://tomasz.sterna.tv/2010/11/dovecot-2-0-6-for-ubuntu-lucid/">Dovecot 2.0.6 for Ubuntu Lucid</a> &copy;, <a rel="license" href=""></a>.</small></p>]]></content:encoded>
			<wfw:commentRss>http://tomasz.sterna.tv/2010/11/dovecot-2-0-6-for-ubuntu-lucid/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Zend Framework &#8211; What does big business need the community for?</title>
		<link>http://tomasz.sterna.tv/2010/01/zend-framework-what-does-big-business-need-the-community-for/</link>
		<comments>http://tomasz.sterna.tv/2010/01/zend-framework-what-does-big-business-need-the-community-for/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 11:11:59 +0000</pubDate>
		<dc:creator>Tomasz Sterna</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[fail]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[wtf]]></category>
		<category><![CDATA[zend]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://tomasz.sterna.tv/?p=485</guid>
		<description><![CDATA[While updating Xeno to the latest Zend Framework I encountered some regressions. This is typical for software without strictly defined API and unit tests to enforce it, so I was expecting these and found them out with my own Xeno testing. Being a good community member I reported them promptly to upstream explaining the nature [...]]]></description>
			<content:encoded><![CDATA[<p>While updating Xeno to the latest <a href="http://framework.zend.com/">Zend Framework</a> I encountered some regressions. This is typical for software without strictly defined API and unit tests to enforce it, so I was expecting these and found them out with my own Xeno testing.</p>
<p>Being a good community member I reported them promptly to upstream explaining the nature of the issue and giving an example fix, which was working for me. <a href="http://framework.zend.com/issues/browse/ZF-8767">ZF-8767</a>, <a href="http://framework.zend.com/issues/browse/ZF-8768">ZF-8768</a>.</p>
<p>To my excitement when I updated Zend Framework SVN sources checkout an hour later, my fixes was already merged. :-) That&#8217;s nice.</p>
<p>But the bugtracker was strangely silent, so I got curious and looked at the SVN log to see whether my solution was correct, how it was implemented finally and commented. There were two commits to the library &#8211; first ones for a week or so. But surprisingly none of them mentioned my reported bugs. One fix was merged as a [GENERIC] bugfix, and second was expanded to a fix for the same error class in many instances and mentioned some other bug.</p>
<p>The real surprise came an hour later from the bugtracker. My reports were closed by the person committing changes to the SVN as&#8230; <strong>&#8220;Not reproducible within trunk. Probably already fixed.&#8221;</strong> WTF? What nerve.</p>
<p><a href="http://www.dojotoolkit.org/">Dojo Toolkit</a> community was <em>very</em> skeptic when Zend offered joint-effort proposal. One might see why.</p>
<p>For me this is a complete credibility lost for Zend Framework. I doubt I will use it in any other project. You may think twice before doing so too.</p>
<p><small><a href="http://tomasz.sterna.tv/2010/01/zend-framework-what-does-big-business-need-the-community-for/">Zend Framework &#8211; What does big business need the community for?</a> &copy;, <a rel="license" href=""></a>.</small></p>]]></content:encoded>
			<wfw:commentRss>http://tomasz.sterna.tv/2010/01/zend-framework-what-does-big-business-need-the-community-for/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Clustering for jabberd2</title>
		<link>http://tomasz.sterna.tv/2009/06/clustering-for-jabberd2/</link>
		<comments>http://tomasz.sterna.tv/2009/06/clustering-for-jabberd2/#comments</comments>
		<pubDate>Sat, 13 Jun 2009 15:05:12 +0000</pubDate>
		<dc:creator>Tomasz Sterna</dc:creator>
				<category><![CDATA[Announcement]]></category>
		<category><![CDATA[Jabber/XMPP]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[clustering]]></category>
		<category><![CDATA[jabberd]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://tomasz.sterna.tv/?p=407</guid>
		<description><![CDATA[The largest problem for large jabberd2 deployments is a single-process, single-threaded Session Manager. Being single-threaded means that it can process only one XMPP packet at a time. More importantly, when it waits for some data (from the storage mostly) it does not process any other packets. One possible solution would be to rewrite the SM [...]]]></description>
			<content:encoded><![CDATA[<p>The largest problem for large jabberd2 deployments is a single-process, single-threaded Session Manager.<br />
Being single-threaded means that it can process only one XMPP packet at a time. More importantly, when it waits for some data (from the storage mostly) it does not process any other packets.</p>
<p>One possible solution would be to rewrite the SM to be multi-threaded. And I do mean rewrite &#8211; the way it is designed now, would mean rewrite (or reassembly) from scratch.</p>
<p>Other possible solution is to make the SM multi-processed. This means a possibility to launch many Session Manager instances to service one XMPP domain. This would balance processing load between many processes (possibly machines) and spread storage load on many separate DB connections.</p>
<p>Most server implementation approach this with a separate &#8216;clustering&#8217; component, which tracks which session component is handling which user.<br />
In case of jabberd2 I think it is not necessary. We already have the all decision making overseer &#8211; the router component.</p>
<p>I just committed to <a href="http://codex.xiaoka.com/svn/jabberd2/trunk/">SVN trunk</a> a router version, that handles many SM and/or external components (i.e. transports) instances for one XMPP domain. Router selects the destination instance using a hash of user JID (receiver in case of SM instances, sender in case of external components). This is an approach that most clustering HTTP deployments use, which select the web server using session-id hash.</p>
<p>I&#8217;m running clustered jabberd2 on <a href="http://www.chrome.pl/">Chrome.pl</a> with no problems.</p>
<p><small><a href="http://tomasz.sterna.tv/2009/06/clustering-for-jabberd2/">Clustering for jabberd2</a> &copy;, <a rel="license" href=""></a>.</small></p>]]></content:encoded>
			<wfw:commentRss>http://tomasz.sterna.tv/2009/06/clustering-for-jabberd2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Virtual domains for jabberd2</title>
		<link>http://tomasz.sterna.tv/2009/06/virtual-domains-for-jabberd2/</link>
		<comments>http://tomasz.sterna.tv/2009/06/virtual-domains-for-jabberd2/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 13:54:46 +0000</pubDate>
		<dc:creator>Tomasz Sterna</dc:creator>
				<category><![CDATA[Announcement]]></category>
		<category><![CDATA[Jabber/XMPP]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[jabberd]]></category>
		<category><![CDATA[virtual hosts]]></category>

		<guid isPermaLink="false">http://tomasz.sterna.tv/?p=401</guid>
		<description><![CDATA[One of jabberd2 annoyances was its requirement to run one SM instance for every serviced domain. I already did some work for dynamic jabberd2 configuration introducing default host option in c2s.xml to remove requirement of restarting C2S every time one adds new serviced domain. But it still required launching separate SM process instance. Today I [...]]]></description>
			<content:encoded><![CDATA[<p>One of jabberd2 annoyances was its requirement to run one SM instance for every serviced domain. I already did some work for dynamic jabberd2 configuration introducing default host option in c2s.xml to remove requirement of restarting C2S every time one adds new serviced domain. But it still required launching separate SM process instance.</p>
<p>Today I committed virtual domains support changes to SVN branch <a href="http://codex.xiaoka.com/svn/jabberd2/trunk/">http://codex.xiaoka.com/svn/jabberd2/branches/vhosts</a> which allows you to configure more than one serviced domain in only one SM instance.<br />
I successfully configured 3 domains in one SM instance and was able to talk between these 3 and one another in second SM process. All 4 connected to one Router process instance.</p>
<p>Unexpectedly it was pretty simple &#8211; it took me only ~6h. to get it working. :-)</p>
<p>Of course all domains serviced in one SM process have identical configuration. If you need domains with different configuration, you need to create another sm.xml and launch separate SM process for them.</p>
<p>The SVN <em>vhosts</em> branch changes need some polishing and testing. I would appreciate if you tried these and tell me what you think.</p>
<p><small><a href="http://tomasz.sterna.tv/2009/06/virtual-domains-for-jabberd2/">Virtual domains for jabberd2</a> &copy;, <a rel="license" href=""></a>.</small></p>]]></content:encoded>
			<wfw:commentRss>http://tomasz.sterna.tv/2009/06/virtual-domains-for-jabberd2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using monit with Ubuntu Server</title>
		<link>http://tomasz.sterna.tv/2009/05/using-monit-with-ubuntu-server/</link>
		<comments>http://tomasz.sterna.tv/2009/05/using-monit-with-ubuntu-server/#comments</comments>
		<pubDate>Wed, 27 May 2009 12:08:44 +0000</pubDate>
		<dc:creator>Tomasz Sterna</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Administration]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Monit]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://tomasz.sterna.tv/?p=383</guid>
		<description><![CDATA[Monit is a software watchdog &#8211; a very useful tool to keep your service daemons alive. The best way to run monit is as the Init managed process. But there is no /etc/inittab on Ubuntu anymore. Instead we have Upstart. Adding Monit as an Upstart service is easy. Let me show you how&#8230; Upstart is [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://mmonit.com/monit/">Monit</a> is a software <a href="http://en.wikipedia.org/wiki/Watchdog_timer">watchdog</a> &#8211; a very useful tool to keep your service daemons alive.</p>
<p>The best way to run monit is as the Init managed process. But there is no <code>/etc/inittab</code> on Ubuntu anymore. Instead we have <a href="http://upstart.ubuntu.com/">Upstart</a>. Adding Monit as an Upstart service is easy. Let me show you how&#8230;</p>
<p><span id="more-383"></span>Upstart is event based, and its event handling configuration is in <code>/etc/event.d</code>. The configuration is a bit similar to <code>/etc/inittab</code>, but a bit more verbose and placed in separate files. To add Monit as a managed process, just create a file similar to a getty spawner configuration in <code>ttyX</code>. I named my file: <code>/etc/event.d/monit</code> with content of:</p>
<p><code># Run monit in standard run-levels<br />
start on stopped rc2<br />
start on stopped rc3<br />
start on stopped rc4<br />
start on stopped rc5<br />
stop on runlevel 0<br />
stop on runlevel 1<br />
stop on runlevel 6<br />
respawn<br />
exec /usr/sbin/monit -Ic /etc/monit/monitrc</code></p>
<p>Next just start monit. Issue a command:<br />
<code>start monit</code></p>
<p>Good luck with service monitoring.</p>
<p><small><a href="http://tomasz.sterna.tv/2009/05/using-monit-with-ubuntu-server/">Using monit with Ubuntu Server</a> &copy;, <a rel="license" href=""></a>.</small></p>]]></content:encoded>
			<wfw:commentRss>http://tomasz.sterna.tv/2009/05/using-monit-with-ubuntu-server/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

