<?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>Krahn.org</title>
	<atom:link href="http://www.krahn.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.krahn.org</link>
	<description>Web Development</description>
	<lastBuildDate>Sat, 12 Sep 2009 16:25:01 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>My 10 most important things about Scrum and being a ScrumMaster</title>
		<link>http://www.krahn.org/2009/09/my-10-most-important-things-about-scrum-and-being-a-scrummaster/</link>
		<comments>http://www.krahn.org/2009/09/my-10-most-important-things-about-scrum-and-being-a-scrummaster/#comments</comments>
		<pubDate>Sat, 12 Sep 2009 15:42:00 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[Agile & Scrum]]></category>
		<category><![CDATA[Boris Gloger]]></category>
		<category><![CDATA[Munich]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[ScrumMaster]]></category>

		<guid isPermaLink="false">http://www.krahn.org/?p=105</guid>
		<description><![CDATA[As I have already written, I have attended a ScrumMaster certification in Munich on thursday and friday, done by Boris Gloger at TNG Technology Consulting. At this point I want to thank Boris and Andreas for the great Scrum session, it really gave me a much clearer impression of what Scrum is and should be. [...]]]></description>
			<content:encoded><![CDATA[<p>As I have already written, I have attended a ScrumMaster certification in Munich on thursday and friday, done by <a href="http://borisgloger.com/" target="_blank">Boris Gloger</a> at <a href="http://www.tngtech.com/events-scrumtrainings.html" target="_blank">TNG Technology Consulting</a>. At this point I want to thank Boris and Andreas for the great Scrum session, it really gave me a much clearer impression of what Scrum is and should be. I also want to thank TNG for hosting the event, you have a great office, the food was good, I liked it very much!</p>
<p>So for me what are the most important things I learned about Scrum and being a (now certified) ScrumMaster? Here is a quick review about that:</p>
<ol>
<li>&#8220;there is no truth&#8221; &#8211; every Scrum Trainer may tell you something different about implementing Scrum (or parts of it). That may be as it is, but you need to remember, there is no single true only valid method of Scrum. Do what works for you and your company &#8211; but stick to it (and improve it over time)! But the basic Scrum elements should be there, otherwise don&#8217;t call it Scrum.</li>
<li>Skill No. 1 the ScrumMaster has to learn: to say &#8220;NO&#8221; to the boss! You can&#8217;t protect your team, you can&#8217;t even try to change your organisation (especially the bad parts in it) if you can&#8217;t say &#8220;NO&#8221; to the boss at some level. A ScrumMaster is like a fish swimming against the river, he goes against the rules in the organisation preventing the team to be successful in delivering quality (potentially shippable) software.</li>
<li>don&#8217;t try to use electronic tools too much &#8211; a task board, product backlog and impediment backlog can easily be managed with sticky notes and a movable board/flipchart. It makes handling the information (especially when estimating and in daily scrum meetings) much easier.</li>
<li>never ever ever ever estimate the effort &#8211; only estimate the functionalities and their relation to each other. Velocity changes with the constraints and technical details but the functionalty stays the same &#8211; and so does the estimation. I believe that&#8217;s the hardest part to make clear to Management guys who still want to think in men days and currency. So give it to them but don&#8217;t estimate the implementation, estimate the functionalities and you can give them a release plan that (should) work(s).</li>
<li>work with your Product Owner and make sure he presents the Vision and big picture behind the product to the team &#8211; make him repeat that as often as possible so it doesn&#8217;t get lost.</li>
<li>keep the roles separated &#8211; a ScrumMaster should never be a Product Owner or be part of the team. You ask why? Because he could not fulfil his role to protect the team or create a safe environment for them.</li>
<li>the ScrumMaster helps the team, but he doesn&#8217;t do the work for them! Be sure to let the team handle stuff like Burn Down Chart or running the daily scrum.</li>
<li>Be there for them and help them if they need it, and be sure to remove all impediments they might have. Try to find out if there are any impediuments the team might not know about (e.g. when a task isn&#8217;t done after like 2 days, ask why it isn&#8217;t and find out what the possible impediment could be.</li>
<li>get a clear &#8220;definition of done&#8221; from the team. Make sure the team includes possible constraints set by company rules e.g. documentation.</li>
<li>make everybody stick to the time box. Expect them to be there on time and don&#8217;t use more time than being specified!</li>
</ol>
<p>Ok thing those are the most important items I got from the last 2 days. There was a lot more information (naturally) but if you need (or want) to know more about Scrum and the techniques, I recommend Boris&#8217; book <a href="http://www.amazon.de/gp/product/3446419136?ie=UTF8&amp;tag=krahn-21&amp;linkCode=as2&amp;camp=1638&amp;creative=19454&amp;creativeASIN=3446419136">Scrum: Produkte zuverlässig und schnell entwickeln</a><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.de/e/ir?t=krahn-21&amp;l=as2&amp;o=3&amp;a=3446419136" border="0" alt="" width="1" height="1" /> and <a href="http://www.amazon.de/gp/product/3000282017?ie=UTF8&amp;tag=krahn-21&amp;linkCode=as2&amp;camp=1638&amp;creative=19454&amp;creativeASIN=3000282017">Your Scrum Checklist: Scrum Hard Facts: Roles. Artefacts. All Meetings</a><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.de/e/ir?t=krahn-21&amp;l=as2&amp;o=3&amp;a=3000282017" border="0" alt="" width="1" height="1" />.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krahn.org/2009/09/my-10-most-important-things-about-scrum-and-being-a-scrummaster/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scrum &amp; Agile Development</title>
		<link>http://www.krahn.org/2009/09/scrum-agile-development/</link>
		<comments>http://www.krahn.org/2009/09/scrum-agile-development/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 10:27:11 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[Agile & Scrum]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Product Owner]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[ScrumAlliance]]></category>
		<category><![CDATA[ScrumMaster]]></category>
		<category><![CDATA[Team]]></category>

		<guid isPermaLink="false">http://www.krahn.org/?p=94</guid>
		<description><![CDATA[Scrum is an iterative incremental framework for managing complex work (such as new product development) commonly used with agile software development.
Although Scrum was intended for management of software development projects, it can be used to run software maintenance teams, or as a general project/program management approach.
Scrum is a &#8220;process skeleton,&#8221; which contains sets of practices [...]]]></description>
			<content:encoded><![CDATA[<p>Scrum is an iterative incremental framework for managing complex work (such as new product development) commonly used with agile software development.</p>
<p>Although Scrum was intended for management of software development projects, it can be used to run software maintenance teams, or as a general project/program management approach.</p>
<p>Scrum is a &#8220;process skeleton,&#8221; which contains sets of practices and predefined roles. The main roles in Scrum are:</p>
<ol>
<li>the &#8220;ScrumMaster&#8221;, who maintains the processes (typically in lieu of a project manager);</li>
<li>the &#8220;Product Owner&#8221;, who represents the stakeholders;</li>
<li>the &#8220;Team&#8221;, a cross-functional group of about 7 people who do the actual analysis, design, implementation, testing, etc.</li>
</ol>
<p>Here is my collection of Scrum resources in the world wide web:</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Scrum_%28development%29">Scrum (development) @Wikipedia</a> &#8211; (that&#8217;s where my Scrum introduction text is basically from <img src='http://www.krahn.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> )</li>
<li><a href="http://borisgloger.com/">Scrum 4 You &#8212; Scrum, Thoughts and more by Boris Gloger</a> &#8211; one of the european Scrum Guru&#8217;s</li>
<li><a href="http://www.scrumalliance.org/">Scrum Alliance</a> &#8211; as official as it can get <img src='http://www.krahn.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ul>
<p>Here are some articles I find very interesting:</p>
<ul>
<li><a href="http://borisgloger.com/2009/09/03/10-things-about-scrummasters/">10 Things about ScrumMasters</a></li>
<li><a href="http://borisgloger.com/2009/09/01/10-things-about-product-owners/">10 Things about Product Owners</a></li>
</ul>
<p>Next week I will attend the Certified ScrumMaster training in Munich, done by Boris Gloger. So more posts about Scrum are about the follow this one.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krahn.org/2009/09/scrum-agile-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Will Google Chrome OS support other browsers than Chrome?</title>
		<link>http://www.krahn.org/2009/07/will-google-chrome-os-support-other-browsers-than-chrome/</link>
		<comments>http://www.krahn.org/2009/07/will-google-chrome-os-support-other-browsers-than-chrome/#comments</comments>
		<pubDate>Sun, 12 Jul 2009 08:51:36 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[Chrome OS]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://www.krahn.org/?p=87</guid>
		<description><![CDATA[It&#8217;s almost a week old news that Google plans to release an own operating system based on the Chrome browser in the next year. After thinking about it for a while I came to the point were I have to ask the following question:
Will Google Chrome OS support other browsers than Chrome?
Basically a lot of [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s almost a week old news that Google <a href="http://googleblog.blogspot.com/2009/07/introducing-google-chrome-os.html" target="_blank">plans to release an own operating system based on the Chrome browser</a> in the next year. After thinking about it for a while I came to the point were I have to ask the following question:</p>
<blockquote><p>Will Google Chrome OS support other browsers than Chrome?</p></blockquote>
<p>Basically a lot of people complained about Microsoft that they are bundling their own browser Internet Explorer with their operating system. But what about an operating system which basically IS a browser? Is it different, or will it be possible e.g. to install a Firefox to Chrome OS?</p>
<p>I dont&#8217;t know the answer yet, but I&#8217;m very curious if Google will become a second Microsoft in terms of OS.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krahn.org/2009/07/will-google-chrome-os-support-other-browsers-than-chrome/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Technorati</title>
		<link>http://www.krahn.org/2009/06/technorati/</link>
		<comments>http://www.krahn.org/2009/06/technorati/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 14:04:52 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[krahn.org]]></category>
		<category><![CDATA[Technorati]]></category>

		<guid isPermaLink="false">http://www.krahn.org/?p=84</guid>
		<description><![CDATA[Claiming my blog at Technorati: Technorati Profile  
]]></description>
			<content:encoded><![CDATA[<p>Claiming my blog at Technorati: <a href="http://technorati.com/claim/ckybjcze9n" rel="me">Technorati Profile</a> <img src='http://www.krahn.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.krahn.org/2009/06/technorati/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bing Censorship In Germany</title>
		<link>http://www.krahn.org/2009/06/bing-censorship-in-germany/</link>
		<comments>http://www.krahn.org/2009/06/bing-censorship-in-germany/#comments</comments>
		<pubDate>Sun, 07 Jun 2009 10:51:07 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[Search]]></category>
		<category><![CDATA[Bing]]></category>
		<category><![CDATA[Censorship]]></category>
		<category><![CDATA[Sascha Kimmel]]></category>

		<guid isPermaLink="false">http://www.krahn.org/?p=81</guid>
		<description><![CDATA[My friend Sascha has written in interesting article about Bing and it&#8217;s censorship on the german bing.de site.
The german translation of it (if you are german or interested in learning it  ) is available at BingRank.
]]></description>
			<content:encoded><![CDATA[<p>My friend <a href="http://twitter.com/tricos_sascha" target="_blank">Sascha</a> has written in interesting <a href="http://www.saschakimmel.com/2009/06/bings-blatant-censorship-in-germany/" target="_blank">article</a> about Bing and it&#8217;s censorship on the german bing.de site.</p>
<p>The german translation of it (if you are german or interested in learning it <img src='http://www.krahn.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) is available at <a href="http://www.bingrank.de/2009/06/bing-zensiert-in-deutschland/" target="_blank">BingRank</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krahn.org/2009/06/bing-censorship-in-germany/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft’s New Search Engine Bing.com</title>
		<link>http://www.krahn.org/2009/06/microsoft%e2%80%99s-new-search-engine-bingcom/</link>
		<comments>http://www.krahn.org/2009/06/microsoft%e2%80%99s-new-search-engine-bingcom/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 10:22:46 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[Search]]></category>
		<category><![CDATA[Bing]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Search Engine]]></category>

		<guid isPermaLink="false">http://www.krahn.org/?p=59</guid>
		<description><![CDATA[Announced a few days ago, now it is available to the public: Microsoft started their new search at Bing.com.
It looks very similar to Google and offers similar functionalities: you can search for Websites, Images, Videos, Shopping, News, Maps, etc.

Mobile
When browsing the site with my Android G1 there was no mobile version of the site available, [...]]]></description>
			<content:encoded><![CDATA[<p>Announced a few days ago, now it is available to the public: Microsoft started their new search at <a rel="nofollow" href="http://www.Bing.com" target="_blank">Bing.com</a>.</p>
<p>It looks very similar to <a rel="nofollow" href="http://www.google.com" target="_blank">Google</a> and offers similar functionalities: you can search for Websites, Images, Videos, Shopping, News, Maps, etc.</p>
<p><object width="450" height="295" data="http://www.youtube.com/v/XqJPsaiCvO8&amp;hl=de&amp;fs=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/XqJPsaiCvO8&amp;hl=de&amp;fs=1" /><param name="allowfullscreen" value="true" /></object></p>
<h3>Mobile</h3>
<p>When browsing the site with my Android G1 there was no mobile version of the site available, so I had to stick with the large site on my small screen.</p>
<h3>Search Results</h3>
<p>I did some initial searches for obvious stuff: I searched for <em><a rel="nofollow" href="http://www.bing.com/search?q=Krahn&amp;form=QBRE&amp;filt=all" target="_blank">Krahn</a></em> or <em><a rel="nofollow" href="http://www.bing.com/search?q=Christian+Krahn&amp;form=QBRE&amp;filt=all" target="_blank">Christian Krahn</a></em> in order to find my blog(s). The german version was no problem but I had difficulties finding krahn.org. One reason is that Bing forces you to use search results connected to your geographic location (which is germany for me) but my english blog is hosted with an .org domain, so Bing might think it&#8217;s not relevant to me. Well, wrong in my case.</p>
<p><img class="alignnone size-full wp-image-67" title="bing_christiankrahn" src="http://www.krahn.org/wp-content/uploads/2009/06/bing_christiankrahn.png" alt="bing_christiankrahn" width="450" height="440" /></p>
<p>Another thing I searched for is &#8220;<em><a rel="nofollow" href="http://www.bing.com/search?q=Branchenbuch&amp;form=QBRE&amp;filt=all" target="_blank">Branchenbuch</a></em>&#8221; (english translation would be &#8220;industry directory&#8221; directory, but more likely &#8220;yellow pages&#8221;). Obviously Bing uses other characteristics to rank pages, as the webpage of my employe klicktel.de is only being found on page 2 on Bling while being on the top results on Google. Guess that means more work for our SEO guys to find out how to improve &#8220;<em>Bing rank</em>&#8220;.</p>
<h3>Maps</h3>
<p>First thing that was strange is Bing Maps is not working in the Chrome browser. Hopefully that will be fixed soon. Other than that the maps implementation is similar to other sites like Google Maps or klicktel.de, map material is a bit out of date as on all the other sites. I like the implementation of the eagle view perspective on their site as the images seems to be a bit more up to date and you can pan to the next area and it automatically updates the image to that area. That&#8217;s something currently not possible in the klickTel version.</p>
<p><img class="alignnone size-full wp-image-64" title="bing_map" src="http://www.krahn.org/wp-content/uploads/2009/06/bing_map.png" alt="bing_map" width="450" height="230" /></p>
<h3>Other stuff</h3>
<p>I will do some more checking on the other features. Currently it seems to me that Microsoft just made a copy of the current Google features (frontend) with their own backend behind it. Another thing that leads to that opinion is that Bing.com has the same spots for ads like Google (with AdWords).</p>
<p><img class="alignnone size-full wp-image-61" title="bing_ads1" src="http://www.krahn.org/wp-content/uploads/2009/06/bing_ads1.png" alt="bing_ads1" width="450" height="253" /></p>
<p>Let&#8217;s see how it developes&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krahn.org/2009/06/microsoft%e2%80%99s-new-search-engine-bingcom/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to install an Ubuntu based Web Server</title>
		<link>http://www.krahn.org/2009/05/how-to-install-an-ubuntu-based-web-server/</link>
		<comments>http://www.krahn.org/2009/05/how-to-install-an-ubuntu-based-web-server/#comments</comments>
		<pubDate>Sun, 24 May 2009 20:17:17 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[awstats]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PEAR]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Server]]></category>

		<guid isPermaLink="false">http://www.krahn.org/?p=51</guid>
		<description><![CDATA[I recently upgraded my old VPS, which was running with Ubuntu 6.06, to a fresh new Hardy Heron version. That gave me the opportunity to make a clean installation and configuration and then transfer my websites to the new server.]]></description>
			<content:encoded><![CDATA[<p>I recently upgraded my old VPS, which was running with <a href="http://www.ubuntu.com/" rel="nofollow" target="_blank">Ubuntu</a> 6.06, to a fresh new Hardy Heron version. That gave me the opportunity to make a clean installation and configuration and then transfer my websites to the new server.</p>
<p>Hint: I did all the install and update stuff as root user. If you have another user with sudo rights, then apply a <i>sudo</i> before most of the commands here.</p>
<h3>Updating the Apt</h3>
<p>First step I did was updating the packages.</p>
<pre code="bash">
apt-get update
apt-get upgrade
</pre>
<h3>LAMP</h3>
<p>After that i installed the primary components, like <a href="http://httpd.apache.org/" rel="nofollow" target="_blank">Apache</a>, <a href="http://php.net" rel="nofollow" target="_blank">PHP5</a> and <a href="http://www.mysql.com" rel="nofollow" target="_blank">MySQL</a>:</p>
<p>First the webserver itself:</p>
<pre code="bash">
apt-get install apache2
</pre>
<p>I installed additional Apache modules. An easy way to do that is to use a3enmod:</p>
<pre code="bash">
a2enmod ssl
a2enmod rewrite
a2enmod suexec
a2enmod include
</pre>
<p>Just don&#8217;t forget to reload your apache afterwards: </p>
<pre code="bash">
/etc/init.d/apache2 force-reload
</pre>
<p>Afterwards install PHP5:</p>
<pre code="bash">
apt-get install php5
apt-get install php5-cli
apt-get install php5-dev
apt-get install php-pear
</pre>
<p>Some more PHP5 modules are following later.</p>
<p><a href="http://pear.php.net" rel="nofollow" target="_blank">PEAR</a> is a package repository which enables you to install additional PHP package libraries.</p>
<p>To make sure that my link to PEAR is up to date, I use the following command:</p>
<pre code="bash">
pear channel-update pear.php.net
</pre>
<p>Installing MySQL is rather simple:</p>
<pre code="bash">
apt-get install mysql-client mysql-server libmysqlclient15-dev
</pre>
<p>Afterwards you get asked to enter a MySQL root password. <strong>Make sure to keep that one safe!</strong></p>
<p>I say I need some more PHP5 modules, so here they come:</p>
<pre code="bash">
apt-get install php5-gd
apt-get install php5-mcrypt
apt-get install php5-imagick
apt-get install php5-curl
apt-get install php5-xmlrpc php5-xsl
apt-get install php5-mhash
</pre>
<h3>Additional tools</h3>
<p>To create statistics based on my webserver&#8217;s log files, I use <a href="http://awstats.sourceforge.net/" rel="nofollow" target="_blank">awstats</a>:</p>
<pre code="bash">
apt-get install awstats
</pre>
<p>Just make sure that the folder <i>/usr/lib/cgi-bin</i> is password protected (or move the file awstats.pl to a more secure location.</p>
<p>Configuration of awstats is another topic, I don&#8217;t want to talk too much about right now. There is an example file in the folder <i>/etc/awstats</i> just digg through it <img src='http://www.krahn.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>To keep the server time up to date you can install ntp:</p>
<pre code="bash">
apt-get install ntp ntpdate
</pre>
<p>Now there is always the correct time on your server.</p>
<h3>Finally</h3>
<p>I did some more stuff but those are the basics to install on a fresh web server. Another hint: make sure your server is able to send mails to the outside world (maybe install another MTA, but make sure only the server itself can relay mails, unless you want to use the server as SMTP server as well).</p>
<p>If you have anything to add to this howto, I am happy for every comment on it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krahn.org/2009/05/how-to-install-an-ubuntu-based-web-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google AdWords API 2009 &#8211; Overview and First Thoughts</title>
		<link>http://www.krahn.org/2009/05/google-adwords-api-2009-overview-and-first-thoughts/</link>
		<comments>http://www.krahn.org/2009/05/google-adwords-api-2009-overview-and-first-thoughts/#comments</comments>
		<pubDate>Tue, 19 May 2009 09:52:26 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[AdWords]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[APIlity]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[v2009]]></category>

		<guid isPermaLink="false">http://www.krahn.org/?p=38</guid>
		<description><![CDATA[Just recently Google made the new AdWords API 2009 sandbox and documentation available to the public. Some information about it is also in the AdWords API Blog.
I have started to toy around with it. I have written a mayor part of the current AdWords API integration for the company I work for, so it&#8217;s best [...]]]></description>
			<content:encoded><![CDATA[<p>Just recently Google made the new <a href="http://code.google.com/apis/adwords/v2009/docs/">AdWords API 2009 sandbox</a> and documentation available to the public. Some information about it is also in the <a href="http://adwordsapi.blogspot.com/2009/05/client-library-updates-part-1.html">AdWords API Blog</a>.</p>
<p>I have started to toy around with it. I have written a mayor part of the current AdWords API integration for the company I work for, so it&#8217;s best to be prepared for the mayor overhaul Google has done with this new API implementation. Here is a quick overview and some thoughts I have about it.</p>
<h3>Authentication</h3>
<p>Google seems to unify the use of their APIs with a common login interface: the <a href="http://code.google.com/intl/de/apis/accounts/docs/AuthForInstalledApps.html">Account Authentication API</a>. You can make a <a href="http://code.google.com/intl/de/apis/accounts/docs/AuthForInstalledApps.html#Request">HTTPS Post Request to the API</a> and use your Google credentials to get an Auth token. This token then will be used to access the functionalities of the API.</p>
<p>I think it is good to unify different kinds of API authentication into a single login service. I just hope that it is stable enough to endure all the load from not just one kind of service but every piece of Google API which will make use of it.</p>
<h3>Accessing the Sandbox</h3>
<p>I created some example codes (will publish some code in another article soon) to access the Google AdWords Sandbox. At first I had some difficulties because I don&#8217;t just use the examples from Google, I created my own kind of library to access the API. That lead to the assumption that I can always use the SOAP end url as namespace &#8211; which was wrong because the namespace for the request XML has to be</p>
<p><code>https://adwords.google.com/api/adwords/cm/v200902</code></p>
<p>while the actual xml request is being sent to</p>
<p><code>https://adwords-sandbox.google.com/api/adwords/cm/v200902/....</code></p>
<p>When sending the wrong namespace the API returns a server error, but no detailed error code about what kind of error occured. I hope Google will improve their error reporting there.</p>
<h3>Get &amp; Mutate &#8211; the new methods of getting data and manipulating data</h3>
<p>Past versions of the AdWords API left the impression of a patchwork API. This time you basically have two functions:</p>
<h4>get</h4>
<p>Getting data is simple: just build an xml which contains all the parameters you need and send it to the API.</p>
<p><em>Example</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;get</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">&quot;https://adwords.google.com/api/adwords/cm/v200902&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;selector<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;StatsSelector<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;campaignIds<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/campaignIds<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/StatsSelector<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/selector<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/get<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>This piece of xml tells the API (assuming the header information with the AuthToken, sorry not posting that one here <img src='http://www.krahn.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) to retrieve all the campaigns in the account. You can limit the campaigns by telling it to only include certain campaign IDs (filling the StatsSelecter/campaignIds node with subnodes containing the actual IDs).</p>
<h4>mutate</h4>
<p>Mutate is the method to create and manipulate data structures in the API.</p>
<p><em>Example</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mutate</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">&quot;https://adwords.google.com/api/adwords/cm/v200902&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;operations<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;operator<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>ADD<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/operator<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;operand<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Test Campaign - 1242726211<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;status<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>PAUSED<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/status<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;budget<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;period<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>DAILY<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/period<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;amount<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;currencyCode<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>EUR<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/currencyCode<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;microAmount<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1000000<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/microAmount<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/amount<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;deliveryMethod<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>STANDARD<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/deliveryMethod<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/budget<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/operand<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/operations<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/mutate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>It tells the API to create a new campaign in the account defined by the client email in the header (again not posted here). The additional OPERATOR tells what kind of operation (ADD, REMOVE, SET). After that all the necessary data for the operation are being added.</p>
<h3>Final words (for now)</h3>
<p>I think the new API is very clean and straight forward, with a new authentication method. The problems I currently see is the amount of work necessary to migrate applications based on the existing API v13 to the new v2009, but if people are using frameworks like <a href="http://google-apility.sourceforge.net/">APIlity</a> or one of the <a href="http://code.google.com/intl/de/apis/adwords/docs/clients.html">other provided libraries</a>, it is safe to assume that new versions will be available soon after the release to make a smooth upgrade.</p>
<p>I am looking forward to work closely with the new API.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krahn.org/2009/05/google-adwords-api-2009-overview-and-first-thoughts/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>8 Good PHP Tools and Libraries to Create and Test Web Applications</title>
		<link>http://www.krahn.org/2009/05/8-good-php-tools-to-create-and-test-web-applications/</link>
		<comments>http://www.krahn.org/2009/05/8-good-php-tools-to-create-and-test-web-applications/#comments</comments>
		<pubDate>Thu, 14 May 2009 15:30:03 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Libraries]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.krahn.org/?p=24</guid>
		<description><![CDATA[Here is a collection of good PHP code libraries I somewhat use to create web based applications. This collection is about PHP only, in another article I will shortly tell you some good Python and Javascript/AJAX libraries.
Zend Framework
The Zend Framework is an object-oriented framework which is focusing on web 2.0 applications. It contains a lot [...]]]></description>
			<content:encoded><![CDATA[<p>Here is a collection of good <a href="http://php.net">PHP</a> code libraries I somewhat use to create web based applications. This collection is about PHP only, in another article I will shortly tell you some good Python and Javascript/AJAX libraries.</p>
<h3><a href="http://framework.zend.com/">Zend Framework</a></h3>
<p>The Zend Framework is an object-oriented framework which is focusing on web 2.0 applications. It contains a lot of APIs to webservices like Google, Amazon, Yahoo!, Flickr. </p>
<h3><a href="http://code.google.com/p/php-csv-utils/">CSV Utilities</a></h3>
<p>PHP CSV Utilities or PCU, is a small, open source PHP library to simplify working with CSV files.</p>
<h3><a href="http://phpexcel.codeplex.com/">phpExcel</a></h3>
<p>This project provides a set of classes, which allow you to write to and read from different file formats, like Excel 2007, PDF, HTML, &#8230; This project is built around Microsoft&#8217;s OpenXML standard and PHP.</p>
<h3><a href="http://code.google.com/p/phpquery/">phpQuery</a></h3>
<p>phpQuery is a server-side, chainable, CSS3 selector driven Document Object Model (DOM) API based on jQuery JavaScript Library. </p>
<h3><a href="http://code.google.com/p/mc-goog-visualization/">MC_Google_Visualization</a></h3>
<p>MC_Google_Visualization provides simple support for integrating Google Visualization charts and graphs with your own internal database. It includes a complete parser for the Google Visualization Query Language, giving you the same ease of pivoting and formatting data from your database as is currently possible with Google Spreadsheets.</p>
<h3><a href="http://pchart.sourceforge.net/">pChart</a></h3>
<p>pChart is a PHP class oriented framework designed to create aliased charts.</p>
<h3><a href="http://www.firephp.org/">FirePHP</a></h3>
<p>FirePHP enables you to log to your Firebug Console using a simple PHP method call. </p>
<h3><a href="http://www.simpletest.org">SimpleTest</a></h3>
<p>The SimpleTest PHP unit tester is a PHP unit test and web test framework. It has support for SSL, forms, frames, proxies and basic authentication.</p>
<p>If you know any more good PHP libraries and tools, just leave a comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krahn.org/2009/05/8-good-php-tools-to-create-and-test-web-applications/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>My 10 favorite Android Apps</title>
		<link>http://www.krahn.org/2009/05/my-10-favorite-android-apps/</link>
		<comments>http://www.krahn.org/2009/05/my-10-favorite-android-apps/#comments</comments>
		<pubDate>Tue, 12 May 2009 19:03:02 +0000</pubDate>
		<dc:creator>Christian</dc:creator>
				<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Applications]]></category>
		<category><![CDATA[Apps]]></category>
		<category><![CDATA[Favorites]]></category>
		<category><![CDATA[G1]]></category>

		<guid isPermaLink="false">http://www.krahn.org/?p=11</guid>
		<description><![CDATA[Today I want to tell you my 10 favorite Android applications. As you might have guessed already, I have one of those T-Mobile G1 and I love every bit of it!
twidroid
This applications is my trip to twitterland, every while and then, when I am not at my desktop, I look up my latest tweets or [...]]]></description>
			<content:encoded><![CDATA[<p>Today I want to tell you my 10 favorite Android applications. As you might have guessed already, I have one of those T-Mobile G1 and I love every bit of it!</p>
<h3>twidroid</h3>
<p>This applications is my trip to twitterland, every while and then, when I am not at my desktop, I look up my latest tweets or post a &#8220;Hello&#8221; here and there.</p>
<h3>Timeriffic</h3>
<p>Since my G1 is giving a &#8220;beep&#8221; everytime I get an E-Mail I use this application to set specific time frames when the device shall be muted or reactived. I don&#8217;t mind the beep, but my girl friend was driving me nuts everytime she woke up because of it. <img src='http://www.krahn.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h3>Battery Status</h3>
<p>No need to explain this one, don&#8217;t you think? <img src='http://www.krahn.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h3>Delicious Bookmarks</h3>
<p>Bookmarks, like in the sidebar to the right side, can be stored on this <a href="http://www.delicious.com" target="_blank>web platform</a>. Sharing them can help others (and yourself) find useful information (if you don&#8217;t want to rely entirely on search engines like <a href="http://www.google.com" target="_blank" rel="nofollow">Google</a>).</p>
<h3>RTM Tasks</h3>
<p>Helps me keeping track of my ToDo lists.</p>
<h3>Toogle WiFi</h3>
<p>One-click solution to activate the wifi controller. When I am home, I don&#8217;t want to miss my DSL broadband connection.</p>
<h3>KeePassDroid</h3>
<p>Keeping track of all the password you collect in the wilderness of the internet keeps your brain very busy. Fortunately there are tools like this which help you save your precious keywords in an encrypted database. Don&#8217;t forget the master keyword!</p>
<h3>ConnectBot</h3>
<p>Mobile SSH client with key authentification. When this server goes wild, I have used it the wrong way <img src='http://www.krahn.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h3>klickTel</h3>
<p>This application is a mobile client for the an online directory for phone numbers and industries. You can get current traffic informations based on your location and it helps you find the nearest coffee house or cashpoint. It&#8217;s for Germany only.</p>
<h3>The Schwartz Unsheathed</h3>
<p>Who doesn&#8217;t want to have their own personal light sabre?! <img src='http://www.krahn.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.krahn.org/2009/05/my-10-favorite-android-apps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
