<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
  <title>Wojciech Zimirski - Blog in English</title>
  <id>tag:wojciech.zimirski.net,2013:mephisto/</id>
  <generator version="0.8.0" uri="http://mephistoblog.com">Mephisto Drax</generator>
  <link href="http://wojciech.zimirski.net/feed/atom.xml" rel="self" type="application/atom+xml"/>
  <link href="http://wojciech.zimirski.net/" rel="alternate" type="text/html"/>
  <updated>2008-06-12T21:50:09Z</updated>
  <entry xml:base="http://wojciech.zimirski.net/">
    <author>
      <name>admin</name>
    </author>
    <id>tag:wojciech.zimirski.net,2008-06-12:14</id>
    <published>2008-06-12T21:30:00Z</published>
    <updated>2008-06-12T21:50:09Z</updated>
    <category term="cool"/>
    <category term="software"/>
    <link href="http://wojciech.zimirski.net/2008/6/12/the-magic-of-software" rel="alternate" type="text/html"/>
    <title>Software is magic? Software is the way?</title>
<summary type="html">&lt;p&gt;
&lt;cite&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Saving_Private_Ryan&quot;&gt;Saving Private Ryan&lt;/a&gt; has been critically noted for its realistic portrayal of World War II combat. In particular, the initial 24-minute sequence depicting the Omaha landings was voted the &quot;best battle scene of all time&quot; by Empire magazine, and was ranked number one on TV Guide's list of the &quot;50 Greatest Movie Moments.
&lt;/cite&gt;
&lt;/p&gt;
&lt;p&gt;
According to Wikipedia, the scene cost 12$ million ($ from 1998!) and involved about 1500 people.
&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;
&lt;cite&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Saving_Private_Ryan&quot;&gt;Saving Private Ryan&lt;/a&gt; has been critically noted for its realistic portrayal of World War II combat. In particular, the initial 24-minute sequence depicting the Omaha landings was voted the &quot;best battle scene of all time&quot; by Empire magazine, and was ranked number one on TV Guide's list of the &quot;50 Greatest Movie Moments.
&lt;/cite&gt;
&lt;/p&gt;
&lt;p&gt;
According to Wikipedia, the scene cost 12$ million ($ from 1998!) and involved about 1500 people.
&lt;/p&gt;
&lt;p&gt;
&lt;cite&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Saving_Private_Ryan&quot;&gt;Saving Private Ryan&lt;/a&gt; has been critically noted for its realistic portrayal of World War II combat. In particular, the initial 24-minute sequence depicting the Omaha landings was voted the &quot;best battle scene of all time&quot; by Empire magazine, and was ranked number one on TV Guide's list of the &quot;50 Greatest Movie Moments.
&lt;/cite&gt;
&lt;/p&gt;
&lt;p&gt;
According to Wikipedia, the scene cost 12$ million ($ from 1998!) and involved about 1500 people.
&lt;/p&gt;
&lt;p&gt;
And now for something entirely different...
&lt;/p&gt;
&lt;p&gt;
3 people, 1 car, 4 days (and after that, 6 weeks of post-processing). Cost - negligible. Watch below:
&lt;/p&gt;
&amp;lt;object height=&quot;344&quot; width=&quot;425&quot;&gt;&amp;lt;param&gt;&amp;lt;/param&gt;&amp;lt;embed src=&quot;http://www.youtube.com/v/WRS9cpOMYv0&amp;amp;hl=en&amp;amp;rel=0&quot; height=&quot;344&quot; width=&quot;425&quot;&gt;&amp;lt;/embed&gt;&amp;lt;/object&gt;
&lt;p&gt;
This is simply amazing. I couldn't find any reference to actual software products used in the making of the &quot;Bloody Omaha&quot;, but there is definitely a vast amount of code behind this.
&lt;/p&gt; 
&lt;p&gt;
I can easily imagine Spielberg making remake of Saving Private Ryan (HD quality and additional view of battle scenes) without single shooting day. Just a handful of skilled graphics designers.
&lt;/p&gt;
&lt;p&gt; BTW: &lt;a href=&quot;http://www.open2.net/blogs/historyandthearts/index.php/?cat=90&quot;&gt;Here&lt;/a&gt; is TimeWatch blog about the making of the TV episode featuring landing on Omaha Beach.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://wojciech.zimirski.net/">
    <author>
      <name>admin</name>
    </author>
    <id>tag:wojciech.zimirski.net,2008-06-10:15</id>
    <published>2008-06-10T19:11:00Z</published>
    <updated>2008-06-10T19:15:54Z</updated>
    <category term="Bug"/>
    <category term="bug"/>
    <category term="Excel"/>
    <category term="excel"/>
    <link href="http://wojciech.zimirski.net/2008/6/10/excel-2007-shortcut-problems-revisited" rel="alternate" type="text/html"/>
    <title>Excel 2007 shortcut problems revisited</title>
<summary type="html">&lt;p&gt;After 2 months of frustration with &lt;a href=&quot;http://wojciech.zimirski.net/2008/4/6/excel-2007-problem-ctrl-key-changes-functionality&quot;&gt;Excel 2007 stupid behavior&lt;/a&gt; I decided to give a problem another go. Either the problem can be solved, or I will throw Excel 2007 to the garbage.
&lt;/p&gt;
&lt;p&gt;
The magnificent feature of CTRL+C, CTRL+V and other hotkeys deleting cells in my spreadsheets  undermines my trust in keyboard shortcuts in general. As a result, I noticed that more and more often I use mouse to point and click ribbon or menu items instead of pressing corresponding shortcut key.
&lt;/p&gt;
&lt;p&gt;This kills my productivity.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;No more.&lt;/b&gt;&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;After 2 months of frustration with &lt;a href=&quot;http://wojciech.zimirski.net/2008/4/6/excel-2007-problem-ctrl-key-changes-functionality&quot;&gt;Excel 2007 stupid behavior&lt;/a&gt; I decided to give a problem another go. Either the problem can be solved, or I will throw Excel 2007 to the garbage.
&lt;/p&gt;
&lt;p&gt;
The magnificent feature of CTRL+C, CTRL+V and other hotkeys deleting cells in my spreadsheets  undermines my trust in keyboard shortcuts in general. As a result, I noticed that more and more often I use mouse to point and click ribbon or menu items instead of pressing corresponding shortcut key.
&lt;/p&gt;
&lt;p&gt;This kills my productivity.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;No more.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;After 2 months of frustration with &lt;a href=&quot;http://wojciech.zimirski.net/2008/4/6/excel-2007-problem-ctrl-key-changes-functionality&quot;&gt;Excel 2007 stupid behavior&lt;/a&gt; I decided to give a problem another go. Either the problem can be solved, or I will throw Excel 2007 to the garbage.
&lt;/p&gt;
&lt;p&gt;
The magnificent feature of CTRL+C, CTRL+V and other hotkeys deleting cells in my spreadsheets  undermines my trust in keyboard shortcuts in general. As a result, I noticed that more and more often I use mouse to point and click ribbon or menu items instead of pressing corresponding shortcut key.
&lt;/p&gt;
&lt;p&gt;This kills my productivity.&lt;/p&gt;
&lt;p&gt;
Since the problem does not occur all the time, I will install &lt;a href=&quot;http://support.microsoft.com/kb/942430/en-us&quot;&gt;Microsoft Hotfix&lt;/a&gt; and wait for a week if everything works fine.
&lt;/p&gt;
&lt;p&gt;
When you look on the hotfix page, you can notice that the file modification dates are mid-December 2007. Six months ago. And still the changes did not make to mainstream (Microsoft Update). 
&lt;/p&gt;
&lt;p&gt;
It is utterly disrespectful to European users (I read that i.e. Danish Office 2007 is also affected by the bug).
&lt;/p&gt;
&lt;p&gt;Replace Windows 98 with Excel 2007 and watch the video as a comment on the matter:&lt;/p&gt;
&amp;lt;object height=&quot;344&quot; width=&quot;425&quot;&gt;&amp;lt;param&gt;&amp;lt;/param&gt;&amp;lt;embed src=&quot;http://www.youtube.com/v/7Ntr-pw_6C0&amp;amp;hl=en&amp;amp;rel=0&quot; height=&quot;344&quot; width=&quot;425&quot;&gt;&amp;lt;/embed&gt;&amp;lt;/object&gt;
          </content>  </entry>
  <entry xml:base="http://wojciech.zimirski.net/">
    <author>
      <name>admin</name>
    </author>
    <id>tag:wojciech.zimirski.net,2008-06-04:12</id>
    <published>2008-06-04T20:10:00Z</published>
    <updated>2008-06-04T20:10:41Z</updated>
    <category term="scripting"/>
    <category term="windows"/>
    <link href="http://wojciech.zimirski.net/2008/6/4/manually-run-scheduled-tasks-windows" rel="alternate" type="text/html"/>
    <title>Manually run Scheduled Tasks (Windows)</title>
<summary type="html">I needed to fire a scheduled task from a NAnt script the other day. &lt;br /&gt;
There are some &lt;a href=&quot;http://www.codeproject.com/KB/shell/ScheduledTaskWizard.aspx&quot;&gt;strange solutions&lt;/a&gt; showing how to access scheduled tasks from within a script, but I was looking for something more one-liney and elegant.</summary><content type="html">
            I needed to fire a scheduled task from a NAnt script the other day. &lt;br /&gt;
There are some &lt;a href=&quot;http://www.codeproject.com/KB/shell/ScheduledTaskWizard.aspx&quot;&gt;strange solutions&lt;/a&gt; showing how to access scheduled tasks from within a script, but I was looking for something more one-liney and elegant.






I needed to fire a scheduled task from a NAnt script the other day. &lt;p&gt;
There are some &lt;a href=&quot;http://www.codeproject.com/KB/shell/ScheduledTaskWizard.aspx&quot;&gt;strange solutions&lt;/a&gt; showing how to access scheduled tasks from within a script, but I was looking for something more one-liney and elegant.
&lt;/p&gt;&lt;p&gt;
Microsoft included a little-known tool &lt;a href=&quot;http://technet.microsoft.com/en-us/library/bb490996(TechNet.10).aspx&quot;&gt;schtasks.exe&lt;/a&gt; in their OS, which helps to create, delete, query and yes, also run scheduled tasks. It can be invoked pretty easily:
&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
C:\winnt\system32\schtasks.exe /run /tn &lt;i&gt;task-name&lt;/i&gt;
&lt;/code&gt;&lt;/pre&gt;
          </content>  </entry>
  <entry xml:base="http://wojciech.zimirski.net/">
    <author>
      <name>admin</name>
    </author>
    <id>tag:wojciech.zimirski.net,2008-05-24:11</id>
    <published>2008-05-24T21:52:00Z</published>
    <updated>2008-05-24T23:29:14Z</updated>
    <category term="c#"/>
    <category term="programming"/>
    <category term="Programming"/>
    <category term="tools"/>
    <link href="http://wojciech.zimirski.net/2008/5/24/microsoft-source-analysis-for-c" rel="alternate" type="text/html"/>
    <title>Microsoft Source Analysis for C#</title>
<summary type="html">Yesterday Microsoft &lt;a href=&quot;http://blogs.msdn.com/sourceanalysis/archive/2008/05/23/announcing-the-release-of-microsoft-source-analysis.aspx&quot;&gt;announced&lt;/a&gt; the release of a new developer tool - Source Analysis for C#.  This tool has been  used within Microsoft for years. &lt;br /&gt;
Opposite to FxCop, which operates on compiled binaries, the new tool analyzes the source code.
The process can be triggered from within Visual Studio or integrated into &lt;a href=&quot;http://blogs.msdn.com/sourceanalysis/pages/source-analysis-msbuild-integration.aspx&quot;&gt;MSBuild&lt;/a&gt;&lt;br /&gt;
There are 7 groups of rules checked by Source Analysis for C#:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Documentation&lt;/b&gt;- rules which verify the content and formatting of code documentation.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Layout&lt;/b&gt;- rules which enforce code layout and line spacing.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Maintainability&lt;/b&gt;- rules which improve code maintainability.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Naming&lt;/b&gt;- rules which enforce naming requirements for members, types, and variables.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Ordering&lt;/b&gt;- rules which enforce a standard ordering scheme for code contents.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Readability&lt;/b&gt;- rules which ensure that the code is well-formatted and readable.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Spacing&lt;/b&gt;- rules which verify the spacing placed between keywords and symbols in the code.&lt;/li&gt;
&lt;/ul&gt;</summary><content type="html">
            Yesterday Microsoft &lt;a href=&quot;http://blogs.msdn.com/sourceanalysis/archive/2008/05/23/announcing-the-release-of-microsoft-source-analysis.aspx&quot;&gt;announced&lt;/a&gt; the release of a new developer tool - Source Analysis for C#.  This tool has been  used within Microsoft for years. &lt;br /&gt;
Opposite to FxCop, which operates on compiled binaries, the new tool analyzes the source code.
The process can be triggered from within Visual Studio or integrated into &lt;a href=&quot;http://blogs.msdn.com/sourceanalysis/pages/source-analysis-msbuild-integration.aspx&quot;&gt;MSBuild&lt;/a&gt;&lt;br /&gt;
There are 7 groups of rules checked by Source Analysis for C#:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Documentation&lt;/b&gt;- rules which verify the content and formatting of code documentation.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Layout&lt;/b&gt;- rules which enforce code layout and line spacing.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Maintainability&lt;/b&gt;- rules which improve code maintainability.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Naming&lt;/b&gt;- rules which enforce naming requirements for members, types, and variables.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Ordering&lt;/b&gt;- rules which enforce a standard ordering scheme for code contents.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Readability&lt;/b&gt;- rules which ensure that the code is well-formatted and readable.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Spacing&lt;/b&gt;- rules which verify the spacing placed between keywords and symbols in the code.&lt;/li&gt;
&lt;/ul&gt;


Yesterday Microsoft &lt;a href=&quot;http://blogs.msdn.com/sourceanalysis/archive/2008/05/23/announcing-the-release-of-microsoft-source-analysis.aspx&quot;&gt;announced&lt;/a&gt; the release of a new developer tool - Source Analysis for C#.  This tool has been  used within Microsoft for years. &lt;br /&gt;
Opposite to FxCop, which operates on compiled binaries, the new tool analyzes the source code.
The process can be triggered from within Visual Studio, or integrated into &lt;a href=&quot;http://blogs.msdn.com/sourceanalysis/pages/source-analysis-msbuild-integration.aspx&quot;&gt;MSBuild&lt;/a&gt;&lt;br /&gt;
There are 7 groups of rules checked by Source Analysis for C#:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Documentation&lt;/b&gt;- rules which verify the content and formatting of code documentation.&lt;/li&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;SA1600&lt;/td&gt;&lt;td&gt;Validates that an element contains a properly formatted documentation header.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1601&lt;/td&gt;&lt;td&gt;Validates that a partial class, struct, etc. contains a valid documentation header which contains either a summary tag or a content tag.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1602&lt;/td&gt;&lt;td&gt;Validates that an item within an enumeration contains a properly formatted documentation header.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1603&lt;/td&gt;&lt;td&gt;Indicates that a documentation header is composed of invalid Xml and cannot be parsed.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1604&lt;/td&gt;&lt;td&gt;Validates that a documentation header contains a properly formatted summary tag.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1605&lt;/td&gt;&lt;td&gt;Validates that a partial class, struct, etc. contains a documentation header with a properly formatted summary tag or content tag.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1606&lt;/td&gt;&lt;td&gt;Validates that an element's summary tag contains a filled-in description.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1607&lt;/td&gt;&lt;td&gt;Validates that a partial class, struct, etc. contains a documentation header with a filled-in summary description.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1608&lt;/td&gt;&lt;td&gt;Validates that the summary tag in an element's documentation header is not the default text generated by Visual Studio.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1609&lt;/td&gt;&lt;td&gt;Validates that a public or protected property contains a documentation header with a value tag.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1610&lt;/td&gt;&lt;td&gt;Validates that a property's value tag contains a filled-in description.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1611&lt;/td&gt;&lt;td&gt;Validates that an element's documentation header contains a param tag for each item in the element's parameter list.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1612&lt;/td&gt;&lt;td&gt;Validates that an element's documentation header does not contain param tags for parameters which do not exist in the element's parameter list.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1613&lt;/td&gt;&lt;td&gt;Validates that all param tags in an element's documentation header contain a filled-in name attribute.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1614&lt;/td&gt;&lt;td&gt;Validates that an element's documentation header contains filled-in descriptions for each parameter in the element's parameter list.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1615&lt;/td&gt;&lt;td&gt;Validates that an element's documentation header contains a returns tag if the element has a return value.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1616&lt;/td&gt;&lt;td&gt;Validates that an element's returns tag contains a filled-in description.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1617&lt;/td&gt;&lt;td&gt;Validates that an element's documentation header does not contain a returns tag if the element has no return value.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1618&lt;/td&gt;&lt;td&gt;Validates that an element's documentation header contains a typeparam tag for each of the element's generic types.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1619&lt;/td&gt;&lt;td&gt;Validates that a partial class, struct, etc. contains a documentation header with a typeparam tag for each of the element's generic types, unless these types are documented on another part of the element.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1620&lt;/td&gt;&lt;td&gt;Validates that an element's documentation header does not contain typeparam tags for types which are not part of the element's generic type list.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1621&lt;/td&gt;&lt;td&gt;Validates that all typeparam tags in an element's documentation header contain a filled-in name attribute.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1622&lt;/td&gt;&lt;td&gt;Validates that an element's documentation header contains filled-in descriptions for each item in the element's generic type list.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1623&lt;/td&gt;&lt;td&gt;Validates that a property's summary description text begins with the correct syntax, depending upon whether the property exposes get or set accessors.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1624&lt;/td&gt;&lt;td&gt;Validates that a property's summary description text does not include a description for a set accessor when the property exposes only a get accessor.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1625&lt;/td&gt;&lt;td&gt;Validates that an element's documentation header does not contain repeated documentation text.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1626&lt;/td&gt;&lt;td&gt;Validates that comments do not begin with three forward slashes in a row, making them difficult to distinguish from documentation headers.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1627&lt;/td&gt;&lt;td&gt;Validates that the description within a documentation tag is filled-in.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1628&lt;/td&gt;&lt;td&gt;Validates that the documentation text within a documentation section begins with a capital letter.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1629&lt;/td&gt;&lt;td&gt;Validates that the documentation text within a documentation section ends with a period.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1630&lt;/td&gt;&lt;td&gt;Verifies that the documentation text within a documentation section contains at least two words, separated by whitespace.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1631&lt;/td&gt;&lt;td&gt;Verifies that the documentation text within a documentation section does not contain an excessive amount of symbols, making it difficult to read.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1632&lt;/td&gt;&lt;td&gt;Verifies that the documentation text within a documentation section meets or exceeds a minimum length.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1633&lt;/td&gt;&lt;td&gt;Validates that a file contains a properly formatted file header.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1634&lt;/td&gt;&lt;td&gt;Validates that a file header contains a copyright tag.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1635&lt;/td&gt;&lt;td&gt;Validates that a file header contains a filled-in copyright tag.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1636&lt;/td&gt;&lt;td&gt;Validates that a file header contains a copyright matching specific copyright text.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1637&lt;/td&gt;&lt;td&gt;Validates that a file header contains a file attribute.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1638&lt;/td&gt;&lt;td&gt;Validates that a file header contains a file attribute which contains the name of the file.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1639&lt;/td&gt;&lt;td&gt;Validates that a file header contains a filled-in summary description.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1640&lt;/td&gt;&lt;td&gt;Validates that a file header contains a filled-in company attribute.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1641&lt;/td&gt;&lt;td&gt;Validates that a file header contains a company attribute which contains a specific company name.&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;li&gt;&lt;b&gt;Layout&lt;/b&gt;- rules which enforce code layout and line spacing.&lt;/li&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;SA1500&lt;/td&gt;&lt;td&gt;Validates that the opening or closing curly bracket in a bracketed statement is placed on its own line if the statement spans multiple lines.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1501&lt;/td&gt;&lt;td&gt;Validates that a bracketed statement is not placed on a single line.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1502&lt;/td&gt;&lt;td&gt;Validates that a bracketed element is not placement on a single line.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1503&lt;/td&gt;&lt;td&gt;Validates that opening and closing curly brackets are always included, even if the statement type allows them to be omitted.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1504&lt;/td&gt;&lt;td&gt;Validates that an accessor in a property or indexer is only placed on a single line if all accessors in the property or indexer are placed on a single line.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1505&lt;/td&gt;&lt;td&gt;Validates that an opening curly bracket in a bracketed statement or element is not followed by a blank line.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1506&lt;/td&gt;&lt;td&gt;Validates that a documentation header is not followed by a blank line.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1507&lt;/td&gt;&lt;td&gt;Validates that the code does not contain multiple blank lines in a row.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1508&lt;/td&gt;&lt;td&gt;Validates that a closing curly bracket in a bracketed statement or element is not preceded by a blank line.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1509&lt;/td&gt;&lt;td&gt;Validates that an opening curly bracket in a bracketed statement or element is not preceded by a blank line.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1510&lt;/td&gt;&lt;td&gt;Validates than an else, catch, or finally statement is not preceded by a blank line.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1511&lt;/td&gt;&lt;td&gt;Validates that the while keyword in a do-while statement is not preceded by a blank line.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1512&lt;/td&gt;&lt;td&gt;Validates that a comment is not followed by a blank line. (This does not apply to C-style comments.)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1513&lt;/td&gt;&lt;td&gt;Validates that a bracketed statement or element is followed by a blank line.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1514&lt;/td&gt;&lt;td&gt;Validates that a documentation header is preceded by a blank line, or is the first item in its scope.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1515&lt;/td&gt;&lt;td&gt;Validates that a comment is preceded by a blank line, or is the first item in its scope.&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;li&gt;&lt;b&gt;Maintainability&lt;/b&gt;- rules which improve code maintainability.&lt;/li&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;SA1400&lt;/td&gt;&lt;td&gt;Validates that an access modifier is declared for an element.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1401&lt;/td&gt;&lt;td&gt;Validates that a field is declared with private access.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1402&lt;/td&gt;&lt;td&gt;Validates that a C# document does not contain more than one class at the root level.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1403&lt;/td&gt;&lt;td&gt;Validates that a C# document does not contain more than one namespace directive.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1404&lt;/td&gt;&lt;td&gt;Validates that a Code Analysis suppression contains a justifiction describing the reason for the suppression.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1405&lt;/td&gt;&lt;td&gt;Validates that calls to Debug.Assert provide a message in the second parameter describing the reason for the assert.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1406&lt;/td&gt;&lt;td&gt;Validates that calls to Debug.Fail provide a message in the first parameter describing the reason for the failure.&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;li&gt;&lt;b&gt;Naming&lt;/b&gt;- rules which enforce naming requirements for members, types, and variables.&lt;/li&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;SA1300&lt;/td&gt;&lt;td&gt;Validates that names of certain types of elements begin with an upper-case letter.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1301&lt;/td&gt;&lt;td&gt;Validates that names of certain types of elements begin with a lower-case letter.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1302&lt;/td&gt;&lt;td&gt;Validates that the name of an interface begins with the capital letter 'I'.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1303&lt;/td&gt;&lt;td&gt;Validates that the name of a constant begins with an upper-case letter.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1304&lt;/td&gt;&lt;td&gt;Validates that the name of a readonly field begins with an upper-case letter, unless the field is declared private.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1305&lt;/td&gt;&lt;td&gt;Validates that a variable name is not prepended with lower-case characters matching the signature of Hungarian notation.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1306&lt;/td&gt;&lt;td&gt;Validates that the name of a variable or field begins with a lower-case letter.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1307&lt;/td&gt;&lt;td&gt;Validates that the name of a public or internal field must begin with an upper-case letter.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1308&lt;/td&gt;&lt;td&gt;Validates that the name of a member variable does not begin with the 'm_' syntax.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1309&lt;/td&gt;&lt;td&gt;Validates that the name of a field does not begin with an underscore.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1310&lt;/td&gt;&lt;td&gt;Validates that the name of a field does not contain underscores.&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;li&gt;&lt;b&gt;Ordering&lt;/b&gt;- rules which enforce a standard ordering scheme for code contents.&lt;/li&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;SA1200&lt;/td&gt;&lt;td&gt;Validates that all using directives are placed within a namespace, if a namespace exists in the file.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1201&lt;/td&gt;&lt;td&gt;Validates that elements are placed in the correct order.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1202&lt;/td&gt;&lt;td&gt;Validates that elements of the same type are placed in order by access.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1203&lt;/td&gt;&lt;td&gt;Validates that all constant and readonly elements are placed before non-constant, non readonly elements of the same type.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1204&lt;/td&gt;&lt;td&gt;Validates that all static elements are placed before non-static elements of the same type.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1205&lt;/td&gt;&lt;td&gt;Validates that a partial element has a declared access modifier, which is necessary for determining the order of partial elements.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1206&lt;/td&gt;&lt;td&gt;Verifies the ordering of keywords in an element declaration.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1207&lt;/td&gt;&lt;td&gt;Verifies the ordering of the internal and protected keywords in an element with protected internal access.&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;li&gt;&lt;b&gt;Readability&lt;/b&gt;- rules which ensure that the code is well-formatted and readable.&lt;/li&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;SA1100&lt;/td&gt;&lt;td&gt;Verifies that the 'base.' prefix is not misused.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1101&lt;/td&gt;&lt;td&gt;Verifies that calls to local members are prefixed with the 'this.' notation.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1102&lt;/td&gt;&lt;td&gt;Validates that blank lines are not placed between clauses within a query expression.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1103&lt;/td&gt;&lt;td&gt;Verifies that each clause in a query expression must begin on a new line, unless the entire expression is on a single line.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1104&lt;/td&gt;&lt;td&gt;Verifies that a query clause begins on a new line if the previous clause spans multiple lines.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1105&lt;/td&gt;&lt;td&gt;Validates that a query clause spanning multiple lines begins on a new line.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1106&lt;/td&gt;&lt;td&gt;Detects the presense of extra, unnecessary semicolons in the code.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1107&lt;/td&gt;&lt;td&gt;Validates that multiple statements are not placed on a single line of code.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1108&lt;/td&gt;&lt;td&gt;Validates that there are no comments placed between the declaration and opening bracket in a bracketed statement.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1109&lt;/td&gt;&lt;td&gt;Validates that there are no regions placed between the declaration and opening bracket in a bracketed statement.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1110&lt;/td&gt;&lt;td&gt;Verifies that the opening bracket of a parameter list is placed just after the name of the method, on the same line.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1111&lt;/td&gt;&lt;td&gt;Verifies that the closing bracket of a parameter list is placed just after the last parameter, on the same line.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1112&lt;/td&gt;&lt;td&gt;Verifies that the closing bracket of a parameter list is placed just after the opening bracket when the method has no parameters.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1113&lt;/td&gt;&lt;td&gt;Verifies that a comma between two parameters is placed just after the previous parameter, on the same line.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1114&lt;/td&gt;&lt;td&gt;Verifies that the first parameter in a parameter list is placed on the same line as the opening bracket, or on the next line.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1115&lt;/td&gt;&lt;td&gt;Verifies that a parameter is placed on the line after the previous comma, in a multi-line parameter list.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1116&lt;/td&gt;&lt;td&gt;Verifies that the first parameter in a parameter list is placed on the line after the opening bracket, in a multi-line parameter list.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1117&lt;/td&gt;&lt;td&gt;Verifies that each parameter in a parameter list is placed on its own line, unless all parameters are on the same line.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1118&lt;/td&gt;&lt;td&gt;Validates that no parameter spans across multiple lines, other than the first parameter in a parameter list.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1119&lt;/td&gt;&lt;td&gt;Verifies that the code does not contain extra, unnecessary parenthesis.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1120&lt;/td&gt;&lt;td&gt;Validates that a comment contains description text.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1121&lt;/td&gt;&lt;td&gt;Enforces the use of the built-in types rather than the actual types that they represent.&lt;/td&gt;&lt;/tr&gt;

&lt;/table&gt;
&lt;li&gt;&lt;b&gt;Spacing&lt;/b&gt;- rules which verify the spacing placed between keywords and symbols in the code.&lt;/li&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;SA1000&lt;/td&gt;&lt;td&gt;Validates the spacing before and after a reserved keyword.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1001&lt;/td&gt;&lt;td&gt;Validates the spacing before and a comma.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1002&lt;/td&gt;&lt;td&gt;Validates the spacing before and a semicolon.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1003&lt;/td&gt;&lt;td&gt;Validates the spacing before and after an operator symbol.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1004&lt;/td&gt;&lt;td&gt;Verifies that the forward slashes at the beginning of an documentation header line are followed by a single space.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1005&lt;/td&gt;&lt;td&gt;Verifies that the forward slashes at the beginning of a comment are followed by a single space.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1006&lt;/td&gt;&lt;td&gt;Verifies that there is no space between the opening hash mark and keyword within a preprocessor statement.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1007&lt;/td&gt;&lt;td&gt;Verifies that there is a single space between the 'operator' keyword and the operator symbol within an operator overload.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1008&lt;/td&gt;&lt;td&gt;Validates the spacing before and after an opening parenthesis.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1009&lt;/td&gt;&lt;td&gt;Validates the spacing before and after a closing parenthesis.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1010&lt;/td&gt;&lt;td&gt;Validates the spacing before and after an opening square bracket.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1011&lt;/td&gt;&lt;td&gt;Validates the spacing before and after a closing square bracket.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1012&lt;/td&gt;&lt;td&gt;Validates the spacing before and after an opening curly bracket.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1013&lt;/td&gt;&lt;td&gt;Validates the spacing before and after a closing curly bracket.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1014&lt;/td&gt;&lt;td&gt;Validates the spacing before and after an opening bracket in a generic type.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1015&lt;/td&gt;&lt;td&gt;Validates the spacing before and after a closing bracket in a generic type.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1016&lt;/td&gt;&lt;td&gt;Validates the spacing before and after an opening attribute bracket.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1017&lt;/td&gt;&lt;td&gt;Validates the spacing before and after a closing attribute bracket.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1018&lt;/td&gt;&lt;td&gt;Verifies that a nullable type symbol is not preceded by white space.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1019&lt;/td&gt;&lt;td&gt;Validates the spacing before and after a member access symbol.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1020&lt;/td&gt;&lt;td&gt;Validates the spacing before and after an increment or decrement symbol.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1021&lt;/td&gt;&lt;td&gt;Validates the spacing before and after a negative sign.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1022&lt;/td&gt;&lt;td&gt;Validates the spacing before and after a positive sign.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1023&lt;/td&gt;&lt;td&gt;Validates the spacing before and after a dereference or address-of symbol.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1024&lt;/td&gt;&lt;td&gt;Validates the spacing before and after a colon.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1025&lt;/td&gt;&lt;td&gt;Verifies that the code does not contain more than one spacing in a row.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1026&lt;/td&gt;&lt;td&gt;Verifies that there is no space between the new keyword and the opening square bracket in an implicitly typed array allocation.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SA1027&lt;/td&gt;&lt;td&gt;Verifies that the code does not contain tabs.&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/ul&gt;
          </content>  </entry>
  <entry xml:base="http://wojciech.zimirski.net/">
    <author>
      <name>admin</name>
    </author>
    <id>tag:wojciech.zimirski.net,2008-05-17:6</id>
    <published>2008-05-17T17:08:00Z</published>
    <updated>2008-05-27T14:29:44Z</updated>
    <category term="Certification"/>
    <category term="certification"/>
    <category term="programming"/>
    <category term="Programming"/>
    <category term="Testing"/>
    <category term="testing"/>
    <link href="http://wojciech.zimirski.net/2008/5/17/the-ultimate-dev-certification" rel="alternate" type="text/html"/>
    <title>The ultimate dev certification</title>
<summary type="html">Four easy steps to get certified!
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;
Compile your application code. Getting the latest version of any recent code changes from other developers is purely optional and not a requirement for certification.
&lt;/li&gt;
&lt;li&gt;
Launch the application or website that has just been compiled.
&lt;/li&gt;
&lt;li&gt;Cause one code path in the code you're checking in to be executed. The preferred way to do this is with ad-hoc manual testing of the simplest possible case for the feature in question. Omit this step if the code change was less than five lines, or if, in the developer's professional opinion, the code change could not possibly result in an error.
&lt;/li&gt;
&lt;li&gt;Check the code changes into your version control system.&lt;/li&gt;
&lt;/ol&gt;
&lt;/br&gt;</summary><content type="html">
            Four easy steps to get certified!
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;
Compile your application code. Getting the latest version of any recent code changes from other developers is purely optional and not a requirement for certification.
&lt;/li&gt;
&lt;li&gt;
Launch the application or website that has just been compiled.
&lt;/li&gt;
&lt;li&gt;Cause one code path in the code you're checking in to be executed. The preferred way to do this is with ad-hoc manual testing of the simplest possible case for the feature in question. Omit this step if the code change was less than five lines, or if, in the developer's professional opinion, the code change could not possibly result in an error.
&lt;/li&gt;
&lt;li&gt;Check the code changes into your version control system.&lt;/li&gt;
&lt;/ol&gt;
&lt;/br&gt;
Four easy steps to get certified!
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;
Compile your application code. Getting the latest version of any recent code changes from other developers is purely optional and not a requirement for certification.
&lt;/li&gt;
&lt;li&gt;
Launch the application or website that has just been compiled.
&lt;/li&gt;
&lt;li&gt;Cause one code path in the code you're checking in to be executed. The preferred way to do this is with ad-hoc manual testing of the simplest possible case for the feature in question. Omit this step if the code change was less than five lines, or if, in the developer's professional opinion, the code change could not possibly result in an error.
&lt;/li&gt;
&lt;li&gt;Check the code changes into your version control system.&lt;/li&gt;
&lt;/ol&gt;

&lt;br /&gt;Unfortunately the &quot;It works on my machine&quot; certification was not invented by me (Original idea by &lt;a href=&quot;http://jcooney.net/archive/2007/02/01/42999.aspx&quot;&gt;J. Cooney&lt;/a&gt; and &lt;a href=&quot;http://www.codinghorror.com/blog/archives/000818.html &quot;&gt;Jeff Atwood&lt;/a&gt;).
&lt;br /&gt;
Official logos to brand the applications (copied from beforelinked sites): &lt;br /&gt;
&lt;img src=&quot;http://wojciech.zimirski.net/assets/2008/5/17/worksonmymachine_logo_small.png&quot; alt=&quot;Works on my machine certification 1&quot; /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://wojciech.zimirski.net/assets/2008/5/17/works-on-my-machine-starburst.png&quot; alt=&quot;Works on my machine certification 2&quot; /&gt;
          </content>  </entry>
  <entry xml:base="http://wojciech.zimirski.net/">
    <author>
      <name>admin</name>
    </author>
    <id>tag:wojciech.zimirski.net,2008-04-19:5</id>
    <published>2008-04-19T10:00:00Z</published>
    <updated>2008-05-13T21:50:26Z</updated>
    <category term="c#"/>
    <category term="programming"/>
    <category term="Programming"/>
    <link href="http://wojciech.zimirski.net/2008/4/19/my-first-use-of-operator" rel="alternate" type="text/html"/>
    <title>Why they forced me to use &quot;~&quot; operator?</title>
<summary type="html">A few days ago I used the &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/d2bd4x66.aspx&quot;&gt;bitwise complement&lt;/a&gt; operator (~ in C#) for the first time.
&lt;br /&gt;
I thought that in high-level programming binary operators can only be effectively used to express combination of different flag values. A flag of course means &quot;enumeration treated like a bit field&quot; - and in C# is created by applying &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.flagsattribute(VS.71).aspx&quot;&gt;Flag attribute&lt;/a&gt; to an enumeration.</summary><content type="html">
            A few days ago I used the &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/d2bd4x66.aspx&quot;&gt;bitwise complement&lt;/a&gt; operator (~ in C#) for the first time.
&lt;br /&gt;
I thought that in high-level programming binary operators can only be effectively used to express combination of different flag values. A flag of course means &quot;enumeration treated like a bit field&quot; - and in C# is created by applying &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.flagsattribute(VS.71).aspx&quot;&gt;Flag attribute&lt;/a&gt; to an enumeration.
A few days ago I used the &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/d2bd4x66.aspx&quot;&gt;bitwise complement&lt;/a&gt; operator (~ in C#) for the first time.
&lt;br /&gt;
I thought that in high-level programming binary operators can only be effectively used to express combination of different flag values. A flag of course means &quot;enumeration treated like a bit field&quot; - and in C# is created by applying &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.flagsattribute(VS.71).aspx&quot;&gt;Flag attribute&lt;/a&gt; to an enumeration.
&lt;p&gt;
It turns out that &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/w4e7fxsh(VS.80).aspx&quot;&gt;IList&amp;lt;t&gt;BinarySearch&lt;/a&gt; requires to use bitwise complement operator on returned value, to obtain index where element could be inserted, if not found in the array.
&lt;/p&gt;
&lt;p&gt;
This is a neat but easy to overlook trick  to provide additional functionality (full Int32 range of the result has meaning)  without creating overloads or extending framework API in any other way. Since expected  return value of BinarySearch is &quot;index of found element&quot;, the API designers coud change the method declaration to return a UInt32 value instead of Int32 (only non-negative values). This approach however would require additional coding to handle &quot;element not found&quot; case.
&lt;/p&gt;
&lt;p&gt;
Giving this method 2 responsibilities (finding index, computing index) was obviously the best thing to do from algorithmic point of view (no additional computation required), but is pretty painful from perspective of a developer who doesn't read all the remarks in MSDN doc. If a coder is unaware of the ~result feature, he or she may iterate over the list to find proper place to insert new item, implement own binary search or, worse, may insert new items at the end of the lists, and then sort it (found that in production code).
&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://wojciech.zimirski.net/">
    <author>
      <name>admin</name>
    </author>
    <id>tag:wojciech.zimirski.net,2008-04-08:4</id>
    <published>2008-04-08T14:39:00Z</published>
    <updated>2008-04-10T19:39:25Z</updated>
    <category term="programming"/>
    <category term="Programming"/>
    <link href="http://wojciech.zimirski.net/2008/4/8/what-programmers-do" rel="alternate" type="text/html"/>
    <title>What programmers do?</title>
<summary type="html">&lt;p&gt;What&#8217;s working in IT look like? Do Heroes Happen Here?&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;What&#8217;s working in IT look like? Do Heroes Happen Here?&lt;/p&gt;
&lt;p&gt;Maybe it&#8217;s like Mission Impossible and fun of a life-time:&lt;/p&gt;


&amp;lt;object height=&quot;355&quot; width=&quot;425&quot;&gt;&amp;lt;param&gt;&amp;lt;/param&gt;&amp;lt;param&gt;&amp;lt;/param&gt;&amp;lt;embed src=&quot;http://www.youtube.com/v/UZq4sZz56qM&amp;amp;#38;hl=pl&quot; height=&quot;355&quot; width=&quot;425&quot;&gt;&amp;lt;/embed&gt;&amp;lt;/object&gt;
&lt;br /&gt;
Or maybe it&#8217;s neverending struggle with &lt;a href=&quot;http://www.faqs.org/docs/jargon/L/Lubarsky's-Law-of-Cybernetic-Entomology.html&quot;&gt;Lubarsky&#8217;s Law of Cybernetic Entomology?&lt;/a&gt;
&amp;lt;object height=&quot;355&quot; width=&quot;425&quot;&gt;&amp;lt;param&gt;&amp;lt;/param&gt;&amp;lt;param&gt;&amp;lt;/param&gt;&amp;lt;embed src=&quot;http://www.youtube.com/v/2eQpUgHkBcg&amp;amp;#38;hl=pl&quot; height=&quot;355&quot; width=&quot;425&quot;&gt;&amp;lt;/embed&gt;&amp;lt;/object&gt;
          </content>  </entry>
  <entry xml:base="http://wojciech.zimirski.net/">
    <author>
      <name>admin</name>
    </author>
    <id>tag:wojciech.zimirski.net,2008-04-06:3</id>
    <published>2008-04-06T18:22:00Z</published>
    <updated>2008-04-09T16:38:18Z</updated>
    <category term="Bug"/>
    <category term="Excel"/>
    <link href="http://wojciech.zimirski.net/2008/4/6/excel-2007-problem-ctrl-key-changes-functionality" rel="alternate" type="text/html"/>
    <title>Excel 2007 problem: CTRL+key changes functionality</title>
<summary type="html">There are numerous complaints about CTRL +C, CTRL+V, CTRL+S and other key combinations behaving quite different from expectations in Excel 2007. &lt;br /&gt;
I managed to delete a bunch of rows from a spreadsheet without noticing, because of CTRL+C behaving like delete...</summary><content type="html">
            There are numerous complaints about CTRL +C, CTRL+V, CTRL+S and other key combinations behaving quite different from expectations in Excel 2007. &lt;br /&gt;
I managed to delete a bunch of rows from a spreadsheet without noticing, because of CTRL+C behaving like delete...

&lt;p&gt;I noticed that this tends to be a problem on every Excel 2007 (Polish version) installed on Windows 2003 English (I didn't have the opportunity to test it on XP EN, hovewer Excel 2007 PL on Windows XP PL doesn't seem to cause any problems with different treatment of those popular key combinations).&lt;/p&gt;
&lt;p&gt;
The issue is reported to be fixed on Danish version of Office 2007. 
&lt;/p&gt;
&lt;p&gt;
I found out today, that this problem does not affect  Charts in Excel 2007. You can select and copy a chart using Ctrl+C. Pasting within a chart with CTRL+V also works fine.
&lt;/p&gt;
Strange.
          </content>  </entry>
  <entry xml:base="http://wojciech.zimirski.net/">
    <author>
      <name>admin</name>
    </author>
    <id>tag:wojciech.zimirski.net,2008-03-12:1</id>
    <published>2008-03-12T21:35:00Z</published>
    <updated>2008-06-12T14:26:25Z</updated>
    <link href="http://wojciech.zimirski.net/2008/3/12/hello-world" rel="alternate" type="text/html"/>
    <title>Hello, World!</title>
<summary type="html">This is first blog entry - &lt;a href=&quot;http://en.wikipedia.org/wiki/Hello_world_program&quot;&gt;Hello World&lt;/a&gt; in the world of blogging. Stay tuned for more.</summary><content type="html">
            This is first blog entry - &lt;a href=&quot;http://en.wikipedia.org/wiki/Hello_world_program&quot;&gt;Hello World&lt;/a&gt; in the world of blogging. Stay tuned for more.

This is first blog entry - &lt;a href=&quot;http://en.wikipedia.org/wiki/Hello_world_program&quot;&gt;Hello World&lt;/a&gt; in the world of blogging. Stay tuned for more.
          </content>  </entry>
</feed>
