{"id":682,"date":"2013-07-22T19:12:12","date_gmt":"2013-07-23T02:12:12","guid":{"rendered":"http:\/\/angryweasel.com\/blog\/?p=682"},"modified":"2013-07-23T10:33:19","modified_gmt":"2013-07-23T17:33:19","slug":"my-toolbox-2013","status":"publish","type":"post","link":"https:\/\/angryweasel.com\/blog\/my-toolbox-2013\/","title":{"rendered":"My Toolbox &#8211; 2013"},"content":{"rendered":"<p>On my bike ride to work today, I was thinking about my current toolbox \u2013 the tools I use on a daily basis to get my job done (or to help me get my job done). Or, to be perfectly honest, I\u2019ve been thinking about my toolbox for a while \u2013 I just thought about <em>writing<\/em> about it on my commute today.<\/p>\n<p>This isn\u2019t going to be a typical list \u2013 that\u2019s for two reasons. One is that I\u2019m not typical. The second is that I use some internal tools that may be helpful\u2026but since nobody outside of the Borg can get to them, aren\u2019t that interesting to share. But \u2013 what\u2019s listed below covers most of what I use on a day to day basis.<\/p>\n<h4>Stuff I use for Testing<\/h4>\n<p>This list could go on for a while, but I&#8217;ll stick to tools that I use every day, are free to anyone, and find great bugs.<\/p>\n<ul>\n<li><strong><a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/windows\/desktop\/dd371695(v=vs.85).aspx\">Application Verifier<\/a><\/strong> &#8211; AppVerif is a dynamic analysis tool (a lot like the old boundschecker tool). It&#8217;s easy to set up, the bugs are easy to debug, and its false positive rate is near zero. If you test a windows app, you should use it.<\/li>\n<li><strong><a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/windows\/hardware\/ff545448(v=vs.85).aspx\">Driver Verifier<\/a><\/strong> &#8211; DV is (IMO) the biggest blue-screen remover I know of, or can imagine. It finds driver faults way, way before they ever manifest in a system crash. If you test drivers, you have to use this tool (literally, as I think the driver certs require that you run it).<\/li>\n<li><strong>Static Analysis Tools<\/strong> &#8211; we use an internal version of the<a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ms182028.aspx\"> Code Analysis <\/a>tools from Visual Studio. I&#8217;ve never actually used the VS versions of the tools, but from what I can tell, what I use daily to help guide me to product issues is almost exactly the same as what we ship to developers.<\/li>\n<li><a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/windows\/hardware\/gg463009.aspx\"><strong>Kernel Debuggers<\/strong><\/a> &#8211; When you work on an operating system, you need a kernel debugger, and the debuggers from MS are great (I could just be used to them, having used them for years). Windbg (I pronounce it wind-bag) looks a bit like a throwback (IOW, it&#8217;s <em>not <\/em>a pretty debugger), but it&#8217;s a powerful debugger.<\/li>\n<\/ul>\n<h4>Command Line Goo<\/h4>\n<p>I spend a lot of time at the command line (our build system uses a lot of command line tools, and I\u2019m comfortable there). Many years ago, I used NDos\/4Dos, but I still prefer the standard cmd.exe shell to the currently available Windows shell alternatives.<\/p>\n<p>But the command line is much more than a terminal \u2013 it\u2019s the way you use it that makes it useful.<\/p>\n<ul>\n<li><strong>Macros<\/strong> \u2013 I don\u2019t know about you, but I <span style=\"text-decoration: underline;\">always<\/span> forget complex command lines \u2013 especially for commands I don\u2019t use often, , so I use a lot of doskey macros. I have a network accessible power supply hooked up to my consoles, so I have a macro that reminds me of the commands to reboot, and connects to the ip address (that I always forget) &#8211;<span style=\"font-family: Courier New; font-size: small;\">doskey netpower=echo Run rb num to reboot console num$Tsleep 2$Ttelnet %powerip%<br \/>\n<\/span>I have 40 or so of these, and scanning through the list, I use nearly every single one on a daily basis.<\/li>\n<li><strong>Grep \/ Findstr<\/strong> \u2013 I\u2019m always looking for stuff, and findstr is my partner. Need to find every instance of a file containing the text \u2018f\u2019\u2019 that does <em>not<\/em> have the text \u2018bar\u2019 on the same line: <span style=\"font-family: Courier New; font-size: small;\">findstr \/sip foo * |findstr \/vi bar<\/span>.<\/li>\n<\/ul>\n<h4>Other Tools<\/h4>\n<p>Tools I use every day include:<\/p>\n<ul>\n<li><strong>Notepad++<\/strong> \u2013 This is my primary editor. Since I build from the command line, I don\u2019t need anything except an editor that launches quickly and makes it easy for me to read and write code quickly. Notepad++ also has macro support which is great for those times when you need to make the same change across hundreds of lines.<\/li>\n<li><strong>Notepad2 <\/strong>\u2013 This is my <em>backup<\/em> editor. Sometimes, I want a file to load in a single window (notepad++ loads multiple documents). For example, I have a bunch of output files I need to look at every few weeks, and I never got around to writing something to get the output I need from the file. So, when I\u2019m ready to look at the files, I run <span style=\"font-family: Courier New; font-size: small;\">for %f in (*.txt) do start \/w notepad2.exe \u2013g \u20131 %f<\/span><br \/>\nThat launches notepad2 for each text file (waiting until I close it before launching the next one), and automatically puts the cursor on the last line of the file.<\/li>\n<li><strong>Visual Studio<\/strong> \u2013 I do a little bit of coding in VS, but I mainly use it for work item tracking in TFS<\/li>\n<li><strong><a href=\"http:\/\/leankit.com\">Leankit<\/a><\/strong> \u2013 I keep my life in order (including my work life) using personal kanban, and leankit is my tool of choice. It keeps me sane.<\/li>\n<li><strong>Others<\/strong> \u2013 I use Excel, a few different mind-mapping tools, scripting languages, and terminal server frequently as well, but the use cases are probably less interesting.\u00a0 Other Office apps (Outlook, OneNote, Word, etc.) also get extensive usage, although less directly related to software development or testing.<\/li>\n<\/ul>\n<p><em>[Preemptive comment: yes \u2013 I know that the brain is your most important tool as a tester (or programmer) \u2013 but this is true for <span style=\"text-decoration: underline;\">all<\/span> knowledge work. You need to use your brain to know when to use tools like these, and recognize when they will help you. Consider brain power noted.<\/em>]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>On my bike ride to work today, I was thinking about my current toolbox \u2013 the tools I use on a daily basis to get my job done (or to help me get my job done). Or, to be perfectly honest, I\u2019ve been thinking about my toolbox for a while \u2013 I just thought about&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-682","post","type-post","status-publish","format-standard","hentry","category-allposts"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/posts\/682","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/comments?post=682"}],"version-history":[{"count":0,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/posts\/682\/revisions"}],"wp:attachment":[{"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/media?parent=682"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/categories?post=682"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/tags?post=682"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}