Every since I got my Windows Home Server up and running I've been using the machine as a development box for various hobby projects. The Home Server product does a really nice job of giving you an internet presence straight out of your home office, but, there is a major limitation in the actual bandwidth speed you can host your services at. Depending on which way the wind is blowing, my upload speeds sit anywhere from 0kbps (thank you Comcast, my enternal nemesis) to +/- 1000kbps.
So, how do you run a site/service in a performant way with this bandwidth limitation? Well, one solution I've found is to leverage the Amazon.com AWS storage service. There's about 4.6 billion blog posts, many of them good, about this service already so I won't waste keystrokes. Here's a good link to the basics:
AWS Service How-To Basically I can host my site at home, but upload all my images to Amazon so that a user pulls "heavy" content from their API leaving only the page source served from my sluggish connection at home. Then, to avoid the typical browser cross domain complaints, you simply add a CNAME in your DNS settings to point directly to "s3.amazonaws.com". So my default homepage image link with say www.ravennasoftware.com/banner.gif. but in reality the host of the file is img.ravennasoftware.com.s3.amazon.com/banner.gif. Sneaky. :)
Anyway, after signing up with Amazon service I decided to build a library that uploads files for me. I must have downloaded 10 other C# Amazon S3 libraries before giving up. The problem? NONE OF THEM BUILD! One of my huge pet peeves is people posting VS projects online that don't freekin' build. They're either missing references, assemblies, or entire source files. Maybe it's the tester in me that makes my blood boil when en example project won't even build. I know they say that good programmers are lazy but that's the wrong kind of lazy. Check your programs before you post them for the rest of us to learn from. Drives me nuts.[/ getting off soapbox]
Anyway, my library posts images as streams, not just text, so it's already a bit more advanced that most of the garbage libraries I found. It's a hybrid of a few other libraries I found so by no means did I write the whole thing myself but at least it builds. Also, since I'm such such a nice guy, I included a console example that consumes the library and uploads a .JPG to a S3 bucket.
Anyway, it's available here from my skydrive. And guess what, it actually builds. :)