atai, you're right, I was out in the Bay Area last fall looking for work, and the whole place was a hive of high-tech activity.
But what I didn't realize until I found the right job boards is that there is a lot of software work to be found in Canada. One thing that works to my advantage is that many Canadian programmers take work in the US because they can get higher pay there.
I'm married to a Canadian, but I'm still on a work permit, I don't yet have my landed immigrant card. So if I left the country for a contract, there is a small but real chance I could be denied reentry when my contract was done. Americans can travel freely to Canada, but when one has applied to immigrate, there is a presumption that one's application might be denied. I was allowed back in last Fall, as I was fortunate that the customs agent was happy I brought consulting work back with me - that is, I was bringing money into Canada.
I'm certain I can find a contract within Canada. What is not so certain is finding one close to home. There is very little software development anywhere in Atlantic Canada, and most of that is in C#, so that's what I'm learning.
There is a good chance I have found a contract that I can do from home. It's not through an agency, and ironically doesn't seem to have resulted from my plastering the country with my resume. Someone who needed an embedded software consultant just stumbled across my resume in a Google search. It will be in C and C++. I should know by early next week if I've got the job.
Yesterday I was reminded of why I stopped working with headhunters many years ago. I have been applying to the agencies this time around. I got a call from a recruiter wanting me to work in Oregon, and I said "I'm only willing to take onsite work within Canada". And she just hung up the phone. Just "Click". Not even so much as "goodbye". The two recruiters I've spoken to here in Canada were much nicer than that though.
Test Driven Development in C#
Or actually any of the .Net languages. Visual Studio 2005 has integrated unit testing, but that ties one to both Visual Studio and Windows. I'm working on an ASP.Net app that will run on Mono and Linux.
For both platforms, there is NUnit, which works well (it comes with a full suite of tests for itself, to be run on installation). The API is similar to CPPUnit's, which I've used with great success.
My web hosting service is OK with installing Mono for me to use. I imagine they'll want to see how it works out before making it one of their regular services, but I expect they'll want to in the long run. There aren't many hosting services that support it.