From time to time I find myself faced with a really annoying problem - a Windows application that has positioned itself offscreen. This usually happens for one of two reasons:
- A bug in the software. Sometimes things go terribly wrong, and the application, for lack of a better phrase, flips out. I just had this happen last week with Firefox - it would end up above and to the left of my screen (might have been a script or add-in, I'm not sure). Another common cause is an application that writes bogus data when trying to remember its screen position for the next time it's launched. Close it and relaunch, and bang, it's off-screen.
- Remote Desktop'ing into my multi-monitor desktop from my laptop. In that case, everything that was on the second monitor suddenly becomes off screen, and I need to move it back to the primary monitor in order to interact with it.
Now, Windows does provide a way to deal with this problem - by right-clicking on the item in the task bar, selecting Move, and using the keyboard (nicely described here). It works, but I always find it to be clunky and a bit flaky (sometimes it take a lot of keyboarding in just the right way to get the app to pop on screen). So I took a couple of hours and hacked together my own solution to the problem - a utility called "Front and Center!"
You can see a screen shot of the app here (I tried to embed the image in this post, but for some reason its not working, not sure why).
Hopefully it's pretty apparent what's going on. The app enumerates all the top level windows and lists those that are offscreen, along with their coordinates and size. Highlight it and click "Front and Center!" and it will move the app to your primary monitor.
The app requires at least the .NET Framework 2.0 be installed. The app itself requires no installation - just unzip and run.
I hacked this together pretty quick, so I'm sure it has problems. I've only tested with my standard ("center and right") dual monitor setup on Vista - I may very well have done something dumb that causes problems for other configs. Drop me a line if you have problems or ideas for improvement.
You can download it here.
The inimitable Jeff Atwood of Coding Horror fame (or is it Stack Overflow fame now?) recently blogged about the importance of typing skills for developers. In typical smackdown style, he posited that "coding is just typing". Jimmy Bogard disagreed, saying that the number of lines of code typed per day is actually quite small, and the productivity difference for typing that much code is quite negligable.
I happen to agree with both of them. What neither discussed is that as a developer, I type a hell of a lot more than just code. I type emails. I type Word documents. I submit questions to Stack Overflow. I type search terms into Google and URLs into the browser. I Twitter. My ability to do all of those things efficiently is affected by how well I type, and all of those things are critically important to doing my job. So while typing fast may not be hugely important for being a coder, it is hugely important for being a developer. I type all damn day, whether or not I'm coding that day.
There's another important point that I think needs to be stressed - good typing technique can help avoid repetitive stress injuries. I'm pretty convinced that my lack of RSI problems is at least in part due to good typing technique imparted by my 7th grade typing teacher. Whenever I feel a glimmer of discomfort in my hands, I can almost always attribute it to either a) too much mousing (know thy keyboard shortcuts) or b) falling back into sloppy typing technique (my great failing is one-handed modifier action - e.g. ctrl-w with one hand instead of two). Over the years I've known people that literally could not work at a computer any more due to RSI problems. Now if THAT isn't a terrifying thought that keeps your hands glued to your home keys...