Archive for the 'Productivity' Category

Newsflash: Killing Zombies Increases your Typing Speed

Here’s a fun productivity enhancing tip that I picked up from JP at the Nothin But Net course I just took.

If you’re much of a gamer, then Typing of the Dead, an old Sega game that was released in 1999, will probably make you wince due to the poor graphics and absurd storyline. In fact, it appears to have won the dubious honor of being runner up in one of PC World’s top 10 worst games list.

Nevertheless, I’m hooked.

blog_typing_game

It could be because I’m one of the only men under 40 that I know who doesn’t own a gaming system and therefore have incredibly low standards when it comes to games. In fact, the last one I remember owning was an Atari back in High School.

It might just be because I have a soft spot in my heart for zombies every since I read World War Z: An Oral History of the Zombie War.

Whatever the reason, I’ve been dismembering hoards of zombies in the last week and hopefully increasing my typing speed in the process.

If you’ve already mastered a tool like ReSharper and are looking to eek out some more productivity by simply increasing your typing speed, then I recommend downloading a copy of the game here and giving it a try. It installs through a simple setup bat file.

It is no longer being sold, so there is no need to worry about pesky copyright laws.

Happy typing.

Popularity: 2% [?]

Creative Idea for Improving Your ReSharper Skills

This is a screenshot of my current desktop.

I exported a snapshot from the ReSharper Default Keymap pdf and set it as my desktop background. I got the idea from Jean-Paul Boodhoo when I asked him how he had become so proficient at using ReSharper.

Popularity: 1% [?]

Breaking out of my ReSharper Rut

I’ve been using ReSharper for over a year, but it recently occurred to me that I’m still only using about 1/4 of the functionality.

Although there are a plethora of cool, productivity-enhancing features in ReSharper, there definitely aren’t a year’s worth of things to learn. In fact, I’m pretty sure that I picked up most of my current repetoire of hotkey knowledge within the first week. Somehow I became complacent soon afterwards and stopped learning new features even though I was thrilled with the ones I had already acquired.

It reminds me of the The Expert Mind, a scientific paper that I wrote about last year in my post Where Do Experts Come From?. According to the authors of that paper, novices and experts start out learning at the same pace, but novices loose interest as soon as the novelty wears off while experts manage to sustain that same pace of learning long afterwards.

I decided that if I ever wanted to shed my novice status when it comes to this tool and become a ReSharper Jedi, then I had to take some strategic steps to restart the learning process.

Here’s what I did:

  1. Favorite Features List: I made a list of all of the features that I am fluent with, which I define as the ones I use on a daily basis without having to pause to remember the hotkey. Although not as critical as the other steps, I still found this activity to be helpful in allowing me to solidify existing knowledge as well as reinforce good habits. I’m also hoping to use this list in my future efforts to convince several stubborn co-workers to start using this tool, which many have not yet installed even though we all have licenses.
  2. Practice List: Next I made a list of all of the features that I’ve tried and found helpful but don’t use very often or very effectively. This is usually because I either habitually forget about the feature or else don’t have the hotkey combination memorized and therefore have to fumble around with the menu system in order to use it.
  3. Try List: Finally I created a list of features that I haven’t tried yet. I populated this list by looking through the ReSharper menu system, going through the embedded tips, and rereading the posts in Joe White’s 31 days of R# series.
  4. Daily Review of Try and Practice List: Next I placed these lists in a OneNote notebook (any simple text editor will work) and pulled it up to review several times a day in order to remind myself of potential new features to try and use.
  5. List Item Promotion: Once I tried a new feature for the first time, I moved it to the Practice list. As soon as I noticed myself using a feature fluently, I moved it to the favorites list. This simple act of promoting features from one list to the next was not only useful in helping to keep me organized and establish concrete goals, but it also proved to be motivating since it gave me a sense of accomplishment every time I was able to move an item.

 Tool_Rut_Notepad_List

Although I’m sure that this simple technique that I thought up certainly played a role in restarting the learning process, I think that my sudden awareness of the psychological ‘novice’ pattern that I fell victim to played an even more critical role.

Once I move the last ReSharper feature from the Practice list, I plan to apply this same approach to other tools, new language features, and uncharted API.

What have you done to break out of a learning rut?

Popularity: 10% [?]

Recouping Lost IQ Points from the Internets

I recently read an thought provoking article by Nicholas Carr, entitled Is Google Making Us Stupid?

In the article, Nicholas describes a phenomenon that I have observed happening in myself over the last few years.

Over the past few years I’ve had an uncomfortable sense that someone, or something, has been tinkering with my brain, remapping the neural circuitry, reprogramming the memory. My mind isn’t going—so far as I can tell—but it’s changing. I’m not thinking the way I used to think. I can feel it most strongly when I’m reading. Immersing myself in a book or a lengthy article used to be easy. My mind would get caught up in the narrative or the turns of the argument, and I’d spend hours strolling through long stretches of prose. That’s rarely the case anymore. Now my concentration often starts to drift after two or three pages. I get fidgety, lose the thread, begin looking for something else to do. I feel as if I’m always dragging my wayward brain back to the text. The deep reading that used to come naturally has become a struggle.

The article attributes this general scattering of our attention and weakening of our concentration to our ever increasing usage of Google and the internet, which is structured in a way that promotes skimming and quickly jumping from one source of information to the next rather than focused reading. The author presents a wide variety of historical corollaries, research studies, and anecdotal evidence to suggest that the internet is fundamentally rewiring the ways in which our brain processes information. The overall effect is that we are becoming more like “pancake people”, stretched thin over vast amounts of information which we only interact with on an increasingly superficial level.

Although I admire minimalism and conciseness in writing and find my well-honed Google-Fu to be an essential skill in today’s landscape of information overload, I have to agree with with the author that it is a shame that all the benefits of Google and the Interent seems to be coming at the expense of our more traditional, focused reading skills.

It is just plain embarrassing to run out of steam 1/4 of the way through a Steve Yegge blog post even though I find the article interesting. It makes me feel like an out-of-shape, intellectual couch potato.

But what can be done to counter-act this GIADD (Google Inspired Attention Deficit Disorder)?

I decided to start by overhauling the way I read my RSS Feeds.

In the GTD (Getting Things Done) arena, there is a concept of separating ‘Processing’ from ‘Doing’. Processing just entails making important decisions about whether or not something is worth doing in the first place, what context it best completed in, and where it belongs in your overall organizational scheme. Since processing and doing are two very different activities that require different frames of mind (sort of like the difference between skimming and focused reading), you are supposed to finish all your processing before you move on to the doing or ‘Next Action’ part of the equation. This way you can get into and stay into a flow during each activity.

Since this concept has worked really well for me while processing email, snail mail, and various other inbox items, I decided to apply the same principal to reading blogs.

Here’s my new RSS workflow

  1. Establish Zero Bounce Zone: First I organized my feeds into 4 simple groups as a way of prioritizing which ones I wanted to keep up with the most. I used Favorites, SunnyDay, CloudyDay, and RainyDay since they forced me to think of them in terms of how much time and motivation I had to read. Then I decided which folders I was willing to make a zero bounce commitment to, which means that I make sure I have processed every single post in those groups by the end of each day. I currently have about 30-35 blogs in my ‘No Bounce Zone’. I only process posts in the other 2 folders if I have time, which means I can still keep tabs on good potential sources of information without feeling guilty for having too many unread items in my RSS Reader.
  2. Process All Zero Bounce Feeds Daily: All I am doing here is trying to decide how interested I am in reading the post. Sometimes I can tell just by the title, but sometimes I have to skim it to find out. If it is a very short post that doesn’t take much concentration to read, then I go ahead and just read it. Otherwise, I put a Read++, Read, or Maybe tag on the ones that I am interested in reading. If they aren’t interesting to me, then I just mark them as Read and forget about them (life is too short to read everything). Since all I have to do is make a quick decision about every item in this group, I force myself to take these in order and resist the urge to just process the obviously interesting ones first. This is a bad habit that leads to procrastination and ultimately unprocessed items at the end of the day.
  3. Process Some Optional Feeds If Time: I tend to do this if I am all caught up on my ‘Zero Bounce’ feeds, but still have spare, otherwise unproductive minutes throughout the day that aren’t appropriate for more focused reading.
  4. Read Some Tagged Items: I usually wait until I have at least 20 minutes of quiet, uninterrupted time before doing this. For me, this usually tends to be at night when my kids (and often my wife) are in bed. Having this quiet time along with a large group of quality, pre-selected posts that I know I am interested in reading thoroughly helps me me disengage from my normal internet skimming mindset and get into a more focused reading mode instead. When selecting items to read from this group, I skip around and choose what I am most interested in first. After I finish reading them, I remove the Read tag so it will disappear from my reading queue and replace it with some recommended or technology specific reference tags to make it easy to track down later if needed. I expect this queue to always have a large number of items in it, so I don’t worry about its size as long as I know I am churning through tagged posts at a respectable rate each week.
  5. Periodically Recategorize Feeds and Tagged Posts: Between my interests being in a constant state of flux and the relative quality and content of blogs going in random cycles, I like to recategorize blogs and posts on a regular basis to keep things from going stale.

I’ve been doing this for a couple of weeks now and have already noticed a big difference in being able to focus more on reading. Surprisingly, I’m also getting much faster at skimming and processing since I’ve released myself from the need to comprehend anything beyond what will help me make a decision about whether it is worth reading.

Best of all, I finally feel in control of my RSS Feeds in a way that I never have before. Instead of feeling overwhelmed by thousands of unread items, I feel like it is a manageable workload so I am actually more motivated to keep up with the reading than I as before.

What are some of the things that you are doing to fight GIADD (Google Inspired Attention Deficit Disorder)?

Popularity: 8% [?]

10 Practical Tips on Freeing up Mental RAM

In my last post I mentioned that I had recently decided that it was time to overhaul my approach to managing tasks. The changes I implemented were mostly inspired by a book by David Allen called Getting Things Done and I have been extremely pleased with the results so far. As promised, here are some of the concrete ideas that I’ve adopted and incorporated over the last month.

  1. Following a Workflow: I found that my procrastination was mostly fueled by not knowing where to start on something or else feeling that it was too big for the small time slots that I usually had available during the day. Following this workflow whenever I a faced with a new item in my inbox gives me an automatic starting place and a way to boil down a massive, disorganized, tangle of items into a relatively small set of very specific tasks that I need to do.
  2. Treating Collecting, Processing, and Doing as Different Activities – The workflow diagram really only covers the processing part of the equation, which is where you make decisions about things. Two other distinctly different activities are collecting and doing. Collecting simply means recording items that are floating around in your head and placing them into some kind of trusted inbox so that you can process them later (I use rememberTheMilk.com, a Samsung smartPhone which syncs with rememberTheMilk.com, my email inbox, a physical inbox on my desk, and delicious). The idea is that each process requires a separate type of thinking, thus context switches detrimental in terms of productivity and effectiveness. I find that I also gain the most benefit in terms of peace of mind by completing the collecting and processing stages before I attempt to actually do anything (with the exception of the 2 minute rule below).
  3. Transitioning from To Do’s to Next Actions – My TO DO’s used to be very vague, like ‘Get Supplemental Life Insurance’. Now I take the effort to formulate the exact action I need to take and then attach any relevant information that I will need, such as ‘Call Mark (xxx-xxxx) and ask for quote on 20 year, $xx term life policy’. Since all the preliminary decisions and information gathering have been done, I am finding that I am much more likely to actually do it when I have a free minute during the day.
  4. The 2 Minute Rule – If I grab a task from my inbox that will take less than two minutes, I just do it. This keeps my list short. If it will take longer than two minutes, I force myself to put it in one of the ‘deferred’ piles (Next Action Lists) until I am finished processing so I don’t get distracted and run out of time before the processing is done.
  5. Grouping Tasks according to Contexts – Another helpful hint that I picked up from the ‘Getting Things Done’ book is to organize my Next Actions according to the context required to do them (call, errand, home, work, computer, etc.). Now, whenever I am out running errands, I scan my ‘Errand’ list to see if there is any other errand I can tackle that is close to where I’ll be. I’ve been surprised at how much more I get done now that I’ve picked up the habit of scanning the appropriate context list based on where I am and what I am doing whenever.
  6. WaitFor List – This is a very useful list where I now track everything that I am waiting for (the phone company to send me a rebate, the insurance guy to send me a quote, my wife to make an appointment, etc.). I set due dates on them so that I know when it is time to start bugging somebody if things aren’t getting done.
  7. Someday List – By explicitly separating all the things that I am explicitly agreeing to do (my Next Action and Project lists) from the things that are interesting to me but not appropriate to tackle at the current time, I dramatically decrease my tasks list and don’t feel nearly as guilty for those things that I’m not choosing to do at the moment.
  8. Reference Materials – I realized that a lot of items that I thought were TO DO items were simply things that I needed to keep as reference in a system that would allow me to quickly retrieve it when and if I should ever need it (that meant overhauling my existing black-hole-of-a-filing system). To have a good filing system, you really need to take an agile approach and constantly tweak it as new items come in and old ones become obsolete. The best way to do this is to buy an electronic label maker ($30) so that you can quickly relabel folders in a way that is neat and easy to read.
  9. Delegating and Deleting – These were two activities that I was not nearly aggressive enough with over the years. By having these questions as part of the workflow, I find that I am more likely to weed items out by throwing them away or letting someone else do them instead who is better suited to the task in the first place.
  10. Using Projects to Organize Multi-Step Actions – I found that the items I was most likely to procrastinate on were the things that had multiple steps involved but were too small to traditionally be considered a project. David Allen recommends considering these to be a project, which he defines simply as a place holder that is useful for periodically generating Next Action items and organizing supporting material. This is great for smaller projects because it naturally lends itself to breaking things down into more manageable chunks. He also has some great suggestions for larger projects in terms of defining goals, envisioning outcomes, and brainstorming possible tasks.

If you’re interested in learning more about these concepts, I definitely recommend buying the book (which is a quick read) or visiting some of the resources here.

Popularity: 12% [?]

The Joy of Freeing Up Mental RAM

I’ve always been somewhat prone to procrastination, especially in my personal life, but I’ve watched with growing trepidation as my task list has slowly grown out of control over the last several months.

Part of this trend is due to being a new parent. I expected that having a newborn would consume the majority of my free time, although I must admit that it didn’t completely sink in until it happened. What I didn’t expect was that my “honey-do” and “male provider” lists would also grow dramatically as my both mine and my wife’s biological instincts kicked into high gear. Meanwhile, my list of new tools and technologies to explore continue to mount as suggestions pour in from twitter, my blog, and my RSS reader.

The result is that I have many times more tasks to do than before but now I only have a faction of the time to get them done. This new reality has left me feeling overwhelmed, paralyzed, and generally less productive with the time I do have.

A few weeks ago I finally came to the conclusion that I needed to severely overhaul my approach to managing my tasks if I ever had any hope of feeling calm and productive again. Someone on Twitter suggested I pick up a copy of David Allen’s Getting Things Done book, so I started there. I’ve always had an aversion to business self-help books, but desperate times called for desperate measures so I picked up a copy in the bookstore.

I was surprised by how quickly my skepticism disappeared. I was especially sold on the author’s clear explanation of the negative consequences of relying primarily on our brain (mental RAM) to juggle all of our TO DO’s. Not only is this common approach tremendously inefficient since our brain randomly reminds us of things we need to do repeatedly at times when we can’t usually do anything about it, but it also perpetually consumes a limited resource (especially in my case) thus slowing down our overall mental functioning. In other words, it is like trying to get something done on your computer while running a dozen instances of Visual Studio 2008. You can do it, but it just isn’t what I would call an optimal experience.

The premise of the book is that it is possible is overcome this dynamic and achieve a calmer and more productive state of mind by simply transferring all of your tasks from your head to a trusted external system. In GeekSpeak, it would be the equivalent of flushing all those nagging thoughts from RAM to disk, which makes sense since you really only need them in memory when you are actually in a position to do something about them.

This analogy, along with the remarkably clear and helpful diagram below, convinced me to make a several week investment in optimizing my approach to getting things done.

The results have been dramatic. Not only do I feel like a huge psychic weight has been lifted from my shoulders, but I’ve completed a huge list of tasks that I had been procrastinating on for months and in some cases years. I also find myself fitting tasks into much smaller chunks of time during the day because I have organized them in such a way that they take much less mental energy to tackle, thus I no longer feel that I need to set aside a huge block of time to do them.

Even more surprising is that I find that doing things on my “Next Action” list is slightly addictive. Crossing off an item feels like lightening the load by removing something from a heavy backpack I have to carry around with me everywhere I go. There is an immediate relief in it.

If any of this sounds familiar to you, then I would recommend picking up a copy of David Allen’s book. It’s a very quick read.

For those of you that are intrigued but not sold enough to actually buy the book, stay tuned for my next post where I’m going to share all of the concrete tips that I’ve edited out of this post so as to keep it a reasonable length for a change.

Popularity: 24% [?]

The Case Against Overtime

I remember reading the eXtreme Programming Core Practices several years ago and smirking when I got to the practice that called for regular 40 hour work weeks for programmers.

Like many of my fellow developers, I saw overtime as a geek badge of honor and felt pride at having enough stamina to regularly work 60-80 hours a week on my death march project.

Although I occasionally received half-hearted warnings from management to slow my pace down in order to avoid burn-out, the underlying message from above was clearly that my willingness to work long hours made me an exemplary employee and that overtime was one of the surest paths to professional growth and advancement.

While I may have agreed with the XP practice of capping the work week at 40 hours in theory, my traditional geek machismo prevented me from accepting it as anything other than a naive and idealistic goal that would probably never be gain widespread acceptance in corporate America.

That was then.

Now, when given a choice, I rarely opt to work overtime for my employer (at least not directly according to my task list). I would never hesitate to work extra hours prior to a release or due to unexpected production problems, but I now view anything more frequent than that as a serious problem and even as a potential reason to start looking for another job.

Why the dramatic change in attitude?

Here are some reasons that finally caused me to stop seeing overtime as a heroic effort and start seeing it as a destructive practice that is a sign of a seriously broken process within an IT organization.

  1. Lost Opportunity Costs in Professional Growth – Once I completed a handful of large projects in my career, the opportunities I saw for professional growth started coming more and more from external sources outside of my job. While I  still learn plenty during the day by observing my co-workers and attempting to solve common problems in novel ways, I often feel that my skills grow faster outside of work through reading, writing, presenting, social networking, and pet projects. It is sometimes tempting to spend 10 extra hours a week clearing the items from my daily TO DO list, but I believe that I am accomplishing much more for my professional career by devoting those hours to catching up on my RSS feeds, working my way through my tech book reading list, or exploring new programming languages instead.
  2. Increased Professional Risk from Lack of Diversification - Everyone knows that diversification is the key to managing financial risk, but few people seem to apply this principal to their professional careers. Most developer shops are relatively limited when it comes to the number of technologies and problem domains they deal with. If you want to diversify your resume without job hopping every year, then it makes sense to actively seek out technology experiences that are different from the ones you use in your day job. By this reasoning, working overtime will increase your professional risk by reinforcing skills you already have whereas working on open source or pet projects that require you to learn new skills will mitigate your professional risk and make you more marketable should you ever decide to leave your current job.
  3. Decreased Professional Passion – To paraphrase Jean-Paul Boodhoo, the best fuel for professional growth is always a developer’s joy and passion for his or her craft. I find it much easier to sustain this passion when I am allowed free reign to follow my curiosity. Work doesn’t usually allow for this type of unstructured exploration, but free time does.
  4. Lost Productivity – Overtime work is highly susceptible to the law of diminishing returns. Spending long hours on the same tasks in a high stress environment leads to fatigue, which in turn leads to producing poorer quality work at a slower pace. When you factor in the time it takes to find and fix bugs and design flaws produced by overly tired developers, the net gain for twenty hours a week of overtime probably drops down to only a few hours while at the same time greatly increasing the risk to the project. Overtime just doesn’t yield the results promised by management Gantt Charts which provide an oversimplified view of the software development process by only measuring the quantity of the hours spent on tasks without also taking into consideration the quality of the time.
  5. Poor Code Quality – Besides being more likely to miss obvious errors, developers who are under pressure and fatigued are far more likely to cut corners and engage in shallow thinking when it comes to design solutions. Besides driving up the long term cost of a project by making it more difficult to maintain, code quality issues can put the whole project or even business at risk by introducing critical errors and undermining customer confidence and loyalty.
  6. Lost Personal Revenue – If you are a salaried employee and your are concerned with maximizing your personal income, then you should read this post by Max Pool where he points out that you are almost always financially better off to focus your time across multiple revenue streams rather than allowing your time to be sucked up by one job through excessive overtime.
  7. The Usual Personal Reasons – These are all the usual things that workaholics neglect until it is too late, such as family, friends, health, and entertainment. Although I think they are among the most important reasons, many of us seem to have blind spots when it comes to these issues due to cultural biases so I chose to focus on other more novel arguments about overtime in this post instead. Nevertheless, these are some of the most compelling reasons to question any work schedule that consistently includes overtime.

If you are convinced about the evils of chronic overtime but don’t know how to break out of your current overtime cycle at work, then meditate on the following two concepts:

  1. Time Should Be Fixed, but Features Should Always Be in Flux - If a customer went into a store and put more items in their shopping cart than they had money for, then they would reasonably expect to have to put a few items back while checking out. This is exactly how it should work in software, but the reality is often that customers naturally have a very difficult time connecting their feature requests to a real cost because IT departments have traditionally been so willing to hide the extra cost through overtime. Agile iteration planning and planning poker does a great job of addressing this issue by having developers assign a relative point cost to each feature, tracking an average velocity of points completed each week, and then only allowing customers to choose enough features to equal the velocity points in any given iteration. Besides providing a much more realistic expectation of what can be accomplished in an iteration, this approach emphasizes that developer time is a fixed resource and that feature requests must be variable based on continual assessment and reprioritization.
  2. A Large Number of Proposed Project Features are Unnecessary and even Harmful to the Project – It is amazing how many “must-have” features suddenly become unimportant when a project is time-boxed and resource-boxed in an effective way. I’ve actually seen overall  product quality and customer satisfaction increase in these circumstances because it helps focus stakeholders on what is essential about a project and aids them in more easily spotting bloatware features that would otherwise delay implementation, increase cost, and hinder usability without returning discernible value.

Sometimes you just can’t change the way your processes work or management thinks, but you can always change your own attitude by resisting self-imposed or peer pressure to work overtime. I’m guessing that the majority of overtime is not officially mandated, but rather manipulated through subtle peer pressure. If that is the case, just say no.

If your goal is constantly to maximize your own professional growth, then you’ll be surprised at how much respect you can still win without playing the overtime game. For example, who do you think is going to get noticed more, someone who closes a few more issue in the bug tracking system, or someone who is able to introduce a new concept, process, tool, or technology to the group because of work done in their spare time?

In conclusion, the next time the opportunity for overtime arises, ask yourself if you are really maximizing your professional growth or if you are just focusing too much on short term job goals and not enough on long term career goals .

Popularity: 37% [?]

Which Productivity Tricks Have You Adopted Lately?

Every since I learned that the most important characteristic of people who become experts is that they continue to learn throughout their careers at the same pace they did when they were beginners, I have found it helpful to do regular mental inventories of new things I’ve recently learned as a way to keep myself honest.

Here are some of the productivity tips that I’ve picked up in the last 3-4 months that have worked out well and saved me quite a few wasted keystrokes and mouse movements:

  1. Launcher Program Parameters – In my recent post Friends Don’t Let Friends Use the Start Menu, I described my newfound addiction to SlickRun as a way to launch programs. Since then a few people have suggested that I try Launchy instead because it automatically detects programs without any keyword setup. I still intend to give it a fair chance, but I have to admit that so far I’ve been too distracted by experimenting with using SlickRun parameters so that I am not just opening a program but also accomplishing the first task or two that I normally would perform. For example, instead of just opening Firefox I now have different “magic words” configured to open one or more web sites at the same time. I also have different keywords set up for opening up each of my Visual Studio solutions as well as connecting to each of my different database servers with SQL Management Studio.
  2. UltraMon Window Switching Hotkey – I’ve been hooked on UltraMon as a way to quickly switch windows back and forth between monitors for a while, but I’ve only recently thought to set up a hotkey(there is a HotKey tab in the UltraMon properties window). Now I switch the active window to my other monitor by just hitting Ctl + Right Arrow Key.
  3. Adding NotePad2 to Context Menu – Life is too short to open random source files with Visual Studio. That’s why I prefer using Notepad2, which offers syntax highlighting but opens instantly. I recently ran across this blog entry that shows how to hack the registry so that this handy utility shows up in the context menu. Now when I want to open source files outside of Visual Studio, I simply right click on the file and choose NotePad2.
  4. Address Bar Hotkey (Alt-D) – I picked this tip from a recent Jeff Atwood post and have since used it about a thousand times a day since it works both with the browser and Windows Explorer.
  5. Lighter Weight ToDo List – Adding to the “ridding my life of tools that take too long to load” theme, I’ve recently stopped using Microsoft Word to track my To Do list and instead started using a lightweight utility that comes with SlickRun (Jot). Now when I need to jot down a task or thought, I hit Ctl-J and a little green window pops up within in milliseconds rather than the 3-6 seconds it takes Microsoft Word to load. It doesn’t sound like much, but it really adds up over the course of a day. Also, given my ADD tendencies, I have trained myself to immediately jot down random tasks or thoughts immediately as they occur to me or else I tend to lose track of them. However, if I can’t do this in one swift, fluent motion, then I lose all the momentum I had built up on my prior task so this is a big boost me personally in that respect.
  6. Unlocking Files with Unlocker – If I get impatient loading up Visual Studio and Microsoft Word, then you can imagine how reluctant I am to reboot my laptop or a development server. Rather than rebooting to solve a file locking related issue, I used to fumble around with Process Explorer in order to figure out which program or service needed to be shut down rather than rebooting like I’ve observed other people doing. Now that I have the Unlocker utility installed, all I do is right click on the locked file and select ‘Unlocker’. The utility displays a list of all the open file handles along with the option to simply unlock the file or else kill the locking process.
  7. Configuring VSS to use BeyondCompare for File Comparisons – Every piece of code gets reviewed where I work now, which means that version comparison becomes a pretty critical feature. God help us that we still haven’t managed to find the time to migrate to a real source control tool yet, but one saving grace is that we all have BeyondCompare2 configured as default comparison tool. The VSS comparison functionality just highlights the line that has changed, but BeyondCompare2 highlights the exact characters that have changed. This doesn’t sound like a big deal, but the savings in time and eye-strain add up quickly if your shop is strict about code reviews.

I picked up many of these tips by simply observing my co-workers or following suggestions I read in a blog posts. Other improvements came about as a result of trying to pay attention to any actions I did frequently that seemed to take more steps than they should and then creatively thinking about how to reduce the number of steps.

No matter how you end up picking up these kinds of tips, the trick is that you have to be willing to invest energy in changing your workflow habits.

Which tricks have you picked up recently?

Popularity: 14% [?]

Friends Don’t Let Friends Use the Start Menu

I’ve read and listened to Scott Hanselman sing the praises of SlickRun for a long time, but I just recently got around to using it.

For those of you who are as slow to catch on as me, it is essentially just a tricked-out version of the Run window that allows you launch programs much faster than you can through the traditional hide-and-seek start menu approach. This is especially true if you are a tool addict and have a start menu that stretches across your screen.

Best of all, it is FREE, which is one of the few things that still fits into my budget these days. It also only takes seconds to grok and begin saving time with it.

To get started, all you have to do is right-click on the floating SlickRun textbox and select “New Magic Word”. When the dialog box with the nifty wizard hat pops up, you simply drag the magic geen lightsaber circled below over to an open program and it will figure out the program’s filepath. You can also create the mapping by just dragging a shortcut from the start menu on to the floating SlickRun textbox prompt.

Next, you think of a clever and creative keyword (for example NCoverExplorer for NCoverExplorer) and then optionally assign paramters to it. Parameters are cool because you can do things like open FireFox and surf to your favorite porn site in one swift and efficient motion. For NCoverExplorer, I set the parameter value to the path of the NCover xml result file that gets generated from our automated build process.

Finally, thanks to the magic of intellisense, you just have to type a couple of letters until the keyword you want appears in the textbox and then hit return in order to launch it. Easy, huh?

Just remember, REAL geeks don’t use the start menu. If you don’t want all the other geeks laughing at you and kicking silicon dust in your face in the computer lab, then I suggest you download SlickRun immediately.

Helpful Configuration Hints

  • If you’re used to Windows-R to launch programs, you can change the default SlickRun hotkey (Windows-Q) to this more familiar one by setting GrabWinR=1 in the slickRun.ini. You can find this config file in your computer’s app data directory (directory locations vary based on the OS), but it won’t actually be created until you close SlickRun for the first time.
  • I also like turning the ChaseCursor option on so that launcher window pops up where ever your cursor happens to be after hitting the hotkey combination. This saves me from having to shift my focus to a different part of the screen… Yes, I know that it seems lazy beyond words to recommend a feature just because it saves my eyeballs from having to move a few centimeters.

Notes about Vista

  • SlickRun is not quite as compelling on Vista because of the built in launcher in the Vista start menu. However, I still like using it on Vista because it offers more flexibility in terms of creating more logical words for program names as well as automatically passing in parameters to the program.
  • Setting up magic words by dragging shortcuts from the start menu to the SlickRun prompt doesn’t work on Vista for some reason.

Interesting SlickRun Factoid

  • This was actually written in Delphi. I’m going to let you come up with your own Delphi jokes so as to avoid any hate mail from either one of the remaining Delphi programmers out there.

Popularity: 6% [?]

A Couple Firefox Add-On Gems

This week I installed a few nifty Firefox Add-Ons, All-In-One-Gestures and IE Tab.

I tried All-In-One-Gestures after watching how fast a co-worker was able to navigate on the
web by using this Add-On. It allows you to right-click anywhere on a web page and move the mouse left to go backward or right to go for forward.

Navigating this way is definitely much faster than using the browser toolbar buttons and helps me stay in a better flow when trying to quickly scan oodles of google results.

For some reason I also really like the little red line affect that shows up on the page, but I’m easily impressed like that.

The other Add-On, IE Tab, lets you view how a web page will be displayed in Internet Explorer by simply clicking on a button at the bottom of the page. This came in handy when I was trying to figure out why a Cruise Control report generated by FxCop was not working. On a hunch, I toggled to IE and realized that the XSL had browser compatibility issues because it worked fine in IE. It was nice to be able to verify this by simply toggling view modes rather than having to start a different browser and then navigate to the page.

The moral of the story: Always pay attention to how your co-workers do things. I don’t think I ever met somebody who didn’t have at least one time saving tool or trick up their sleeves that I could steal to my great benefit. I like to think of every productivity enhancing tool or technique as a little investment. It may take a little “seed money” in terms of time and effort, but it is amazing how quickly the dividends begin to pay off so that my overall time savings quickly surpasses my initial investment.

Popularity: 9% [?]

Next Page »