Email for $5 a month

My wife runs a business where she provides office management services on demand, The Office To Go. I put together a little brochure-ware site for her after she bought the domain. As with most of my domains, I keep them on GoDaddy and refer them to various servers in the Amazon cloud.

GoDaddy provides rudimentary email services that appear to work. Naturally, one of her first clients tried to send her an email… and GoDaddy blocked it. So embarrassing. Why? The email contained a URL. I turned off spam filters. GoDaddy still blocked it, giving us the following error:

Delivery to the following recipient failed permanently:

xxxx@theofficetogo.com

Technical details of permanent failure:
Google tried to deliver your message, but it was rejected by the recipient domain. We recommend contacting the other email provider for further information about the cause of this error. The error that the other server returned was: 554 554 The message was rejected because it contains prohibited virus or spam content (state 18).

Frustrated, I started looking for cheap email accounts. Then I remembered someone Michael Eisenberg introduced me to way back in 2003, David Koretz, CEO of Blue Tie. Michael couldn’t say enough good things about David and his company. Blue Tie just cut a deal with IAC to handle a lot of email for the various web properties of Barry Diller. Very promising!


Within a few hours I had a deluxe email service for the low price of $4.99 a month. Here’s what it took:

  1. Sign up for the enterprise email service, for 1 user, for $4.99
  2. Change the MX Records at GoDaddy so they point to the BlueTie servers instead of GoDaddy’s secureserver.net. You can find this form by first clicking on “manage your domains” then click on “full DNS control.”
  3. Request that BlueTie handle MX records for your domain using their online form.
  4. Wait a few hours for DNS servers to catch up. Have a cup of coffee, go for a walk, see some friends.
  5. Set up your email addresses so that BlueTie correctly routes username.enterprise to username@enterprise.com
  6. Update your POP3 email client so that it uses pop.bluetie.com, port 110 for POP3, and smtp.bluetie.com, port 25 for SMTP

DWTF Open Source License




Scott Raymond’s “Ajax on Rails” contains a nifty trick for form fields, following the Rails mantra of DRY and convention over configuration. Creating a field with an associated label, error checking, and formatting is as simple as

  1.  
  2.    <%= f.text_field :phone %>
  3.  

This produces a label using the humanized “Phone: “, a <div> for holding validation errors, an input tag, and appropriate field values. Here’s a complete form using Scott’s hackery from page 298:

  1.  
  2. <%# See +standard_form+ in application_helper.rb %>
  3.   <%= f.text_field :name %>
  4.   <%= f.date_select :start_date, :label => "First Call" %>
  5.   <%= f.date_select :end_date, :label => "Last Call" %>
  6.   <%= f.text_field :phone %>
  7.   <%= f.text_field :email %>
  8.   <%= f.text_area :body, :label => "Notes" %>
  9.   <%= standard_submit %>
  10. <% end %>
  11.  

Scott’s magic is embodied in a form helper, LabelingFormBuilder. For yucks, I Googled in search of a Rails plugin by that name. I stumbled across labeling_form_builder from Seth Rasmussen. I peeked at the license. Seth cracked me up. Only in open source can you get away with this (words bleeped):

  1.  
  2.            DO WHAT THE F**K YOU WANT TO PUBLIC LICENSE
  3.                    Version 2, December 2004
  4.  
  5. Copyright (C) 2007-2008 Seth Thomas Rasmussen
  6.  
  7. Everyone is permitted to copy and distribute verbatim or modified
  8. copies of this license document, and changing it is allowed as long
  9. as the name is changed.
  10.  
  11.            DO WHAT THE F**K YOU WANT TO PUBLIC LICENSE
  12.   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
  13.  
  14.  0. You just DO WHAT THE F**K YOU WANT TO.
  15.  

Social Networks Rock


The power of blogs and social networks really hit home for me today.

Each week I read about thousands more being let go, and I think of the families, the private discussions they have at home, the stress of worrying about eating into savings that are already ravaged by the markets. Many of those engineers, marketers, administrators may live paycheck to paycheck, scared about what comes next. Its especially challenging when the economy is in the toilet.

Yesterday I remembered a favorite saying of Thomas Marban. The web is about authenticity, transparency, involvement.

Heavy recently had layoffs, and I was among those affected. Its an early stage venture, so that’s a risk we all take as technologists. I changed my online profile at LinkedIn, and let all my contacts know what’s happening. I then closed my laptop, joined my family for a night of festivities, and tried my best to forget about work for a while.

After playing football with my daughter today (she has an amazing arm at 10), I took a seat at my home office, flipped open my Macbook. Sitting in my Gmail were several leads, people reaching out to me, offering solace and ideas. An engineer at Scribd personally fixed my resume, which is now online! I never even met the guy.

One LinkedIn email floored me:

Not that you need to hear it from me, but you are no joke one of the smarter people I have ever met. You have a knack for explaining the most complex things in a much more simple form which is key to any CTO’s job. I was always very impressed with the way that your thinking process as well. Very impressive. It was always a pleasure to sit in on a meeting or even chat because I learned something new from you nearly every time.

I tell ya, that really made my day. Is it true? Who knows. All that matters to me is that he thinks so. I’ll believe it for today.

Social networks rock. I encourage anyone dealing with layoffs to reach out, tell your friends, start talking. You will find comfort in friends and family, which can only lead to what you need and deserve for all your hard work and dedication… a great job!

Why I almost love Scribd

Scribd taking 8-9 hours to process a resume.  WTF.

This morning I polished off a resume and wanted to share it with some companies and recruiters. Writing furiously on my Macbook at 5am in the guest bedroom, I said to myself,

“Self, let’s put this on Scribd and use the cool, new Flash viewer for documents.”

I used my Macbook Pro to choke out a Word document, then printed to a PDF. I dutifully uploaded the PDF to a brand spankin’ new account at Scribd.com. Then, S3 started to break on me at Scribd, sending me spurious XML errors. I tried my own S3 connections on iZoomr.com at 5am and, sure enough, they seemed to be misbehaving. Grrr… So, I uploaded it again using the sleep deprived mantra of, well, if it doesn’t work the first time, just whack it and try again. (I know, stupid, but we’ve all done it…)

Nine hours later my resume is still stuck in line. That must be like the lines I see here in Manhattan, wrapped around city blocks, swelled with good people who just lost their jobs on Wall Street. Nine hours. Man, I hate that. I really want to love Scribd. It has such promise.

Google earns nearly 50% as much as IBM

Eric Schmidt talks about Google Earnings

Eric Schmidt. Dr. Half IBM.

This evening I was reading the post mortem from 3Q earnings announcements.  Google surged with a 26% increase in earnings, to $1.35 billion.  IBM was suffering a tad in Europe, but still posted gains from a year ago, earning $2.8 billion.

It took a minute for that to sink in.

Google, founded in 1998, now earns 48% as much as IBM.  A large portion of that money comes from a new market, tapping a need for people to reach each other at time of transaction, and sell their wares.  Most of this money is automated, moving through online systems, running in a cloud.  Contrast this with the labor, hardware-driven revenue of IBM and companies like them.

Amazing.

IBM Bluehouse? I want IBM Blue Plumbing.




This morning I read about Bluehouse.  It appears to be warmed over Lotus offerings, hosted on expensive infrastructure, spun with a nice name.  Willy Chiu, the executive quoted in the article, is an old hand at scalable web sites after years helping run major sporting events online. Willy certainly knows how to run big sites, and he’s helping IBM dip its toe in the water.  But IBM still doesn’t get it. Willy must be frustrated.

I don’t want a generic application in the cloud.  That’s probably what Richard Stallman is all in a tizzy about.  Just handing over all my private data to some application, that I have no idea where its running, scares the bejeezus out of me, too.  Maybe others are comfortable uploading keys to their life savings to Web 2.0 companies like mint.com.  Personally, it freaks me out.

Yet I’m still a huge proponent of cloud computing.  Why?  Simple.  Its the computing part I want.  I want raw storage, raw computing, raw bandwidth.  Let me encrypt my data and build my systems by hand, the open source way, so I know they’re safe.

Give me 60Hz 120V power and a three-pronged plug.  IBM, give us Blue Plumbing

Allow us to buy a raw Intel machine or Z-series capable of running any OS.  Sell us a wavelength on fiber for a truly private network.  Open up those gorgeous SAN machines and Netapp Filer wanna-be’s and let us buy reliable storage by the bit. Create vast arrays of cheap SATA drives like MySpace and Photobucket, then sell it to us as an S3 competitor. Sell us a chunk of your AT&T contract as cheap CDN bandwidth for a nickel a Gig. Turn MQ Series into an uber-reliable messaging service.

IBM engineers build incredible infrastructure; they often invent it. Its in their Poughkeepsie and Watson Blue blood. Don’t sell ‘em short by packing the Web equivalent of crapware into the cloud.

Amazon Web Services is a true cloud provider, at least in my book.  In 15 minutes I was able to Google for new information on their Elastic Block Storage, download the appropriate 128-bit key encrypted tools, create a 100Gig slice of a Netapp filer, and allocate it to my virtual machine that runs this blog.  That blew me away.  For kicks I created another computing instance in EC2, dropped my first instance, and re-attached the drive.  That was another 5 minutes. The cycle time is incredible.

Google gives us Python, forcing a language abstraction.  IBM forces us to eat a version of social networking.  Salesforce hawks leftover CRM systems as an app platform.  Those guys are living in the (recent) past, where applications running on a server somewhere have been relabeled as “cloud computing.”   If that’s all Larry Ellison is reading and hearing about from his marketers, no wonder he calls cloud computing “complete gibberish.” That’s not the cloud I want, either.

You’re Awesome! Have my Pocket Protector!

My Rockstar Gift

My Rockstar Gift

As a kid playing my Gibson SG in a rock band, I had dreams of being a rockstar. I used to practice for hours with a friend, Keith Howland. Keith was far better than me, his fingers moving across his Les Paul like liquid lightning, playing “Freebird” to the swaying masses. I’d strum along and do my best to not lose the beat. That was then. Today Keith is a rockstar, playing for Chicago. I’m a CTO/VPE for early stage companies, like Photobucket and Heavy.

Way too many years later, I had my first rockstar experience. Its not what I had in mind. VC Mike from Polaris introduced me as a “rockstar CTO” in Boston’s Amazon Web Services meetup. That’s quite humbling, especially from Mike, who I deeply respect. As the Rolling Stones say so poetically, you can’t always get what you want, but you get what you need.

I was scheduled to talk on migrating from managed hosting to Amazon’s new web services. A few minutes before I was called to the podium, I was sitting next to an engineer who specialized in SEO. We chatted for a bit, exchanging backgrounds, talking shop. He handed me his card and I stuffed in it my shirt pocket. He looked at me, puzzled.

“If you’re going to give a talk, you need to do it right. I’ve been doing some research on membranes to optimally protect your pens and cards you collect, without causing your Listerene strips to melt from body heat. I have some rather interesting results with different composite materials.”

What the… this guy reaches into his bag, shuffles around. His hand emerges, holding a flimsy piece of transparent plastic. “Ah, this is the one! Here, you need this.”

He hands me a pocket protector. I gave my talk. He came to see me afterwards. “Loved your talk, Scott! Please keep the membrane as my gift.” I was floored.

Note to VC Mike: Rockstars have screaming girls throw underwear on stage and paper airplanes with phone numbers written in lipstick. What do I get? A limp pocket protector. I can only hope Keith is faring better with his fans.

Amazon AWS vs. Rackspace and Akamai

[Ed: This post is a paraphrased transcription of my talks at the Amazon Web Services meetups in New York and Boston last week.]

Last summer I met David Carson, the colorful and creative cofounder of Heavy. We shared a burger at a nondescript hotel in Westchester. While I was munching on french fries, David began to describe his model for making money with video. Instead of selling ads directly in the video stream, his team was selling an enormous ad that surrounded the video. He called this a “video skin.”



 

I asked David how many videos he had. How many videos use this skin?

“Oh, about 20,000.”

That was nothing. We’d upload that before breakfast at Photobucket. Yet I was curious. “How much money are you making with these skins?”

David paused, looked at me. “I’d say somewhere between $10 and $20 million this year.”

I nearly choked on my cheeseburger.

That’s incredible! Here was this guy making millions out of a fraction of the videos we were producing at Photobucket. If this was true, and indeed it was, he had a real shot at making big bucks. Polaris wanted to turn David’s ad model into a network, enabling other video producers to profit, helping advertisers reach tens of millions of viewers… not just the kids watching skateboard stunts and girls on Heavy. A few weeks later I signed on as CTO.

Within a month I saw some real challenges under the hood. Yes, they were indeed making tons of cash off these videos. The revenue was very lumpy. Dave would make a killing during the Holiday season, when retailers would reach out to customers seeking the latest gizmo for their kids. During the dark winter, he’d suck wind. Revenue would dry up.

This wouldn’t be so bad, except as CTO I was faced with six figure monthly bills from Rackspace and Akamai. That was fine when revenue flowed. It was a disaster for the books when revenue dried up. Heavy’s newly hired CFO looked across his desk at me, frowning, saying I had to “do something” about these costs.

My team was excited about the new Amazon web services. Having worked with our own machines for years, I too was curious, but had no real experience with it. It seemed like the natural evolution of hosting, something we had dreamed about at IBM in the late 90’s.

The chart you see here tells the whole story. The Y axis shows the amount of bandwidth being generated. The X axis is time. The red color represents bandwidth from our Rackspace account, feeding external pipes. The yellow color represents bandwidth from our S3 buckets into the web.

First thing we did was fix our process for building software. Heavy was replete with producers, the kinds of people who love to see an entire script, to read something end-to-end, to ensure that everything has been covered. Those complete, detailed, hundred page “specs” work great for television and movies. Its horrible for software.

We switched to an agile process, akin to what some new friends at Pivotal Labs are espousing. That allowed us to be more flexible with what we build, when, tuning and adjusting every week, committing to deliverables in 4-week sprints.

Next, we called our providers. We told Rackspace that we’d likely adjust our monthly commitments as we were “going into the cloud.” I think they were snickering at us in Texas. The cloud was a lot of hype when we started.

Then we got started. I didn’t have a lot of extra budget. In fact, my budget was cut, and had to cut further. We had to squeeze what we’re doing into the current spend. We looked at our architecture, poured over traffic logs, and realized that a lot of traffic was being served from our origin servers that should be served from the edge.

After a bit of wrangling and reswizzling our backend to be more REST-like, we chopped up our search results, browse results, channel results, and more into bite-sized pieces with finely tuned caching rules. We deployed this technology in late February, which resulted in the first drop (1) in cost.


We used the savings from this architectural work to fund our Amazon experiments. Note how the chart starts to show a sliver of yellow at (2). That’s the early experiment with S3, where we were writing Bash scripts, PHP classes, and test clients in Flash and JavaScript to pull videos from S3. After a month or so of testing, we ran a pilot. Here we took our videos that were created in 2006 and served them directly from S3 instead of Rackspace.

The pilot worked. We built up confidence, held a meeting, and looked each other in the eye.

“Are we ready guys?”

“Sure, why not.”


We threw down the hammer (3). We fired up our cron scripts and started migrating our videos en masse to S3. The result was dramatic. Within days the bandwidth dropped by over 90% from Rackspace, where transfers were costing us $1.00 per Gigabyte, and storage was eating us alive at $8.00 per Gigabyte per month on a high-end SAN. Our new cost structure was $0.45 per Gig to store the videos, and a measly $0.17 to deliver a Gig into the Internet. The $0.45 was “high” as we kept three different copies of our videos on three availability ones.

This is when I received my first unsolicited call from Rackspace. Their IPO was imminent. An executive called me and wanted to hear more about what we’re doing. He said they’d be releasing cloud services soon. The account team later called me and offered to drop the storage price by more than 75%, down to $1.50 per Gig, “if I’d just keep what storage we had at Rackspace.”

Heavy’s CFO was delighted (well, as delighted as a bean counter can be, which is actually a half-smirk, almost a smile). Heavy’s CEO couldn’t believe the savings. We actually ripped 90% of our cost out of the monthly bill!

I’ll admit it. We were getting a little ahead of ourselves, feeling a tad overconfident. We decided our next target should be Akamai. Let’s attack that bill! Let’s knock a six-figure
bill down to the low thousands!

We fired up more cron scripts and turned our “suck-o-meter” all the way up. The “suck-o-meter” was a device that took a percentage of our traffic from high-end CDN deliver at Akamai to storage “that sucks” in a cloud S3. We assumed hardware was terrible, probably SATA drives in aging 1U PCs.

Initially this worked, which gave us the big spike (4). My Amex bill from Amazon was over $8,000 that month! Within days, however, we were getting calls from advertisers. Our head of product came to see me, as did our CEO. All were complaining about choppy videos.

Sure enough, we ran tests and discovered that S3 delivery was choppy. The chart here shows the bandwidth throughput of a connection to S3. Our videos were encoded at 500 kilobits per second. That’s about midway through the choppy part of the graph. We had to be in solid green for the videos to deliver smoothly. In fact, we saw that some S3 connections were slower than a 1993 modem at 56 kilobits per second! Other times we’d get Akamai quality at 1000 kilobits and more.

We turned the suck-o-meter back to zero, leveling out our costs. We’d live to tackle CDN costs another day. That’s a future post. Amazon just released the CDN private beta, and we were invited to join!

Wicked-fast geographic targeting


I’ve long been an admirer of Maxmind, a company that provides a free database for mapping IP addresses to geographic locations. Its more than sufficient for most applications, and I use it frequently in side projects as well as my day job at companies like Heavy and Photobucket.

Yesterday I paid $15 to buy a new version of their software that maps IP addresses to company names and known “proxies” used by warez providers. We need this to start tracking click fraud at work. What surprised me most was the release of an Apache 2.0 plugin using apxs, where the geographic lookups are now handled in C vs. a higher level scripting language. The performance improvement is dramatic. Further, it makes lookups dirt simple. The plugin stores the geographic IP, city, state, company and more in environment variables and internal Apache tables. It took me about 30 minutes to set everything up, including a compile and install on a CentOS box running on Amazon’s EC2.

The end result is a set of C libraries in /usr/local/lib and data files in /usr/local/shared that can be easily integrated to your C application:

  1.  
  2. #include <GeoIP.h>
  3. int main (int argc, char *argv[]) {
  4.   GeoIP * gi;
  5.   gi = GeoIP_new(GEOIP_STANDARD);
  6.   printf("code %s\n",
  7.     GeoIP_country_code_by_name(gi, "yahoo.com"));
  8. }
  9.  

Animated GIFs and video thumbnails from YouTube videos

A few weeks ago I was in a meeting, and my CEO kept saying “just need more cowbell.” People would laugh. What the hell? I had no idea. I missed the memo.

Googling around I found the original skit. It made me want to clip out the little phrase, and keep it handy for sending around the office. One thing led to another and I wrote a minisite while commuting, Tube Chopper. It takes snapshots, avatars, mp3 clips from YouTube videos.

I whipped out my Mac and showed friends (in their 40’s) the original skit over wine and appetizers. Cheese almost came out of their noses.

Make your own Youtube clips. Any loss of productivity is totally intentional.