|
LATEST POSTS
Thursday, August 30, 2007
Having been having a merry old time moving projects around in our solution in Team Foundation Server. We had a few that had strayed from the folder where they were supposed to live and we can't have free-thinkin' VS projects now, can we? Anyway, there was a bit of a learning curve involving more than one rollback. Plus I coined at least three new words and phrases but it's all good now, as the kids say. So forthwith is my guide to doing the same in your project (as in your software project, not your Visual Studio project, rather your Visual Studio solution, I'm...ummm...rambling, aren't I).
Underlying guidelines:
- One at a time. Don't try to get cocky and move all your projects in one shot. You'll save yourself days of pain if you move them individually within one "check-in" session. (OK, maybe not *days* of pain but certainly precious minutes.)
- Rebuild and run your tests often. After you re-add your projects, before you check in, after you re-get the latest version, pretty much every second step of the process.
- If at all possible, make sure everyone has checked in pending changes, *especially* if they have stuff checked out in one of the projects you intend to move.
Now to the heart of the matter:
- Make sure you have the latest version of the solution and have nothing checked out.
- Rebuild and run your tests.
- Remove the project from the solution. TFS should check out any projects that have a reference to the one you just emasculated.
- Physically move the project to where you want it to be in Windows Explorer.
- Re-add the project to the solution. It will be marked as "not under source control" which is a bit of a lie.
- Loop through each project in the solution checking to see if it has been checked out. This is your indication that the project has a reference to the one you just moved. Re-add the reference to the moved project.
- Re-build and run your tests.
- Open the "Change source control" dialog. (Alt-F, R, O)
- Unbind the project you just moved and click OK. It should be easy to find as it will be marked as Invalid.
- Add the project back to source control. (With the project selected, Alt-F, R, E.) With any luck, TFS should add it in the appropriate path, adding any necessary folders along the way.
- Re-build and run your tests.
- Check-in your changes.
- Re-build and run your tests.
- Open the Source Control Explorer (from Team Explorer) and find the project in its old location. Delete it and check-in your change.
- Re-build and run your tests.
- Repeat ad infinitum.
One thing to watch out for is references to third-party assemblies. When I re-added our data access project, the compiler complained about a couple of NHibernate methods not existing. I dropped and re-added the NHibernate reference and they went away. If I had to guess, I would say that I have an old version of NHibernate in my GAC which the project tried to use after I moved it.
Kyle the Gatekeeper
Thursday, August 30, 2007
While we're on the topic of tools, I'll voice my concerns over two that I've been using regularly over the last two months.
Notepad++ There are two specific annoyances that bring me to tears in frustration. First is the tabbed interface which I have never liked. Not in Firefox, not in Internet Explorer, and certainly not in a text editor. I like to Alt-Tab through my apps, not Alt-Tab to the one I want, then Ctrl-Tab to the page I need. There's a reason Word and Excel aren't MDIs anymore. (Yes, yes, I know. You know what I mean.) Plus I like to see the titles of the documents I'm working on in the task bar. Visual Studio is an exception.
Peeve number two: There's no default extension when you save files. If you know of a way to set a default extension *and* turn off tabbing, I will quickly recant but at present I see no way around either issue.
UltraMon Before I lay into UltraMon, I do still love the product. My beefs with it are not enough to shy away from the $40 price tag.
Both issues have to do with expanding Visual Studio across both monitors. I do this with Visual Studio so that the code appears in one monitor and all the other little windows (Properties, Solution Explorer, etc.) are in the other. I do this through judicious use of docked windows and careful placement of splitters.
When I lock the computer, Visual Studio is squished back into a single monitor. What's worse, when I click the button to Maximize to Desktop, the splitter controls have moved so that the code, which previously filled only the entire right-hand monitor, now extends about an inch into the left-hand monitor. And when your sysadmin has set a five-minute screen saver with password protect on, this hillbilly is in the market for an app that automatically moves the mouse around every four minutes and fifty-eight seconds.
This is happening only for Visual Studio, not other apps like Excel or Outlook so I imagine it's not UltraMon's fault. And I've gotten around it by not expanding VS across both monitors but by maximizing it on one, and undocking the tool windows so they can roam free on the second.
Side note: There are complaints on the UltraMon forums on: a) the price tag, and b) the lack of updates. Neither concern me but you may want to look through them before making your decision. If only for a laugh.
Kyle the Tooled
Tuesday, August 28, 2007
Who says you can't teach an old hillbilly new tricks? Have finally made Launchy ubiquitous (or as we say in the Ozarks, you-bet-we-duz) to the point where I'm looking for a way to get rid of the Start button on my task bar and free up some real estate.
But chances are, you all know and love Launchy already. And you probably are aware of the plug-ins, Weby and Runny. The first tells Launchy to open the browser of your choice when you type in http://www.welovesquirrels.com/. The second lets you create shortcuts to applications that typically take arguments.
Side note on Runny. It's possible to use it to launch apps that *don't* take arguments but you have to press Tab then Enter to launch the app. The developers recognize this as being a little quirky but can't really do anything about it. It is because of this (and the funky way you need to specify paths in Explory) that I still use SlickRun for some things.
What I aim to edify y'all about is that there have been recent updates to both Weby and Runny. Weby has the most interesting one as it now allows you to create shortcuts to parameterized URLs. And by default, you get parameterized shortcuts to almost everything you'd need, like Google, MSDN, Wikipedia, and IMDb. You even get an e-mail shortcut: mailto:$1 which opens a blank message to a specified e-mail address.
I've made a couple of tweaks to their default list:
- Shortened the Google shortcut to just "g"
- Added "?subject=$2" to the e-mail shortcut so you can specify both a recipient and a subject
- Added a shortcut to http://www.$1.com/ (using "w" as the shortcut). This lets you type: w, <Tab>, firefox <Enter> to go http://www.firefox.com/. I'll leave it as an exercise to create your own shortcuts to .net and/or .org addresses.
If I have one complaint about Weby, it's that it doesn't handle URLs that don't start with www very well. You always have to type in http:// at the beginning. Luckily, that's where Runny comes in. I've bound the following application to "i":
- %PROGRAMFILES%\Firefox\firefox.exe $1
The result is I can get to my own blog easily by typing: i,<Tab>,kyle.baley.org,<Enter>. At work, which is a little more draconian in their blocking rules, I have something similar set up for IE. Note that you'll need to use quotes in that case: "%PROGRAMFILES%\Internet Explorer\iexplore" $1
Kyle the Aborted
Monday, August 27, 2007
How's this for obscure? Our solution contains a .dbproj file, which for those not in the know (including me up until about three days ago), is a type of project that is added when you install Visual Studio Team System for Database Professionals (pka DataDude after the legendary surfer that built it). We also use Cruise Control on a build server which does *not* have Visual Studio Team System for Database Professionals installed.
The issue was that the build would fail on the build server because of some reference to VSDBPro in the dbproj. Specifically: D:\ccnet\projects\CritterClassifier\Source\Database\EHTDB.dbproj(75,11): error MSB4019: The imported project "C:\Program Files\MSBuild\Microsoft\VisualStudio\v8.0\TeamData\Microsoft.VisualStudio.TeamSystem. Data.Tasks.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
No problem, says you, why not simply ignore the project in the configuration that the build server uses? Well, says I, don't be actin' all high 'n mighty 'til you gone done tried it yerself! If you do, you'll discover that the error still occurs, although it doesn't actually cause the build to fail. (Yeah, it sounds whacky but I ain't elaboratin' so you'll have to try it to see it in action.)
The error doesn't actually occur when the project is compiled, mostly because the project isn't compiled during the build. It happens when the .dbproj file is loaded. (NOTE: We're using msbuild against the .sln file.) Opening the .dbproj file in a text editor, you'll see:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v8.0\TeamData\ Microsoft.VisualStudio.TeamSystem.Data.Tasks.targets" />
My fix: add a Conditional attribute to the <Import> element:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v8.0\TeamData\ Microsoft.VisualStudio.TeamSystem.Data.Tasks.targets" Condition="Exists('$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v8.0\TeamData\ Microsoft.VisualStudio.TeamSystem.Data.Tasks.targets')" />
This tells whomever is parsing this sucker not to import the project if the file doesn't exist. Of course, you won't be able to compile the project in this case but the build server doesn't need to know that...
Kyle the Finagled
P.S. Another potential fix is to compile the projects with NAnt instead of MSBuild, which I think is preferable if you can get away with it.
Tuesday, August 21, 2007
I've had enough people ask me about the tax implications of what I do that it would make an interesting, albeit lengthy post. And I'll preface it with a *humongous* caveat: I. AM. NOT. A. LAWYER. I have never been a lawyer. I have no aspirations of being a lawyer. Until I decided to write this post, I couldn't even spell lawyer. I have taken a single course in commercial law over ten years ago which is enough to make me laugh at some of the contracts I've had to sign but that's it. Any advice implied here is based on my aimless meanderings through the Canada Revenue Agency and dealings with other people. If you follow it, that's your fault, not mine. Like I often say, "You can't save everybody." Here's the scenario: I am a Canadian citizen but a Bahamian resident. Often I will work in Canada for a period on a contract, then make up some excuse to go home. (More on effective excuses in another post.) Then I work remotely from the Bahamas for the remainder of the contract. There are three areas to consider: Income tax, GST, and CPP/EI. I'll start with the one people ask most about. Income Tax Short version: Non-residents pay fifteen percent income tax on any income earned while on Canadian soil. NOTE: I also have some limited experience doing this in the U.S. If you are so inclined, it is dead simple for Canadian citizens to get a visa to work in the U.S., especially in the IT industry. Go to the airport a half hour earlier than you normally would with appropriate documentation. A surly-yet-lovable government-type agent will review your paperwork and attach a shiny new TN visa slip to your passport, valid for one year (or technically, the length of the contract if it's shorter). You can re-apply for the visa ad infinitum from what I understand but I haven't tried it myself. Appropriate documentation (from memory): Your resume, your passport, your birth certificate (optional), a letter from your prospective employer asking the agent for a TN visa with specific dates, a copy of the contract, and basically anything else you can think of to prove you are Canadian and going to work for someone in the US in IT. Word of caution: When you leave the US for any reason while you have a TN visa, they are supposed to take the visa slip off your passport and attach a new one when you re-enter. If they don't, you *may* encounter problems when you re-enter. Your passport will have a stamp indicating that you have a visa for up to a year. You won't technically need the paperwork when you re-enter but it's a good idea to keep it with you just in case. That is what I've learned from both the CRA website and from a fairly respectable tax accountant firm. While you are physically in Canada taking advantage of Canadian roads, sewers, and brothels, you must pay taxes to someone. If you can prove that you have to pay taxes to some other country, they won't tax you twice. Unfortunately, there is no tax treaty 'twixt Canada and the Bahamas, likely because there is no income tax in the Bahamas. The person that's paying you is required to withhold the 15% income tax and remit it to CRA on your behalf. At the end of the year, they need to give you either a regular T4 slip or a T4-NR slip, depending on who you ask. Grey areas: Can I deduct expenses to reduce my tax? Maybe. My opinion is that you'll make less waves if you keep it simple. Unless you're going to be in Canada a long time (in which case, you will be a resident anyway), any "deductions" you think you might be able to claim won't be worth the aggravation. Plus then you'd need to file a return. Which brings me to... Do I need to file an income tax statement? Not sure. Have received conflicting opinions on this. If you think you should be paying more or less than 15%, then yes, you definitely do. Otherwise, I've had at least one CRA person claim you need to fill out a regular income tax form just as if you were a Canadian resident. Everyone else says you don't need to bother. Having said that, the fact that you get a T4 slip at the end of the year suggests otherwise... What if you come back to Canada and work for a short period on the same contract? Use your judgement. When I come back for a few days or a week, I don't generally notify the contracting agency. If I'm back for the summer, it's reasonable to assume I'm hunkering down for a while and should pay the government their due. GST GST is handled completely separately than income tax, despite the fact that you call the same number to ask questions. There are different rules regarding residency status for GST. Meaning you may be a non-resident for income tax purposes but a resident for GST purposes. And residents need to collect and remit GST. The rules here are a little easier to follow. If you expect to make more than CDN$30,000 in a given year while in Canada, then you need to charge GST. For most consultants, that's 'twixt two and four months worth of work so chances are, you'll need to file. To collect GST, you need a Business Number which is easy enough to get. Call up CRA at 1.800.959.5525 and they should be able to give it to you over the phone. Here is the gist of what to tell them: - I am not a Canadian resident but I *am* a Canadian citizen. I will be working in Canada for a period of X months and expect to make over $30,000 during that time. I'd like to apply for a Business Number for GST for the period that I am in Canada.
- You will file GST annually
- I do not need a payroll account
- I am a sole proprietor
They may try to tell you that you need to call the International Tax Office but that's wrong. The International Tax Office doesn't deal with GST at all. Grey areas: Should I keep my Business Number active after I leave the country? Probably not. In my experience, it's pretty easy to deactivate and reactivate it so it's worth the phone call to deactivate it when you leave. And that's all you need to do. There's no paperwork involved. And you do *not* charge GST for any work you perform outside Canada. Should I incorporate? My opinion is no, you shouldn't. The major advantage of incorporation is to lower your taxes which isn't really an issue for non-residents. More importantly, with you as the major shareholder, it constitutes a major residential tie to Canada, something you should avoid. CPP/EI I normally wouldn't add this section but my most recent adventures warrant mentioning. Until then, I would have said you don't need to pay CPP or EI, nor does the company who pays you. This is based on conversations with both CRA and a fairly confident-sounding international tax accountant. As a non-resident, you aren't entitled to EI so it makes sense that you shouldn't have to pay it. CPP is more of a grey area but by most accounts, you shouldn't need to pay into that either. The sole dissenting voice in this is the contracting agency I currently go through who is rather insistent that they have to charge me for it as well as pay their share. They claim that there are different rules for contracting agencies which could be the case but I suspect they just want to cover their asses and not do anything that may trigger an audit. In any case, I've sent numerous e-mails quoting international tax accountants and linking to relevant CRA sites, all of which have gone ignored. So I'm letting them have their way partially because I'm in the country only for another month and partially because I think their share of the EI/CPP payments cost more than the commission they're charging me. Which reminds me: CPP and EI are charged only while you are in the country, assuming they should be charged at all, which I doubt. Residency Residency means different things for income tax than for GST. For GST, if you earn $30,000 while in Canada, you are a resident for GST purposes. Otherwise, you have to consider the many other scenarios on their website. For income tax, the rules are not nearly as concrete. If you are physically in Canada for 183 days or more (whether you work or not), you are a Canadian resident. There are some dire ramifications if you are considered a Canadian resident for income tax. Namely, you are taxed on your entire worldwide income for the year, regardless of where you earned it. Unless, of course, you pay tax on your external income in another country, in which case, Canada does not double-tax. But since there is no income tax in the Bahamas, this is a situation I generally like to avoid. Even if you are in the country less than 183 days, you still may be considered a Canadian resident. And this is where it gets iffy. There is nothing that says, "If you meet this set of criteria, you are a Canadian resident". Rather, CRA will look at a combination of factors and essentially make a judgement call. Some of the questions they'll consider: - Do you own a home in Canada?
- Do you have a registered vehicle in Canada?
- Do you have bank accounts and credit cards in Canada?
- Do you have family and other personal ties to Canada?
- Do your spouse and/or children live in Canada?
Answering yes to any of these questions is a mark against you but again, it doesn't mean you're a resident. For example, maybe you own a home but rent it out. Then it becomes more of an investment than a residential tie. All in all, it's kind of wishy-washy so the more you can do to wedge yourself into the country to which you're moving, the better. Final note on residency: when you leave Canada, I believe there is a formal process to follow to claim you are no longer a resident. I haven't followed it. I just left and stopped paying taxes (which was easy to do because I didn't earn money in Canada for the first two years after I left). You could do the same thing but the underlying theme I'm picking up from my dealings with CRA is that they are fairly practical, at least in the tax department. As long as you act in a relatively reasonable manner, they should leave you alone. More information Seriously, the Canadian Revenue Agency website is really good at publishing pretty much anything you need to know about Canadian taxes. Not only do they have the actual laws, but there is a virtual cornucopia of questions and answers covering most scenarios, all in relatively plain, if not quite queen's, English. And pretty much all forms are available in fillable and printable formats. You shouldn't need to fill any of them out but they're a good reference for when you call CRA so you can expect which questions they'll ask. The main phone number for CRA is 1.800.959.5525. As a call centre, they are better than Expedia but worse than Go Daddy (who, admittedly, gets a few bonus points for having the best on-hold music ever). For the most part, you aren't on hold *too* long and the agents are friendly and seem knowledgeable enough even if they give conflicting advice. Specific sections: Note that it's still hard to get concrete answers to some questions, even if you call them up but this is still the best resource I've found short of paying someone a lot of money for advice. And speaking of paid advice, if you are serious about this scenario, you should seek it out. After you've gleaned all you can from the CRA website. I used KPMG in Calgary and am happy with the advice I got, if not the price I was charged. I also talked with someone at Continental Tax and I wish I remembered his name because he was amazing. Gave me a ton of free advice over the phone and I will not hesitate to engage their services in the future. Summary The overriding rule when negotiating the Canadian tax system is the same is it is in software development: Favour maintainability over all else. That means: don't rock the boat. Get into the country, pay what's owed, and leave. If you want to minimize the amount of tax you pay as a non-resident, the best way to do it is to minimize the amount of time you're physically in Canada. If you start looking for shortcuts, you're more likely to be audited. And worse yet, you're in a worse position to defend yourself in the event you *do* get audited. In my opinion, the Canadian tax system is based on fairness (with respect to eligibility, not necessarily the percentage you have to pay). If you're in Canada, you pay tax to the Canadian government. If not, you don't. If you act according to this, you should be okay. But just in case, it's best not to leave a forwarding address. Kyle the Deductible *EDIT: October 17, 2007*After clearing up some communication issues, the contracting agency consulted their own accountants and has confirmed my position. If you are *not* a Canadian resident, you do not pay EI, CPP, or income tax while you are working outside Canada. Ditto for collecting GST. This applies only if you are regularly based outside Canada so don't be plannin' any extended business trips to the Caribbean expectin' your tax savings to cover your bar tab.
Thursday, August 09, 2007
The subject for this post is pretty much the opposite of what I generally like to put here. It's a rant about a company's customer service. But this is the most readily accessible soapbox at my disposal and the only mechanism I know that will offer some small measure of retribution (thanks to Google) while still offering the possibility to entertain. So I'm going anyway. But I swear the technical content will blossom in the coming weeks.
I'm not an easily angered hillbilly (or Appalachian American, as we prefer to be called). I can withstand a certain level of incompetence in my dealings with service-oriented industries. I do, after all, live in the Bahamas. And have spent the last month in labour-challenged Calgary. But my recent dealings with Expedia have come to a head, the likes of which can only be solved by making it as public as possible in the hopes it gets Slashdotted to the point where I can't be ignored anymore.
The original saga starts here during a now-not-so-recent trip to Miami. To sum up, my paper tickets didn't arrive in time, I had to purchase new ones, Expedia said I'd get a refund, I went about my business.
It is now four months later and my goal has shifted from "get my money back" to "get someone at Expedia to acknowledge me". The last communication they have actively made to me was April 17 in an e-mail claiming the fax I sent to them was unclear. Subsequent faxes and e-mails (including scanned versions of the tickets) by me have gone unanswered.
All of my normal tactics have failed me. I tried being nice to the customer service agents to the point where I am now godfather to two of their children. When that started failing, I tried Justice's variation on the theme and greeted the next CSR with a seductive "what are you wearing?". The agent didn't respond well to that or the ensuing promises of debauchery which was just as well because he couldn't help me either.
Following that was a carefully worded e-mail to them outlining the situation, where they failed, and what I'd like to happen (i.e. "will you please just call me?"). That ruse in itself is fairly useless but I cc'd advocate@consumerreports.com, which historically, has given me good results, regardless of whether that e-mail address actually exists something I still haven't actually determined.
My current tactic is one I hadn't used in a while. I'm now stalking Expedia. I fax them copies of my tickets daily. I e-mail them just to tell them what I did that day. Y'know, the usual: I had Bran Flakes for breakfast, then I rode the bus to work, then I walked to the building where I work, then I took the elevator, give me my money or I'll find your building and lob Travelocity gnomes through the windows, then I went to my office...
I call them at all hours. Sometimes I go through the whole spiel with them and other times, I just breathe heavy when I get someone on the line. In the latter case, it's best to do it when you're talking to an agent but there's still some degree of satisfaction when the computer voice says, "I'm sorry. I didn't quite get that" while you're hyperventilating.
Alas, my most recent phone calls to them have broken my resolve and I have had to *shudder* raise my voice to the CSR at the other end, especially when he or she recites from the CSR manual verbatim: Your case has been escalated to the next level and someone from that department will be contacting you shortly.
It's an interesting progression from that point. I try explaining, fairly rationally at first, that my sole goal is for someone at Expedia to call me. At one point, I even asked the CSR to call me right back herself just to say hello so I could verify that someone at Expedia was capable of dialling a phone. The agent then assures me that someone will and I tell them that every assurance Expedia has made to me to date has been false, including the one where the tickets would be delivered on time in the first place (despite my protests that they wouldn't).
It is at this point that I have started to wander into tirade-territory which is generally a foreign world to me. And after doing it a couple of times, I wonder why people bother. Because there is a distinct shift in the agent's MO once you start. It's like they shut down completely and their vocabulary consists solely of "I understand, sir" until you are finished. You can almost hear the click when they switch into this mode. And when you're finished, not only can they still not help you, but they're also adding comments to your file like "Customer blew up like Michael Richards at a NAACP meeting. With absolutely no provocation."
Like I said, I can put up with a lot but my patience wears when an organization is showing not only a colossal level of incompetence, but an intense indifference to actually solving what is a fairly simple issue, especially over such a long period of time. I'm an easy guy to satisfy. All I really need is to know that you're taking my problem seriously. Even if it doesn't get resolved they way I want, if the person shows that they did their due diligence and their conclusion follows some logic, I have no qualms going back to them the next time.
Like most service indsutries, online travel companies are differentiated not so much by the service they offer, which is interchangeable, but by how they react when something goes wrong. And even in the case where that experience sucks, I'd like to think I'm objective enough to give it another try when I recognize that the issue could have been the fault of one particular individual.
But with Expedia, the problem appears to be ingrained into their process. Where my issue currently sits, I have no way of contacting the people who can help me. The front-line CSR's can't solve my problem nor can they put me in contact with the people who can.
What's worse, they continue to tell me things are going to happen that they can't personally verify. It started right after I made the reservation when I called them to express my...ummm...reservations that the tickets would arrive on time. I was assured they would. I called back two days before the trip and they again assured me the tickets would arrive the next day by mail, even though the next day was a national holiday in both the US and the Bahamas. Since then, they have all assured me someone would call back with an update.
The whole thing reeks of an inherent culture problem rather than one bad seed. Which isn't a good place to be, especially when air travel in particular is already so stressful. So I suppose Expedia will go on the very short list of companies I won't use, at least until I get some evidence to the contrary. And at this point, it will take more than a cheque for the tickets I had to re-purchase.
Kyle the Betrodden
Wednesday, August 01, 2007
Test time, kiddies!
Assume that in the image below, we are looking at a class in Visual Studio with the default font and color scheme (except using Consolas as the default font). Also assume that ReSharper 3.0 is installed.
Locate at least three things wrong with the formatting on this screen.

First correct answer wins the opportunity to tell me how the &*%$ to fix it. Hint 1: Re-installing ReSharper has no effect. Hint 2: Changing the font/color setting for Tracepoint - Mapped (Enabled) will, for whatever reason, affect the same change in the variable "mockery" in the image above.
Kyle the Bemused
** Update **
Stop with all the responses already. It's embarrassing. You'll inflate my already-ballooning ego.
The three bits of freaked out formatting are:
- The mockery variable is formatted as if it is a breakpoint. However, after testing various settings, it is, in fact, formatted as a Tracepoint. Yeah, I didn't know what a tracepoint was either.
- Line 14 is not highlighted as a breakpoint.
- Line 15 is missing the closing semi-colon and the IDE has not picked this up as an error
There are two possible solutions. The first is to uninstall Visual Studio Team Edition for Database Professionals (p.k.a. DataDude). The more correct one is to install the latest service pack for Visual Studio, of which I had none.
Wednesday, August 01, 2007
Have been using AutoHotKey for some time now after a brief fling with HotKeys. You may have read about AutoHotKey over at LifeHacker or scanned it at Scott Hanselman's Ultimate Tools list. But neither do the tool justice. Both claim it is an auto correct tool you can use outside Word but that's not entirely accurate. While the utility can be used for that, it's only a small part of the warm fuzzy feeling that is AutoHotKey.
At a higher level, it's a way of automating pretty much anything using keystroke combinations. And I do mean anything. You can even map the Caps Lock key to something else or even cancel it altogether (which is more than the useless key deserves). And if you were so inclined, I imagine you could remap your keyboard so that it became a Dvorak one instead of qwerty.
I downloaded it initially so I could map various actions to Win key combinations but imagine my surprise when I stumbled on to a fully-functional sample script that lets you use the number pad as a mouse replacement. And a fully customizable one at that. You won't be playing Halo with it but it's definitely workable for, say, opening the little Outlook new mail notification, or having to deal with a non-keyboard friendly webmail app in IE. (Having said that, that particular script does have a slight quirk when you are running dual monitors.)
A quick scroll through the script showcase should give you an idea of what's possible. To me, it seems like the tool brings the power of ReSharper shortcuts to every other application on your machine. Of course, you have to put in the time to figure out how to write the scripts which can be pretty daunting for even relatively simple macros, let alone one that will display a list of favorite folders when you click the middle mouse button in certain types of windows.
But I admit the more advanced features are left untouched by me as yet and for the time being, it remains only a Win key mapper. Current mappings:
- Win+R = SlickRun*
- Win+S = Visual Studio
- Win+O = Outlook
- Win+P = Paint.NET
- Win+N = Notepad++
- Win+C = command prompt
- Win+1, Win+2, Win+3 = various remote desktops I commonly use
- Win+D = My Documents
- Win+F = Facebook (Oh, admit it, it's in your favorites too)
* The app appears to override the GrabWinR feature you can use in SlickRun so I had to add an mapping back to it. Unfortunately, the Chase Cursor option no longer works but I can live with that.
Kyle the Mapped
Disclaimer
The opinions expressed herein are my own personal opinions and do not represent
my employer's view in any way.
Copyright © 2008 Kyle Baley. All rights reserved.
|
|
|
LATEST POSTS
POPULAR POSTS
LINKS
BLOG ROLL
|
|
CATEGORIES
ARCHIVE
| December, 2007 (8) |
| November, 2007 (8) |
| October, 2007 (23) |
| September, 2007 (15) |
| August, 2007 (8) |
| July, 2007 (6) |
| June, 2007 (11) |
| May, 2007 (19) |
| April, 2007 (14) |
| March, 2007 (3) |
| February, 2007 (4) |
| January, 2007 (7) |
| December, 2006 (5) |
| November, 2006 (9) |
| October, 2006 (11) |
| September, 2006 (14) |
| August, 2006 (11) |
| July, 2006 (15) |
| June, 2006 (8) |
| May, 2006 (10) |
| April, 2006 (12) |
| March, 2006 (3) |
| February, 2006 (7) |
|
|
|