Saturday, March 7, 2009

EMail Filtering

Gmail provides a bunch of great ways to filter your e-mail. One of the most accurate is to append a string to the end of your user name (i.e. myaccount+slashdot@gmail.com) when signing up for a service. Gmail strips everything after the + when determining where to deliver a message, however it will still appear in the "Delivered-To" message header. You can then run a search or create a filter by searching for "deliveredto:myaccount+slashdot@gmail.com". This allows you to set up auto labeling or other behaviors based on the origin of the e-mail, without having to know where the message might be coming "From:".

This is also useful for setting up forwarding between Gmail accounts. Using this guarantees you can label forwarded e-mail because Delivered-To will always be the address you specified in the forwarding set up, even if the original e-mail was addressed To: a mailing list or you were originally BCCed.

There's one big problem with this set up. There are a lot of... misguided developers out there who set up their registration forms with bad e-mail validation. I'd say about 50% of the time I can't use this method because + is not a valid character in the form.

http://en.wikipedia.org/wiki/E-mail_address#RFC_specification

I wish people would bother to follow standards. Very annoying.

Tuesday, February 24, 2009

Twitter Account

I haven't been posting a lot here, and it's mainly because I don't have anything that long-winded to say :)

I've started using Twitter to post the random things throughout the day that I used to bundle up into a weekly post. If you're interested, I'm at http://twitter.com/bogosian

Monday, January 5, 2009

Personal Web Hosting with App Engine

A few days ago I got a notice from my hosting company that my year long contract has expiring soon. I was using this hosting for three small websites that are 100% static and figured that there should be a cheaper way to get this done.

My first instinct was to look at Amazon S3 as their storage and bandwidth rates are pretty good. For my usage pattern I'd be looking at paying pennies per month to host all three sites. Unfortunately there's one fairly major flaw in web access to S3 that makes hosting an entire website there a non-starter. There is no way currently to set up a S3 bucket to host a file from the root of the bucket (i.e. http://www.jamesbogosian.com/ cannot be set up to serve http://www.jamesbogosian.com/index.html).

After thinking about it some more I realized that even though Google App Engine is designed to host dynamic websites that it could be easily used to suit my needs. Here are the steps that I took to get this working:

  1. Sign up for Google Apps for the domain in question (jamesbogosian.com)
  2. Log into App Engine and create a new application
  3. Download all of the content from jamesbogosian.com and place it in a directory named "static"
  4. Create an app.yaml file at the same level as the static directory that looks like this one (replacing your app ID from step 2 on the first line)
  5. Using appcfg.py from the App Engine SDK (download this if you haven't already), upload your "application" to appspot.com
  6. Log into Google Apps control panel and select "Add more services"
  7. Add your application to this domain by providing the app ID, and choose to host the "application" off of www.yourdomain.com
  8. Add or edit the "www" CNAME on your domain to point to ghs.google.com
  9. In most cases you will also want to redirect your naked domain (i.e. jamesbogosian.com) to www. This is different for each domain registar / DNS set-up. I use GoDaddy, and there was a small trick to get this working (I think)
    1. In the GoDaddy Domain Management tool, set up the forwarding from http://yourdomain.com to http://www.yourdomain.com, as a 301 redirect
    2. In the GoDaddy Total DNS Control and MX Records tool, change the A Record on your domain to point to 64.202.189.170 (this seems to be the way to get forwarding to actually work)


Now, there are a few limitations worth noting:

  • There is a single file size limitation of one meg.

  • There is a file count limitation of 1,000 files. You can work around this by using the zipserve module.

  • Spikes in traffic may currently be greeted with quota errors, but if you're talking about doing real low-traffic hosting I'd imagine that would never happen