<?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>Marcin Floryan</title>
	<atom:link href="http://marcin.floryan.pl/feed" rel="self" type="application/rss+xml" />
	<link>http://marcin.floryan.pl</link>
	<description>working with people, working with code</description>
	<lastBuildDate>Wed, 25 Aug 2010 18:08:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>WPF drop shadow with Windows DWM API</title>
		<link>http://marcin.floryan.pl/blog/2010/08/wpf-drop-shadow-with-windows-dwm-api</link>
		<comments>http://marcin.floryan.pl/blog/2010/08/wpf-drop-shadow-with-windows-dwm-api#comments</comments>
		<pubDate>Wed, 25 Aug 2010 18:08:03 +0000</pubDate>
		<dc:creator>Marcin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://marcin.floryan.pl/?p=406</guid>
		<description><![CDATA[Ever since I started writing windows applications, even though most of them were not in C or C++, almost every time I would refer back to Charles Petzold&#8217;s Programming Windows. Whether it was Visual Basic, Delphi, .NET or even Java, there would eventually come a point, where the only way to achieve something would be [...]]]></description>
			<content:encoded><![CDATA[<p>Ever since I started writing windows applications, even though most of them were not in C or C++, almost every time I would refer back to Charles Petzold&#8217;s <a href="http://www.charlespetzold.com/pw5/index.html" target="_blank"><strong>Programming Windows</strong></a>. Whether it was Visual Basic, Delphi, .NET or even Java, there would eventually come a point, where the only way to achieve something would be to dig into the Win32 API and hook into the <a href="http://en.wikipedia.org/wiki/Message_loop_in_Microsoft_Windows">message loop</a> directly.</p>
<p>I don&#8217;t know why I thought writing a WPF application in .NET 4 for Windows 7 would be any different.</p>
<p>If you start with a default empty window it is rendered nicely with a drop shadow around it (like all other windows).</p>
<p style="text-align: left;"><img class="size-full wp-image-407 aligncenter" title="WPF-Window" src="http://marcin.floryan.pl/wp-content/uploads/2010/08/WPF-Window.png" alt="" width="572" height="481" /></p>
<p style="text-align: left;">However, I wanted to achieve an alternative layout, without the frame but with the shadow still on. Unfortunately setting <code>WindowStyle="None"</code> creates a rather blunt rectangle.</p>
<p style="text-align: left;"><img class="aligncenter size-medium wp-image-408" title="WPF-Window-no-frame" src="http://marcin.floryan.pl/wp-content/uploads/2010/08/WPF-Window-no-frame-300x197.png" alt="" width="300" height="197" />There is always the option to do something inside the client window to pretend your window actually does have a shadow but it is somewhat messy and just not as pretty (or perhaps I wasn&#8217;t ready to tinker with the Canvas and Effects enough). So will say it also comes with a performance penalty (since you would require transparent background).</p>
<p style="text-align: left;"><img class="aligncenter size-full wp-image-409" title="WPF-Window-some-transparency" src="http://marcin.floryan.pl/wp-content/uploads/2010/08/WPF-Window-some-transparency.png" alt="" width="320" height="320" /></p>
<p style="text-align: left;">Finally, with a little bit of Interop spice by calling <a href="http://msdn.microsoft.com/en-us/library/aa969540(VS.85).aspx">Desktop Window Manager</a> APIs I got the desired effect:</p>
<p style="text-align: left;"><img class="aligncenter size-full wp-image-411" title="WPF-Window-native-shadow" src="http://marcin.floryan.pl/wp-content/uploads/2010/08/WPF-Window-native-shadow.png" alt="" width="426" height="258" />Mind you it only works if DWM is available (that is in Vista and Windows7) but I&#8217;m fine with that.</p>
<p style="text-align: left;">Here is the required code:</p>
<p><small><code>[DllImport("dwmapi.dll", PreserveSig = true)]<br />
public static extern int DwmSetWindowAttribute(IntPtr hwnd, int attr, ref int attrValue, int attrSize);</code></small></p>
<p><small><code>[DllImport("dwmapi.dll")]<br />
public static extern int DwmExtendFrameIntoClientArea(IntPtr hWnd, ref Margins pMarInset);</code></small></p>
<p><small><code>void ShellWindow_SourceInitialized(object sender, EventArgs e)<br />
{<br />
var helper = new WindowInteropHelper(this);<br />
int val = 2;<br />
DwmSetWindowAttribute(helper.Handle, 2, ref val, 4);<br />
var m = new Margins<br />
{<br />
bottomHeight = -1,<br />
leftWidth = -1,<br />
rightWidth = -1,<br />
topHeight = -1<br />
};</code></p>
<p></small></p>
<p><small><code> </code><span style="font-family: monospace;">DwmExtendFrameIntoClientArea(helper.Handle, ref m);</span><br />
</small><small><code> }</code></small></p>
<p>If you want to dig deeper there is <a href="http://code.msdn.microsoft.com/WPFShell">WPF Shell Integration Library</a> that does some of this heavy lifting for you.</p>
<p>P.S. Seems like Java folks have <a href="http://www.milewski.ws/2009/05/vista-glass-in-swt-application-continuation/">similar challenges</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://marcin.floryan.pl/blog/2010/08/wpf-drop-shadow-with-windows-dwm-api/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Is anything wrong with Scrum?</title>
		<link>http://marcin.floryan.pl/blog/2010/07/is-anything-wrong-with-scrum</link>
		<comments>http://marcin.floryan.pl/blog/2010/07/is-anything-wrong-with-scrum#comments</comments>
		<pubDate>Wed, 21 Jul 2010 13:00:09 +0000</pubDate>
		<dc:creator>Marcin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://marcin.floryan.pl/?p=393</guid>
		<description><![CDATA[If there is a problem with Scrum surely this must be an example of one of the main reasons:

I&#8217;m not sure I know where to start trying to pick this out&#8230; sadly this is just one of the many examples.
]]></description>
			<content:encoded><![CDATA[<p>If there is a problem with Scrum surely this must be an example of one of the main reasons:<br />
<img class="size-full wp-image-392 alignnone" title="scummaster-job-advert-problem" src="http://marcin.floryan.pl/wp-content/uploads/2010/07/scummaster-job-advert-problem.png" alt="" width="612" height="668" /></p>
<p>I&#8217;m not sure I know where to start trying to pick this out&#8230; sadly this is just one of the many examples.</p>
]]></content:encoded>
			<wfw:commentRss>http://marcin.floryan.pl/blog/2010/07/is-anything-wrong-with-scrum/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Certified ScrumMaster</title>
		<link>http://marcin.floryan.pl/blog/2010/07/certified-scrummaster</link>
		<comments>http://marcin.floryan.pl/blog/2010/07/certified-scrummaster#comments</comments>
		<pubDate>Tue, 20 Jul 2010 23:18:23 +0000</pubDate>
		<dc:creator>Marcin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false">http://marcin.floryan.pl/?p=363</guid>
		<description><![CDATA[Before we go any further let me clarify one aspect. I fully subscribe to Uncle Bob&#8217;s view that certification can be a waste of time.
I have recently had an opportunity to take some extra training and, following very good past experience with training from Skills Matter, I decided to pick a Certified ScrumMaster training from [...]]]></description>
			<content:encoded><![CDATA[<p>Before we go any further let me clarify one aspect. I fully subscribe to Uncle Bob&#8217;s view that <a title="Certification: Don't Waste Your Time! " href="http://blog.objectmentor.com/articles/2010/04/27/certification-dont-waste-your-time" target="_blank">certification can be a waste of time</a>.</p>
<p>I have recently had an opportunity to take some extra training and, following very good past experience with training from <a title="Skills Matter website" href="http://skillsmatter.com/" target="_blank">Skills Matter</a>, I decided to pick a<em> <a href="http://skillsmatter.com/partner/agile-scrum/scrum-alliance" target="_blank">Certified ScrumMaster training</a></em> from their offer.</p>
<p>I have been doing Scrum for over a year now so I felt I have had some exposure and a little bit of knowledge of the subject. I have also witnessed some of the <em>conversations</em> in the community of advantages and disadvantages of Scrum as well as of alternatives such as (some will say) Kanban. CSM programme itself has also caused<em> a bit of controversy</em>.</p>
<p>I&#8217;m a pretty inquisitive person so decided this would be an excellent opportunity to get a first hand experience, gain better understanding and learn. I was also interested to meet <a href="http://www.michaelvizdos.com/" target="_blank">Mike Vizdos</a> whom I have heard of before through his witty Chicken &amp; Pig cartoons at <a href="http://www.implementingscrum.com/" target="_blank">http://www.implementingscrum.com/</a></p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-371" title="061106-scrumtoon" src="http://marcin.floryan.pl/wp-content/uploads/2010/07/061106-scrumtoon.jpg" alt="You suck. And that makes me sad." width="625" height="220" /></p>
<p>If I started a little apprehensive it faded away very quickly. Mike has a teaching style I really enjoy. He is passionate, energetic and enthusiastic without being patronising . He also demonstrated a good dose of pragmatism. His training was clearly rooted in hands-on experience and sprinkled with many interesting and relevant &#8220;was-stories&#8221;.</p>
<p>My most important take-away will certainly be the way in which Mike deliberately, consistently and explicitly applied the coaching and mentoring skills essential for any ScrumMaster in his training. He took the entire group of 17 people in the course on an accelerated journey through<strong> forming, storming, norming</strong> &amp;<strong> performing</strong>. And guess what, it worked.</p>
<p>What I also liked about Mike is that he was open and honest about Scrum without compromising his integrity as a Certified Scrum Trainer.</p>
<p>It was an interesting experience to see some of the common <strong>misconceptions</strong> about the ScrumMaster role. The most prominent were perhaps that:</p>
<ul>
<li><em>ScrumMaster is just another fancy name for a Project Manager</em>
<ul>
<li>SM does not replace a PM and a PM on a project does not automatically become a SM</li>
</ul>
</li>
<li><em>S</em><em>crumMaster is an additional role anyone can perform</em>
<ul>
<li>To be done well, this is a full-time job and only on one team</li>
</ul>
</li>
<li><em>ScrumMaster is the guardian of the process</em>
<ul>
<li>What process?</li>
</ul>
</li>
<li><em>ScrumMaster is present at and runs all stand-up meetings </em>
<ul>
<li>stand-up meetings are for and are a responsibility of the team</li>
</ul>
</li>
<li><em>ScrumMaster is responsible for producing charts and creating process documentation</em>
<ul>
<li>What documentation? Who are the charts for?</li>
</ul>
</li>
</ul>
<p><a href="http://www.flickr.com/photos/denniswong/2406135310/"><img class="alignright size-medium wp-image-369" title="certificates-by-dennis-wong-flickr" src="http://marcin.floryan.pl/wp-content/uploads/2010/07/certificates-by-dennis-wong-flickr-300x200.jpg" alt="" width="300" height="200" /></a>I can now re-iterate a <em>Certified ScrumMaster</em> is certified or, in other words, simply <strong>confirmed</strong> to have <strong>attended the two day training</strong>. Is that enough to be a ScrumMaster on a Scrum team &#8211; yes. Is it useful &#8211; yes. It is essential &#8211; no. Does that make one a good (or a better) ScrumMaster &#8211; definitely not. Since the pivotal role of a ScrumMaster is to <strong>work with people</strong> the only way to become good and competent is to practice, practice and practice and go through many deliberate learning cycles.</p>
<p>Also, it does make a difference, who your trainer is. I was lucky (or picked smart).</p>
<p><em>Thank you Mike for this enlightening experience, it was by no means a waste of time.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://marcin.floryan.pl/blog/2010/07/certified-scrummaster/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hours of remaining effort</title>
		<link>http://marcin.floryan.pl/blog/2010/07/hours-of-remaining-effort</link>
		<comments>http://marcin.floryan.pl/blog/2010/07/hours-of-remaining-effort#comments</comments>
		<pubDate>Mon, 19 Jul 2010 22:46:34 +0000</pubDate>
		<dc:creator>Marcin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://marcin.floryan.pl/?p=198</guid>
		<description><![CDATA[Admittedly it was @PDarral who pointed this out to me. I was never comfortable with the idea myself either. It&#8217;s sprint burndown charts that use &#8220;Hours of remaining effort&#8221; on the vertical axis.
The Scrum alliance itself give the following definition for sprint burndown chart:
A sprint burndown chart (or &#8220;sprint burndown graph&#8221;) depicts the total  [...]]]></description>
			<content:encoded><![CDATA[<p>Admittedly it was <a href="http://twitter.com/PDarrall" target="_blank">@PDarral</a> who pointed this out to me. I was never comfortable with the idea myself either. It&#8217;s <strong>sprint burndown charts</strong> that use &#8220;<strong>Hours of remaining effort</strong>&#8221; on the vertical axis.</p>
<p>The Scrum alliance itself give the following <a href="http://www.scrumalliance.org/articles/39-glossary-of-scrum-terms#1116">definition</a> for sprint burndown chart:</p>
<blockquote><p>A sprint burndown chart (or &#8220;sprint burndown graph&#8221;) depicts the total  task hours remaining per day. This shows you where your team stands  regarding completing the tasks that comprise the product backlog items  that achieve the goals of the sprint. The X-axis represents days in the  sprint, while the Y-axis is effort remaining (usually in ideal  engineering hours).</p></blockquote>
<p>Mike Cohn too, <a href="http://www.mountaingoatsoftware.com/scrum/sprint-backlog">gives an example</a>, where effort remaining is tracked in hours. Scrum for Team System (STS) for Microsoft&#8217;s TFS provides a picture along the similar lines:</p>
<p><a href="http://marcin.floryan.pl/wp-content/uploads/2010/07/scrum-burndown-chart-tfs.png"><img class="alignnone size-full wp-image-355" title="scrum-burndown-chart-tfs" src="http://marcin.floryan.pl/wp-content/uploads/2010/07/scrum-burndown-chart-tfs.png" alt="" width="514" height="326" /></a></p>
<p>Having taught physics for a while and being an engineer I can&#8217;t help myself to think a graph like this ultimately represents <strong>time vs time</strong>. So long as we don&#8217;t approach the speed of light time goes at a pretty constant rate therefore the only correct line in the graph would be a straight line.</p>
<p>I know, it&#8217;s not clock hours, it&#8217;s remaining effort (ideal hours) and we are tracking our true progress against estimated time therefore not having a straight line should be OK. Still, to maintain the burndown chart we have to track progress and with a graph like that is needs to be <em>progress in hours</em>. Yet as people who grow and learn a particular perception of time we use clocks to track those hours. So when we record time we usually won&#8217;t think &#8220;Well, today in my 8 hour day I did only 4.5 ideal hours of my estimate&#8221;. It is just too easy to game the system as well &#8220;If I don&#8217;t tweak the numbers it will look as if I only did 2 hours yesterday&#8221;. For good, confident Scrum teams this will not be an issue. For forming and storming teams the temptation might be too big. It also provides a temptation for management (even though sprint burndown chart is solely a tool for the team) to say &#8220;You guys have only 5 extra hours left it seems, with a bit of over time you&#8217;ll be done on time&#8221;.</p>
<p>My answer to the problem is simple &#8211; although it requires some more discipline in analysis &#8211; break your stories down and track story points also in the sprint burndown chart.</p>
<p>With these thoughts I was glad to listen to <a href="http://www.two-sdg.demon.co.uk/curbralan/kevlin.html">Kevlin&#8217;s Henney</a> <a href="http://streaming.ndc2010.no/tcs/?id=1272299E-1DD1-4C11-B7A3-EBDE5B11A5B7">talk at NDC 2010</a> who made some further remarks along the same lines.</p>
<ul>
<li>Time against time is a utilisation graph &#8211; not what we meant to be plotting</li>
<li>We end up logging the amount of work we did &#8211; so just proved we are using 7 hours of the day as we said we would</li>
<li>Kevlin is against plotting time against time at all because it gives false precision</li>
<li>With 2 weeks iteration there are only 8 points of reference (8 working days) &#8211; not statistically significant for hourly estimates</li>
<li><strong>Visualise items of work left to complete</strong></li>
</ul>
<p>I&#8217;m glad Jeff Sutherland also <a href="http://scrum.jeffsutherland.com/2009/04/sprint-burndown-by-hours-or-by-story.html">recommends burning story points</a>.</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;">http://www.quinny.com/ot-en/strollers/buzz-3</div>
]]></content:encoded>
			<wfw:commentRss>http://marcin.floryan.pl/blog/2010/07/hours-of-remaining-effort/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The years of experiece fallacy</title>
		<link>http://marcin.floryan.pl/blog/2010/07/the-years-of-experiece</link>
		<comments>http://marcin.floryan.pl/blog/2010/07/the-years-of-experiece#comments</comments>
		<pubDate>Thu, 15 Jul 2010 10:19:16 +0000</pubDate>
		<dc:creator>Marcin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[recruitment]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://marcin.floryan.pl/?p=348</guid>
		<description><![CDATA[I&#8217;m sure you have, many times, seen recruitment for software development positions that expected candidates to have x number of years experience with a particular technology. Best if it&#8217;s a litany of technologies (ignore when they ask for 5 years with a technology that has only been out for 2). If you need a developer [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/beta500/97819986/"><img class="alignright size-medium wp-image-349" title="typewriter-by-500CPM-from-flickr" src="http://marcin.floryan.pl/wp-content/uploads/2010/07/typewriter-by-500CPM-from-flickr-300x199.jpg" alt="Photo by 500CPM" width="300" height="199" /></a>I&#8217;m sure you have, many times, seen recruitment for software development positions that expected candidates to have <em>x</em> number of years experience with a particular technology. Best if it&#8217;s a litany of technologies (ignore when they ask for 5 years with a technology that has only been out for 2). If you need a developer that&#8217;s what you do. If you&#8217;re a recruitment agent that&#8217;s all you can do (OK, with some exceptions).</p>
<p>Ultimately, employers who state such requirements make one fundamental mistake. They think the <strong>only factor limiting how quickly they create software </strong>is <strong>how quickly their developers can type</strong>.</p>
<p>Yes, if you have worked with NHibernate for 2 years you will write the mapping file more quickly and you might already know what fetch strategy to use. You will not, however, deliver good, valuable software more quickly. The speed at which you type <strong>has never been</strong>, is not, and I don&#8217;t think will ever be a limiting factor, ever. It&#8217;s like thinking Picasso would have created more works of art if only he could have made his <strong>brush strokes more quickly,</strong> or that Pollock would have made a bigger impact on the art world if he could pour paint more quickly. Wrong.</p>
<p>There are many other things to look for in a good developer (more on that another time perhaps) but for now, start with people who are <strong>smart and get things done</strong> not the ones who have experienced a specific technology for more years and thus can write the code for that technology more quickly.</p>
]]></content:encoded>
			<wfw:commentRss>http://marcin.floryan.pl/blog/2010/07/the-years-of-experiece/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
