<?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>ICANS Developer Blog</title>
	<atom:link href="http://devblog.icans-gmbh.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://devblog.icans-gmbh.com</link>
	<description></description>
	<lastBuildDate>Fri, 19 Apr 2013 14:42:53 +0000</lastBuildDate>
	<language>de-DE</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
	<div id='fb-root'></div>
					<script type='text/javascript'>
						window.fbAsyncInit = function()
						{
							FB.init({appId: null, status: true, cookie: true, xfbml: true});
						};
						(function()
						{
							var e = document.createElement('script'); e.async = true;
							e.src = document.location.protocol + '//connect.facebook.net/de_DE/all.js';
							document.getElementById('fb-root').appendChild(e);
						}());
					</script>	
						<item>
		<title>droidcon 2013 &#8211; Noch nicht mal angefangen und schon dabei&#8230;</title>
		<link>http://devblog.icans-gmbh.com/droidcon-2013-noch-nicht-mal-angefangen-und-schon-dabei/</link>
		<comments>http://devblog.icans-gmbh.com/droidcon-2013-noch-nicht-mal-angefangen-und-schon-dabei/#comments</comments>
		<pubDate>Fri, 19 Apr 2013 13:49:54 +0000</pubDate>
		<dc:creator>Ansgar Mertens</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Insights]]></category>

		<guid isPermaLink="false">http://devblog.icans-gmbh.com/?p=2603</guid>
		<description><![CDATA[&#8230;so lässt sich am besten meine bisherige Erfahrung mit der ICANS beschreiben. Um mich kurz vorzustellen: Ich heiße Ansgar Mertens und fange erst im September als Dualer Student bei der ICANS an. Kaum hatte ich im Dezember den Vertrag unterzeichnet, &#8230; <a href="http://devblog.icans-gmbh.com/droidcon-2013-noch-nicht-mal-angefangen-und-schon-dabei/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><!--[if gte mso 9]><xml><br />
<w:WordDocument><br />
<w:View>Normal</w:View><br />
<w:Zoom>0</w:Zoom><br />
<w:TrackMoves/><br />
<w:TrackFormatting/><br />
<w:HyphenationZone>21</w:HyphenationZone><br />
<w:PunctuationKerning/><br />
<w:ValidateAgainstSchemas/><br />
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid><br />
<w:IgnoreMixedContent>false</w:IgnoreMixedContent><br />
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText><br />
<w:DoNotPromoteQF/><br />
<w:LidThemeOther>DE</w:LidThemeOther><br />
<w:LidThemeAsian>X-NONE</w:LidThemeAsian><br />
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript><br />
<w:Compatibility><br />
<w:BreakWrappedTables/><br />
<w:SnapToGridInCell/><br />
<w:WrapTextWithPunct/><br />
<w:UseAsianBreakRules/><br />
<w:DontGrowAutofit/><br />
<w:SplitPgBreakAndParaMark/><br />
<w:DontVertAlignCellWithSp/><br />
<w:DontBreakConstrainedForcedTables/><br />
<w:DontVertAlignInTxbx/><br />
<w:Word11KerningPairs/><br />
<w:CachedColBalance/><br />
</w:Compatibility><br />
<m:mathPr><br />
<m:mathFont m:val="Cambria Math"/><br />
<m:brkBin m:val="before"/><br />
<m:brkBinSub m:val="&#45;-"/><br />
<m:smallFrac m:val="off"/><br />
<m:dispDef/><br />
<m:lMargin m:val="0"/><br />
<m:rMargin m:val="0"/><br />
<m:defJc m:val="centerGroup"/><br />
<m:wrapIndent m:val="1440"/><br />
<m:intLim m:val="subSup"/><br />
<m:naryLim m:val="undOvr"/><br />
</m:mathPr></w:WordDocument><br />
</xml><![endif]--></p>
<p><!--[if gte mso 9]><xml><br />
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"<br />
DefSemiHidden="true" DefQFormat="false" DefPriority="99"<br />
LatentStyleCount="267"><br />
<w:LsdException Locked="false" Priority="0" SemiHidden="false"<br />
UnhideWhenUsed="false" QFormat="true" Name="Normal"/><br />
<w:LsdException Locked="false" Priority="9" SemiHidden="false"<br />
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/><br />
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/><br />
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/><br />
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/><br />
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/><br />
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/><br />
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/><br />
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/><br />
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/><br />
<w:LsdException Locked="false" Priority="39" Name="toc 1"/><br />
<w:LsdException Locked="false" Priority="39" Name="toc 2"/><br />
<w:LsdException Locked="false" Priority="39" Name="toc 3"/><br />
<w:LsdException Locked="false" Priority="39" Name="toc 4"/><br />
<w:LsdException Locked="false" Priority="39" Name="toc 5"/><br />
<w:LsdException Locked="false" Priority="39" Name="toc 6"/><br />
<w:LsdException Locked="false" Priority="39" Name="toc 7"/><br />
<w:LsdException Locked="false" Priority="39" Name="toc 8"/><br />
<w:LsdException Locked="false" Priority="39" Name="toc 9"/><br />
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/><br />
<w:LsdException Locked="false" Priority="10" SemiHidden="false"<br />
UnhideWhenUsed="false" QFormat="true" Name="Title"/><br />
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/><br />
<w:LsdException Locked="false" Priority="11" SemiHidden="false"<br />
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/><br />
<w:LsdException Locked="false" Priority="22" SemiHidden="false"<br />
UnhideWhenUsed="false" QFormat="true" Name="Strong"/><br />
<w:LsdException Locked="false" Priority="20" SemiHidden="false"<br />
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/><br />
<w:LsdException Locked="false" Priority="59" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Table Grid"/><br />
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/><br />
<w:LsdException Locked="false" Priority="1" SemiHidden="false"<br />
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/><br />
<w:LsdException Locked="false" Priority="60" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Light Shading"/><br />
<w:LsdException Locked="false" Priority="61" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Light List"/><br />
<w:LsdException Locked="false" Priority="62" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Light Grid"/><br />
<w:LsdException Locked="false" Priority="63" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Shading 1"/><br />
<w:LsdException Locked="false" Priority="64" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Shading 2"/><br />
<w:LsdException Locked="false" Priority="65" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium List 1"/><br />
<w:LsdException Locked="false" Priority="66" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium List 2"/><br />
<w:LsdException Locked="false" Priority="67" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Grid 1"/><br />
<w:LsdException Locked="false" Priority="68" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Grid 2"/><br />
<w:LsdException Locked="false" Priority="69" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Grid 3"/><br />
<w:LsdException Locked="false" Priority="70" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Dark List"/><br />
<w:LsdException Locked="false" Priority="71" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Colorful Shading"/><br />
<w:LsdException Locked="false" Priority="72" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Colorful List"/><br />
<w:LsdException Locked="false" Priority="73" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Colorful Grid"/><br />
<w:LsdException Locked="false" Priority="60" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Light Shading Accent 1"/><br />
<w:LsdException Locked="false" Priority="61" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Light List Accent 1"/><br />
<w:LsdException Locked="false" Priority="62" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Light Grid Accent 1"/><br />
<w:LsdException Locked="false" Priority="63" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/><br />
<w:LsdException Locked="false" Priority="64" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/><br />
<w:LsdException Locked="false" Priority="65" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/><br />
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/><br />
<w:LsdException Locked="false" Priority="34" SemiHidden="false"<br />
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/><br />
<w:LsdException Locked="false" Priority="29" SemiHidden="false"<br />
UnhideWhenUsed="false" QFormat="true" Name="Quote"/><br />
<w:LsdException Locked="false" Priority="30" SemiHidden="false"<br />
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/><br />
<w:LsdException Locked="false" Priority="66" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/><br />
<w:LsdException Locked="false" Priority="67" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/><br />
<w:LsdException Locked="false" Priority="68" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/><br />
<w:LsdException Locked="false" Priority="69" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/><br />
<w:LsdException Locked="false" Priority="70" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Dark List Accent 1"/><br />
<w:LsdException Locked="false" Priority="71" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/><br />
<w:LsdException Locked="false" Priority="72" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Colorful List Accent 1"/><br />
<w:LsdException Locked="false" Priority="73" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/><br />
<w:LsdException Locked="false" Priority="60" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Light Shading Accent 2"/><br />
<w:LsdException Locked="false" Priority="61" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Light List Accent 2"/><br />
<w:LsdException Locked="false" Priority="62" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Light Grid Accent 2"/><br />
<w:LsdException Locked="false" Priority="63" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/><br />
<w:LsdException Locked="false" Priority="64" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/><br />
<w:LsdException Locked="false" Priority="65" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/><br />
<w:LsdException Locked="false" Priority="66" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/><br />
<w:LsdException Locked="false" Priority="67" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/><br />
<w:LsdException Locked="false" Priority="68" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/><br />
<w:LsdException Locked="false" Priority="69" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/><br />
<w:LsdException Locked="false" Priority="70" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Dark List Accent 2"/><br />
<w:LsdException Locked="false" Priority="71" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/><br />
<w:LsdException Locked="false" Priority="72" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Colorful List Accent 2"/><br />
<w:LsdException Locked="false" Priority="73" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/><br />
<w:LsdException Locked="false" Priority="60" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Light Shading Accent 3"/><br />
<w:LsdException Locked="false" Priority="61" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Light List Accent 3"/><br />
<w:LsdException Locked="false" Priority="62" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Light Grid Accent 3"/><br />
<w:LsdException Locked="false" Priority="63" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/><br />
<w:LsdException Locked="false" Priority="64" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/><br />
<w:LsdException Locked="false" Priority="65" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/><br />
<w:LsdException Locked="false" Priority="66" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/><br />
<w:LsdException Locked="false" Priority="67" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/><br />
<w:LsdException Locked="false" Priority="68" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/><br />
<w:LsdException Locked="false" Priority="69" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/><br />
<w:LsdException Locked="false" Priority="70" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Dark List Accent 3"/><br />
<w:LsdException Locked="false" Priority="71" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/><br />
<w:LsdException Locked="false" Priority="72" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Colorful List Accent 3"/><br />
<w:LsdException Locked="false" Priority="73" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/><br />
<w:LsdException Locked="false" Priority="60" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Light Shading Accent 4"/><br />
<w:LsdException Locked="false" Priority="61" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Light List Accent 4"/><br />
<w:LsdException Locked="false" Priority="62" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Light Grid Accent 4"/><br />
<w:LsdException Locked="false" Priority="63" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/><br />
<w:LsdException Locked="false" Priority="64" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/><br />
<w:LsdException Locked="false" Priority="65" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/><br />
<w:LsdException Locked="false" Priority="66" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/><br />
<w:LsdException Locked="false" Priority="67" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/><br />
<w:LsdException Locked="false" Priority="68" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/><br />
<w:LsdException Locked="false" Priority="69" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/><br />
<w:LsdException Locked="false" Priority="70" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Dark List Accent 4"/><br />
<w:LsdException Locked="false" Priority="71" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/><br />
<w:LsdException Locked="false" Priority="72" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Colorful List Accent 4"/><br />
<w:LsdException Locked="false" Priority="73" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/><br />
<w:LsdException Locked="false" Priority="60" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Light Shading Accent 5"/><br />
<w:LsdException Locked="false" Priority="61" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Light List Accent 5"/><br />
<w:LsdException Locked="false" Priority="62" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Light Grid Accent 5"/><br />
<w:LsdException Locked="false" Priority="63" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/><br />
<w:LsdException Locked="false" Priority="64" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/><br />
<w:LsdException Locked="false" Priority="65" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/><br />
<w:LsdException Locked="false" Priority="66" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/><br />
<w:LsdException Locked="false" Priority="67" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/><br />
<w:LsdException Locked="false" Priority="68" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/><br />
<w:LsdException Locked="false" Priority="69" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/><br />
<w:LsdException Locked="false" Priority="70" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Dark List Accent 5"/><br />
<w:LsdException Locked="false" Priority="71" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/><br />
<w:LsdException Locked="false" Priority="72" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Colorful List Accent 5"/><br />
<w:LsdException Locked="false" Priority="73" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/><br />
<w:LsdException Locked="false" Priority="60" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Light Shading Accent 6"/><br />
<w:LsdException Locked="false" Priority="61" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Light List Accent 6"/><br />
<w:LsdException Locked="false" Priority="62" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Light Grid Accent 6"/><br />
<w:LsdException Locked="false" Priority="63" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/><br />
<w:LsdException Locked="false" Priority="64" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/><br />
<w:LsdException Locked="false" Priority="65" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/><br />
<w:LsdException Locked="false" Priority="66" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/><br />
<w:LsdException Locked="false" Priority="67" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/><br />
<w:LsdException Locked="false" Priority="68" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/><br />
<w:LsdException Locked="false" Priority="69" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/><br />
<w:LsdException Locked="false" Priority="70" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Dark List Accent 6"/><br />
<w:LsdException Locked="false" Priority="71" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/><br />
<w:LsdException Locked="false" Priority="72" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Colorful List Accent 6"/><br />
<w:LsdException Locked="false" Priority="73" SemiHidden="false"<br />
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/><br />
<w:LsdException Locked="false" Priority="19" SemiHidden="false"<br />
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/><br />
<w:LsdException Locked="false" Priority="21" SemiHidden="false"<br />
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/><br />
<w:LsdException Locked="false" Priority="31" SemiHidden="false"<br />
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/><br />
<w:LsdException Locked="false" Priority="32" SemiHidden="false"<br />
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/><br />
<w:LsdException Locked="false" Priority="33" SemiHidden="false"<br />
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/><br />
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/><br />
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/><br />
</w:LatentStyles><br />
</xml><![endif]--><!--[if gte mso 10]></p>
<style>
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Normale Tabelle";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-qformat:yes;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:minor-fareast;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;}
</style>
<p><![endif]--></p>
<p class="MsoNormal">&#8230;so lässt sich am besten meine bisherige Erfahrung mit der ICANS beschreiben. Um mich kurz vorzustellen: Ich heiße Ansgar Mertens und fange erst im September als Dualer Student bei der ICANS an. Kaum hatte ich im Dezember den Vertrag unterzeichnet, wurde ich auch schon zu Firmenevents wie der Weihnachtsfeier oder dem Kneipenabend eingeladen. Doch wirklich überrascht war ich, als in den Osterferien das Telefon klingelte und ich gefragt wurde, ob ich denn nicht zur <a title="Droidcon 2013" href="http://de.droidcon.com/2013/" target="_blank">droidcon</a> nach Berlin fahren möchte. Und ob ich da Lust zu hatte! Android hat mich schließlich zum Programmieren gebracht. Also fuhr ich gemeinsam mit Sven, der bei der ICANS für iOS verantwortlich ist, am Dienstag mit der Bahn nach Berlin.</p>
<p class="MsoNormal">Der erste Vortrag, den wir uns anhörten, war von <a href="http://de.droidcon.com/2013/sessnio/how-facebook-builds-facebook-android" target="_blank">Simon Stewart</a>, der in London für Facebook arbeitet. Er erörterte wie Facebook seine Androidapps, welche auf Unmengen von Geräten installiert sind, entwickelt. Zur Verwaltung des Quellcodes wird hier git mit nur einem tree für alle Apps (Facebook, Instagram, etc.) zusammen verwendet und mit einem eigens entwickelten Buildsystem kompiliert. Um sauberen Code und einen 4 Wochen-Update-Zyklus einhalten zu können, wird bei Facebook lieber mal auf neue Features verzichtet.</p>
<p class="MsoNormal">Der darauf folgende Vortrag von <a href="http://de.droidcon.com/2013/sessnio/lessons-learnt-prime-guidehttp://" target="_blank">Markus Junginger</a> zeigte gelernte Lektionen bei der Entwicklung und Veröffentlichung der TV-Programm-App „Prime Guide“. So empfiehlt Junginger beispielsweise eine Beta-Version zu Veröffentlichen, da Nutzer aufgrund des Beta-Status toleranter seien und man so konstruktiveres Feedback bekäme. Bei Prime Guide findet aufgrund einfacherer Skalierbarkeit die Google App Engine als Backend Anwendung.</p>
<p class="MsoNormal">Für die Mittagspause hat sich der Veranstalter echt ins Zeug gelegt. Es gab unter anderem Zitronenhühnchen in Weißweinsud und Spinat-Ricotta-Lasagne. Lecker!</p>
<p class="MsoNormal">Und weiter geht’s mit den Vorträgen: „Improving Android Experience For Both Users And Developers“ von <a href="http://de.droidcon.com/2013/sessnio/improving-android-experience-both-users-and-developers" target="_blank">Pavel Lahoda</a>. Das klingt doch interessant. Und mal wieder richtiges Englisch. Lahoda stellt fest was allen Android-Developern bereits klar war: Die XML-Layouts sind nicht flexibel genug. So gibt es keine zufriedenstellende Möglichkeit mit Prozentwerten zu arbeiten. Dafür liefert er aber auch gleich einen Lösungsansatz, der in der Praxis bei der App „BBC NEWS“ angewendet wurde. Man verwendet eine sogenannte Custom View, die per Java definiert wird, und deren Größe in onMeasure() berechnet und festgelegt werden kann. Im weiteren Verlauf seines Vortrages schlägt er einen neuen TimePicker-Dialog mit dem Aussehen einer Analoguhr vor und stößt am Ende seines Vortrages an, sich doch mal mit Bewegungsgesten des Gerätes in der Hand auseinanderzusetzen und zu prüfen, ob es dort nicht weitere Interaktionsmöglichkeiten gibt, die praktikabel sein könnten.</p>
<p class="MsoNormal">An diesem Tag hörten wir uns noch zwei weitere Vorträge an. Der eine von <a href="http://de.droidcon.com/2013/sessnio/building-high-quality-android-apps-jenkins-and-automated-device-tests" target="_blank">Leif Janzig</a> über das Bauen von Android-Apps mit Jenkins und automatisierten Device-Tests und im anderen schlug <a href="http://de.droidcon.com/2013/sessnio/unifying-callbacks-android-new-event-consumer-design-pattern" target="_blank">Matt Brenner</a> ein „EventConsumer“ Design Pattern vor.</p>
<p class="MsoNormal">Neben den Vorträgen gab es viele Stände von Unternehmen der Branche, welche am laufenden Meter versuchten entweder Entwickler für ihr Produkt oder als neue Mitarbeiter zu begeistern.</p>
<p class="MsoNormal">Insgesamt hat mir der Besuch auf der droidcon sehr viel Spaß gemacht und ich durfte einiges dazu lernen. Vielen Dank an die ICANS!</p>
<p class="MsoNormal"><div id="portfolio-slideshow0" class="portfolio-slideshow">
	<div class="slideshow-next slideshow-content">
			<a href="javascript: void(0);" class="slideshow-next"><img class="psp-active" data-img="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/P1040686.jpg" src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/P1040686.jpg" height="375" width="500" alt="P1040686" /><noscript><img src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/P1040686.jpg" height="375" width="500" alt="P1040686" /></noscript></a><div class="slideshow-meta"></div></div>
			<div class="not-first slideshow-next slideshow-content">
			<a href="javascript: void(0);" class="slideshow-next"><img class="psp-active" data-img="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/P1040665.jpg" src="http://devblog.icans-gmbh.com/wp-content/plugins/portfolio-slideshow/img/tiny.png" height="375" width="500" alt="P1040665" /><noscript><img src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/P1040665.jpg" height="375" width="500" alt="P1040665" /></noscript></a><div class="slideshow-meta"></div></div>
			<div class="not-first slideshow-next slideshow-content">
			<a href="javascript: void(0);" class="slideshow-next"><img class="psp-active" data-img="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/P1040631.jpg" src="http://devblog.icans-gmbh.com/wp-content/plugins/portfolio-slideshow/img/tiny.png" height="375" width="500" alt="P1040631" /><noscript><img src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/P1040631.jpg" height="375" width="500" alt="P1040631" /></noscript></a><div class="slideshow-meta"></div></div>
			<div class="not-first slideshow-next slideshow-content">
			<a href="javascript: void(0);" class="slideshow-next"><img class="psp-active" data-img="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/P1040627.jpg" src="http://devblog.icans-gmbh.com/wp-content/plugins/portfolio-slideshow/img/tiny.png" height="375" width="500" alt="P1040627" /><noscript><img src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/P1040627.jpg" height="375" width="500" alt="P1040627" /></noscript></a><div class="slideshow-meta"></div></div>
			<div class="not-first slideshow-next slideshow-content">
			<a href="javascript: void(0);" class="slideshow-next"><img class="psp-active" data-img="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/P1040617.jpg" src="http://devblog.icans-gmbh.com/wp-content/plugins/portfolio-slideshow/img/tiny.png" height="375" width="500" alt="P1040617" /><noscript><img src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/P1040617.jpg" height="375" width="500" alt="P1040617" /></noscript></a><div class="slideshow-meta"></div></div>
			<div class="not-first slideshow-next slideshow-content">
			<a href="javascript: void(0);" class="slideshow-next"><img class="psp-active" data-img="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/P1040619.jpg" src="http://devblog.icans-gmbh.com/wp-content/plugins/portfolio-slideshow/img/tiny.png" height="666" width="500" alt="P1040619" /><noscript><img src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/P1040619.jpg" height="666" width="500" alt="P1040619" /></noscript></a><div class="slideshow-meta"></div></div>
			<div class="not-first slideshow-next slideshow-content">
			<a href="javascript: void(0);" class="slideshow-next"><img class="psp-active" data-img="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/P1040741.jpg" src="http://devblog.icans-gmbh.com/wp-content/plugins/portfolio-slideshow/img/tiny.png" height="375" width="500" alt="P1040741" /><noscript><img src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/P1040741.jpg" height="375" width="500" alt="P1040741" /></noscript></a><div class="slideshow-meta"></div></div>
			</div><!--#portfolio-slideshow--></div><!--#slideshow-wrapper--></p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.icans-gmbh.com/droidcon-2013-noch-nicht-mal-angefangen-und-schon-dabei/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HH.js Meetup @ ICANS</title>
		<link>http://devblog.icans-gmbh.com/hh-js-meetup-icans/</link>
		<comments>http://devblog.icans-gmbh.com/hh-js-meetup-icans/#comments</comments>
		<pubDate>Tue, 16 Apr 2013 14:18:42 +0000</pubDate>
		<dc:creator>Sebastian Germesin</dc:creator>
				<category><![CDATA[Guests]]></category>
		<category><![CDATA[Workshops]]></category>
		<category><![CDATA[Fortbildung]]></category>
		<category><![CDATA[frontend]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[guests]]></category>
		<category><![CDATA[hh.js]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://devblog.icans-gmbh.com/?p=2566</guid>
		<description><![CDATA[Manchmal lohnt es sich doch länger auf der Arbeit zu bleiben. So wie gestern Abend zum Beispiel &#8211; die HH.js Meetup Gruppe traf sich in unserer Cafeteria zu Snacks und Bier mit zwei Vorträgen im Bereich Node.js und ECMAScript. Thomas Steiner hielt &#8230; <a href="http://devblog.icans-gmbh.com/hh-js-meetup-icans/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-2596" alt="HH.js Meetup Group Logo" src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/hhjs-logo.png" width="180" height="180" />Manchmal lohnt es sich doch länger auf der Arbeit zu bleiben. So wie gestern Abend zum Beispiel &#8211; die <a title="HH.js Meetup Gruppe @ ICANS" href="http://www.meetup.com/hamburg-js/events/72892462/" target="_blank">HH.js Meetup Gruppe</a> traf sich in unserer Cafeteria zu Snacks und Bier mit zwei Vorträgen im Bereich Node.js und ECMAScript.<span id="more-2566"></span></p>
<p><a title="Thomas Steiner @ Twitter" href="https://twitter.com/tomayac" target="_blank">Thomas Steiner</a> hielt einen Vortrag über seine aktuelle Arbeit, in der er Echtzeit-Änderungen von Wikipedia-Artikeln automatisch analysiert, um damit aktuelle große Ereignisse auf der Welt zu erkennen &#8211; und das natürlich schneller als traditionelle Zeitungen. Seine Slides hat er &#8211; in guter Googler-Manier &#8211; als <a title="Thomas Steiner - Breaking News Detection mit Node.js" href="https://docs.google.com/presentation/d/125bxx1aojsqjbrD7E9vSzMGfzmJuV2lsegVF-TYY1eY/edit#slide=id.i0" target="_blank">Google Docs Presentation</a> abgelegt.</p>
<p>Für mich persönlich spannend fand ich bei diesem Vortrag zum Einen die Einfachheit des Codes (Node.js) und zweitens die Tatsache, dass es IRC-Chats gibt, über die alle aktuellen Änderungen an Wikipedia zugänglich gemacht werden &#8211; wirklich ALLE!</p>
<p>Nach einer kurzen Pause startete der zweite Vortrag von <a title="Robert Kowalski @ Twitter" href="https://twitter.com/robinson_k" target="_blank">Robert Kowalski</a>. Robert präsentierte aktuellste Entwicklungen heutiger Browser in der Unterstützung von ECMAScript 6. Einige interessante Features sind bereits schon in heutigen Versionen enthalten, wobei der Standard sich noch in der Entwicklung befindet. Klar sollte man nicht einfach alles blind anwenden in seinem Produktionscode, dennoch kann man einen Blick riskieren :-). Roberts Slides findet ihr <a title="Robert Kowalski @ Speakerdeck" href="https://speakerdeck.com/robertkowalski/some-es6-features-you-can-test-today" target="_blank">hier</a>.</p>
<p>Video-Mitschnitte der Talks könnt ihr bei <a title="Videomitschnitte @ Lecture2Go" href="http://lecture2go.uni-hamburg.de/veranstaltungen/-/v/14853" target="_blank">Lecture2Go</a> finden.</p>
<p><strong>Fazit:</strong> Es war ein sehr aufschlussreicher Abend! Nicht nur die Vorträge waren spannend, auch die Diskussionen während des &#8220;Socializing&#8221; danach waren interessant.</p>
<p>Nun noch ein paar Impressionen des gestrigen Abends.</p>
<div id="portfolio-slideshow1" class="portfolio-slideshow">
	<div class="slideshow-next slideshow-content">
			<a href="javascript: void(0);" class="slideshow-next"><img class="psp-active" data-img="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/1366046122992-e1366119177764.jpg" src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/1366046122992-e1366119177764.jpg" height="661" width="496" alt="Einführende Worte @ HH.js Meetup" /><noscript><img src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/1366046122992-e1366119177764.jpg" height="661" width="496" alt="Einführende Worte @ HH.js Meetup" /></noscript></a><div class="slideshow-meta"><p class="slideshow-caption">Einführende Worte @ HH.js Meetup</p></div></div>
			<div class="not-first slideshow-next slideshow-content">
			<a href="javascript: void(0);" class="slideshow-next"><img class="psp-active" data-img="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/20130415_191707-e1366119171488.jpg" src="http://devblog.icans-gmbh.com/wp-content/plugins/portfolio-slideshow/img/tiny.png" height="372" width="496" alt="Thomas Steiner @ HH.js Meetup" /><noscript><img src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/20130415_191707-e1366119171488.jpg" height="372" width="496" alt="Thomas Steiner @ HH.js Meetup" /></noscript></a><div class="slideshow-meta"><p class="slideshow-caption">Thomas Steiner @ HH.js Meetup</p></div></div>
			<div class="not-first slideshow-next slideshow-content">
			<a href="javascript: void(0);" class="slideshow-next"><img class="psp-active" data-img="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/20130415_191741-e1366119178124.jpg" src="http://devblog.icans-gmbh.com/wp-content/plugins/portfolio-slideshow/img/tiny.png" height="372" width="496" alt="Thomas Steiner @ HH.js Meetup" /><noscript><img src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/20130415_191741-e1366119178124.jpg" height="372" width="496" alt="Thomas Steiner @ HH.js Meetup" /></noscript></a><div class="slideshow-meta"><p class="slideshow-caption">Thomas Steiner @ HH.js Meetup</p></div></div>
			<div class="not-first slideshow-next slideshow-content">
			<a href="javascript: void(0);" class="slideshow-next"><img class="psp-active" data-img="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/1366051020034-e1366119091977.jpg" src="http://devblog.icans-gmbh.com/wp-content/plugins/portfolio-slideshow/img/tiny.png" height="372" width="496" alt="Robert Kowalski @ HH.js Meetup" /><noscript><img src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/1366051020034-e1366119091977.jpg" height="372" width="496" alt="Robert Kowalski @ HH.js Meetup" /></noscript></a><div class="slideshow-meta"><p class="slideshow-caption">Robert Kowalski @ HH.js Meetup</p></div></div>
			<div class="not-first slideshow-next slideshow-content">
			<a href="javascript: void(0);" class="slideshow-next"><img class="psp-active" data-img="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/4D8E3C00-A4E9-4DC6-9997-5C079CF30629-e1366119174614.jpg" src="http://devblog.icans-gmbh.com/wp-content/plugins/portfolio-slideshow/img/tiny.png" height="372" width="496" alt="Robert Kowalski @ HH.js Meetup" /><noscript><img src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/4D8E3C00-A4E9-4DC6-9997-5C079CF30629-e1366119174614.jpg" height="372" width="496" alt="Robert Kowalski @ HH.js Meetup" /></noscript></a><div class="slideshow-meta"><p class="slideshow-caption">Robert Kowalski @ HH.js Meetup</p></div></div>
			<div class="not-first slideshow-next slideshow-content">
			<a href="javascript: void(0);" class="slideshow-next"><img class="psp-active" data-img="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/1366049624650-e1366119177449.jpg" src="http://devblog.icans-gmbh.com/wp-content/plugins/portfolio-slideshow/img/tiny.png" height="372" width="496" alt="Menschenmenge @ HH.js Meetup" /><noscript><img src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/1366049624650-e1366119177449.jpg" height="372" width="496" alt="Menschenmenge @ HH.js Meetup" /></noscript></a><div class="slideshow-meta"><p class="slideshow-caption">Menschenmenge @ HH.js Meetup</p></div></div>
			<div class="not-first slideshow-next slideshow-content">
			<a href="javascript: void(0);" class="slideshow-next"><img class="psp-active" data-img="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/1366046044284-e1366119113436.jpg" src="http://devblog.icans-gmbh.com/wp-content/plugins/portfolio-slideshow/img/tiny.png" height="372" width="496" alt="Biervorrat @ HH.js Meetup" /><noscript><img src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/1366046044284-e1366119113436.jpg" height="372" width="496" alt="Biervorrat @ HH.js Meetup" /></noscript></a><div class="slideshow-meta"><p class="slideshow-caption">Biervorrat @ HH.js Meetup</p></div></div>
			<div class="not-first slideshow-next slideshow-content">
			<a href="javascript: void(0);" class="slideshow-next"><img class="psp-active" data-img="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/hhjs-logo.png" src="http://devblog.icans-gmbh.com/wp-content/plugins/portfolio-slideshow/img/tiny.png" height="180" width="180" alt="HH.js Meetup Group Logo" /><noscript><img src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/hhjs-logo.png" height="180" width="180" alt="HH.js Meetup Group Logo" /></noscript></a><div class="slideshow-meta"></div></div>
			</div><!--#portfolio-slideshow--></div><!--#slideshow-wrapper-->
]]></content:encoded>
			<wfw:commentRss>http://devblog.icans-gmbh.com/hh-js-meetup-icans/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Die Macht ist mit uns&#8230;</title>
		<link>http://devblog.icans-gmbh.com/wurgegriff/</link>
		<comments>http://devblog.icans-gmbh.com/wurgegriff/#comments</comments>
		<pubDate>Fri, 12 Apr 2013 13:50:31 +0000</pubDate>
		<dc:creator>Kerstin</dc:creator>
				<category><![CDATA[Brain Dump]]></category>
		<category><![CDATA[Office Life]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://devblog.icans-gmbh.com/?p=2561</guid>
		<description><![CDATA[]]></description>
				<content:encoded><![CDATA[<p><a href="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/vader.gif"><img class="aligncenter size-full wp-image-2562" alt="vader" src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/vader.gif" width="490" height="326" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.icans-gmbh.com/wurgegriff/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Einblicke in die Design-Welt &#8211; mehr als nur Web-Design</title>
		<link>http://devblog.icans-gmbh.com/einblicke-in-die-design-welt-mehr-als-nur-web-design/</link>
		<comments>http://devblog.icans-gmbh.com/einblicke-in-die-design-welt-mehr-als-nur-web-design/#comments</comments>
		<pubDate>Thu, 11 Apr 2013 12:45:56 +0000</pubDate>
		<dc:creator>Marco Eichberg</dc:creator>
				<category><![CDATA[Insights]]></category>
		<category><![CDATA[Office Life]]></category>

		<guid isPermaLink="false">http://devblog.icans-gmbh.com/?p=2463</guid>
		<description><![CDATA[Moin Leute, ich bin Marco Eichberg und studiere zurzeit im 6. Semester Kommunikationsdesign in Hamburg. Seit November arbeite ich als Werkstudent in der Design-Abteilung und unterstütze die Kreativen bei der Umsetzung ihrer Design-Aufträge. Unser Design-Team arbeitet in sehr vielen Bereichen: &#8230; <a href="http://devblog.icans-gmbh.com/einblicke-in-die-design-welt-mehr-als-nur-web-design/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Moin Leute,</p>
<p>ich bin Marco Eichberg und studiere zurzeit im 6. Semester Kommunikationsdesign in Hamburg. Seit November arbeite ich als Werkstudent in der Design-Abteilung und unterstütze die Kreativen bei der Umsetzung ihrer Design-Aufträge.<br />
Unser Design-Team arbeitet in sehr vielen Bereichen: Von Web-Design über Illustration bis hin zu Printanzeigen und Merchandise Artikeln. So auch für den Kneipenabend in unserer Cafeteria, zu dem auch unsere Alumni eingeladen wurden.<br />
Es gab lecker Spanferkel, frischen Salat, Tofu-Würste, Cola, Bier, Wasser und a kneipentypische Aktivitäten wie Kickertische und einen Spielautomat.<br />
Für mich persönlich war es das erste Event bei der ICANS und es wird mit Sicherheit nicht das letzte gewesen sein!</p>
<p>Obwohl ich ein Werkstudent bin fühle ich mich vollständig in das Design-Team integriert und unterstütze jeden Einzelnen mit meinen Skills. Eine meiner Aufgaben war es, zusammen mit Annekathrin ein Plakat und einen Bierdeckel für das interne Kneipenevent zu gestalten. Für das Plakat, das hauptsächlich Annekathrin gestaltet hat, habe ich ihr bei der Bildrecherche geholfen. Beim Auswerten der Bilder und beim Vergleich zum finalen<br />
Plakatdesign konnte ich vieles dazulernen:</p>
<p><img class="alignleft size-medium wp-image-2506" alt="Plakat Kneipenabend" src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/03/geheimplakat-print-240x339.jpg" width="240" height="339" /></p>
<ul>
<li>die Stimmung des Bildes musste zu der Art Veranstaltung passen, die wir ankündigen wollen (Farbgebung warm, gemütlich, kneipenartig)</li>
<li>das Motiv sollte eine Spielmöglichkeit abbilden, die am Abend auch ein aktives Beisammensein im Spiel ermöglichen sollte</li>
<li>da Kickern unsere Haupt-Spielaktivität ist – bot sich ein Kickerstisch an</li>
<li>das Bild sollte ruhige Bereiche aufweisen, in denen wir Text gut platzieren können</li>
<li>weil Text und Motiv sich gegenseitig beeinflussen- bot sich die Lampe an, um die Aktivitäten in eine Art Spotlight zu rücken</li>
<li>da das Motiv optisch horizontale/vertikalen Aufbau aufweist, lockerte schräg angeordneter Text die Strenge wieder auf</li>
</ul>
<p>Auf dem Plakat aufbauend war es dann meine Aufgabe die Bierdeckel zu gestalten.<br />
Schritt für Schritt sind Annekathrin und ich gemeinsam durch die einzelnen Steps gegangen:</p>
<p>Als erstes wurde ich von Annekathrin gebrieft. Mir wurde erklärt worauf ich bei der Gestaltung achten soll, welche Schrift und Gestaltungselemente ich für den Bierdeckel übernehmen kann und wie die Daten für den Druck aufzubereiten sind.<br />
Danach habe ich die ersten Drafts erstellt und das Feedback von Annekathrin eingeholt.<br />
Nachdem wir uns auf die 3 besten Entwürfe geeinigt hatten, habe ich die Drafts an unser Event-Team geschickt, die uns den Auftrag für die Erstellung der Printmedien gegeben hatte. Die Entscheidung fiel schnell,  so dass ich noch am selben Tag die Entwürfe reinzeichnen und für die Druckerei vorbereiten konnte. <img class="alignright size-medium wp-image-2486" alt="" src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/03/Bierdeckel1-240x140.png" width="240" height="140" />Nach mehrfacher Kontrolle (und 4-Augen Prinzip ;) ) habe ich das PDF erstellt und per E-Mail an die Druckerei versendet&#8230; Fertig!</p>
<p>Nach einer Woche waren meine ersten selbst gestalteten Bierdeckel da :)</p>
<p>Mir hat das ganze Projekt sehr viel Spaß gemacht und ich habe viel in Sachen Zusammenarbeit und Absprachen gelernt.<br />
Ich hoffe, dass ich euch einen kleinen und interessanten Einblick in die „Designwelt“ bei der ICANS Gmbh gegeben habe.</p>
<p>Mit besten Grüßen,<br />
Euer Werkstudent Marco Eichberg</p>
<p>Ich habe für euch noch eine kleine Infografik von den einzelnen Steps gemacht :)</p>
<p><a href="http://devblog.icans-gmbh.com/?attachment_id=2465" target="_blank" rel="attachment wp-att-2465"><img class="alignnone size-full wp-image-2465" alt="" src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/03/Infografik_Bierdeckel.jpg" width="487" height="450" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.icans-gmbh.com/einblicke-in-die-design-welt-mehr-als-nur-web-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Teambuilding-Seminar bei der ICANS &#8211; eine Retrospektive</title>
		<link>http://devblog.icans-gmbh.com/teambuilding-seminar-bei-der-icans-eine-retrospektive-3/</link>
		<comments>http://devblog.icans-gmbh.com/teambuilding-seminar-bei-der-icans-eine-retrospektive-3/#comments</comments>
		<pubDate>Mon, 08 Apr 2013 15:12:54 +0000</pubDate>
		<dc:creator>Ina Schröder</dc:creator>
				<category><![CDATA[Workshops]]></category>
		<category><![CDATA[Teambuilding Seminar]]></category>
		<category><![CDATA[Weiterbildung]]></category>

		<guid isPermaLink="false">http://devblog.icans-gmbh.com/?p=2545</guid>
		<description><![CDATA[Am 16.03.2013 hatten wir einen guten Grund an einem Samstag in den Valentinskamp 18 zu kommen. Eines unserer regelmäßig stattfindenden Softskill-Seminare, dieses Mal zum Thema „Teambuilding &#124; Training“, stand auf dem Plan. Auch wenn das frühe Aufstehen an einem Samstag &#8230; <a href="http://devblog.icans-gmbh.com/teambuilding-seminar-bei-der-icans-eine-retrospektive-3/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Am 16.03.2013 hatten wir einen guten Grund an einem Samstag in den Valentinskamp 18 zu kommen. Eines unserer regelmäßig stattfindenden Softskill-Seminare, dieses Mal zum Thema „Teambuilding | Training“, stand auf dem Plan. Auch wenn das frühe Aufstehen an einem Samstag etwas schwer fiel (die Teilnahme ist selbstverständlich freiwillig), hatte es sich bereits nach dem Seminar-Vormittag für alle Teilnehmer gelohnt.</p>
<p>Der angereiste Coach Markus Junger (Leiter des <a href="http://professionelle-gespraechsfuehrung.com/">Instituts für Professionelle Gesprächsführung</a>) führte uns an die Thematik mit den folgenden Worten heran: „Was ist für euch ein Tea<a href="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/Bild12-e1365436639551.jpg"><img class="size-thumbnail wp-image-2558 alignleft" alt="Bild1" src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/04/Bild12-150x184.jpg" width="150" height="184" /></a>m und was bedeutet für euch Teamorientierung?“. In kleinen Gruppenarbeiten kamen wir der Sache immer näher und führten rege Diskussionen zu den Themen Teamarbeit und Teamgefühl bei der ICANS. Dabei wurde auch festgestellt, was bei der ICANS hinsichtlich Teamarbeit schon richtig gut funktioniert (z.B. Reviews und Retrospektiven zum gemeinsamen Reflektieren, aktiver Wissensaustausch, transparentes Arbeiten, Diskussionskultur, etc.) und wo eventuell noch optimiert werden kann (z.B. Wissensinseln vermeiden, mehr teamübergreifende Interaktion, Teamerfolge präsenter machen, offene Feedbackkultur noch besser leben, etc.). Markus gab uns zwischendurch immer wieder wertvolle Tipps, wie bestimmte Ausdrücke und Verhaltensweisen beim „Empfänger“ ankommen, z.B. lieber UND statt ABER, wenn man die Arbeit eines Teammitglieds bewertet UND noch etwas verbesserungswürdig erscheint. Und statt jemanden mit einem scharfen WARUM an die Wand zu stellen, fragt man lieber WIE es zu einer Situation gekommen ist. Und siehe da, der Empfänger fühlt sich völlig anders abgeholt und verstanden. Sehr spannend waren auch die kleinen Gruppenübungen, wo wir abgeglichen haben, in welcher Teamrolle wir uns selbst wahrnehmen und wie unser Team uns tatsächlich wahrnimmt. Das hat die Teilnehmer einerseits näher zusammengeführt und andererseits einige interessante Erkenntnisse für jeden Einzelnen hervorgebracht.</p>
<p>Wir haben vieles mitgenommen und jeder Teilnehmer wird sein Wissen so gut wie möglich erfolgreich in die Praxis umsetzen – denn wenn Teamarbeit im kleinen Rahmen durch diese Tipps und Erleuchtungen noch besser, harmonischer und/oder erfolgreicher funktioniert, wird dieser Erfolg schnell teamübergreifende Früchte tragen.</p>
<p>Es war ein spannender und lehrreicher Tag … mehr davon!! :)</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.icans-gmbh.com/teambuilding-seminar-bei-der-icans-eine-retrospektive-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>First Friday Februar Topic: Automatische Screenshot-basierte Qualitätssicherung von Webseiten</title>
		<link>http://devblog.icans-gmbh.com/first-friday-februar-topic-automatische-screenshot-basierte-qualitatssicherung-von-webseiten/</link>
		<comments>http://devblog.icans-gmbh.com/first-friday-februar-topic-automatische-screenshot-basierte-qualitatssicherung-von-webseiten/#comments</comments>
		<pubDate>Tue, 02 Apr 2013 09:25:47 +0000</pubDate>
		<dc:creator>Sebastian Germesin</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Insights]]></category>

		<guid isPermaLink="false">http://devblog.icans-gmbh.com/?p=2497</guid>
		<description><![CDATA[&#60;tl;dr&#62; Pizza Days, Automatische Screenshot-basierte Qualitätssicherung von Webseiten, First Friday Vortrag, Diskussion &#60;/tl;dr&#62; Pizza Days Ende letzten Jahres hatten wir bei der ICANS unsere Firmenweiten Pizza Days &#8211; 2 Tage an denen sich Entwickler(-Teams) aus dem daily business zurückziehen können und &#8230; <a href="http://devblog.icans-gmbh.com/first-friday-februar-topic-automatische-screenshot-basierte-qualitatssicherung-von-webseiten/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<h3><strong>&lt;tl;dr&gt;<br />
Pizza Days, Automatische Screenshot-basierte Qualitätssicherung von Webseiten, First Friday Vortrag, Diskussion<br />
&lt;/tl;dr&gt;</strong></h3>
<h3><strong>Pizza Days</strong></h3>
<p>Ende letzten Jahres hatten wir bei der ICANS unsere Firmenweiten <a href="http://devblog.icans-gmbh.com/our-first-pizza-days-a-retrospective/" target="_blank">Pizza Days </a> &#8211; 2 Tage an denen sich Entwickler(-Teams) aus dem daily business zurückziehen können und an einem frei wählbarem &#8220;Pet-Project&#8221; arbeiten dürfen. Neben der Verpflegung mit Pizza, diversen Energy-Drinks und Feierarbendbierchen, befassten sich meine Kollegen mit der Entwicklung eines Web-basierten automatischen Essensbestellservice, legten die Grundsteine bald-kommender Features für <a href="http://tradimo.com" target="_blank">Tradimo</a>  oder nahmen die Neugestaltung ihres Büros in Angriff. Ich ergriff die Gelegenheit und befasste mich mit einem in mir schon seit geraumer Zeit rumorendem Thema: &#8220;Automatische Qualitätssicherung von Webseiten&#8221;.</p>
<h3><strong>Die Aufgabe</strong></h3>
<p>Jeder Entwickler von größeren Webseiten, jeder Teamleiter und Manager von Teams kennt die folgende Situation: Ein Kunde &#8211; oder man selbst &#8211; würde das System gerne mit einem neuen Feature bereichern. Gesagt getan, das Feature wird (evtl. im Pair mit einem Kollegen) entwickelt, der Peer des Features hatte noch kleine Änderungswünsche, diese wurden in einer weiteren Iteration umgesetzt, im Code Review wurde die Entwicklung als tadellos eingestuft, Unittests wurden geschrieben und ausgeführt, die manuelle Qualitätssicherung hat nach erfolgreicher Abnahme das Feature integriert und der Code ging live. Alles gut! Schlecht nur, dass die Umsetzung ungewünschte Veränderungen der visuellen Darstellung in einem nicht-frequentiertem Teil der Seite hervorbrachte.</p>
<p>Zurück zu den Pizza Days, dem anschließendem Voting des besten Projektes und meines daraus resultierendem <a href="http://devblog.icans-gmbh.com/first-friday-fruhstuck/" target="_blank">&#8220;First Friday&#8221;</a> Vortrags . Die Projektbeschreibung war recht kurz: &#8220;Entwicklung eines automatischen Systems zur Erkennung von unerwünschten Seiteneffekten bei der Feature-Entwicklung&#8221;. Klar war, dass in der kürze der Zeit ein vollautomatisierter Ansatz nicht zu realisieren war &#8211; schon allein die Frage wie das System entscheiden sollte, was denn nun &#8216;unerwünscht&#8217; ist, bedarf einiges an Aufwand.</p>
<h3><strong>Die Umsetzung</strong></h3>
<p>Ich entschied mich, ein System zu entwickeln, dass einem Entwickler oder Tester möglichst leicht darstellt, wie das System sich nach der Änderung von dem vorherigen Stand unterscheidet. Ein Visueller Vergleich von Screenshots welche vor und nach den Änderungen erstellt wurden klang vielversprechend. Hier ein Ablaufdiagramm des Workflows:</p>
<p>1. Erstelle Screenshots des aktuellen Systems<br />
2. Fixe Bug / Entwickle Feature<br />
3. Erstelle Screenshots des neuen Standes<br />
4. Vergleiche (falls Fehler entdeckt werden, gehe zu Punkt 2)</p>
<p>Das System entwickelte ich auf Basis von <a href="http://nodejs.org/" target="_blank">NodeJS</a>. Dank der Unterstützung von <a href="http://casperjs.org/" target="_blank">CasperJS</a> , war ich sehr schnell und einfach in der Lage, ein automatisiertes Einloggen, Ansurfen von verschiedenen Seiten und Erstellen eines Screenshots zu schreiben. Ein Screenshot des User Interfaces des dazu geschriebenen Tools ist hier (see: screenshot_avrt.png) zu sehen. Vorab muss eine Test-Konfiguration geschrieben werden. Diese listet die einzelnen Seiten auf, welche automatisch angesteuert werden sollen. Diese Konfiguration wird an den Server geschickt und die Screenshots werden erstellt. Die Links zu den Screenshots werden als Antwort anschließend an den Client zurückgeschickt:</p>
<pre>Client -------------c------------&gt; Server
if (c.id === null) {
    c.screenUrlsOld = server.genScreenshots(c.urls);
    c.id = server.genereateUuid();
 } else {
    c.screenUrlsNew = server.genScreenshots(c.urls);
    c.screenUrlsDiff =
    server.generateDiff(c.screenUrlsOld,
    c.screenUrlsNew);
 }
Server ---------up_c-----------&gt; Client</pre>
<p>Wird die gleiche Konfiguration nochmals an den Server geschickt, versteht dieser nun den Aufruf als Aufforderung, die alten Screenshots mit dem aktuellen Stand des Systems zu vergleichen. Hierbei werden Pixel für Pixel untersucht und Abweichungen rot eingefärbt. Zudem bietet die API an, die Anzahl der roten Pixel in der Antwort mit auszuliefern. Das Ergebnis eines solchen Bildvergleichs ist hier zu sehen (see: screenshot_result.png).</p>
<h3><strong> Diskussion</strong></h3>
<p>Anhand des erstellten Bildes ist es nun für den manuellen Tester sehr einfach zu sehen, welche Teile einer Seite sich mit dem neuen Code verändert haben. Aufgabe gelöst! Nun, nicht ganz&#8230; Ein grundlegendes Problem der Vorgehensweise ist, dass das System entscheiden muss, wann ein Bildschirmfoto erstellt werden kann. Hier kann es zu Timing-Problemen kommen (z.B. rotierende Elemente, Gallerien, &#8230;). Zudem ist weiterhin ein manueller Test-Aufwand nötig, welcher zwar reduziert wird, jedoch nicht vollständig ersetzt werden kann.</p>
<h3><strong>Andere Produkte / Lösungen</strong></h3>
<p>Natürlich hatte ich mich auch auf die Suche nach anderen Produkten im Netz gemacht. Interessant fand ich <a href="https://github.com/Huddle/PhantomCSS" target="_blank">PhantomCSS</a> , welche praktisch mit gleicher Technologie einen ähnlichen Ansatz implementieren. Schließlich bin ich über einen Vortrag des <a href="http://www.youtube.com/watch?v=_6fV-6eMSUM" target="_blank">GTAC 2011</a> gestolpert  in dem der Gründer von <a href="http://Mogotest.com">Mogotest.com</a>  seine Plattform vorstellte. Der Ansatz von Mogotest basiert darauf, dass zwei Snapshots des DOM-Baumes miteinander verglichen werden und somit &#8220;semantisch wertvollere&#8221; Informationen über die Änderungen erfasst werden können. Dies funktioniert so, dass jedes DOM-Element des ersten Snapshots mit dem jeweiligen Pendant im zweiten anhand der x/y Koordinaten, sowie Höhe und Breite verglichen werden. Weichen diese um einen einstellbaren Wert ab, wird das Element markiert. Zudem kann man weiterhin noch Elemente wie in dem oben beschriebenen Vergleich immernoch Pixel-basiert vergleichen um mögliche Änderungen festzustellen (z.B. Farbverläufe). Cool hierbei ist auch, dass der Service anbietet, verschiedene System-Browser-Kombinationen miteinander zu vergleichen und somit Cross-Browser-Tests einfacher durchzuführen.</p>
<h3><strong>Summa summarum</strong></h3>
<p>Ein System zu entwickeln, welches visuelle Bugs vollautomatisch entdeckt und den Testaufwand von Webentwicklern automatisiert ist schwierig. Nichtsdestotrotz waren unsere Pizza-Days was das Thema &#8221;visuelle Regressiontests&#8221; angeht erfolgreich. Wir haben prototypisch ein System auf die Beine gestellt, welches den Anforderungen entsprechend es einem Tester erleichtern würde, visuelle Änderungen im System zu entdecken. Zudem haben wir uns anschließend noch Erweiterungsmöglichkeiten angeschaut und Ansätze wie <a href="http://mogotest.com">http://mogotest.com</a> diskutiert. Umsetzen konnten wir diese bisher leider noch nicht, aber es kommen ja noch ein paar Pizza-Days&#8230; ;-)&#8230;</p>
<p><a href="http://devblog.icans-gmbh.com/?attachment_id=2509" rel="attachment wp-att-2509"><img class="alignleft size-medium wp-image-2509" alt="" src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/03/First-Friday-Februar-Topic-2013-240x224.png" width="240" height="224" /></a></p>
<p><a href="http://devblog.icans-gmbh.com/?attachment_id=2510" rel="attachment wp-att-2510"><img class="alignnone size-medium wp-image-2510" alt="" src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/03/First-Friday-Februar-Topic-2013_1-240x162.png" width="240" height="162" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.icans-gmbh.com/first-friday-februar-topic-automatische-screenshot-basierte-qualitatssicherung-von-webseiten/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Erfolgsstory Masterarbeit – Dennis hat es geschafft!</title>
		<link>http://devblog.icans-gmbh.com/erfolgsstory-masterarbeit-dennis-hat-es-geschafft/</link>
		<comments>http://devblog.icans-gmbh.com/erfolgsstory-masterarbeit-dennis-hat-es-geschafft/#comments</comments>
		<pubDate>Mon, 25 Mar 2013 12:58:44 +0000</pubDate>
		<dc:creator>Ulrike Dumke</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Abschlussarbeit]]></category>
		<category><![CDATA[Einstellung]]></category>
		<category><![CDATA[Fortbildung]]></category>
		<category><![CDATA[Masterarbeit]]></category>
		<category><![CDATA[Recruiting]]></category>
		<category><![CDATA[Weiterbildung]]></category>

		<guid isPermaLink="false">http://devblog.icans-gmbh.com/?p=2470</guid>
		<description><![CDATA[Am Freitag, den 22.03.2013 war es nun soweit: Die monatelange harte Arbeit hat sich für Dennis Muth endlich ausgezahlt, denn er ist nun nicht nur stolzer Master-Absolvent im Studiengang E-Commerce der FH Wedel, sondern hat auch die beste Masterarbeit seines &#8230; <a href="http://devblog.icans-gmbh.com/erfolgsstory-masterarbeit-dennis-hat-es-geschafft/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p class="size-medium wp-image-2471">Am Freitag, den 22.03.2013 war es nun soweit: Die monatelange harte Arbeit hat sich für Dennis Muth endlich ausgezahlt, denn er ist nun nicht nur stolzer Master-Absolvent im Studiengang E-Commerce der FH Wedel, sondern hat auch die beste Masterarbeit seines Studienjahres geschrieben. Seine Arbeit mit dem kompakten Titel „Datengetriebene Analyse und Prognose des Benutzerverhaltens auf Websites: Web Usage Mining am Beispiel von <a href="http://de.tradimo.com/trading-lernen/" target="_blank">Tradimo.com</a> unter Berücksichtigung der Herausforderungen von Big Data“ beschäftigt sich dabei mit praktischen Herausforderungen: Wie können wir unsere Kunden auf allen Framework-basierten Plattformen besser verstehen? Neben der Konkretisierung dieser Frage in Form eines Analysekonzeptes, wurde ein auf unsere Daten zugeschnittenes Tool zur Identifikation häufiger Klickpfade entwickelt. Der zugrunde liegende Algorithmus wurde hierzu für die verteilte Berechnung mittels Hadoop parallelisiert. Erste Analyseergebnisse wurden im Kontext der Arbeit ebenfalls erarbeitet, besonders spannend wird das Tool aber im Kontext des feelgood Ventures.</p>
<p>Dr. Stefan Schadwinkel hat seitens der ICANS die fachliche Betreuung übernommen und durfte bei der offiziellen Zeugnisübergabe eine Laudatio zu Dennis halten. Hier hat er auch verkündet, dass Dennis sein neuer Kollege wird, denn er wird das Web Analytics Team ab sofort als „Analytics Engineer“ unterstützen. Herzlich Willkommen, lieber Dennis!</p>
<div id="attachment_2471" class="wp-caption alignnone" style="width: 510px"><a href="http://devblog.icans-gmbh.com/wp-content/uploads/2013/03/IMG_3878.jpg"><img class="size-large wp-image-2471" alt="Prof. Dr. Ulrich Hoffmann (Wedeler Hochschulbund), Dr. Stefan Schadwinkel, Dennis Muth (v.l.n.r.)" src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/03/IMG_3878-500x333.jpg" width="500" height="333" /></a><p class="wp-caption-text">Prof. Dr. Ulrich Hoffmann (Wedeler Hochschulbund), Dr. Stefan Schadwinkel, Dennis Muth (v.l.n.r.)</p></div>
]]></content:encoded>
			<wfw:commentRss>http://devblog.icans-gmbh.com/erfolgsstory-masterarbeit-dennis-hat-es-geschafft/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kneipenabend@ICANS-Eck!</title>
		<link>http://devblog.icans-gmbh.com/kneipen-abendicans-eck/</link>
		<comments>http://devblog.icans-gmbh.com/kneipen-abendicans-eck/#comments</comments>
		<pubDate>Wed, 13 Mar 2013 13:35:08 +0000</pubDate>
		<dc:creator>Katharina</dc:creator>
				<category><![CDATA[Insights]]></category>
		<category><![CDATA[Office Life]]></category>

		<guid isPermaLink="false">http://devblog.icans-gmbh.com/?p=2436</guid>
		<description><![CDATA[Am letzten Freitag, den 08.03.2013, hat unser erstes Firmenevent für 2013 am Standort Hamburg stattgefunden. Dieses stand unter dem Motto „Kneipenabend“. Viele Kollegen dachten, dass wir sie zu einer Kneipen-Tour durch Hamburg entführen. Aber nein -  wir, das Organisations-Team, haben &#8230; <a href="http://devblog.icans-gmbh.com/kneipen-abendicans-eck/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Am letzten Freitag, den 08.03.2013, hat unser erstes Firmenevent für 2013 am Standort Hamburg stattgefunden. Dieses stand unter dem Motto „Kneipenabend“.</p>
<p>Viele Kollegen dachten, dass wir sie zu einer Kneipen-Tour durch Hamburg entführen.<br />
Aber nein -  wir, das Organisations-Team, haben uns überlegt, wenn wir schon so eine schöne große Cafeteria haben, dann sollten wir diese auch nutzen.Die Ideen sprudelten nur so und schnell hatten wir ganz bestimmte Vorstellungen von dem Abend, die wir erfüllen wollten:</p>
<ul>
<li>Ein weiterer Kicker musste her um Schlange-Stehen zu vermeiden</li>
<li>Für ein wenig „sportliche“ Abwechslung wäre außerdem eine Dartscheibe cool</li>
<li>bürgerliche Küche, wie es in der Kneipe halt üblich ist</li>
<li>Bier vom Fass :)</li>
</ul>
<p>Unsere Highlights wurden mit Hilfe unseres Design-Teams in einem Flyer für die Einladung umgesetzt und die Kollegen wurden immer neugieriger….</p>
<p>Am Tag des Events konnten wir bei den Vorbereitungen die ersten überraschten Gesichter unserer  Kollegen sehen.<br />
Wir haben unsere Cafeteria, wo mittags eher Kantinenstimmung herrscht, komplett umgeräumt und versucht mit einfachen Mitteln und kleinen Details ein Kneipen-Flair zu gestalten.<br />
Manche Kollegen kamen rein und meinten: „Ich dachte, hier werden die Tische etwas zur Seite geräumt und es gibt Bier“. Umso überraschter waren sie von dem Endergebnis.</p>
<p>Um 18:30 Uhr ging das erste Bier aus der Zapfanlage über die Theke. Das Buffet wurde nach der Eröffnungs- und Willkommensrede von David gegen 19:00 Uhr mit dem Anschneiden des Spanferkels eröffnet. Zusätzlich zum Spanferkel gab es auch Tofu-Würstchen, verschiedene Salate und als Dessert Rote Grütze.<br />
Es herrschte eine ausgelassene Stimmung. Die Kickertische waren heiß begehrt und auch der Dartautomat war ein weiteres Highlight an diesem Abend.<br />
Die Kollegen, die nicht am kickern, darten oder Karten spielen waren, haben sich in netter Atmosphäre über Gott und die Welt und darüber, was in den letzten Monaten so passiert ist, ausgetauscht. Denn zu diesem Event haben wir auch unsere ehemaligen Mitarbeiter eingeladen.</p>
<p>Für das Organisations-Team war das ein richtig cooles Event und wir hatten an diesem Abend mehr Spaß als Stress :) . Hier auch noch einmal vielen Dank für die tatkräftige Unterstützung an die helfenden Hände.</p>
<p>Über folgendes Feedback durften wir uns im Nachhinein freuen:</p>
<ul>
<li><em>„Hi,wollte mich mal ganz anständig für den Kneipenabend bedanken. War ein Superabend mit beeindruckender Ausstattung! Super Design, Super Deko, Super Verpflegung und echt gute Gespräche </em>:)<em>. Vielen Dank für die Einladung und ein ganz großes Lob an die Orga-Crew!“</em></li>
<li>„<em>War wirklich toll, 1.000 Dank auch von mir!“</em></li>
<li><em>„Super Event &#8211; danke!“</em></li>
<li><em>„Danke auch von mir &#8211; es war großartig! </em>:)<em>“</em></li>
</ul>
<p>Somit sollten wir ein Event in diesem Rahmen auf alle Fälle wiederholen.<br />
Weitere Eindrücke – in Bildern und Kommentaren von den Kollegen &#8211; könnt ihr auf unserer<a href="https://www.facebook.com/media/set/?set=a.563868226965201.1073741825.315933165092043&amp;type=1" target="_blank"> ICANS facebook-Seite </a>sehen.</p>
<p>Euer Organisations-Team<br />
Kristin, Janina, Katharina und Katrin</p>
<p><a href="http://devblog.icans-gmbh.com/wp-content/uploads/2013/03/Kneipen-Abend1.jpg"><img alt="Kneipen-Abend1" src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/03/Kneipen-Abend1-150x100.jpg" width="150" height="100" /></a><a href="http://devblog.icans-gmbh.com/wp-content/uploads/2013/03/Kneipen-Abend2.jpg">  <img alt="Kneipen-Abend2" src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/03/Kneipen-Abend2-150x100.jpg" width="150" height="100" /></a> <a href="http://devblog.icans-gmbh.com/wp-content/uploads/2013/03/Kneipen-Abend3.jpg"><img alt="Kneipen-Abend3" src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/03/Kneipen-Abend3-150x100.jpg" width="150" height="100" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.icans-gmbh.com/kneipen-abendicans-eck/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Our first Pizza Days – A Retrospective</title>
		<link>http://devblog.icans-gmbh.com/our-first-pizza-days-a-retrospective/</link>
		<comments>http://devblog.icans-gmbh.com/our-first-pizza-days-a-retrospective/#comments</comments>
		<pubDate>Wed, 27 Feb 2013 11:19:55 +0000</pubDate>
		<dc:creator>Stefan Eike</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Insights]]></category>
		<category><![CDATA[Workshops]]></category>

		<guid isPermaLink="false">http://devblog.icans-gmbh.com/?p=2399</guid>
		<description><![CDATA[Observant readers remember the post about our new Project called Pizza Days in June 2012. After tradimo was shipped in November 2012, December 18th and 19th were chosen to be our first official Pizza Days. This article will show you how everything &#8230; <a href="http://devblog.icans-gmbh.com/our-first-pizza-days-a-retrospective/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Observant readers remember the post about our new Project called <a href="http://devblog.icans-gmbh.com/pizza-days/">Pizza Days </a>in June 2012. After tradimo was shipped in November 2012, December 18<sup>th</sup> and 19<sup>th</sup> were chosen to be our first official Pizza Days. This article will show you how everything worked out, what we worked on and what awesome results we came up with.</p>
<p>When developing a website it happens quite often that you see room for improvement or have ideas for new useful features but don’t have the time to implement those. Many of our colleagues used the Pizza Days to work on such subjects because everyone could choose their topic on their own to be free and flexible for creative and useful outcomes. The only condition: the project should be related to ICANS in the broadest sense. Teams of one to four persons had two days to work on their ideas before presenting them to the plenum. The following chart shows you the chosen subjects and the teams working on them:</p>
<ul>
<li><i>Application to test CSS changes and visualise the results [Sebastian]</i></li>
<li><i>Application for smartphones and browsers to order lunch [Moritz, Axel]</i></li>
<li><i>Build process optimisation [Sebastian, Nikolaus], Automatised paperless business processes [Bettina, Irina, Christian]</i></li>
<li><i>PokerStrategy application for Windows 8 Modern-UI [Markus, Torsten]</i><br />
<i>Colorise the  DevOps office [Jochen, Martin, Stefan]</i></li>
<li><i>RaPS (RabbitMQ + RPS) to visualise RPS specific information (e.g. JSON decoding) [Carsten]</i></li>
<li><i>AMQP message consumer for dispatching PHP commands [Stefan, Stefan, Mike, Björn]</i></li>
<li><i>Coaching Player on AWS for live video streaming [Oliver]</i></li>
<li><i>AETSPL (Abstract Eventual Type-Safe Persistence Layer) [Simon, Wolf]</i></li>
<li><i>Calendar plugin for education communities [Sean, Timo]</i></li>
<li><i>Evaluation methods for user testing in ECF [Tina, Stefan]</i></li>
<li><i>SASS API documentation [Sascha]</i></li>
<li><i>Notifications for education communities [Lutz, Urs, Kai]</i></li>
</ul>
<p><b>Teams and Topics</b></p>
<p>As long as critical business operations weren’t affected, everyone was allowed to reschedule or cancel meetings that were supposed to be on these dates.  Before the actual Pizza Days took place, everyone with an idea described the topic in two sentences in Confluence and tried to infect others – that is how our teams were formed. Even some colleagues from Gibraltar came over to join so the Pizza Days were also an international team building workshop ;)</p>
<p><b>Day 1</b></p>
<p>On the first day the teams met in the offices, meeting rooms or the Cafeteria. You could feel that everybody was really high-flying and keen on their project. In the evening all teams had a lot (I mean really a lot!) of pizza in the Cafeteria and some beers. We sat together sharing our impressions of the first day. The atmosphere was really nice and everybody was curious about the topics and results of the other teams.</p>
<p><b>Day 2 and Results</b></p>
<p>The second day started like the first one but ended differently. After finishing their work on the project in the afternoon, each team had five minutes (more or less…) to present the results to the other teams. After the presentations, the first Pizza Days were over and everyone was satisfied about their achievements.  A few days later, the most interesting topic was crowned in our internal forum. Moritz and Axel  presented their food-ordering application at the next First Friday Breakfast in January. Now we are all waiting for the first stable beta!</p>
<p><a href="http://devblog.icans-gmbh.com/wp-content/uploads/2013/02/Pizza-Day1.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-2409" alt="Pizza Day1" src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/02/Pizza-Day1-150x112.jpg" width="150" height="112" /></a><a title="Pizza-Day2" href="http://devblog.icans-gmbh.com/wp-content/uploads/2013/02/Pizza-Day2.jpg" target="_blank">   <img class="alignnone size-thumbnail wp-image-2408" alt="Pizza Day2" src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/02/Pizza-Day2-150x112.jpg" width="150" height="112" /></a>   <a href="http://devblog.icans-gmbh.com/wp-content/uploads/2013/02/Pizza-Day3.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-2407" alt="Pizza Day3" src="http://devblog.icans-gmbh.com/wp-content/uploads/2013/02/Pizza-Day3-150x112.jpg" width="150" height="112" /></a></p>
<p><b>Today</b></p>
<p>Today some projects have already been finished, some will finish soon and some are still on hold. Day by day new ideas come up for the next Pizza Days and we can’t wait for them to come. All participants really enjoyed working on alternative topics and would welcome to work on them more frequently.</p>
<p>A special thank you goes to Katharina for organizing the Pizza Days in such a superb way!</p>
<p>It was very inspiring to see everyone working on their ideas in (sometimes) cross-functional teams and to be part of this.</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.icans-gmbh.com/our-first-pizza-days-a-retrospective/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mysterious S3DistCp Issues: Hive to the Rescue!</title>
		<link>http://devblog.icans-gmbh.com/mysterious-s3distcp-issues-hive-to-the-rescue/</link>
		<comments>http://devblog.icans-gmbh.com/mysterious-s3distcp-issues-hive-to-the-rescue/#comments</comments>
		<pubDate>Mon, 03 Dec 2012 09:39:41 +0000</pubDate>
		<dc:creator>Stefan Schadwinkel</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://devblog.icans-gmbh.com/?p=2381</guid>
		<description><![CDATA[We recently presented our approach to handle many different data requirements and our logging needs at the IPC 2012, read more about it here: ICANS “Log everything!” @ IPC 2012 in Mainz. In short summary: our infrastructure produces a stream &#8230; <a href="http://devblog.icans-gmbh.com/mysterious-s3distcp-issues-hive-to-the-rescue/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>We recently presented our approach to handle many different data requirements and our logging needs at the IPC 2012, read more about it here: <a href="http://devblog.icans-gmbh.com/icans-with-log-everything-ipc-2012-in-mainz/">ICANS “Log everything!” @ IPC 2012 in Mainz</a>.</p>
<p>In short summary: our infrastructure produces a stream of highly diverse messages, stores them in chunks in Amazon S3, and then processes the mixed data to create a neatly sorted structure that provides the basis for all further analysis.</p>
<p>Considering these initial chunks: we have many of them. We push the data parallely to S3 every 30 seconds, using 12 &#8220;threads&#8221;. This leads to approximately 12 (threads) x 24 (hours) x 60 (minutes) x 2 (messages per minute) = 34560 files. While this poses no direct issue for S3, running a map-reduce job with 34560 mappers is quite inefficient, because of the time required to schedule and manage each map task. Also for archiving data, having so many small files is rather undesirable.</p>
<p>Our initial approach was to use <a href="http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/UsingEMR_s3distcp.html">S3DistCp</a>. S3DistCp can do a distributed copy of files from S3 or HDFS to (again) S3 or HDFS. While doing so, it can concatenate small files into large, grouped chunks of defined sizes, and change compression types.</p>
<p>So what we were trying to do was to copy data from S3 back to S3, but as fewer and bigger lzo-compressed files. And here comes the crux of the issue: mysteriously, S3DistCp sometimes hangs in the last reduce step just forever. The job doesn&#8217;t fail, the EC2 instances keep running and producing costs, and just noone seems to know why.</p>
<p>Here are a few of our observations and ponderings:</p>
<ul>
<li>when the chunk target size is reduced, the problem happens less often, but still in at least 1 out of 10 trials.</li>
</ul>
<ul>
<li>the problem can be reproduced again and again on the same input directory, but when the input files are copied or moved to a different input directory using s3cmd, the issue seems to magically disappear. It will work most of the times, but the issue still persists, it just happens much less often. Therefore it seems, it has something to do with the initial upload. We did this using s3cmd as well, however, the initial upload is from us, while the second copy happens completely within Amazon&#8217;s infrastructure. So it might be some issues happening while transfering the data to S3, yet, why can the S3 backend read the files correctly, but the EMR S3 file input can&#8217;t ?</li>
</ul>
<ul>
<li>Interestingly, not many people seem to complain about this. What we have observed is that many people seem to use S3DistCp to copy from S3 to HDFS or from HDFS to S3. The other documented case of this issue (<a href="https://forums.aws.amazon.com/message.jspa?messageID=385972">stuck EMR cluster</a>) also tried S3 to S3 copies. It also claims hundreds of successful runs before the issue began to emerge.</li>
</ul>
<ul>
<li>For the last case, the Amazon engineering team seems to have investigated, but on my case (<a href="https://forums.aws.amazon.com/thread.jspa?threadID=109543">s3distcp hangs in last reduce step</a>), noone replied in over 2 weeks. Not so nice for a very critical piece in our processing pipeline. It thus seems that while it happens to our case very, very often, it seems to be very hard to reproduce on Amazon&#8217;s side and does not impact other customers. That&#8217;s the most mysterious point to me.</li>
</ul>
<p>While we hope that Amazon will fix this in the future and we would still love to actually use S3DistCp, it is just not possible to use something so unreliable in a production environment.</p>
<p>Luckily, we can now come to the second and more fun part of this post: Hive to the Rescue!</p>
<p>With the current Hadoop at Amazon&#8217;s Elastic MapReduce, it is actually possible to use a special input format that allows to use multiple small, even non-splittable files like .gz or .lzo files without index, as input to a single mapper.</p>
<p>We do this by simply telling Hive that Hadoop supports the feature:<br />
<code><br />
SET hive.hadoop.supports.splittable.combineinputformat=true;<br />
</code></p>
<p>For the output, we can also specify (for instance) to give us compressed lzo files:<br />
<code><br />
SET hive.exec.compress.output=true;<br />
SET mapred.output.compression.codec = com.hadoop.compression.lzo.LzopCodec;<br />
</code></p>
<p>Further, we control how many files are given to each mapper (and hence how many mappers will be run) by setting <em>max.split.size</em>:<br />
<code><br />
SET mapred.max.split.size=$INPUT_CHUNK_SIZE;<br />
</code></p>
<p>To control the number of output files (and thus indirectly the size of these chunks), we can specify how many reducers to use:<br />
<code><br />
SET mapred.reduce.tasks=$NUM_REDUCERS;<br />
</code></p>
<p>We now just create two external Hive tables, one at the location of our source data. In this case, our source data contains JSON-encoded strings:</p>
<p><code><br />
CREATE EXTERNAL TABLE input_table (json STRING)<br />
LOCATION 's3://Name of your Bucket/Your Input Path/';<br />
</code></p>
<p>As we do not change the data itself, we create an external target table to hold one string per record at our desired output location:<br />
<code><br />
CREATE EXTERNAL TABLE output_table (json STRING)<br />
row format delimited fields terminated by ',' lines terminated by '\n'<br />
LOCATION 's3://Name of your Bucket/Your Output Path/';<br />
</code></p>
<p>Now, we just need to write the data from our input table to our target table. We cannot just run &#8220;SELECT * FROM &#8230;&#8221;, because that would not execute a MapReduce job, and therefore not result in compacted files. However, our subsequent processing has a de-duplication step, so we can just move the de-duplication to be the first step in the pipeline:</p>
<p><code><br />
INSERT OVERWRITE TABLE output_table<br />
SELECT DISTINCT json FROM input_table;<br />
</code></p>
<p>And that&#8217;s it. We basically get the same result as with S3DistCp and already have de-duplicated data.</p>
<p>The main bottleneck for both, S3DistCp and Hive, is to execute the S3 requests for fetching all the files. In total, for our setup, both solutions run for about the same amount of time. The hive alternative has been very stable so far, no stuck clusters anymore.</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.icans-gmbh.com/mysterious-s3distcp-issues-hive-to-the-rescue/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
