The first thing you need is an IP Address for the base hostname - ie patrickmcneil.ca. This is an A Record, and usually I would just point this at my house.
Well, I just discovered that godaddy offer free web hosting with a domain name purchase! This actually seems pretty decent - they give you 10Gb, 300Gb/month transfer, php support and 10 MySQL databases. With that, I should be able to set up anything I could want.
At this point, I have the option to set up CNAME Records, this is where you can redirect a subdomain to any hostname. ie cats.patrickmcneil.ca could redirect to icanhascheezburger.com.
This is where google apps comes in. This allows you to create CNAME records to redirect subdomains to google services. They support mail hosting, website hosting, blog hosting via Blogger and more. Through this, I've set up mail.patrickmcneil.ca and blog.patrickmcneil.ca. I also set up main.patrickmcneil.ca as a test of google sites, but I doubt I'll use it.
Now - e-mail. In order to make @patrickmcneil.ca addresses work, I need a mail server. Luckily, google supports this too. All I have to do is set my MX records to point at the google servers, and I have the gmail interface for @patrickmcneil.ca. A lot of companies do this, including mine - Phidgets Inc.
I would probably stop there, except that I just signed up for a 2 month trial of MobileME, and it supports custom hostnames too, so I pointed www.patrickmcneil.ca at a mobileme website that I created in iWeb.
Anyways, a bit complicated, but there you go - free hosting, and a domain for basiclly free.