<?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>Robert Mischke</title>
	<atom:link href="http://robert-m.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://robert-m.de</link>
	<description>Softwareentwicklung aus Berlin, Schwerpunkte: .NET, C#, ASP.NET MVC, Javascript</description>
	<lastBuildDate>Fri, 10 Jul 2015 20:51:17 +0000</lastBuildDate>
	<language>de-DE</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.4.1</generator>
	<item>
		<title>Portforwarding für Zugriff auf Entwicklungs-VM</title>
		<link>http://robert-m.de/portforwarding-fuer-zugriff-auf-entwicklungs-vm/</link>
		
		<dc:creator><![CDATA[Robert]]></dc:creator>
		<pubDate>Fri, 10 Jul 2015 21:51:17 +0000</pubDate>
				<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[NotizAnMich]]></category>
		<guid isPermaLink="false">http://robert-m.de/?p=712</guid>

					<description><![CDATA[Um auf einen Websever in einer lokalen VM zuzugreifen, die NAT-Forwarding verwendet, kann Portforwaring verwendet werden. Beispiel: netsh interface portproxy add v4tov4 listenport=80 listenaddress=192.168.2.106 connectport=80 connectaddress=192.168.75.135 Alle Regeln anzeigen: netsh interface portproxy show all -&#62; Google-Suche für: &#8222;Port forwarding on windows&#8220;]]></description>
										<content:encoded><![CDATA[<p>Um auf einen Websever in einer lokalen VM zuzugreifen, die NAT-Forwarding verwendet, kann Portforwaring verwendet werden.</p>
<p>Beispiel:</p>
<blockquote><p>netsh interface portproxy add v4tov4 listenport=80 listenaddress=192.168.2.106 connectport=80 connectaddress=192.168.75.135</p></blockquote>
<p>Alle Regeln anzeigen:</p>
<blockquote><p>netsh interface portproxy show all</p></blockquote>
<p><a href="https://www.google.de/webhp?sourceid=chrome-instant&amp;ion=1&amp;espv=2&amp;ie=UTF-8#safe=off&amp;q=port+forwarding+on+windows">-&gt; Google-Suche für: &#8222;Port forwarding on windows&#8220;</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>NHibernate vs EntityFramework</title>
		<link>http://robert-m.de/nhibernate-vs-entityframework/</link>
		
		<dc:creator><![CDATA[Robert]]></dc:creator>
		<pubDate>Fri, 21 Sep 2012 16:30:20 +0000</pubDate>
				<category><![CDATA[Persistenz]]></category>
		<guid isPermaLink="false">http://robert-m.de/?p=572</guid>

					<description><![CDATA[Google Trends trifft folgende Aussage: NHibernate so zu nutzen, dass es einem nicht ständig auf die Füße fällt, erscheint mir (rückblickend) nicht ganz einfach. Zumindest erinnere ich mich an viele, viele Stunden von Performance-Optimierung und Problemsuche. Sicher war der Grund meist mangelndes Wissen über die Funktionsweise von NHibernate. Jedoch gibt es deutlich mehr über NHibernate [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.google.de/trends/?q=Entity+Framework,+nHibernate&amp;ctab=0&amp;geo=all&amp;date=all&amp;sort=0">Google Trends</a> trifft folgende Aussage:</p>
<p><a href="http://www.google.de/trends/?q=Entity+Framework,+nHibernate&amp;ctab=0&amp;geo=all&amp;date=all&amp;sort=0"><img class="alignnone size-full wp-image-573" title="nHibernate-vs-ef" src="http://robert-m.de/wp-content/uploads/2012/09/nHibernate-vs-ef.png" alt="" width="589" height="300" srcset="http://robert-m.de/wp-content/uploads/2012/09/nHibernate-vs-ef.png 589w, http://robert-m.de/wp-content/uploads/2012/09/nHibernate-vs-ef-300x152.png 300w" sizes="(max-width: 589px) 100vw, 589px" /></a></p>
<p>NHibernate so zu nutzen, dass es einem nicht ständig auf die Füße fällt, erscheint mir (rückblickend) nicht ganz einfach. Zumindest erinnere ich mich an viele, viele Stunden von Performance-Optimierung und Problemsuche. Sicher war der Grund meist mangelndes Wissen über die Funktionsweise von NHibernate. Jedoch gibt es deutlich mehr über NHibernate zu wissen, als über Entity-Framework.  So besitzt NHibernate eine Unmenge von alternativen Möglichkeiten Mappings zu konfigurieren, Daten abzufragen und Optimierungen vorzunehmen. Mit der Menge der Möglichkeiten, steigt jedoch auch die Wahrscheinlichkeit das ORM ungünstig zu verwenden. Ist die NHibernate Erfahrung jedoch erst mal gesammelt, hat mein leistungsfähiges und ausgereiftes ORM zur Verfügung.</p>
<p>Ohne Vorwissen würde ich mich heute für Entity-Framework entscheiden, vor allem in der Hoffnung, dass die Einarbeitungskurve kürzer und flacher ist.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Marker interface für IoC Registrierung, Vorteile</title>
		<link>http://robert-m.de/marker-interface-fur-ioc-registrierung-vorteile/</link>
		
		<dc:creator><![CDATA[Robert]]></dc:creator>
		<pubDate>Tue, 12 Jun 2012 10:10:21 +0000</pubDate>
				<category><![CDATA[Entwicklung]]></category>
		<guid isPermaLink="false">http://robert-m.de/?p=550</guid>

					<description><![CDATA[IoC Frameworks kann unterschiedlich mitgeteilt werden, welche Komponenten registriert werden sollen. Mir am liebsten ist die Verwendung eines &#8222;marker interface&#8220; oder eines Attributes: Ein  &#8222;marker interaface&#8220; ist mir deshalb lieber, weil ich beim Bearbeiten einer Komponente sofort sehen kann ob und wie sie registriert ist. Geschieht die Registrierung hingegen non-obstrusive, also zum Beispiel per Konvention, [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>IoC Frameworks kann unterschiedlich mitgeteilt werden, welche Komponenten registriert werden sollen. Mir am liebsten ist die Verwendung eines &#8222;marker interface&#8220; oder eines Attributes:</p>
<p><a href="http://robert-m.de/wp-content/uploads/2012/06/IRegisterAsInstancePerLifetime.png"><img class="alignnone size-full wp-image-551" title="IRegisterAsInstancePerLifetime" src="http://robert-m.de/wp-content/uploads/2012/06/IRegisterAsInstancePerLifetime.png" alt="" width="435" height="23" srcset="http://robert-m.de/wp-content/uploads/2012/06/IRegisterAsInstancePerLifetime.png 435w, http://robert-m.de/wp-content/uploads/2012/06/IRegisterAsInstancePerLifetime-300x15.png 300w" sizes="(max-width: 435px) 100vw, 435px" /></a></p>
<p>Ein  &#8222;marker interaface&#8220; ist mir deshalb lieber, weil ich beim Bearbeiten einer Komponente sofort sehen kann ob und wie sie registriert ist. Geschieht die Registrierung hingegen non-obstrusive, also zum Beispiel per Konvention, muss nachgeschaut werden oder gewust werden, welche Komponenten registriert sind.</p>
<p>Die Registrierung erfolgt einfach so:</p>
<p><a href="http://robert-m.de/wp-content/uploads/2012/06/IRegisterAsInstancePerLifetimeBuilder.png"><img class="alignnone size-full wp-image-553" title="IRegisterAsInstancePerLifetimeBuilder" src="http://robert-m.de/wp-content/uploads/2012/06/IRegisterAsInstancePerLifetimeBuilder.png" alt="" width="490" height="42" srcset="http://robert-m.de/wp-content/uploads/2012/06/IRegisterAsInstancePerLifetimeBuilder.png 490w, http://robert-m.de/wp-content/uploads/2012/06/IRegisterAsInstancePerLifetimeBuilder-300x25.png 300w" sizes="(max-width: 490px) 100vw, 490px" /> </a></p>
<p>Ganzer-Quelltext:</p>
<ul>
<li><a title="AutofacCoreModule.cs" href="https://github.com/RobertMischke/TrueOrFalse/blob/master/src/TrueOrFalse.Core/Infrastructure/IoC/AutofacCoreModule.cs">AutofacCoreModule.cs</a></li>
<li><a title="CategorySearch.cs" href="https://github.com/RobertMischke/TrueOrFalse/blob/master/src/TrueOrFalse.Core/Domain/Classification/Category/Persistence/CategorySearch.cs">CategorySearch.cs</a></li>
</ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Flexible Preisfindung, Förderbeitrag</title>
		<link>http://robert-m.de/flexible-preisfindung-forderbeitrag/</link>
		
		<dc:creator><![CDATA[Robert]]></dc:creator>
		<pubDate>Sun, 12 Feb 2012 16:11:47 +0000</pubDate>
				<category><![CDATA[Richtig oder Falsch]]></category>
		<category><![CDATA[Zahlung/Preisfindung/Online-Payment]]></category>
		<guid isPermaLink="false">http://robert-m.de/?p=519</guid>

					<description><![CDATA[Einige Musiker und einige Startups teilen das gleiche Problem: Die Einnahmen reichen nicht zum Leben. Nun sind aber Käufer durchaus motiviert ihre Lieblings-Band oder ihr Lieblingsprodukt zu unterstützen und zu fördern. Hoffen sie doch auf das nächste Update oder das nächste Album. Wie können nun zahlungskräftige Kunden dazu motiviert werden, mehr zu zahlen? Bandcamp hat [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Einige Musiker und einige Startups teilen das gleiche Problem: Die Einnahmen reichen nicht zum Leben. Nun sind aber Käufer durchaus motiviert ihre Lieblings-Band oder ihr Lieblingsprodukt zu unterstützen und zu fördern. Hoffen sie doch auf das nächste Update oder das nächste Album. Wie können nun zahlungskräftige Kunden dazu motiviert werden, mehr zu zahlen? <a href="http://bandcamp.com/">Bandcamp</a> hat hierfür eine schöne Lösung. Käufer zahlen einen Mindestbetrag oder mehr. Wobei der Mindestbetragt so angelegt ist, dass die Einstiegshürde zum Kauf gesenkt wird. Praktisch sieht das so aus:</p>
<p>&nbsp;</p>
<p><a href="http://spacemanspiff.bandcamp.com/"><img class="alignnone size-full wp-image-520" title="or_more" src="http://robert-m.de/wp-content/uploads/2012/02/or_more.png" alt="" width="403" height="86" srcset="http://robert-m.de/wp-content/uploads/2012/02/or_more.png 403w, http://robert-m.de/wp-content/uploads/2012/02/or_more-300x64.png 300w" sizes="(max-width: 403px) 100vw, 403px" /></a></p>
<p>Das Bezahlformular:</p>
<p><a href="http://robert-m.de/wp-content/uploads/2012/02/name-your-price.png"><img class="alignnone size-full wp-image-521" title="name-your-price" src="http://robert-m.de/wp-content/uploads/2012/02/name-your-price.png" alt="" width="454" height="322" srcset="http://robert-m.de/wp-content/uploads/2012/02/name-your-price.png 454w, http://robert-m.de/wp-content/uploads/2012/02/name-your-price-300x212.png 300w" sizes="(max-width: 454px) 100vw, 454px" /></a></p>
<p>Ähnliches ist auch für Community Veranstaltungen oder Mitgliedsbeiträge von Vereinen denkbar.</p>
<p>Das funktioniert jedoch nur solange, wie der Käufer annimmt, dass der Anbieter geringe Einnahmen hat und förderungswürdig ist. Große Firmen wie Microsoft oder VW würden mit einem solchen Modell ihre Umsätze nicht steigern.</p>
<p>Noch konsequenter wird das Modell bei den Open-Spaces in Leipzig verfolgt, wo Teilnehmer Ihren Beitrag komplett frei wählen können ( <a href="http://netopenspace.de/2011/Teilnehmer.ashx">Teilnehmer-Liste mit Sponsoring Beträgen</a>). Hier werden Zahlungen sogar veröffentlicht, was sozialen Druck erzeugt, aber für Topzahler auch Prestige Gewinn ermöglicht. Ein Modell was in einem Umfeld von sehr gut Verdienenden, gut funktioniert, in anonymen Gruppen vermutlich jedoch an seine Grenzen gerät.</p>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Testgetrieben? Status quo</title>
		<link>http://robert-m.de/testgetrieben-status-quo/</link>
					<comments>http://robert-m.de/testgetrieben-status-quo/#comments</comments>
		
		<dc:creator><![CDATA[Robert]]></dc:creator>
		<pubDate>Wed, 16 Nov 2011 02:36:45 +0000</pubDate>
				<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Entwurf und Modellierung]]></category>
		<category><![CDATA[Testen]]></category>
		<guid isPermaLink="false">http://robert-m.de/?p=500</guid>

					<description><![CDATA[Ich war einmal Test Infected. Der von Kent Beck präsentierte Weg der Testgetriebenen Entwicklung war für mich Mantra, 90% Unit-Testabdeckung (test coverage) das Ziel. 2004 war das Buch für mich im doppelten Sinne ein Geschenk. Danke Dir Andreas! Danke Kent Beck! Viel war für mich plötzlich anders und Testgetrieben der richtige Weg; einleuchtend und schlüssig. 7 Jahre [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Ich war einmal <a href="http://c2.com/cgi/wiki?TestInfected">Test Infected</a>. Der von Kent Beck präsentierte Weg der Testgetriebenen Entwicklung war für mich Mantra, 90% Unit-Testabdeckung (test coverage) das Ziel. 2004 war das <a href="http://www.amazon.com/Test-Driven-Development-Kent-Beck/dp/0321146530">Buch</a> für mich im doppelten Sinne ein Geschenk. Danke Dir Andreas! Danke Kent Beck! Viel war für mich plötzlich anders und Testgetrieben der richtige Weg; einleuchtend und schlüssig.</p>
<p>7 Jahre später. Tests sind ein wesentlicher Teil des Entwicklungsprozesses geworden, jedoch ist Testgetriebene Entwicklung nun eher die Ausnahme. Bevor ich in die Tasten haue, nutze ich lieber Whiteboard oder Papier. Unit Tests machen zwar 10%-40% der Tests aus. Sie entstehen jedoch genauso oft begleitend oder im Nachgang zur Kodierung und nur manchmal zuerst. Mehr Raum nehmen Integrationstests ein.</p>
<p>Von 90% Testabdeckung bin ich abgekommen und sehe die Dinge pragmatischer: Ein größeres Projekt mit einer Testabdeckung von unter 50% (Integrationstestes + Unittests) würde ich vermuten, hat große Probleme. Testabdeckung ist sicherlich auch ein Qualitätsindiz. Jedoch bin ich bekehrt und sehe viele Situationen, in denen für alle Beteiligten, vom Auftraggeber bis zum Entwicklungsteam, der Aufwand für einen Test nicht die bestmögliche eingesetzte Zeit bedeutet.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://robert-m.de/testgetrieben-status-quo/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>#NOUG Fluent NHibernate – Nachtrag</title>
		<link>http://robert-m.de/noug-fluent-nhibernate-2-nachtrag/</link>
		
		<dc:creator><![CDATA[Robert]]></dc:creator>
		<pubDate>Mon, 25 Jul 2011 22:51:07 +0000</pubDate>
				<category><![CDATA[Gemeinwohloekonomie-DB]]></category>
		<guid isPermaLink="false">http://robert-m.de/?p=450</guid>

					<description><![CDATA[Nachtrag zur heutigen #NOUG Session: Links zum Quelltext und den Diagrammen: https://github.com/RobertMischke/Gemeinwohloekonomie-DB https://github.com/RobertMischke/Seedworks (oder per nuget: &#8222;Install-Package Seedworks.Persistence&#8220;) Die Diskussion im Nachgang war 3 mal länger als die eigentliche Session, wobei es zuletzt um CQRS in praktischer Anwendung ging. Sehr informativ und lehrreich! Leider ist das &#8222;Gemeinwohlökonomie-DB&#8220; Projekt kein guter CQRS Kandidat. Schade 🙂 Jörg [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Nachtrag zur heutigen <a href="http://online-usergroup.de/">#NOUG </a>Session:</p>
<p>Links zum Quelltext und den Diagrammen:</p>
<ul>
<li><a href="https://github.com/RobertMischke/Gemeinwohloekonomie-DB">https://github.com/RobertMischke/Gemeinwohloekonomie-DB</a></li>
<li><a href="https://github.com/RobertMischke/Seedworks">https://github.com/RobertMischke/Seedworks</a> (oder per nuget: &#8222;Install-Package Seedworks.Persistence&#8220;)</li>
</ul>
<p>Die Diskussion im Nachgang war 3 mal länger als die eigentliche Session, wobei es zuletzt um CQRS in praktischer Anwendung ging. Sehr informativ und lehrreich! Leider ist das &#8222;Gemeinwohlökonomie-DB&#8220; Projekt kein guter CQRS Kandidat. Schade <img src="https://s.w.org/images/core/emoji/12.0.0-1/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><a href="http://twitter.com/#!/joergpreiss">Jörg</a> hat angemerkt, dass das generische Repository durch <a href="http://nhforge.org/blogs/nhibernate/archive/2009/12/17/queryover-in-nh-3-0.aspx">QueryOver&lt;&gt;</a> obsolet ist. Ich werde prüfen ob &#8222;Seedworks.Persistance&#8220; gänzlich aus meiner Arbeit verschwinden wird. Wichtig ist mir eine alternative zum komfortablen Pager und die Möglichkeit eine Query-Specification in einer Websession zu halten.</p>
<p>Für mich hat sich der Abend dank des Feedbacks und der Diskussion sehr gelohnt. Danke an alle Teilnehmer und an <a href="http://twitter.com/#!/dtraub">Dennis Traub</a> für die Moderation und den CQRS Input! Sprechen und Vortragen möchte ich weiter üben und hoffe, dass ich mich noch deutlich verbessern kann.</p>
<p>Achso, noch zuletzt das ER Diagramm:</p>
<p><a href="http://robert-m.de/wp-content/uploads/2011/07/ER-Diagramm.png"><img class="alignnone size-full wp-image-451" title="ER-Diagramm" src="http://robert-m.de/wp-content/uploads/2011/07/ER-Diagramm.png" alt="" width="434" height="484" srcset="http://robert-m.de/wp-content/uploads/2011/07/ER-Diagramm.png 434w, http://robert-m.de/wp-content/uploads/2011/07/ER-Diagramm-269x300.png 269w" sizes="(max-width: 434px) 100vw, 434px" /></a></p>
<p>Der grün markierte Teil ist im aktuellen GitHub Repository vollständig umgesetzt.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>#NOUG Fluent NHibernate &#8211; Kontext</title>
		<link>http://robert-m.de/noug-fluent-nhibernate-1-kontext/</link>
		
		<dc:creator><![CDATA[Robert]]></dc:creator>
		<pubDate>Mon, 25 Jul 2011 16:22:50 +0000</pubDate>
				<category><![CDATA[Gemeinwohloekonomie-DB]]></category>
		<guid isPermaLink="false">http://robert-m.de/?p=437</guid>

					<description><![CDATA[Um für die heutige #noug Fluent-Nhibernate Session ein wenig Kontext bereitzustellen, wird ein reales Projekt verwendet. Das Projekt befindet sich noch in den Babyschühchen. Es handelt sich um eine Datenbank für Firmen, Personen, Politiker und Arbeitsgruppen, die die Gemeinwohlökonomie unterstützen. Die Datenbank umfasst zurzeit knapp 1000 Einträge und ist noch sehr einfach umgesetzt. Um einen [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Um für die heutige <a href="http://online-usergroup.de/termine.20110725.ashx">#noug Fluent-Nhibernate Session</a> ein wenig Kontext bereitzustellen, wird ein reales Projekt verwendet. Das Projekt befindet sich noch in den Babyschühchen.</p>
<p>Es handelt sich um eine Datenbank für Firmen, Personen, Politiker und Arbeitsgruppen, die die <a href="http://www.gemeinwohl-oekonomie.org/">Gemeinwohlökonomie</a> unterstützen. Die Datenbank umfasst zurzeit knapp 1000 Einträge und ist noch sehr einfach <a href="http://www.gemeinwohl-oekonomie.org/unterstutzende/unternehmen/">umgesetzt</a>.</p>
<p>Um einen Eindruck vom Projekt zu bekommen, hier zunächst 2 Mockups:</p>
<p><a href="http://robert-m.de/wp-content/uploads/2011/07/Startseite1.png"><img class="size-full wp-image-441 alignnone" title="Startseite" src="http://robert-m.de/wp-content/uploads/2011/07/Startseite1.png" alt="" width="525" height="476" srcset="http://robert-m.de/wp-content/uploads/2011/07/Startseite1.png 972w, http://robert-m.de/wp-content/uploads/2011/07/Startseite1-300x272.png 300w" sizes="(max-width: 525px) 100vw, 525px" /></a></p>
<p><a href="http://robert-m.de/wp-content/uploads/2011/07/Person-anlegen.png"><img class="alignnone size-full wp-image-443" title="Person-anlegen" src="http://robert-m.de/wp-content/uploads/2011/07/Person-anlegen.png" alt="" width="525" height="478" srcset="http://robert-m.de/wp-content/uploads/2011/07/Person-anlegen.png 972w, http://robert-m.de/wp-content/uploads/2011/07/Person-anlegen-300x273.png 300w" sizes="(max-width: 525px) 100vw, 525px" /></a></p>
<p>(Zum vergrössern, auf die Bilder klicken.)</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>#NOSSUED digitales Session Board</title>
		<link>http://robert-m.de/nossued-digitales-session-board/</link>
					<comments>http://robert-m.de/nossued-digitales-session-board/#comments</comments>
		
		<dc:creator><![CDATA[Robert]]></dc:creator>
		<pubDate>Sun, 17 Jul 2011 20:42:38 +0000</pubDate>
				<category><![CDATA[Kategorielos]]></category>
		<guid isPermaLink="false">http://robert-m.de/?p=430</guid>

					<description><![CDATA[Das digitale Session-Board war ein Highlight des .NET Open Space Süd. Insbesondere die Kinect-Unterstützung war extrem cool!  Doch verursachte die Technik auch ein wenig Einschränkung, denn Session-Vorschläge wurden digital eingebracht. In unserer Gruppe von Nerds, in der jeder Smartphone und/oder Notebook dabei hatte, keine Hürde. Fast. Doch muss ich eingestehen, dass meine Trägheit mich ein [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Das digitale Session-Board war ein Highlight des <a href="http://karlsruhe.netopenspace.de/2011/">.NET Open Space Süd</a>. Insbesondere die Kinect-Unterstützung war extrem cool!  Doch verursachte die Technik auch ein wenig Einschränkung, denn Session-Vorschläge wurden digital eingebracht. In unserer Gruppe von Nerds, in der jeder Smartphone und/oder Notebook dabei hatte, keine Hürde. Fast. Doch muss ich eingestehen, dass meine Trägheit mich ein wenig davon abgehalten hat, mich einzuloggen und eine  Session vorzuschlagen. Zwar waren alle Slots voll belegt und ich war mit den Themen sehr zufrieden, doch ich frage mich, ob vielleicht der eine oder andere deswegen zurückhaltender war. Die analoge Variante ist mir lieber, denn sie lädt jeden unmittelbar ein, wenn Stift und Zettel an ihm vorbei wandern.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://robert-m.de/nossued-digitales-session-board/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>An Kanban angelehnter workflow mit Jira</title>
		<link>http://robert-m.de/an-kanban-angelehnter-workflow-mit-jira/</link>
					<comments>http://robert-m.de/an-kanban-angelehnter-workflow-mit-jira/#comments</comments>
		
		<dc:creator><![CDATA[Robert]]></dc:creator>
		<pubDate>Wed, 13 Jul 2011 15:16:10 +0000</pubDate>
				<category><![CDATA[Prozesse]]></category>
		<guid isPermaLink="false">http://robert-m.de/?p=410</guid>

					<description><![CDATA[Folgendes Diagramm zeigt unseren Kanban ähnlichen Workflow in JIRA. Ein Issue geht durch folgende Abteilungen/Phasen: Planung, Analyse Entwicklung Test Dokumentation und Auslieferung Jede Phase ist geteilt in &#8222;Bereit für Bearbeitung&#8220; und &#8222;In Arbeit&#8220;. Praktisch sollte maximal ein Element &#8222;In Arbeit&#8220; sein, also einen WIP (Work Items in Progress) von 1 haben. Wir haben JIRA wenig [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Folgendes Diagramm zeigt unseren Kanban ähnlichen Workflow in <a href="http://www.atlassian.com/software/jira/?gclid=CN3A1ZGu_qkCFZYS3wodaAdXxw">JIRA</a>.</p>
<p><a href="http://robert-m.de/wp-content/uploads/2011/07/Jira-Worfklow2.png"><img class="alignnone size-full wp-image-414" title="Jira-Worfklow" src="http://robert-m.de/wp-content/uploads/2011/07/Jira-Worfklow2.png" alt="" width="532" height="554" srcset="http://robert-m.de/wp-content/uploads/2011/07/Jira-Worfklow2.png 532w, http://robert-m.de/wp-content/uploads/2011/07/Jira-Worfklow2-288x300.png 288w" sizes="(max-width: 532px) 100vw, 532px" /></a></p>
<p>Ein Issue geht durch folgende Abteilungen/Phasen:</p>
<ol>
<li>Planung, Analyse</li>
<li>Entwicklung</li>
<li>Test</li>
<li>Dokumentation und Auslieferung</li>
</ol>
<p>Jede Phase ist geteilt in &#8222;Bereit für Bearbeitung&#8220; und &#8222;In Arbeit&#8220;. Praktisch sollte maximal ein Element &#8222;In Arbeit&#8220; sein, also einen WIP (Work Items in Progress) von 1 haben.</p>
<p>Wir haben JIRA wenig restriktiv konfiguriert, alle Arbeitsphasen lassen sich direkt erreichen.</p>
<h2>Unterschiede zu KANBAN</h2>
<p>Kanban betrachtet Puffer als Verschwendung (waste) und probiert diese zu vermeiden. Werden für eine Phase die maximalen WIP (work items in progress) Werte überschritten, hält das System an. In unserem Worfklow ist jedoch jede Phase &#8222;Bereit für Arbeitssschritt&#8220; als Puffer gedacht. Wir arbeiten also gezielt mit Puffern und  nutzen diese auch, um Engpässe zu erkennen und einzugreifen.</p>
<p>Kanban setzt auf eine reines Pull Prinzp. Ist ein Arbeitselement in der Phase &#8222;Entwicklung&#8220; abgeschlossen, dann bleibt es in dieser Phase bis die nächste Phase das Arbeitselement aufnimmt (pulled). Stattdessen verwenden wir ein Push &#8211; Pull Prinzip. Ein Arbeitselement wird immer von einem Puffer geholt (Pull) und nach Fertigstellung auf einen anderen passenden Puffer gelegt (Push).</p>
<h2>Parallelen zu KANBAN</h2>
<p>Der Arbeitsfluss ist auch in unserem Vorgehen sehr gut einsehbar und transparent, Engpässe sind leicht zu identifizieren. Der Durchsatz einzelner Arbeitsphasen/Abteilungen für eine Kategorie von Tätigkeiten könnte gemessen  und optimiert werden. Auch wir sehen Puffer als Verschwendung und wollen diese möglichst klein halten.</p>
<h2>Praktische Umsetzung</h2>
<p>Die Einführung des Worfklows erfolgte mit Jira. Konkurrent nach einer Vorauswahl war zuletzt <a href="http://www.targetprocess.com/">TargetProcess</a>. In einem anderen Kontext konnte ich sehr positive Erfahrungen mit TargetProcess sammeln. Ausschlaggebend für JIRA war u.a. dessen umfangreiche Anpassbarkeit an unterschiedlichste Bedürfnisse &#8211; so erfassen wir für Arbeitselemente Beispielsweise auch Daten für die Rechnungslegung, eine Erweiterungen die in TargetProcess so nicht  möglich ist. Insgesamt ist der Eindruck soweit recht positiv, auch wenn die Nutzung des administrativen Bereichs intuitiver sein sollte. Die Einführung mit Datenmigration und Benutzerunterstützung und diversen Anpassungen dauerte insgesamt 50h.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://robert-m.de/an-kanban-angelehnter-workflow-mit-jira/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>String.Empty?</title>
		<link>http://robert-m.de/string-empty/</link>
					<comments>http://robert-m.de/string-empty/#comments</comments>
		
		<dc:creator><![CDATA[Robert]]></dc:creator>
		<pubDate>Mon, 23 May 2011 15:18:28 +0000</pubDate>
				<category><![CDATA[Unterhaltung]]></category>
		<guid isPermaLink="false">http://robert-m.de/?p=380</guid>

					<description><![CDATA[Welche Ausgabe erzeugt dieses Programm? Wie lässt sich das sinnvoll in ein Projekt einbauen? /via Stefan Noack]]></description>
										<content:encoded><![CDATA[<p>Welche Ausgabe erzeugt dieses Programm?</p>
<p>Wie lässt sich das sinnvoll in ein Projekt einbauen?</p>
<p><script src="https://gist.github.com/986764.js"> </script></p>
<p>/via <a href="http://soldering-irony.blogspot.com/">Stefan Noack</a></p>
]]></content:encoded>
					
					<wfw:commentRss>http://robert-m.de/string-empty/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Modelle einer Anwendung</title>
		<link>http://robert-m.de/modelle-einer-anwendung/</link>
					<comments>http://robert-m.de/modelle-einer-anwendung/#comments</comments>
		
		<dc:creator><![CDATA[Robert]]></dc:creator>
		<pubDate>Thu, 19 May 2011 21:01:48 +0000</pubDate>
				<category><![CDATA[Entwurf und Modellierung]]></category>
		<guid isPermaLink="false">http://robert-m.de/?p=363</guid>

					<description><![CDATA[Folgendes Diagramm zeigt verschiedene Modelle einer Anwendung. In jeder Kategorie viele Modelle Es ist wenig sinnvoll von dem Domänendatenmodell oder dem Viewmodell zu sprechen. Denn jeder View hat ein Viewmodell und in der Summe gibt es daher viele Viewmodelle. Genauso verhält es sich mit Domänendatenmodellen: Es lohnt sich zu partitionieren und viele Domänendatenmodelle zu haben. Eine [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Folgendes Diagramm zeigt verschiedene Modelle einer Anwendung.</p>
<p><a href="http://robert-m.de/wp-content/uploads/2011/05/Modelle2.png"><img class="alignnone size-full wp-image-375" title="Modelle" src="http://robert-m.de/wp-content/uploads/2011/05/Modelle2.png" alt="" width="496" height="826" srcset="http://robert-m.de/wp-content/uploads/2011/05/Modelle2.png 496w, http://robert-m.de/wp-content/uploads/2011/05/Modelle2-180x300.png 180w" sizes="(max-width: 496px) 100vw, 496px" /></a></p>
<h2>In jeder Kategorie viele Modelle</h2>
<p>Es ist wenig sinnvoll von <em>dem</em> Domänendatenmodell oder <em>dem</em> Viewmodell zu sprechen. Denn jeder View hat ein Viewmodell und in der Summe gibt es daher viele Viewmodelle. Genauso verhält es sich mit Domänendatenmodellen: Es lohnt sich zu partitionieren und viele Domänendatenmodelle zu haben. Eine Entität &#8222;Benutzer&#8220; kann in einer Vielzahl von Domänendatenmodellen verwendet werden.</p>
<h2>Abgrenzung zum Domänenmodell</h2>
<p>Bewusst wird der Begriff Domänen<em>daten</em>modell verwendet. Anders als Beispielsweise in DDD das Domänenmodell, hat das Domänendatenmodell keine Funktionalität. Die Datenzentrische Sichtweise auf ein Objektmodell steht jedoch nicht unbedingt im Widerspruch zu DDD. Sie kann als ergänzende Sicht verwendet werden. Für mich ist die Trennung von Funktionalität und Prozessen eine Vereinfachung und daher ist für mich das anämische Domänenmodell kein Antimuster ist, sondern ein gute Strategie.</p>
<h2></h2>
]]></content:encoded>
					
					<wfw:commentRss>http://robert-m.de/modelle-einer-anwendung/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>WCF &#8211; Tracing</title>
		<link>http://robert-m.de/wcf-tracing/</link>
		
		<dc:creator><![CDATA[Robert]]></dc:creator>
		<pubDate>Thu, 19 May 2011 14:30:25 +0000</pubDate>
				<category><![CDATA[NotizAnMich]]></category>
		<category><![CDATA[WCF]]></category>
		<guid isPermaLink="false">http://robert-m.de/?p=351</guid>

					<description><![CDATA[WCF Fehler außerhalb der Entwicklungsumgebung sind schwer nachzuvollziehen. Was hilft, ist die Aktivierung des Traces: Für diese Konfiguration wird der Log in eine Datei geschrieben: Mit dem MS Trace Viewer lässt sich detailliert die Verarbeitung analysieren: ﻿]]></description>
										<content:encoded><![CDATA[<p>WCF Fehler außerhalb der Entwicklungsumgebung sind schwer nachzuvollziehen.</p>
<p>Was hilft, ist die Aktivierung des Traces:</p>
<p><script src="https://gist.github.com/980716.js"> </script></p>
<p>Für diese Konfiguration wird der Log in eine Datei geschrieben:</p>
<p><a href="http://robert-m.de/wp-content/uploads/2011/05/TraceLog.png"><img class="size-full wp-image-352 alignnone" title="TraceLog" src="http://robert-m.de/wp-content/uploads/2011/05/TraceLog.png" alt="" width="533" height="198" srcset="http://robert-m.de/wp-content/uploads/2011/05/TraceLog.png 658w, http://robert-m.de/wp-content/uploads/2011/05/TraceLog-300x111.png 300w" sizes="(max-width: 533px) 100vw, 533px" /></a></p>
<p>Mit dem MS Trace Viewer lässt sich detailliert die Verarbeitung analysieren:</p>
<p><a href="http://robert-m.de/wp-content/uploads/2011/05/TraceViewer-e1305811446528.png"><img class="alignnone size-full wp-image-353" title="TraceViewer" src="http://robert-m.de/wp-content/uploads/2011/05/TraceViewer-e1305811446528.png" alt="" width="533" height="339" /></a></p>
<div id="_mcePaste" class="mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">﻿</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Was sollte da gesucht werden?</title>
		<link>http://robert-m.de/was-sollte-da-gesucht-werden/</link>
					<comments>http://robert-m.de/was-sollte-da-gesucht-werden/#comments</comments>
		
		<dc:creator><![CDATA[Robert]]></dc:creator>
		<pubDate>Sun, 08 May 2011 16:12:11 +0000</pubDate>
				<category><![CDATA[Unterhaltung]]></category>
		<guid isPermaLink="false">http://robert-m.de/?p=344</guid>

					<description><![CDATA[Ob er gefunden hat, was er wollte? &#160; &#160;]]></description>
										<content:encoded><![CDATA[<p>Ob er gefunden hat, was er wollte?</p>
<p><a href="http://robert-m.de/wp-content/uploads/2011/05/Sql-Injection-Safe.png"><img class="alignnone size-full wp-image-345" title="Sql-Injection-Safe" src="http://robert-m.de/wp-content/uploads/2011/05/Sql-Injection-Safe.png" alt="" width="552" height="197" srcset="http://robert-m.de/wp-content/uploads/2011/05/Sql-Injection-Safe.png 552w, http://robert-m.de/wp-content/uploads/2011/05/Sql-Injection-Safe-300x107.png 300w" sizes="(max-width: 552px) 100vw, 552px" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>http://robert-m.de/was-sollte-da-gesucht-werden/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Assert(Lesbarkeit und Verständlichkeit)</title>
		<link>http://robert-m.de/assert-lesbarkeit-und-verstaendlichkeit/</link>
					<comments>http://robert-m.de/assert-lesbarkeit-und-verstaendlichkeit/#comments</comments>
		
		<dc:creator><![CDATA[Robert]]></dc:creator>
		<pubDate>Mon, 28 Mar 2011 11:28:13 +0000</pubDate>
				<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Testen]]></category>
		<guid isPermaLink="false">http://robert-m.de/?p=329</guid>

					<description><![CDATA[Was ist besser, “Assert.That(foo.Bar, Is.EqualTo(&#8222;bla&#8220;)“ oder Foo.Bar.Should.Be.EqualTo(&#8222;bla&#8220;)? Handelt es sich um eine Geschmacksfrage oder gibt es eine herleitbare Antwort? Was bedeutet besser überhaupt? Schneller zu lesen? Schneller zu schreiben? Hier zumindest hoffe ich auf Konsens: Lesbarkeit und Verständlichkeit von Software sind, wenn es um Syntax geht, entscheidend. Unverständliche Software steht für teure Wartung und schlechte [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Was ist besser, “Assert.That(foo.Bar, Is.EqualTo(&#8222;bla&#8220;)“ oder Foo.Bar.Should.Be.EqualTo(&#8222;bla&#8220;)? Handelt es sich um eine Geschmacksfrage oder gibt es eine herleitbare Antwort? Was bedeutet besser überhaupt? Schneller zu lesen? Schneller zu schreiben? Hier zumindest hoffe ich auf Konsens: Lesbarkeit und Verständlichkeit von Software sind, wenn es um Syntax geht, entscheidend. Unverständliche Software steht für teure Wartung und schlechte Evolvierbarkeit. Die Frage nach dem Besser ist also in diesem Fall die Frage nach dem schneller-zu-erfassen.</p>
<p>Leider ist hier eine logische Argumentation de facto am Ende: Denn was schneller zu erfassen ist, ist ohne Studie eine subjektive Einschätzung, die beeinflusst ist von Prägung und ästhetischem Empfinden. Nun fehlen subjektiven Einschätzungen nicht die Argumente, zählen wir sie auf:</p>
<p>Pro Assert.That():</p>
<ul>
<li>Assert.That stellt das wichtigste voran u. ist damit schneller zu erfassen. Das “wichtigste zuerst” ist in jedem beschreibenden und auf Verständlichkeit ausgelegten Schreibstil eine Grundregel.</li>
<li>Assert.That ist ein visueller Anker.</li>
<li>Bei Verwendung von Extensions Methods muss erst &#8222;weit&#8220; gelesen werden bis klar wird, dass es sich um eine Assertion handelt.</li>
</ul>
<p>Con Assert.That():</p>
<ul>
<li>Assert.That erzeugt visuelles Rauschen und bindet Aufmerksamkeit</li>
<li>Schon aus der Struktur des Quelltexts sollte klar ersichtlich sein, dass es sich um eine Assertion handelt.</li>
<li>Assert.That verlangsamt die Lesegeschwindigkeit, da es immer erst weggefiltert werden muss.</li>
</ul>
<p>Wichtig zu bemerken: Verwendet man Mspec, verliert Assert.That seinen (behaupteten) Mehrwert, da die Assertion deutlich durch die Struktur angezeigt wird: Aber nicht jeder verwendet Mspec und wer als Mspec Nutzer argumentiert, sollte sich dessen bewusst sein.</p>
<p>Selbst wenn die Wissenschaft (vermutlich die Wahrnehmungspsychologie) herausfände, das eine sei besser als das andere, müssten wir dann gegen unsere Geschmack entscheiden? Nein! Denn Wissenschaft ist erschreckend fehlbar und relativ, und seinem Geschmack zu folgen, ist wichtiger als Mikrooptimierung. Ob Assert.That oder ExtensionMethod kann selbst im Team ausnahmsweise eine Konvention sein, die jeder für sich individuell entscheiden kann, denn nicht einmal hier lohnt die Konsistenz.</p>
<p>P.s: Ein dritte alternative sind Extension Methods in Verwendung mit Assert.That, beispielsweise: Assert.That(foo.Bar.IsEqualTo(„bla“)).</p>
]]></content:encoded>
					
					<wfw:commentRss>http://robert-m.de/assert-lesbarkeit-und-verstaendlichkeit/feed/</wfw:commentRss>
			<slash:comments>11</slash:comments>
		
		
			</item>
		<item>
		<title>Realität abbilden</title>
		<link>http://robert-m.de/realitaet-abbilden/</link>
		
		<dc:creator><![CDATA[Robert]]></dc:creator>
		<pubDate>Mon, 21 Mar 2011 13:04:06 +0000</pubDate>
				<category><![CDATA[Entwurf und Modellierung]]></category>
		<guid isPermaLink="false">http://robert-m.de/?p=322</guid>

					<description><![CDATA[Eines der Hauptziele von Objekt-Orientierung ist es, die Realität effektiv zu abstrahieren und zu modellieren. Eine Konzept das mir fehlerhaft scheint, denn statt die Realität abzubilden, verändern Softwaresysteme diese! Statt Abbilden Neues schaffen! Abläufe und Tätigkeiten verändern sich, wenn sie durch Software gestützt werden. Nur oberflächlich ist elektronische Buchführung vergleichbar mit einer Analogen, denn der [&#8230;]]]></description>
										<content:encoded><![CDATA[<p lang="de">Eines der Hauptziele von Objekt-Orientierung ist es, die Realität effektiv zu abstrahieren und zu modellieren. Eine Konzept das mir fehlerhaft scheint, denn statt die Realität abzubilden, verändern Softwaresysteme diese!</p>
<h2>Statt Abbilden Neues schaffen!</h2>
<p lang="de">Abläufe und Tätigkeiten verändern sich, wenn sie durch Software gestützt werden. Nur oberflächlich ist elektronische Buchführung vergleichbar mit einer Analogen, denn der Nutzer führt gänzlich andere Tätigkeiten aus, steht anderen Problemen gegenüber und hat ein anderes Anforderungsprofil!</p>
<p lang="de">Nun gibt es sicher Software die weitestgehend probiert ein reales System abzubilden: Das mag der Zettelkasten sein oder vielleicht auch ein Kanbanboard &#8211; aber selbst diese einfachen Softwarelösungen gehen schnell über das hinaus, was das ursprüngliche reale System zu leisten vermag. Das moderne Textverarbeitungsprogramm ist eben nicht eine Abbildung einer Schreibmaschine, sondern bildet eine ganz neue Kategorie von Werkzeug.</p>
<p lang="de">Verallgemeinern lässt sich: Die Mehrheit aller Softwaresysteme leistet etwas, das physische analoge Systeme nicht zu leisten im Stande sind und sind deswegen eben nicht Abbildungen von realen Prozessen und Systemen, <strong>sondern sind Neuerfindungen</strong>.</p>
<h2>OOAD scheint überholt</h2>
<p lang="de">So ist es überraschend wenn man überlegt, dass OOAD (auch <a href="http://domaindrivendesign.org/">DDD</a>) vor allem Techniken bereitstellt, um das Vorhandene zu modellieren, statt die Neuerfindung in den Vordergrund zu stellen. Denn hierum geht es bei der Entwicklung von Software: Statt der Ist-Erhebung in Objektmodellen, geht es doch beim Entwurf (en:Design) um die Soll-Suche, die sich am leichtesten in Prozessen erfassen läst.</p>
<h2>Fazit und Ausblick</h2>
<p lang="de">OOAD ist der quasi Standard, mit dem sich jeder von uns schon auseinandergesetzt hat und der in unterschiedlichem Ausmaß unsere Arbeit prägt. Wir sollten uns jedoch darüber bewusst sein, dass OOAD (sehr) viele Problemzonen hat und praktisch eher eine Inspirationsquelle und weniger konkrete Anleitung für ein Vorgehen sein kann.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
