When I posted Tools We Use, there were several comments, as well as many emails asking me how I used OneNote for debugging and development. Yes, I was the one who wrote “The greatest piece of software ever written. I’ve done more debugging and development with OneNote than anything else.” Having been a proponent for years, it was heartening to get all those questions because that tells me people were curious about what it could do for them. OneNote has not only made me better at my job, but it’s made me lose weight and keep it off just because it’s always running on all my machines. While it might not be the ultimate in weight loss tools, it really is the best tool I have ever used.
If you haven’t read much about OneNote, or ever run it, I suggest starting with the Top 10 Benefits web page. That’s the best place to see its overview and give you an idea what it can do. I’ll assume here in this article that you’ve at read some of the marketing collateral and have an idea how OneNote works. What’s very interesting about OneNote is that the program is so flexible that everyone uses it differently. There are features that I never use but if were taken out of the product people would storm the Redmond campus with pitchforks. I think it’s a huge testament to the OneNote team that they have come up with a tool that satisfies such a diverse set of users. I’ve said many times that OneNote is the only piece of software that I’ve used that works the way I want and I never had to conform any of my behavior to how it works. That’s amazing when you think about it.
My OneNote usage falls into several patterns. Probably the most important is thinking/note taking. When thinking about a problem, be something to code, debug, or the outline of this article, I need to brainstorm all those random thoughts floating around in my head. For whatever reason, when I’m thinking I need to write things down. That’s physically with a pen in my hand as my brain and that pen are connected. I write out anything bopping around my brain during these sessions so I have it. In the ancient days (B ON – Before OneNote), I kept everything in one of those 500 page college notebooks and I’d go through five or six of them a year.
That worked fine, but the problem came when I had to search for something, especially if my search ran across notebooks. At one point, I attempted to keep separate sections for different projects/ideas/whatever. That lasted about a week because when you’re thinking or brainstorming, nothing is linear. You have meetings, you have random ideas, and you take notes. If you can keep everything completely compartmentalized good for you, but I didn’t want to waste my time on organization. I’ve read several of those books on organizations like Getting Things Done and it always struck me that you spend more time organizing than doing. (That last sentence will probably bring the whole wrath of the internet down on me.)
So I like to physically write my thoughts. That’s why I’m a huge Tablet PC proponent. For me, a Tablet PC and OneNote is a perfect match. The searching problem is completely solved because the handwriting recognition is fantastic so if I can remember a term or two I wrote down, in OneNote, the search always finds it. Interestingly, with OneNote, I do organize my random thoughts because it’s as simple as dragging a page to a different section. Even better, you can copy a page or pieces of a page to different sections as appropriate. Therefore, with OneNote I am getting my thinking done, but am better organized because it’s 30 seconds to do a major reorganization of pages. The search is the big feature, though. It’s amazing to see all the places I’ve referenced particular subjects, APIs, or issues.
Because computers hadn’t been invented when I was growing up, I am unable to take notes on a computer by typing. Believe me I have tried but I whenever I do I’m losing track of what’s going on. Again, I have to write notes out so I can get the notes and keep up with the meeting or lecture. OneNote saves the day because all my notes are there and perfectly searchable. Also, I have a congenital need to take notes so pretty much any meeting or presentation I’m in, I have notes for it.
Another smaller form of note taking I use constantly is checklists. For example, recently writing some code that to incorporate into the version control system had six or seven steps to do to get everything done correctly (i.e., I didn’t break the build). I jotted those steps down and used the check box tag from OneNote so I could ensure I did all the steps. With all the things you’ve got to keep track of getting your job done, those 30 seconds to jot down the checklist in OneNote makes sure I get everything done correctly. Now that I think about it, I probably do this checklist thing constantly in OneNote. I just looked through my notebook and there must be twenty throw away checklists still living on various pages.
Obviously, I write software or more likely, debugging it for a living. When debugging software is where OneNote really shines. Each bug I’m working on gets its own section tab. The first page is where I write down the initial symptoms and hypothesis I have for the problem. I also never replace the hypothesis, I just keep adding new formulations so I have a record of how the thinking went. Obviously, I keep lots of “thinking” notes in other pages.
While I can’t give you the pages, because I don’t have the client’s permission, I thought it would be good to describe the pages I created working on a recent bug. This bug happened to be a case where there was huge memory usage in a .NET application and the client provided me with a couple of memory dumps to look at. After creating the initial hypothesis page, I opened a dump in WinDBG so I could get a basic idea what was floating around in memory. In WinDBG, one of my favorite tricks is use the asterisk comment character to put comments in the log. After about 20 minutes I was getting a pretty good idea of what was “leaking” so I pasted the whole WinDBG transcript into a new page in OneNote. I did a search for all “> *” to find all the comments I had put in and made those lines bold so the client could see what I was doing. (Someday I need to write a OneNote add-in to bold WinDBG comments automatically).
After using WinDBG to look at a couple of different dumps, all of which I poured into OneNote, it was time to dig deeper with SciTech’s .NET Memory Profiler. As I analyzed the dumps in Memory Profiler, if there was anything vaguely interesting, I took a screen shot with the OneNote WINKEY+S screen clipping tool and put those into the section. Before each screen shot I included notes as to what I thought was interesting about what Memory Profiler was showing. When doing multiple screen shot sessions like this I’ve found it best to use OneNote’s automatic outlining to make it easy to keep everything lined up.
Once I’d figured out what was being referenced and never released, I had everything right there in OneNote so I could do my report to the client. Of course, I sent along the complete OneNote section so they could see everything I did to track down the bug. They were thrilled to get everything in one package like that because it was a great learning experience for their developers to see exactly what I had done to find the bug. At Wintellect, it’s not all about giving a man a fish. We do like to teach how to fish!
When working on some bugs, especially one in my code, I take advantage of another fantastic OneNote feature: Print to OneNote. OneNote, unfortunately only on 32-bit for Office 2007 but fixed for Office 2010, installs a printer driver so you can print directly into OneNote. I love to print my source code into OneNote so I can hand walk in with my Tablet PC. I mark up and draw lines and scribble all over the code so I can follow the flow and generally grock exactly what the code does. The cool surprise is that any file printed to OneNote has OCR run on it so the text in those files shows up in your searches, too.
Another OneNote feature I use on especially performance bugs and when developing is embedding files in OneNote pages. I love this because everything related to the project, such as the Excel spreadsheets, stays in one place so there’s no looking for a particular file. Keeping all the files together simplifies my life. If you’ve got SharePoint, that’s fine, but for every other case, there’s OneNote.
My final main use for OneNote is research. With my notes and potentially research papers printed into OneNote from their PDF sources, the only thing missing is all the stuff you find on the web. OneNote adds a button to Internet Explorer that lets you export the page contents to OneNote. I use this to get the raw text in the page so when I want to use pieces of it for quotes it’s a copy and paste away. This is the one area where I’ve had a criticism or two (shocking, I know). On some sites with div tags mania, the imported text into OneNote is sometimes a little messed up and you have to do some manual adjustments to get the text to look normal.
There’s how I use OneNote. As I mentioned, I use only a fraction of the features. There are many things such as recording notes, email & task integration, and so on, that I haven’t needed but other people love. Check out an interesting interview with Jeff Raikes on how he used OneNote when he was President of the Microsoft Business Division to see how someone else uses OneNote. I’m also very curious if you are using OneNote and how you’re using it. Please write a blog post or write in the comments! If you aren’t using OneNote, well, I feel very sorry for you! <grin!>