<?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>WO Central Developers</title>
	<atom:link href="http://blog.wocentral.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.wocentral.com</link>
	<description>Design, Code, Test . . . Repeat?</description>
	<lastBuildDate>Tue, 26 Jan 2010 22:25:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Edit and Continue under 64-bit</title>
		<link>http://blog.wocentral.com/2010/01/26/edit-and-continue-under-64-bit/</link>
		<comments>http://blog.wocentral.com/2010/01/26/edit-and-continue-under-64-bit/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 22:25:55 +0000</pubDate>
		<dc:creator>Jim McKeeth</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[Edit and Continue]]></category>
		<category><![CDATA[visual studio]]></category>

		<guid isPermaLink="false">http://blog.wocentral.com/?p=57</guid>
		<description><![CDATA[By default Visual Studio does not allow Edit and Continue for Silverlight or 64-bit applications.  Since we all have 64-bit Windows 7 that means having a Platform Target of Any CPU generates 64-bit binaries when debugging.  So when you try to edit while debugging you get this familiar warning:

If you change the Platform Target under [...]]]></description>
			<content:encoded><![CDATA[<p>By default Visual Studio does not allow Edit and Continue for Silverlight or 64-bit applications.  Since we all have 64-bit Windows 7 that means having a Platform Target of <em>Any CPU </em>generates 64-bit binaries when debugging.  So when you try to edit while debugging you get this familiar warning:</p>
<p><img class="aligncenter size-full wp-image-59" title="Changes to 64-bit applications are not allowed" src="http://blog.wocentral.com/wp-content/uploads/2010/01/Changes-to-64-bit-applications-are-not-allowed.png" alt="Changes to 64-bit applications are not allowed" width="543" height="239" /></p>
<p>If you change the<strong> Platform Target</strong> under <em>Build properties</em> on your project to<strong> x86</strong> instead of <em>Any CPU</em> for the Debug configuration then you can get Edit and Continue support.</p>
<p><a href="http://blog.wocentral.com/wp-content/uploads/2010/01/Platform-target-x86.png"><img class="aligncenter size-full wp-image-67" title="Platform target = x86" src="http://blog.wocentral.com/wp-content/uploads/2010/01/Platform-target-x86.png" alt="Platform target = x86" width="696" height="421" /></a></p>
<p>Since our automated builds use the <strong>Release </strong>configuration this shouldn&#8217;t cause any trouble for our automated builds, but it makes debugging a lot easier.  I&#8217;ve done this for a while and it doesn&#8217;t seem to be changing the behavior any, but it just keep in mind that it might have slightly different performance so could impact the debugging on some issues.  It also depends on what kind of applications you write, so act responsibly.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wocentral.com/2010/01/26/edit-and-continue-under-64-bit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Technical Screening: Boxing</title>
		<link>http://blog.wocentral.com/2009/12/04/technical-screening-boxing/</link>
		<comments>http://blog.wocentral.com/2009/12/04/technical-screening-boxing/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 08:00:53 +0000</pubDate>
		<dc:creator>bthoman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://blog.wocentral.com/?p=17</guid>
		<description><![CDATA[I will be diving into a few questions that we use in our technical screenings for the WO Central development team.
Must a value type be boxed for a call to Object.GetType()?
To investigate this I will be using a struct (a struct is a value type). Take the following struct as an example.


struct Person
{
   [...]]]></description>
			<content:encoded><![CDATA[<p>I will be diving into a few questions that we use in our technical screenings for the WO Central development team.</p>
<h4>Must a value type be boxed for a call to Object.GetType()?</h4>
<p>To investigate this I will be using a struct (a struct is a value type). Take the following struct as an example.</p>
<blockquote>
<pre name="code" class="c-sharp:nogutter">
struct Person
{
    public string FirstName;
    public string LastName; 

    public override string ToString()
    {
        return FirstName + " " + LastName;
    }
}</pre>
</blockquote>
<p>That&#8217;s pretty simple.</p>
<p>Now let&#8217;s make a call to GetType().</p>
<blockquote>
<pre name="code" class="c-sharp:nogutter">
Person p;
p.FirstName = "Brian";
p.LastName = "Thoman"; 

Type t = p.GetType();</pre>
</blockquote>
<p>The C# compiler produces the following IL for the call to GetType().</p>
<blockquote>
<pre>L_001a: box TestBoxing.Person
L_001f: call instance class [mscorlib]System.Type [mscorlib]System.Object::GetType()</pre>
</blockquote>
<p>Notice the explicit box instruction TestBoxing.Person. This happens because GetType() is a non-virtual method on System.Object.</p>
<h4>Must a value type be boxed for a call to Object.ToString()?</h4>
<p>Using the same Person struct, let&#8217;s take a look at ToString().</p>
<blockquote>
<pre name="code" class="c-sharp:nogutter">
Person p;
p.FirstName = "Brian";
p.LastName = "Thoman"; 

String s = p.ToString();</pre>
</blockquote>
<p>For this call the compiler emits the following IL.</p>
<blockquote>
<pre>L_0027: constrained TestBoxing.Person
L_002d: callvirt instance string [mscorlib]System.Object::ToString()</pre>
</blockquote>
<p>The compiler places a <a href="http://msdn.microsoft.com/en-us/library/system.reflection.emit.opcodes.constrained.aspx">constrained</a> prefix to the callvirt instruction. This tells the CLR to do some checking before calling the virtual function. From the MSDN:</p>
<blockquote><p>When a callvirt method instruction has been prefixed by constrained thisType, the instruction is executed as follows:</p>
<ul>
<li>If thisType is a reference type (as opposed to a value type) then ptr is dereferenced and passed as the &#8216;this&#8217; pointer to the callvirt of method.</li>
<li>If thisType is a value type and thisType implements method then ptr is passed unmodified as the &#8216;this&#8217; pointer to a call method instruction, for the implementation of method by thisType.</li>
<li>If thisType is a value type and thisType does not implement method then ptr is dereferenced, boxed, and passed as the &#8216;this&#8217; pointer to the callvirt method instruction.</li>
</ul>
</blockquote>
<p>This simply means that if the value type implements the virtual function it does not need to be boxed. If the value type does not implement the virtual method it will be boxed and the ancestor class&#8217; method will be called.</p>
<p>So&#8230;</p>
<h4>Must a value type be boxed for a call to Object.GetType()?</h4>
<p style="padding-left: 30px;">yes &#8211; all the time (remember the explicit box instruction)</p>
<h4>Must a value type be boxed for a call to Object.ToString()?</h4>
<p style="padding-left: 30px;">it depends on if the value type overrides ToString() and provides its own implementation.  It also makes sense that calling base.ToString() in the Person class&#8217; ToString() implementation will box.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wocentral.com/2009/12/04/technical-screening-boxing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WO Central Interview Process</title>
		<link>http://blog.wocentral.com/2009/12/01/wo-central-interview-process/</link>
		<comments>http://blog.wocentral.com/2009/12/01/wo-central-interview-process/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 23:06:39 +0000</pubDate>
		<dc:creator>bthoman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://blog.wocentral.com/?p=35</guid>
		<description><![CDATA[Finding top tier developers is not an easy task.  Here is a quick overview of our process.
Resume Screening
First up is a look at a candidates resume.  We take special notice of work experience, the type of projects, and level of involvement.  We like to know how long they have worked at prior companies.  We are attracted [...]]]></description>
			<content:encoded><![CDATA[<p>Finding top tier developers is not an easy task.  Here is a quick overview of our process.</p>
<h4>Resume Screening</h4>
<p>First up is a look at a candidates resume.  We take special notice of work experience, the type of projects, and level of involvement.  We like to know how long they have worked at prior companies.  We are attracted to candidates that have experience in areas we are currently developing or are moving into.  We tend to favor candidates with hands on experience actually writing the code.</p>
<h4>Technical Screening</h4>
<p>After we look through resumes we schedule a technical screening over the phone.  The screening typically lasts 30-45 minutes and usually leaves candidates thinking it did not go well.  However, the intent of the screening is to determine if the candidate can converse on a technical level.  A developer is picked from the team to call the candidate and perform the screening.  The questions are written to require many pieces of knowledge to understand the question &#8211; not just know the answer.</p>
<blockquote><p>What are the public, non-static methods available on System.Object?</p>
<p>To answer this the candidate must know what public is and what non-static is.  Most candidates correctly answer ToString, and GetType.  The lesser common are GetHashCode and Equals.</p></blockquote>
<p>One thing that makes the screening effective is the level of knowledge the developer has that is giving the screening.  Typically, they will drill down into the questions answered correctly to gauge a candidates depth of knowledge.</p>
<p>A good thing to note here is that no one has gotten all the questions right on our screening.  The score is just one piece of criteria we use.  We also like to know how well a candidate communicates, frustration level, etc.</p>
<h4>In-Person Interview</h4>
<p>Assuming the candidate passes the technical screening, they are invited for an in-person interview.  The interview lasts between 2 and 3 hours with multiple WideOrbit participants.  We go through some white boarding problems (graphs, algorithms, etc.), simple coding problems, and a work history interview.  Personally, I find the work history interview most interesting.  We ask about the projects a candidate has worked on.  We like to know how things were implemented.  This is usually a very fun part of the interview.  The candidate gets to do some real bragging about projects they have worked on.</p>
<p> </p>
<p>After that, we contact the candidate to discuss opportunities.  Also, we have and will allow a candidate to ask questions regarding their interview to see why we made a decision.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wocentral.com/2009/12/01/wo-central-interview-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Welcome to the WO Central Development Team</title>
		<link>http://blog.wocentral.com/2009/11/03/welcome-to-the-wo-central-development-team/</link>
		<comments>http://blog.wocentral.com/2009/11/03/welcome-to-the-wo-central-development-team/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 17:32:04 +0000</pubDate>
		<dc:creator>bthoman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.wocentral.com/?p=8</guid>
		<description><![CDATA[My name is Brian Thoman.  My title is &#8220;Technical Product Manager &#8211; WO Central&#8221;.  I  manage the technical resources and code base for our WO Central product.
The task at hand is finding developers.  Currently, WO Central consists of a team of 4 developers (+ some offshore talent) &#8211; WO Central demands more.  Pulling requested data [...]]]></description>
			<content:encoded><![CDATA[<p>My name is Brian Thoman.  My title is &#8220;Technical Product Manager &#8211; WO Central&#8221;.  I  manage the technical resources and code base for our WO Central product.</p>
<p>The task at hand is finding developers.  Currently, WO Central consists of a team of 4 developers (+ some offshore talent) &#8211; WO Central demands more.  Pulling requested data out of 175 client databases in near real time, obeying security rules and surfacing the data through a Silverlight front-end is not a simple task.  We will talk more about the project as we go along.</p>
<p>What does it take to be a WO Central Developer?</p>
<p><strong>You must have intimate knowledge of our toolset…</strong></p>
<p style="PADDING-LEFT: 30px">…(VS2008/C#/WCF/Silverlight 2.0/SQL2008)</p>
<p style="PADDING-LEFT: 30px">We are not a component dropping team.  Are you a developer that understands why the answer to &#8220;Does boxing occur when ToString is called on a struct?&#8221; is &#8220;well… that depends &#8211; show me the struct definition&#8221;?</p>
<p><strong>You must have the ability to see through complex problems…</strong></p>
<p style="PADDING-LEFT: 30px">…and solve them as simply as possible</p>
<p style="PADDING-LEFT: 30px">Most users request features based on how they do their jobs now.  How good will WO Central be if we simply imitate?  We need problem solvers who can see through the request and solve the problem in a way that addresses their need and presents a better way of accomplishing the same task.</p>
<p><strong>How do we find developers that can do this?</strong> </p>
<p style="PADDING-LEFT: 30px">We&#8217;re still working on it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wocentral.com/2009/11/03/welcome-to-the-wo-central-development-team/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
