Older blog entries for MichaelCrawford (starting at number 205)

Looking for a programming contract

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.

Mono

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.

I'm Looking for Work

If you could use a seasoned software consultant who takes pride in his work, have a look at my resume and cover letter. I am available immediately, and will take onsite work anywhere in Canada, or offsite work from my own fully-equipped office.

C#, ASP.Net and Mono

I bought Jesse Liberty's Programming C# after a recruiter in Halifax told me that the only way I'd get a contract anywhere in Atlantic Canada was to put C# on my resume. I chose it after reading its favorable review at the Association of C and C++ Users website. I'm very pleased with my purchase, and recommend it highly - I'm confident that I'll be able to code C# .Net productively within a week. The only other book I think I'll need anytime soon is the C# Cookbook by Teilhet and Hilyard. I'm also liking what I see of C# so far.

I am not at all happy that I might have to work for The Dark Side of the Force. But as Kuro5hin's V said, "Ideals don't pay the bills". May is going to be really tight and June is projected to be about $1400 short of what I need to get by, so last Sunday I sent my resume to every body shop in the Dominion of Canada. There's lots of C++ work starting from Montreal on to the west, but in Nova Scotia, Prince Edward Island, New Brunswick and Newfoundland, there is nothing for me unless I learn C# well enough to convince a client I'm good at it. I'm willing to relocate for the duration of a contract but it sure would be nice not to have to.

But maybe there's a better way: Mono. It is an Open Source .Net runtime for *nix. I'd like to know if Mono is mature enough to drive a high-traffic web application. One writes Windows C# applications in ASP.Net; it seems Mono supports ASP.Net as well. How well does it work?

Since I can't claim to have ever been paid to write C#, I had intended to write a simple but useful sample program while I studied Liberty's book. I would then place its source code and installer on a CD, and a hardcopy of its source code in a binder to give potential clients. But then I thought, what could be a better calling card than to send them the URL to a commercial website that runs a C# ASP.Net application that I wrote myself?

I'll be damned if I host it on a Windows box though. I've been with the same web hosting service for nine years. I'm completely happy with Seagull Networks, and they run Slackware. I don't know yet it they'll be OK with installing Mono for me. I'm still waiting to hear back from them about it.

I guess I'll need an ASP.Net book too - Programming C# just has one chapter on it. Jesse Liberty also wrote Programming ASP.Net. The third edition covers ASP.Net 2.0, but the second edition covers 1.1, the version that Mono presently supports. There don't seem to be any books about ASP.Net in the ACCU book reviews yet.

I'm not ready to tell you what my website will do, but it will offer web-based services that would be useful to many businesses. I'm going to offer some of them for free, with some more complex and valuable ones for a modest subscription fee. So I also need to know how to process credit card transactions in a secure and automated way - for all my nineteen years as a software engineer, I've never coded so much as a shopping cart. I'm different that way. When I asked in my Kuro5hin diary, the recommendations included WorldPay, Authorize.net, 2Checkout.com and PayPal.

I won't use PayPal for the reasons given at PayPalWarning.com - it's not just them; PayPal seized the funds belonging to a merchant I do business with myself, and wouldn't give them back. WorldPay looks like the best, but the $399 signup fee they quoted me is going to be tough to come up with unless I get a good contract first. 2Checkout.com only costs $45 to sign up, and someone at K5 said it was "nice and easy", so maybe I'll go with them until my website gets more users. I don't expect it would be hard to change credit card processors down the road a bit.

(It is a sign of the times that 2Checkout.com's list of ineligible websites includes those offerring "IT Certification Test Exams and Study Aids".)

And don't worry, I will eventually release at least some of my site's source code as Free Software.

Looking for a Job in the Great White North?

Here are all the Canadian job boards I've been able to find so far. Links to any others are greatly appreciated:

Dice is a US board but has a few Canadian jobs and allows one to specify Canadian provinces in postal addresses. Jobboom is mostly for Quebec, and Career Beacon mostly for Atlantic Canada. Workopolis is the easiest to use, and seems to live up to its claim to be Canada's biggest job board.

Craig's List requires you to select just one city to search in - each Craig's List city has its own subdomain. There doesn't seem to be a way to search an entire country all at once. Also, one can only post resumes to specific cities, there is no way to make one's resume show up everywhere. I don't understand this, as the most common reason people relocate is because they've found a new job somewhere far away.

Craig's List does have the advantage that it allows on to search specifically for telecommute and contract jobs. Dice allows that too - it has the most fine-grained search facility. A very common problem most job boards have is that there's no way to limit searches to perm or contract, or telecommute or onsite. The best most can offer is to use the word "contract" in one's search query, which always turns up some bogus hits.

That's all for now. I'm sorry to have gone on for so long. I hope you found some of the links helpful.

Long Time No See

I haven't been able to log in for quite some time, not since Advogato's hard drive filled up and screwed up the database. Raph just reset my password for me.

I'm glad it was an innocent error though, as I discovered my account here had been deleted just minutes after I was booted from Webmasterworld for putting a Creative Commons license on my last post there. Their copyright forum is chiefly concerned with how to use the DMCA to take out websites that copy one's content; my argument that there could be a better way did not meet with an enthusiastic response.

One bit of news is that I am now completely devoted to writing both Free Software and Free Documentation. I'm able to make my living through advertising published with some of my articles. I'm now working to expand that in a copyleft kinda way.

I'll be back soon.

LinuxQuality or, The Best Laid Plans of Mice and Men

My original plan for The Linux Quality Database was originally to create a featureful bug database for the Linux kernel developers. I had a grand vision but not much of a clue as to how to implement it. I knew about bugzilla, but bugzilla didn't do what I want, so I planned to write a whole bug database from scratch that would put bugzilla to shame.

Well, the dot-com crash intervened and I found I had very little time to contribute to any Free Software projects. Finally someone set up a bugzilla for the kernel that, while it doesn't do all the cool things I envisioned, it isn't vaporware, thereby proving once again that Worse Is Better.

But something did come of my dream. My objective was not simply to improve the quality of the kernel but to improve the quality of Free Software in general. It's record is mixed: for every Free Software project of stellar quality that anyone can name, I can name ten whose quality is... less than stellar.

That's why so many years ago I wrote on the homepage of The Linux Quality Database:

I feel that software must not just be Free, it must be Good.

I felt that The Linux Quality Database must also have a mission of education, to help developers write better software, and to help users both to test it better and to write better bug reports.

This led me to write several articles on software quality that have turned out to be both useful and popular. So far they are:

They used to have the GNU Free Documentation License but the Debian developers have concluded it is not compliant with the Debian Free Software Guidelines, as I wrote in Which License for Free Documentation?.

Once Debian Sarge became stable, Debian started removing such GFDL documents as the Emacs and GCC manuals from main and moving them to non-free. To encourage Debian and other distros to include the LinuxQuality articles, just tonight I relicensed them to have the Creative Commons Attribution-Sharealike 2.5 License.

In late August I'm going to revisit all the articles to bring them current, fix broken links and add any new material that seems appropriate.

I also updated the markup to XHTML 1.0 Strict. My HTML/CSS coding skills have come a long way since 2000 with the help of my wife the web designer. I'll seek her advice in creating a new design to replace the current appallingly primitive one.

I always intended The Linux Quality Database to be a community just like Advogato or Kuro5hin where anyone could contribute articles, but focussed on educating the Free Software community about quality. The Dotsrc.org Open Source hosting service (formerly SunSITE.dk) offers MySQL hosting, so I expect I could set up some kind of message board to allow anyone to publish articles more easily than via FTP as I do now.

If you'd like to be involved, there is a mailing list with instructions at the bottom of the homepage. I'm not completely sure it still works, it's been years since anyone posted to it. I just sent a query to ask if anyone is still subscribed... and recieved my post, so it still works!

Thank you for your attention.

Writing but not my own:

My friend CheeseburgerBrown (Matthew Frederick Davis Hemming in real life) is writing a serialized science fiction novel in blog form:

He shares my dream of making it as a writer. There is quite a lot of his writing to be found online.

Enjoy!

Writing

I just published a new essay. It has a Creative Commons license.

I'll publish it here at Advogato if there is interest, but it has so far gone over like a lead balloon, both where I first published it at WebmasterWorld, where the moderators deleted it in less than a half hour, with a stern warning against claiming copyright over my own posts, and at Kuro5hin, where the revisions that were suggested after I asked for editorial help in my diary would have basically turned it into a completely different essay.

I can see how it could be improved, but I'm basically happy with how it presently stands. Please enjoy:

Most of the threads about copyright at WebmasterWorld have to do with how one can get the scraper sites kicked out of AdSense for stealing content, or even how to use the DMCA to get them shut down entirely. I hoped to offer an alternative viewpoint.

I emailed the link to RMS just now. I eagerly await his response. He's liked most of the other essays of mine that he's read.

Ask Advogato: How To Implement Site Search?

Can you suggest an open source package that will allow me to provide a search form on my pages whose search is restricted to my site? I need to be able to include a snippet of javascript in the search results to place Google AdSense ads in the results.

The is something called AdSense for Search, but it sends a lot of unpaid traffic away from my site. Paid ads are presented in the search results, but the pay per click is very poor, not enough I think to justify sending people away from my domain.

A short-term solution that won't make me ad revenue but should improve my site traffic is a hand-coded non-affiliate search box that uses Google to search my site by including a hidden form field that adds "site:goingware.com" as a keyword. Here is how such a search would result if one were to put such a search box here:

Now, I wouldn't get paid for ad clicks in those searches, but I think that's fair considering that I'm asking google to handle the searches. My reason for wanting site search is mainly to improve navigation at my site. I have already found that improved navigation on my pages drives up traffic throughout my site, as people spend time exploring it rather than going elsewhere. I figure offerring a search within my domain would improve that effect.

The adsense terms of service have been revised to allow ads to be placed in search results that adsense publishers generate. These are not the same as adsense for search, but are just like ads placed in static pages. The pay per click is much better, so that although I would lose a visitor when they clicked an ad, I would be paid well enough that it's worthwhile.

My web hosting service runs apache and mysql. I'm not sure what other web technologies they support. They're very busy people so I don't want to ask them to install any software they don't absolutely have to.

htDig is very popular but I've never been happy with its effectiveness. Maybe it is better now than it used to be. There must be many site search packages available, and I know I could find them all at Freshmeat, but I would prefer specific recommendations.

If you don't want to reply in your diary, send email to goingware (a|t) g m a i l dot com. My crawford@goingware.com email is deluged with spam because I have never protected it.

Thanks a million!

14 Jul 2005 (updated 17 Jul 2005 at 22:00 UTC) »
Writing

Greetings, Earthlings.

I have a new essay up at my site. It addresses my concerns regarding a proposed revamp of the Internet:

It has a Creative Commons license. Click the license notice and read the resulting Commons deed carefully to understand what that means.

I have many more articles and essays on their way. I expect I'll have something suitable for Advogato's front page before too long. It's been a while since I've published anything here.

Mike's Latest Windmill-Tilting Venture continued...

Friends,

PaysWell's SourceForge project is live at:

http://payswell.sourceforge.net/

PaysWell is a payroll witholding tax calculator, in the form of an OpenOffice spreadsheet. PaysWell is Free Software, released under the terms of the GNU General Public License.

Name service for payswell.org is not yet available but should be sometime tomorrow. My web hosting service Seagull Networks has generously agreed to provide DNS for free. They're good people - I've hosted with them for seven years and recommend them highly. (SourceForge provides VHOSTing for vanity domains but not name service.)

The SourceForge project page is:

http://sourceforge.net/projects/payswell/

Subscriptions and archives for payswell-devel and payswell-user can be found here and file releases here.

PaysWell 0.01 is my prototype that just does Nova Scotia witholding.

I plan to issue a press release, but decided I ought to wait until I have a production-quality spreadsheet available, even if it doesn't cover all of Canada. My prototype does the job but there are some serious (and documented) problems with it. I might also wait until I have one that does IRS and Maine witholding so USians can get started working on it.

Andrew Sackville-West very kindly sent me his payroll spreadsheet, which he's been using for a long time and so is much more advanced than mine. I expect I will learn a lot from his contribution. I'm not any kind of rocket scientist when it comes to spreadsheets. Figuring out how to look up tax table entries was an earth-shattering breakthrough for me.

The website is also pretty austere, downright ugly in fact, so maybe any press release should wait until it gets a facelift. I was in a hurry to get something up at all.

I won't have the time to do either for a few days, or maybe even a week as I have some pressing work that I've been putting off because of the time I've spent getting my new project started. But I will certainly have time to participate in any mailing list discussions.

Thank you for your attention.

Mike

Mike's Latest Windmill Tilting Venture

I am pleased to announce that release 0.01 of the PaysWell Payroll Witholding Tax Calculator is available for download at:

http://www.goingware.com/payswell/

PaysWell(tm) is Free Software, licensed under the GNU General Public License.

PaysWell is an OpenOffice.org spreadsheet. Other formats such as Gnumeric will follow in due time.

This initial release is incomplete and only supports the Canadian province of Nova Scotia. The rest of Canada will be supported soon, with other countries to follow.

If and when PaysWell's SourceForge project is approved, PaysWell's homepage will be http://payswell.sourceforge.net/ For now that just gets a 404 page. A press release will be issued once the SourceForge project goes live.

For now, we're discussing it on the gnucash-user mailing list.

The reason I created my own spreadsheet is that GnuCash is not yet able to support witholding calculations. The reason I decided to GPL and release it is to help GnuCash achieve World Domination and crush Intuit for the crime of charging $199 a year for their undocumented QuickBooks format tax table "service". Intuit makes millions selling information that every national, state and provincial government in the world provides for free, often at considerable taxpayer expense by mailing tax tables in hardcopy form to every business in the land.

PaysWell is a trademark of GoingWare Inc.

Thank you for your attention.

Mike

Tilting at Windmills for a Better Tomorrow.

196 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!