<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Progressive Development : tools</title><link>http://blogs.msdn.com/progressive_development/archive/tags/tools/default.aspx</link><description>Tags: tools</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Motley says: "Spend less time in OneNote and more time in Visual Studio"</title><link>http://blogs.msdn.com/progressive_development/archive/2008/05/20/motley-says-spend-less-time-in-onenote-and-more-time-in-visual-studio.aspx</link><pubDate>Tue, 20 May 2008 17:58:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8518708</guid><dc:creator>James Waletzky</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/progressive_development/comments/8518708.aspx</comments><wfw:commentRss>http://blogs.msdn.com/progressive_development/commentrss.aspx?PostID=8518708</wfw:commentRss><description>&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri; TEXT-DECORATION: underline"&gt;Summary&lt;/P&gt;
&lt;P style="FONT-WEIGHT: bold; FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-WEIGHT: bold; FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Motley:&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;OneNote is just like Microsoft Word, and is not a place where a developer should be spending time.&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-WEIGHT: bold; FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Maven: OneNote is perfectly suited to feature teams and developers. It provides simple, organized, efficient, and easy to manage method of organizing ideas and general content. It is a developer's best friend!&lt;/P&gt;
&lt;P style="FONT-WEIGHT: bold; FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;______________________________&lt;/P&gt;
&lt;P style="FONT-WEIGHT: bold; FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;[Context: Motley wanders by Maven's desk while taking a break and notices that Maven is spending a lot of time in one particular application]&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Motley: Hey, Mave. I heard you typing like mad on the keyboard as it was time to take a break. I figured an interruption would do you good.&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Maven: Yeah, thanks. I think. What can I do for you?&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Motley: I was just noticing that you have a ton of content in that application on your screen. Why is there so much junk in there? What is the application you are using?&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Maven: Ah, yes, the greatest application that Microsoft has ever shipped!&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Motley: You mean Microsoft has shipped an application that you call "great"? Ha, ha. Just kidding. I couldn't live without Visual Studio, for example.&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Maven: Always the character. The application I spend the good majority of my day in is Microsoft OneNote. It comes with the Office suite of products, and it is a software developer's best friend.&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Motley: Shouldn't you be spending more time in Visual Studio as a developer? Are you slacking off again, Mave?&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Maven: As a developer, how much time do you really spend coding? &lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Motley: Not as much as I would like.&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Maven: Exactly. There are lots of other things to do, particularly as a development lead. For example, you have to build people's careers, write design documentation, investigate issues and plan for the future. I use OneNote to help me gather my thoughts.&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Motley: Why not just use a Word document? OneNote just looks like it reinvents the wheel! Why do I need to learn another application when I am proficient with the 10 useful features of Microsoft Word?&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Maven: OneNote is completely geared towards quick note taking. OneNote's user experience stresses organization and simplicity. For example, embedded within it is the hierarchical idea of notebooks, sections, pages, and subpages. Simple drag/drop operations let me organize my notes in this hierarchy. It hides the ideas of files - sure, there are files under the hood, but I never really ever have to see them. &lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Motley: Wait a second, Mr. Wise Guy. What about saving your notes? I have you there!&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Maven: You're pretty smart, but you're question is misinformed in this case. OneNote completely abstracts away files and saves content changes under the hood. You never press a save button.&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Motley: That's pretty cool. I wish more applications did that. As long as it saves frequently and I don't lose data when the inevitable crash happens.&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Maven: I don't think I've ever had OneNote 12 crash. &lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Motley: I suspect you are lying, but enough about files. What else makes this thing a developer's best friend? I have never ever viewed Microsoft Word that way!&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Maven: OneNote is &lt;SPAN style="FONT-STYLE: italic"&gt;always &lt;/SPAN&gt;open on every PC I use - home, work or laptop. I set up a shared notebook on my home PC for personal stuff like to-do lists and blogging, and I set up multiple shared notebooks at work for work stuff. The first time you access the shared notebook from a PC, OneNote caches the notebook and you can make offline changes. The next time you are online, the notebook is synchronized. But you asked what I generally do with it. Here is a sampling:&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in; DIRECTION: ltr; unicode-bidi: embed" type=circle&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"&gt;I have one notebook for team-oriented stuff. I keep snippets of knowledge of the build system, source code, personal stuff, performance reviews of team members, recruiting information, and other miscellaneous stuff. No one has access to this notebook except me.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"&gt;When I was a lead, I had another notebook that was shared across all team members. Each section was password-protected with a password only one person and I knew. We stored private content between the employee and me. The content included agendas for 1:1 meetings, information to remember at review time, and any other material specific to the employee.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"&gt;My boss and I share a password-protected section where I track 1:1 meeting agendas throughout the week.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I make updates as I think of agenda items so I don't have to think about it 5 minutes before the meeting occurs.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"&gt;I have a personal notebook at home. I do all my blog writing in that notebook, track my ongoing to-do and to-buy list, create summaries of books I read, and put all my karate notes in it.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Motley: So you are telling me that OneNote is just a general scratch place for random thoughts. I COULD use a real paper notebook for that!&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Maven: Yes, but then it would be difficult to search, difficult to modify, inconvenient to back up, difficult to embed content, and track the original source of the content (when you paste web content, OneNote automatically inserts the URL it came from).&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;It's also very easy to reorganize my content and share with other people. &lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Motley: Yeah, but what if I share my notebook and I turn off my PC?&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Maven: You always have the offline store, but you can choose to store your content on a file server or SharePoint site if you want constant online access. &lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Motley: Well, you seem to have an answer for everything, don't you! Looks like Microsoft has really covered the user scenarios on this one.&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Maven: I couldn't agree more. It's the best Microsoft product to ship in a long time. Another way to use it from the developer perspective is to set up a shared notebook for the feature team. OneNote supports the idea of templates of new pages. Marcus' team does Program Manager specs, design documents, and test specifications all within OneNote, applying a different template when required. The coolest thing is that OneNote takes care of the synchronization, so multiple people can edit the same notebook, section, and page all simultaneously! That way they have random notes, formal documents, and other team communication all within the same container.&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Motley: What about diagrams? Design documents are full of them.&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Maven: OneNote also supports ink. You can draw a diagram on your Tablet PC if you have one. If not, draw it up in Visio and copy it in to one of your pages. &lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Motley: I'm not usually this easily convinced, but I need to give this application a shot. It sounds like it might bring some organization to my life. Hopefully Microsoft doesn't bloat the feature set in future releases like they did for Word.&lt;/P&gt;
&lt;P style="FONT-WEIGHT: bold; FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;______________________________&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;&lt;SPAN style="FONT-WEIGHT: bold; COLOR: navy"&gt;Maven's Pointer:&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Setting up shared notebooks is great. Watch out for one circumstance, however, when it does not work very well. OneNote synchronization works well, but avoid combining it with other synchronization mechanisms like Windows Vista offline files. If you edit in one place and someone edits in another place, OneNote does the right thing and tries to synchronize within the native file format. Vista sees a conflict at the file level, however, and you may end up with lots of conflicting files.&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;&lt;SPAN style="FONT-WEIGHT: bold; COLOR: navy"&gt;Maven's Double Pointer Indirection:&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Another interesting feature of OneNote is that you can click a button in Microsoft Outlook to start a new page for meeting notes. OneNote imports the appointment information directly into your notebook including meeting attendees, time, place, and agenda if you included one (and you should).&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;&lt;SPAN style="FONT-WEIGHT: bold; COLOR: navy"&gt;Maven's Triple Pointer Indirection:&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Try turning on audio recording within OneNote&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;while you are in a meeting. You can type notes and record voices at the same time, and OneNote takes care of synchronizing the voices to the written notes automatically!&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;&lt;SPAN style="FONT-WEIGHT: bold; COLOR: navy"&gt;Maven's Resources:&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in; DIRECTION: ltr; unicode-bidi: embed" type=circle&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"&gt;OneNote Home Page: &lt;/SPAN&gt;&lt;A href="http://office.microsoft.com/en-us/onenote/default.aspx"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"&gt;http://office.microsoft.com/en-us/onenote/default.aspx&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"&gt;A fairly thorough list of Frequently Asked Questions about OneNote: &lt;/SPAN&gt;&lt;A href="http://www.factplace.com/onenotefaq.htm"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"&gt;http://www.factplace.com/onenotefaq.htm&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"&gt;Blog from one of the creators of OneNote: &lt;/SPAN&gt;&lt;A href="http://blogs.gotdotnet.com/david_rasmussen/"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"&gt;http://blogs.gotdotnet.com/david_rasmussen/&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8518708" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/progressive_development/archive/tags/tools/default.aspx">tools</category><category domain="http://blogs.msdn.com/progressive_development/archive/tags/productivity/default.aspx">productivity</category></item><item><title>Motley says: "Performance stinks, but I'll deal with it later"</title><link>http://blogs.msdn.com/progressive_development/archive/2007/11/20/motley-says-performance-stinks-but-i-ll-deal-with-it-later.aspx</link><pubDate>Tue, 20 Nov 2007 17:46:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6347376</guid><dc:creator>James Waletzky</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/progressive_development/comments/6347376.aspx</comments><wfw:commentRss>http://blogs.msdn.com/progressive_development/commentrss.aspx?PostID=6347376</wfw:commentRss><description>&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri; TEXT-DECORATION: underline"&gt;Summary&lt;/P&gt;
&lt;P style="FONT-WEIGHT: bold; FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-WEIGHT: bold; FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Motley:&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I'll deal with performance issues when I have something to test. Then I'll run the profiler and just optimize the slow methods.&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-WEIGHT: bold; FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Maven: Think about performance early in the development cycle. Set goals. Design for performance. Measure, measure, measure. Optimize the scenarios that matter.&lt;/P&gt;
&lt;P style="FONT-WEIGHT: bold; FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;______________________________&lt;/P&gt;
&lt;P style="FONT-WEIGHT: bold; FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;[Context: Motley is doing some performance testing and optimization on the feature he is building]&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Motley: Hey, Mave. Check this out. I've been doing a bunch of performance tuning on this component. I've made these three methods twice as fast as they were before!&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Maven: Cool! What tool are you using to measure how fast they are?&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Motley: The built-in profiler in Visual Studio rocks. You can run a set of unit tests against your production code and VS will tell you what methods are your bottleneck. Based on that I go in and fix them. For ultimate flexibility, you can choose to either instrument your build with profiling prolog and epilog code in each method, or you can have the VS profiler take frequent samples to see how your application is behaving. I prefer instrumentation - it changes the binary but you get more accurate results. &lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Maven: Sweet. Why did you just jump to the methods that VS tells you were the slowest?&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Motley: Because they're slowest! Duh. I'm not going to go spend valuable time optimizing the fast methods! Have you had your morning coffee today Mave?&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Maven: The key is that just because a particular method is slower on a relative basis than other methods for a particular test scenario doesn't mean it's worthy of spending time optimizing.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;What if the scenario you are optimizing for is rarely used? Is it worth making the 5% of the code that is rarely executed twice as fast? What if the user already perceives that feature to be fast enough given today's hardware?&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Motley: Reasonable questions, I guess. But faster is faster. It's never a waste of time to optimize a component. &lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Maven: With all due respect, Mot, I beg to differ. The time you spend optimizing some component that doesn't really need it from the user perspective is time you could have spent improving code quality, optimizing something that needed it, or building a new piece of functionality to delight the user.&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Motley: Grrrr… you mean I am "generating waste", if we talk about being agile. I hate it when you're right.&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Maven: Generating waste? Yeah, I didn't think of it that way, but exactly! Nice observation Mot!&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Motley: Okay, I'll find out which components need optimizing first and then work on those.&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Maven: Great. How are you going to determine which ones need optimization?&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Motley: I'll… Hmmm… your telling me I can't just look at absolute numbers. Well… enlighten me Einstein. How am I going to know what to optimize???&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Maven: There's nothing wrong with using the profiler for some scenarios as you mentioned previously. Profiling works well when you are executing end-to-end scenario tests that exhibit real-world behavior of the software. For example, use the software in a scenario the way the user would. The bottlenecks that appear in a real-world use case are usually worth fixing. However, if the user already thinks that the software performs well enough for their needs - on standard hardware of course - then focus your efforts elsewhere. You need the voice of the customer (e.g. a user experience person or program manager) to give you that information, however. &lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;There are other types of performance testing you want to do as well that are above the method level. For example, if you are building a web application, you may need to test throughput, response time, and latency. These factors may have more to do with the way you use bandwidth and how machines are configured vs. how individual methods perform.&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Motley: I'll have to agree with you there, as scary as that sounds. You have to admit that I was doing the right thing by measuring, however. &lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Maven: Absolutely! The golden rule of performance tuning is Measure! Measure! Measure! We usually say it three times to ensure the emphasis is made. Don't try to guess at what to optimize as much of the time you'll guess wrong. Leverage a profiler and other testing tools to provide some solid data. Another question: have you been thinking about performance all along?&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Motley: What do you mean? I can't fix any performance problems until I know they exist! I deal with performance stuff late in the cycle like any other developer.&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Maven: What if you make a bad design decision? I know one team that was trying to determine whether they should redesign their remoting infrastructure from using DCOM to Web Services. Early on they decided to take the plunge and made a heavy investment in web services. Know what happened? Although web services brought benefits in terms of standardization and security, the performance hit they took was &lt;SPAN style="FONT-STYLE: italic"&gt;huge&lt;/SPAN&gt;. Web services infrastructure was tied to the entire application and they couldn't go back.&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Motley: Sucks to be them! They should have prototyped or developed using an agile model in small pieces with performance testing throughout.&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Maven: Exactly! So why not heed your own advice?&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Motley: &amp;lt;silence&amp;gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Maven: You need to consider performance from day 1 of your development. Set performance goals to hit. The previous version, if it exists, can be your baseline for performance numbers. Aim to be within at least 10% of those numbers. Think about the scenarios where performance is critical. Plan and budget the resources such as memory and CPU you use accordingly. Prototype new technologies before making a heavy investment in them. If you discover a design flaw related to performance too late, you may not be able to fix it.&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Motley: So your best practices for developers when it comes to performance are to:&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in; DIRECTION: ltr; unicode-bidi: embed" type=circle&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"&gt;Measure, measure, measure - don’t guess at bottlenecks&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"&gt;Don't leave performance work to too late in the cycle&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"&gt;Think about performance goals early on, and consider performance when doing design&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"&gt;Test and tune real customer scenarios &lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"&gt;Prototype technology decisions that may impact performance&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;What about Test-Driven Development, though? Where does performance work fit in with that methodology?&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;Maven: The story doesn't change a whole lot. You still think about performance goals and design impacts. As my buddy Matt says, make sure you don't do TDD with the blinders on as a change in one unit or component can have a significant impact on performance in a seemingly unrelated feature of the product. With TDD you are testing units in isolation, and mock objects help with that. You should think about developing performant code according to the contract in your unit. However, you may not be able to predict the impact on your dependencies. The advice there is to integrate early and often, and start performance testing early and often. Don't leave it until the end.&lt;/P&gt;
&lt;P style="FONT-WEIGHT: bold; FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;______________________________&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;&lt;SPAN style="FONT-WEIGHT: bold; COLOR: navy"&gt;Maven's Pointer:&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;At Microsoft, software performance is treated very seriously, and is basically a feature in a project from day 1. You need to make some intelligent design decisions around performance early in a development cycle, but you want to avoid painting yourself into a corner if you make the wrong decision. That's why designing to interfaces is such an important design concept. You want your design to accommodate change if you make the wrong decision or you need to plug in a different algorithm depending on some heuristic. Your sorting algorithm may work fine on small datasets, but what if in the field you run across a huge dataset for which there is a better algorithm?&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 11pt; MARGIN: 0in; FONT-FAMILY: Calibri"&gt;&lt;SPAN style="FONT-WEIGHT: bold; COLOR: navy"&gt;Maven's Resources:&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in; DIRECTION: ltr; unicode-bidi: embed" type=circle&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"&gt;No specific resource around designing for performance and tuning performance due to the tight tie to technology. It is recommended that you search your favorite bookstore for books on performance specific to your technology (e.g. SQL, ASP.NET, C#, etc.) or activity (development, testing).&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6347376" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/progressive_development/archive/tags/quality/default.aspx">quality</category><category domain="http://blogs.msdn.com/progressive_development/archive/tags/design/default.aspx">design</category><category domain="http://blogs.msdn.com/progressive_development/archive/tags/tools/default.aspx">tools</category></item><item><title>Motley says: "The only tool I need is the debugger (Part 2)"</title><link>http://blogs.msdn.com/progressive_development/archive/2007/10/16/motley-says-the-only-tool-i-need-is-the-debugger-part-2.aspx</link><pubDate>Tue, 16 Oct 2007 17:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5389240</guid><dc:creator>James Waletzky</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/progressive_development/comments/5389240.aspx</comments><wfw:commentRss>http://blogs.msdn.com/progressive_development/commentrss.aspx?PostID=5389240</wfw:commentRss><description>&lt;UL style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.02in; DIRECTION: ltr; unicode-bidi: embed"&gt;
&lt;UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Summary&lt;/U&gt;&lt;/STRONG&gt; 
&lt;P&gt;&lt;STRONG&gt;Motley: The debugger is my most valuable tool as a developer.&lt;/STRONG&gt; 
&lt;P&gt;&lt;STRONG&gt;Maven: Check out other tools that will give you the big picture of the current state of your system, including .NET Reflector, NotePad++, Regulator, TestDriven.NET, and Fiddler.&lt;/STRONG&gt; 
&lt;P&gt;______________________________ 
&lt;P&gt;[Context: A couple days after the initial conversation about developer tools, Maven and Motley are back at it] 
&lt;P&gt;Motley: Hey Mave! I've been experimenting and researching various other development tools since the last time we chatted. The debugger is still the tool I cannot live without, but I found some other cool tools that really help out. 
&lt;P&gt;Maven: Oh yeah? What have you discovered? 
&lt;P&gt;Motley: A super-duper-fantastic tool I discovered is &lt;A href="http://www.aisto.com/roeder/dotnet/" mce_href="http://www.aisto.com/roeder/dotnet/"&gt;Lutz Roeder's .NET Reflector&lt;/A&gt;. It's a great free tool that provides a class browser and documentation viewer for .NET assemblies AND it decompiles the assembly's intermediate language into C# or Visual Basic. Plus, it has an add-in model that allows you to extend functionality. There are some really useful &lt;A href="http://www.codeplex.com/reflectoraddins" mce_href="http://www.codeplex.com/reflectoraddins"&gt;.NET Reflector Add-ins&lt;/A&gt; available as open source at CodePlex, Microsoft's open source repository. Some of the interesting add-ins include one for generating code metrics like number of methods and code complexity, one for generating dependency graphs, and drawing class diagrams. 
&lt;P&gt;&lt;IMG height=160 src="http://blogs.msdn.com/blogfiles/progressive_development/WindowsLiveWriter/MotleysaysTheonlytoolIneedisthedebuggerP_13B87/clip_image001_1.png" width=160 mce_src="http://blogs.msdn.com/blogfiles/progressive_development/WindowsLiveWriter/MotleysaysTheonlytoolIneedisthedebuggerP_13B87/clip_image001_1.png"&gt; 
&lt;P&gt;&lt;FONT size=1&gt;Pasted from &amp;lt;&lt;/FONT&gt;&lt;A href="http://www.aisto.com/roeder/dotnet/" mce_href="http://www.aisto.com/roeder/dotnet/"&gt;&lt;FONT size=1&gt;http://www.aisto.com/roeder/dotnet/&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=1&gt;&amp;gt; &lt;/FONT&gt;
&lt;P&gt;Maven: Yeah, .NET Reflector is really useful - I use it all the time. 
&lt;P&gt;Motley: You mean you already knew about this tool? Sometimes, you really piss me off. 
&lt;P&gt;Maven: I just stumbled across it one day and started playing with it. You know Mark, the architect across the hall? He actually views all of the source code for all of our assemblies using .NET Reflector because it gives him a consistent view of the code regardless of who wrote it. What else did you find? 
&lt;P&gt;Motley: You seem to know everything - maybe I shouldn't even bother sharing? 
&lt;P&gt;Maven: I hardly know EVERYTHING. I just have happened to stumble across that tool. C'mon - what did you find? 
&lt;P&gt;Motley: Ok, ok. NotePad frustrates me from time because it's missing some basic functionality, such as code syntax highlighting. There are times when I want to view code or HTML source from a web page without the overhead of loading Visual Studio. For that, I found &lt;A href="http://notepad-plus.sourceforge.net/uk/site.htm" mce_href="http://notepad-plus.sourceforge.net/uk/site.htm"&gt;NotePad++&lt;/A&gt;. 
&lt;P&gt;&lt;IMG height=384 src="http://blogs.msdn.com/blogfiles/progressive_development/WindowsLiveWriter/MotleysaysTheonlytoolIneedisthedebuggerP_13B87/clip_image002_2.gif" width=545 mce_src="http://blogs.msdn.com/blogfiles/progressive_development/WindowsLiveWriter/MotleysaysTheonlytoolIneedisthedebuggerP_13B87/clip_image002_2.gif"&gt; 
&lt;P&gt;&lt;FONT size=1&gt;Pasted from &amp;lt;&lt;/FONT&gt;&lt;A href="http://notepad-plus.sourceforge.net/commun/screenshots/scrsh_multiView.gif" mce_href="http://notepad-plus.sourceforge.net/commun/screenshots/scrsh_multiView.gif"&gt;&lt;FONT size=1&gt;http://notepad-plus.sourceforge.net/commun/screenshots/scrsh_multiView.gif&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=1&gt;&amp;gt; &lt;/FONT&gt;
&lt;P&gt;Maven: NotePad++? I haven't heard of that one. What does it do over NotePad? 
&lt;P&gt;Motley: Something you haven't heard of?? I'm shocked! Anyway, NotePad++ is a free editor that loads super quickly and has syntax highlighting for several languages. It also gives you tabbed editing, an explorer window right next to you to load other files, tidy formatting of several file types, multiple character encodings, flexible search, and a host of other options. Definitely worthwhile having on your box. 
&lt;P&gt;Maven: I'll definitely have to check that out. Thanks for the pointer. What else? 
&lt;P&gt;Motley: You know how I love regular expressions? Well, I find myself having to relearn the syntax every time I pull them out of my toolbox. And even then, no guarantees I'll get it right until I run it and try it. &lt;A href="http://tools.osherove.com/CoolTools/Regulator/tabid/185/Default.aspx" mce_href="http://tools.osherove.com/CoolTools/Regulator/tabid/185/Default.aspx"&gt;Regulator&lt;/A&gt; to the rescue! It provides syntax highlighting, a testing environment for regular expressions, snippets, and performance analysis of your expressions. Once you are happy with the expression for your needs, it will even generate the code for you. And if that wasn't enough, the same author also includes a tool for beginners that allows point-and-click design of regular expressions called &lt;A href="http://tools.osherove.com/Default.aspx?tabid=182" mce_href="http://tools.osherove.com/Default.aspx?tabid=182"&gt;Regulazy&lt;/A&gt;. 
&lt;P&gt;&lt;IMG height=240 src="http://blogs.msdn.com/blogfiles/progressive_development/WindowsLiveWriter/MotleysaysTheonlytoolIneedisthedebuggerP_13B87/clip_image003_1.gif" width=352 mce_src="http://blogs.msdn.com/blogfiles/progressive_development/WindowsLiveWriter/MotleysaysTheonlytoolIneedisthedebuggerP_13B87/clip_image003_1.gif"&gt; 
&lt;P&gt;&lt;FONT size=1&gt;Pasted from &amp;lt;&lt;/FONT&gt;&lt;A href="http://tools.osherove.com/Default.aspx?tabid=182" mce_href="http://tools.osherove.com/Default.aspx?tabid=182"&gt;&lt;FONT size=1&gt;http://tools.osherove.com/Default.aspx?tabid=182&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=1&gt;&amp;gt; &lt;/FONT&gt;
&lt;P&gt;Maven: I am lazy with my regular expressions, so that looks like a good find. I know exactly what you mean with relearning them every time. Yikes. Any others? 
&lt;P&gt;Motley: You know I've been getting into this Test-Driven Development thing as of late. I came across another fabulous tool called &lt;A href="http://www.testdriven.net/overview.aspx" mce_href="http://www.testdriven.net/overview.aspx"&gt;TestDriven.NET&lt;/A&gt;. It is a nice add-in for Visual Studio that allows you to run tests for a class, method, etc. with a single click. It supports multiple unit test frameworks, and just makes me more productive. 
&lt;P&gt;&lt;IMG height=261 src="http://blogs.msdn.com/blogfiles/progressive_development/WindowsLiveWriter/MotleysaysTheonlytoolIneedisthedebuggerP_13B87/clip_image004_1.png" width=350 mce_src="http://blogs.msdn.com/blogfiles/progressive_development/WindowsLiveWriter/MotleysaysTheonlytoolIneedisthedebuggerP_13B87/clip_image004_1.png"&gt; 
&lt;P&gt;&lt;FONT size=1&gt;Pasted from &amp;lt;&lt;/FONT&gt;&lt;A href="http://www.testdriven.net/Screenshots.aspx" mce_href="http://www.testdriven.net/Screenshots.aspx"&gt;&lt;FONT size=1&gt;http://www.testdriven.net/Screenshots.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=1&gt;&amp;gt;&lt;/FONT&gt; 
&lt;P&gt;Maven: That one sounds a lot like the NUnitAddin I used to play with. 
&lt;P&gt;Motley: Yeah, it morphed from just NUnit to support other test frameworks as well. Last on my list for this week is a tool called &lt;A href="http://www.fiddlertool.com/fiddler/" mce_href="http://www.fiddlertool.com/fiddler/"&gt;Fiddler&lt;/A&gt;. Fiddler is a free tool that allows you to get a very detailed look at the traffic to and from your computer. It contains a nice event-based scripting language that you can use to hook some of the inbound or outbound traffic. If you're at all interested in knowing exactly what is happening with your HTTP traffic, this is a great application. 
&lt;P&gt;&lt;IMG height=384 src="http://blogs.msdn.com/blogfiles/progressive_development/WindowsLiveWriter/MotleysaysTheonlytoolIneedisthedebuggerP_13B87/clip_image005_1.png" width=525 mce_src="http://blogs.msdn.com/blogfiles/progressive_development/WindowsLiveWriter/MotleysaysTheonlytoolIneedisthedebuggerP_13B87/clip_image005_1.png"&gt; 
&lt;P&gt;&lt;FONT size=1&gt;Pasted from &amp;lt;&lt;/FONT&gt;&lt;A href="http://www.fiddlertool.com/fiddler/images/fiddler98.png" mce_href="http://www.fiddlertool.com/fiddler/images/fiddler98.png"&gt;&lt;FONT size=1&gt;http://www.fiddlertool.com/fiddler/images/fiddler98.png&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=1&gt;&amp;gt;&lt;/FONT&gt; 
&lt;P&gt;Maven: I've played with Fiddler a bit, and you can do some real interesting and creative things with it. The scripting language is definitely worth playing with. Thanks for all the suggestions, Mot! You've really been doing your research. Let's go share these with the team, shall we? 
&lt;P&gt;Motley: What do you mean "let's" and "we"? I did all the work, I'll go do it. Why don't you go find us some more tools to enhance our productivity. Don't worry, I'll give you credit where credit is due. 
&lt;P&gt;______________________________ 
&lt;P&gt;&lt;FONT color=#0000a0&gt;&lt;STRONG&gt;Maven's and Motley's Pointer:&lt;/STRONG&gt; &lt;/FONT&gt;Maven and Motley would love to hear about what tools make you a better developer. Please add some of your favorites to the comments below. 
&lt;P&gt;&lt;FONT color=#0000a0&gt;&lt;STRONG&gt;Maven's and Motley's Resources:&lt;/STRONG&gt;&lt;/FONT&gt; 
&lt;UL&gt;
&lt;LI&gt;CodePlex Shared Source Repository: &lt;A href="http://www.codeplex.com/" mce_href="http://www.codeplex.com"&gt;http://www.codeplex.com&lt;/A&gt; 
&lt;LI&gt;Lutz Roeder's .NET Reflector: &lt;A href="http://www.aisto.com/roeder/dotnet/" mce_href="http://www.aisto.com/roeder/dotnet/"&gt;http://www.aisto.com/roeder/dotnet/&lt;/A&gt; 
&lt;LI&gt;.NET Reflector Add-ins: &lt;A href="http://www.codeplex.com/reflectoraddins" mce_href="http://www.codeplex.com/reflectoraddins"&gt;http://www.codeplex.com/reflectoraddins&lt;/A&gt; 
&lt;LI&gt;Notepad++: &lt;A href="http://notepad-plus.sourceforge.net/uk/site.htm" mce_href="http://notepad-plus.sourceforge.net/uk/site.htm"&gt;http://notepad-plus.sourceforge.net/uk/site.htm&lt;/A&gt; 
&lt;LI&gt;Regulator (&lt;A href="http://tools.osherove.com/CoolTools/Regulator/tabid/185/Default.aspx" mce_href="http://tools.osherove.com/CoolTools/Regulator/tabid/185/Default.aspx"&gt;http://tools.osherove.com/CoolTools/Regulator/tabid/185/Default.aspx&lt;/A&gt;) 
&lt;LI&gt;Regulazy: &lt;A href="http://tools.osherove.com/Default.aspx?tabid=182" mce_href="http://tools.osherove.com/Default.aspx?tabid=182"&gt;http://tools.osherove.com/Default.aspx?tabid=182&lt;/A&gt; 
&lt;LI&gt;TestDriven.NET (&lt;A href="http://www.testdriven.net/overview.aspx" mce_href="http://www.testdriven.net/overview.aspx"&gt;http://www.testdriven.net/overview.aspx&lt;/A&gt;) 
&lt;LI&gt;Fiddler: &lt;A href="http://www.fiddlertool.com/fiddler/" mce_href="http://www.fiddlertool.com/fiddler/"&gt;http://www.fiddlertool.com/fiddler/&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;UL style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in; DIRECTION: ltr; unicode-bidi: embed" type=circle&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5389240" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/progressive_development/archive/tags/tools/default.aspx">tools</category></item><item><title>Motley says: "The only tool I need is the debugger (Part 1)"</title><link>http://blogs.msdn.com/progressive_development/archive/2007/10/09/motley-says-the-only-tool-i-need-is-the-debugger-part-1.aspx</link><pubDate>Tue, 09 Oct 2007 19:44:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5367323</guid><dc:creator>James Waletzky</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/progressive_development/comments/5367323.aspx</comments><wfw:commentRss>http://blogs.msdn.com/progressive_development/commentrss.aspx?PostID=5367323</wfw:commentRss><description>&lt;UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Summary&lt;/U&gt;&lt;/STRONG&gt; 
&lt;P&gt;&lt;STRONG&gt;Motley: The debugger is my most valuable tool as a developer.&lt;/STRONG&gt; 
&lt;P&gt;&lt;STRONG&gt;Maven: Check out other tools that will give you the big picture of the current state of your system, including Process Monitor, Process Explorer, and AutoRuns.&lt;/STRONG&gt; 
&lt;P&gt;______________________________ 
&lt;P&gt;[Context: Maven is observing Motley work and notices that Motley's favorite tool is the debugger] 
&lt;P&gt;Maven: Hey, Mot. I noticed that you spend a lot of time in the debugger. I must say, you're pretty good at it, but have you considered that there may be other tools that can do some jobs more effectively than the debugger? 
&lt;P&gt;Motley: Are you putting your nose in my business yet again? The debugger is the only tool that I need! And say, what are you doing watching me anyway? 
&lt;P&gt;Maven: I was just, uh, trying to learn how the master works. 
&lt;P&gt;Motley: Hmmm… good reason, I guess. Now that you have obviously buttered me up, what tools are you talking about? 
&lt;P&gt;Maven: There are plenty of good tools out there that help a developer be more effective, particularly when you do not have symbols and source for many of the applications you may be interacting with. For instance, a half hour ago I saw you flipping back and forth between Visual Studio (VS) and the registry editor trying to see what was changing. &lt;A href="http://www.microsoft.com/technet/sysinternals/FileAndDisk/processmonitor.mspx" mce_href="http://www.microsoft.com/technet/sysinternals/FileAndDisk/processmonitor.mspx"&gt;Process Monitor&lt;/A&gt; is a fantastic tool that no developer should be without! It captures a log of what is happening in the registry, as well general accesses to the file system. If you want to learn all about how an application behaves with the registry or with the file system, including logging errors and full process information, this is the tool for you. 
&lt;P&gt;&lt;IMG height=235 src="http://blogs.msdn.com/blogfiles/progressive_development/WindowsLiveWriter/MotleysaysTheonlytoolIneedisthedebuggerP_8930/clip_image001.gif" width=550 mce_src="http://blogs.msdn.com/blogfiles/progressive_development/WindowsLiveWriter/MotleysaysTheonlytoolIneedisthedebuggerP_8930/clip_image001.gif"&gt; 
&lt;P&gt;&lt;FONT size=1&gt;Pasted from &amp;lt;&lt;/FONT&gt;&lt;A href="http://www.microsoft.com/technet/sysinternals/FileAndDisk/processmonitor.mspx" mce_href="http://www.microsoft.com/technet/sysinternals/FileAndDisk/processmonitor.mspx"&gt;&lt;FONT size=1&gt;http://www.microsoft.com/technet/sysinternals/FileAndDisk/processmonitor.mspx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=1&gt;&amp;gt; &lt;/FONT&gt;
&lt;P&gt;Motley: Do you realize how many entries logging all registry and file system accesses would generate? 
&lt;P&gt;Maven: A lot. But Process Monitor allows you to filter by process, type of access, and a host of other options. It also supports searching through all logged entries making finding what you are looking for very easy. 
&lt;P&gt;Motley: Perhaps I'll download it one of these days. It does sound intriguing. In the meantime, my handy-dandy debugger gives me a fairly complete view of what's going on. 
&lt;P&gt;Maven: But what if you have a situation where there is some system-wide slow-down and you want to figure out what's going on? The debugger is not the best tool for the job. Sure you could attach to a process and see what's going on, but that will take you quite a bit of effort! 
&lt;P&gt;Motley: That's what Task Manager is for! A little Ctrl+Shift+Escape combo and it's up and running. 
&lt;P&gt;Maven: Task Manager is an average tool, but how about something that kicks its butt! 
&lt;P&gt;Motley: Hard to one-up Task Manager, but let's hear it. 
&lt;P&gt;Maven: &lt;A href="http://www.microsoft.com/technet/sysinternals/utilities/processexplorer.mspx" mce_href="http://www.microsoft.com/technet/sysinternals/utilities/processexplorer.mspx"&gt;Process Explorer&lt;/A&gt; is a majorly cool tool that also fully supports Windows XP and Vista. It provides much more detailed information than you get with Task Manager, and there is a one-click option to replace task manager in Windows and automatically launch Process Explorer. This tool is invaluable for getting the complete picture of what is happening on your system, including detailed information about selected processes, system-wide CPU and disk-access graphs, and other helpful performance information. 
&lt;P&gt;&lt;IMG height=391 src="http://blogs.msdn.com/blogfiles/progressive_development/WindowsLiveWriter/MotleysaysTheonlytoolIneedisthedebuggerP_8930/clip_image002.gif" width=427 mce_src="http://blogs.msdn.com/blogfiles/progressive_development/WindowsLiveWriter/MotleysaysTheonlytoolIneedisthedebuggerP_8930/clip_image002.gif"&gt; 
&lt;P&gt;&lt;FONT size=1&gt;Pasted from &amp;lt;&lt;/FONT&gt;&lt;A href="http://www.microsoft.com/technet/sysinternals/utilities/processexplorer.mspx" mce_href="http://www.microsoft.com/technet/sysinternals/utilities/processexplorer.mspx"&gt;&lt;FONT size=1&gt;http://www.microsoft.com/technet/sysinternals/utilities/processexplorer.mspx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=1&gt;&amp;gt; &lt;/FONT&gt;
&lt;P&gt;Motley: Explorer? Monitor? Jeez, could they be a little more original with the naming??? Names aside, if it could show me what processes have what files open, that would indeed be a very cool tool! 
&lt;P&gt;Maven: It can do that, and much more! Just download it - it's a copy/paste installation and doesn't affect your machine state at all. While we're in that same family of tools, also check out &lt;A href="http://www.microsoft.com/technet/sysinternals/utilities/autoruns.mspx" mce_href="http://www.microsoft.com/technet/sysinternals/utilities/autoruns.mspx"&gt;AutoRuns&lt;/A&gt;. It comprehensively tells you all the stuff that loads automatically in your system and has hooks to Process Explorer so you can drill down into the details. There's a lot more going on than what's in your Startup folder! 
&lt;P&gt;&lt;IMG height=367 src="http://blogs.msdn.com/blogfiles/progressive_development/WindowsLiveWriter/MotleysaysTheonlytoolIneedisthedebuggerP_8930/clip_image003.gif" width=540 mce_src="http://blogs.msdn.com/blogfiles/progressive_development/WindowsLiveWriter/MotleysaysTheonlytoolIneedisthedebuggerP_8930/clip_image003.gif"&gt; 
&lt;P&gt;&lt;FONT size=1&gt;Pasted from &amp;lt;&lt;/FONT&gt;&lt;A href="http://www.microsoft.com/technet/sysinternals/utilities/autoruns.mspx" mce_href="http://www.microsoft.com/technet/sysinternals/utilities/autoruns.mspx"&gt;&lt;FONT size=1&gt;http://www.microsoft.com/technet/sysinternals/utilities/autoruns.mspx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=1&gt;&amp;gt; &lt;/FONT&gt;
&lt;P&gt;Motley: I'm always curious why my system slows down as I install more stuff and have been looking for a good tool to help out there. AutoRuns sounds like it might do the trick. 
&lt;P&gt;Maven: There's lots of other good tools out there that can help us developers. Play around with those and I'll give you a few more that can make your life easier the next time we chat. 
&lt;P&gt;______________________________ 
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;Maven's Pointer: &lt;/FONT&gt;&lt;/STRONG&gt;In July 2006, Microsoft acquired Sysinternals.com, which was a fantastic site with all kinds of free utilities for download that make an administrator's, developer's or tester's life much easier. Since then, Microsoft has put up an index page for all of the utilities. The tools we talked about above are just the tip of the iceberg. Check out &lt;A href="http://www.microsoft.com/technet/sysinternals/default.mspx" mce_href="http://www.microsoft.com/technet/sysinternals/default.mspx"&gt;http://www.microsoft.com/technet/sysinternals/default.mspx&lt;/A&gt; for more great tools that will make you a more efficient developer. 
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;Maven's Resources:&lt;/FONT&gt;&lt;/STRONG&gt; 
&lt;UL&gt;
&lt;LI&gt;Windows Sysinternals: &lt;A href="http://www.microsoft.com/technet/sysinternals/default.mspx" mce_href="http://www.microsoft.com/technet/sysinternals/default.mspx"&gt;http://www.microsoft.com/technet/sysinternals/default.mspx&lt;/A&gt; 
&lt;LI&gt;Process Monitor: &lt;A href="http://www.microsoft.com/technet/sysinternals/FileAndDisk/processmonitor.mspx" mce_href="http://www.microsoft.com/technet/sysinternals/FileAndDisk/processmonitor.mspx"&gt;http://www.microsoft.com/technet/sysinternals/FileAndDisk/processmonitor.mspx&lt;/A&gt; 
&lt;LI&gt;Process Explorer: &lt;A href="http://www.microsoft.com/technet/sysinternals/utilities/processexplorer.mspx" mce_href="http://www.microsoft.com/technet/sysinternals/utilities/processexplorer.mspx"&gt;http://www.microsoft.com/technet/sysinternals/utilities/processexplorer.mspx&lt;/A&gt; 
&lt;LI&gt;AutoRuns: &lt;A href="http://www.microsoft.com/technet/sysinternals/utilities/autoruns.mspx" mce_href="http://www.microsoft.com/technet/sysinternals/utilities/autoruns.mspx"&gt;http://www.microsoft.com/technet/sysinternals/utilities/autoruns.mspx&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5367323" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/progressive_development/archive/tags/tools/default.aspx">tools</category></item></channel></rss>