<?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>qKAI project blog &#187; Technology</title>
	<atom:link href="http://blog.qkai.org/category/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.qkai.org</link>
	<description>How to utilize Open Content for higher-layered applications?</description>
	<lastBuildDate>Fri, 20 Aug 2010 08:16:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>increasing productivity &#8211; part 2: Subversion</title>
		<link>http://blog.qkai.org/2009/08/subversion-version-control-to-increase-productivity/</link>
		<comments>http://blog.qkai.org/2009/08/subversion-version-control-to-increase-productivity/#comments</comments>
		<pubDate>Sun, 02 Aug 2009 09:40:03 +0000</pubDate>
		<dc:creator>W-Mark Kubacki</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[pursuit of efficiency]]></category>
		<category><![CDATA[qKAI]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://blog.qkai.org/?p=109</guid>
		<description><![CDATA[These days about every adept in software engineering knows what version control (VC) is: A tool to commit changes into remote repositories. It is seen as replacement for some sort of postal system, where the source code is literally sent to a superior or customer.
But there are more aspects to know about it, which I [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-116" src="http://blog.qkai.org/wp-content/uploads/2009/08/flow-state-small.jpg" alt="" width="160" height="120" />These days about every adept in software engineering knows what <strong><a href="http://betterexplained.com/articles/a-visual-guide-to-version-control/">version control</a></strong> (VC) is: A tool to commit changes into remote repositories. It is seen as replacement for some sort of postal system, where the source code is literally sent to a superior or customer.</p>
<p>But there are <strong>more aspects to know about it</strong>, which I am going to write a about taking Subversion (SVN) as an example. One of it is lowering the barrier of committing code and enabling <strong>to maintain <a href="http://en.wikipedia.org/wiki/Flow_%28psychology%29">flow</a></strong>. <span id="more-109"></span> First we have to distinguish between centralized and decentral VC. I will limit this post to the first.</p>
<p>If you have ever seen developers working without VC you might probably know what mess it is, them copying working revisions to a dedicated directory, delving further into curring edge one and then eventually figuring out what they have to revert to from one of these folders &#8211; for minutes. A <strong>VC saves a good amount of time sparing the developer bookkeeping about the changes he made</strong>. Most importantly, without VC more than a few developers couldn&#8217;t work on a common code base without overwriting each one&#8217;s changes, synchronizing those history-folders and a good amount of coordination. With VC <strong>sharing changes (and reverting to a former changeset) becomes feasible</strong>.</p>
<p>Management or QA can see what was changed by whom, when and in which context. Thus they&#8217;re able to <strong>transparently track progress and account revision transitions</strong> to tickets, roadmaps and milestones without the often referring to the programmers.<br />
In SVN this can even be automatically done by establishing <strong>hooks &#8211; scripts to be run on given actions</strong>, such as the &#8216;commit&#8217;.</p>
<p>Software engineering wouldn&#8217;t be that easy as it is with VC. Novice programmers are inclined to keep their throphies, working functions for example, and drag them from revision to revision in commented-out parts of source files. In most cases this happens due to lack of understanding <strong>VC fullfills archival purposes</strong>: At any given time it is possible to revert parts of the code to a former revision, and reading them is possible, too.</p>
<p><img class="alignright size-full wp-image-119" src="http://blog.qkai.org/wp-content/uploads/2009/08/DSC05208.jpg" alt="" width="160" height="213" />Indeed that archival aspect is important in staging, where staging is the intermediate process to deploying an experimental/development version of a product to production systems. Should something go wrong <strong>a revert to a well-known working revision can occur</strong>. Even more importantly, <strong>errors can be tracked down to the small subset of code</strong> which actually has changed since last version.</p>
<p>Given common code-base <strong>updating systems becomes trivial</strong>: A revision is agreed upon to be promoted to a version to be deployed. On a systems that version is now checked-out and any upgrade scripts run (which should be versioned, too). The aspects earlier described in mind, some even version-control configuration directories.</p>
<p>A central versioning system <strong>enables usage of tools such as continuous integration</strong>, style-check and so on. As soon as code gets committed hooks can be utilized to trigger a build, test or check.<br />
And, such hooks can be used to <strong>run a check whether coding styles have been applied</strong> by the committor &#8211; if not, the code can get rejected from being written to the shared code-base as long as the novice does not correct the violations. Because this is done automatically, by a &#8220;machine&#8221;, no one from the team (or the QA) seems educational. Without losing face the coder can fix his mistake silently and <strong>preserve motivation</strong>.</p>
<p>When faced with the challenge to paint a blank page or in our case, append to existing code, one has to overcome a virtual barrier. This barrier is said to be the exact opposite of <strong>the state called flow</strong>, which to achieve is desired in the pursuit of efficiency. <strong>VC utilized right can lower that barrier down to flow significantly</strong>:<br />
Being able to get back to a working revision creates the feeling of <strong>safety and control</strong>, eliminating the need for explicitely storing and reading obsolete code or switching to update tickets or roadmaps maintains <strong>focus</strong>. Every <strong>commit becomes a small reward</strong> and updating to changes of others visualizes parallel and organized working of the group. With continuous integration and automatic (dev/staging) deployment <strong>one&#8217;s effords seem to have immediate consequences</strong> &#8211; which help keeping up motivation and everything the <strong>flow of productive working</strong>.</p>
<p>Yet assigning tasks not too hard and not to trivial is still the complementary challenge of the team leader.</p>
<p><img class="alignnone size-full wp-image-117" src="http://blog.qkai.org/wp-content/uploads/2009/08/flow-state-excerpt.jpg" alt="" width="560" height="183" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qkai.org/2009/08/subversion-version-control-to-increase-productivity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>increasing productivity &#8211; part 1: Maven</title>
		<link>http://blog.qkai.org/2009/07/maven-to-increase-productivity/</link>
		<comments>http://blog.qkai.org/2009/07/maven-to-increase-productivity/#comments</comments>
		<pubDate>Sun, 05 Jul 2009 11:39:01 +0000</pubDate>
		<dc:creator>W-Mark Kubacki</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[pursuit of efficiency]]></category>
		<category><![CDATA[qKAI]]></category>
		<category><![CDATA[software engineering]]></category>

		<guid isPermaLink="false">http://blog.qkai.org/?p=94</guid>
		<description><![CDATA[One of the most important challenges to face first is leveraging developers&#8217; time for maximum efficiency. At qKAI this is especially due to students, writing their theses, contribute to the code base. Therefore we have established several tools to spare them redundant work, maintain a constant code quality and automate the build.
This time I will [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-96" src="http://blog.qkai.org/wp-content/uploads/2009/07/automation.jpg" alt="" width="160" height="136" />One of the most important challenges to face first is <strong>leveraging developers&#8217; time for maximum efficiency</strong>. At qKAI this is especially due to students, writing their theses, contribute to the code base. Therefore we have <strong>established several tools</strong> to spare them redundant work, maintain a constant code quality and automate the build.</p>
<p>This time I will write about <a href="http://maven.apache.org/"><strong>Maven</strong></a>, <span id="more-94"></span> which &#8211; as Monika <a href="http://blog.qkai.org/2009/06/qkai-maven-project-documentation/">already revealed</a> &#8211; we utilize to generate (and publish) a simple <a href="http://docs.qkai.org/">documentation page</a>. I do see <em>Maven</em> as a mean to conserve and reproduce a process such as building the application and packaging it. Someone who is new to &#8220;all this&#8221; will most probably forget about byte-code enriching, converting charsets or simply running tests and integration tests. By <em>Maven</em> a &#8220;<code>mvn package</code>&#8221; is as easy to remember as it preserves the convenience to not forget about running one of the steps mentioned above.<br />
And, should the process be extended no present developer will even have the opportunity to omit eventual new steps; should one go his knowledge does not get lost.</p>
<p>An widely used alternative is <a href="http://ant.apache.org/"><strong>Ant</strong></a>. We have decided not to use it primarily as it <strong>lacks the ability to resolve and download dependencies</strong>, which our current tool is able to. (<a href="http://ant.apache.org/ivy/">See Ivy</a> for <em>Ant</em> as dependency manager downloading from Maven repositories.)<br />
By the time I wrote my thesis I have had to spend about a week to dig through qKAI&#8217;s dependencies, figure out which package requires another and how to update the clique in case of the errors I experienced.</p>
<p><img class="alignright size-full wp-image-98" src="http://blog.qkai.org/wp-content/uploads/2009/07/toyota-factory-2.jpg" alt="" width="149" height="188" />Today we can even introduce new tools such as <a href="http://pmd.sourceforge.net/">PMD</a> or <a href="http://clarkware.com/software/JDepend.html">JDepend</a> <strong>without burdening someone with installation, configuration or familiarization</strong>. A quick &#8220;notice the new reports on our page&#8221; at the distribution list suffices.</p>
<p>How we managed to automatically provide modified third party code and how we incorporated <strong>Maven with continuous integration</strong> is another topic. Such as enforcing coding styles and what we used Subversion&#8217;s scripts for. So, stay tuned.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qkai.org/2009/07/maven-to-increase-productivity/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>qKAI Maven project documentation</title>
		<link>http://blog.qkai.org/2009/06/qkai-maven-project-documentation/</link>
		<comments>http://blog.qkai.org/2009/06/qkai-maven-project-documentation/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 10:53:24 +0000</pubDate>
		<dc:creator>Monika</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Documentation]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[qKAI]]></category>
		<category><![CDATA[REST]]></category>

		<guid isPermaLink="false">http://blog.qkai.org/?p=74</guid>
		<description><![CDATA[Within his Bachelor thesis about search space limitation (details follow soon), Mark Kubacki established Apache Maven (amongst others) in the qKAI application framework:
Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project&#8217;s build, reporting and documentation from a central piece of [...]]]></description>
			<content:encoded><![CDATA[<p>Within his Bachelor thesis about search space limitation (details follow soon), <a href="http://mark.ossdl.de/about-me/" target="_blank">Mark Kubacki</a> established <a href="http://maven.apache.org/" target="_blank">Apache Maven</a> (amongst others) in the qKAI application framework:</p>
<blockquote><p>Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project&#8217;s build, reporting and documentation from a central piece of information. (http://maven.apache.org/)</p></blockquote>
<p>With Maven we got a nice project documentation now &#8211; available under <a href="http://docs.qkai.org" target="_blank">http://docs.qkai.org</a>. Especially the <a href="http://docs.qkai.org/api-methods.html" target="_blank">API section</a> is work in progress and will be enhanced by and by. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qkai.org/2009/06/qkai-maven-project-documentation/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Listing of SPARQL endpoints</title>
		<link>http://blog.qkai.org/2009/06/listing-of-sparql-endpoints/</link>
		<comments>http://blog.qkai.org/2009/06/listing-of-sparql-endpoints/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 12:17:32 +0000</pubDate>
		<dc:creator>Monika</dc:creator>
				<category><![CDATA[Documentation]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[LinkedOpenData]]></category>
		<category><![CDATA[OpenContent]]></category>
		<category><![CDATA[SPARQL]]></category>

		<guid isPermaLink="false">http://blog.qkai.org/?p=50</guid>
		<description><![CDATA[There is a nice overview of currently alive, buggy and dead SPARQL endpoints in the ESW wiki:
http://esw.w3.org/topic/SparqlEndpoints
Of course there are lots of other interesting things to find in the ESW wiki  
]]></description>
			<content:encoded><![CDATA[<p>There is a nice overview of currently alive, buggy and dead SPARQL endpoints in the ESW wiki:</p>
<p><a href="http://esw.w3.org/topic/SparqlEndpoints" target=blank>http://esw.w3.org/topic/SparqlEndpoints</a></p>
<p>Of course there are lots of other interesting things to find in the <a href="http://esw.w3.org/topic/StartSeite" target=blank>ESW wiki</a> <img src='http://blog.qkai.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qkai.org/2009/06/listing-of-sparql-endpoints/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>qKAI Wordle tag cloud</title>
		<link>http://blog.qkai.org/2009/06/qkai-wordle-tag-cloud/</link>
		<comments>http://blog.qkai.org/2009/06/qkai-wordle-tag-cloud/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 11:47:00 +0000</pubDate>
		<dc:creator>Monika</dc:creator>
				<category><![CDATA[Casual]]></category>
		<category><![CDATA[Concept]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[KnowledgeEngineering]]></category>
		<category><![CDATA[LinkedOpenData]]></category>
		<category><![CDATA[qKAI]]></category>
		<category><![CDATA[SocialSemanticWeb]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://blog.qkai.org/?p=41</guid>
		<description><![CDATA[This tag cloud is generated with Wordle and shows mostly all qKAI related tags:

]]></description>
			<content:encoded><![CDATA[<p>This tag cloud is generated with <a href="http://www.wordle.net/" target=blank>Wordle</a> and shows mostly all qKAI related tags:<br />
<img src="http://blog.qkai.org/wp-content/uploads/2009/06/wordle_delicious-300x186.jpg" alt="qKAI Wordle tag cloud" title="qKAI Wordle tag cloud" width="300" height="186" class="aligncenter size-medium wp-image-45" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.qkai.org/2009/06/qkai-wordle-tag-cloud/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

