The Transition to Google Apps for all my Mail

November 21st, 2008

I recently purchased a Google Apps account so I could use GMail with my non-GMail address. In the process, I did the following:

  • created a Google Apps account for my domain (aarone.org),
  • configured my domain host (GoDaddy) to send mail for my domain to GMail,
  • transferred all messages from my old GMail account to the new GMail account,
  • transferred all messages stored on my computer to the new GMail account.

None of this is very hard or exciting but this blog has nothing better going on so why not document the process?

I have a fairly large archive of mail that takes me back to about 2001. This totals about 20,000 personal emails. I currently store this email in Mail.app and back up my mail to my Time Capsule.

In addition to this email, I also have a GMail account that I primarily use as a destination for mailing lists. I have about 200,000 messages from mailing lists at my GMail account along with a few thousand personal emails. GMail tells me I’m using 1115 GB (15%) of my 7265 GB. I have IMAP access setup to GMail and use Mail.app to view most of this mail.

This setup for mail has some limitations:

  • to check my email at my @aarone.org address, I need my laptop and Mail.app,
  • i’m in responsible for backing up my data,
  • i have multiple accounts for different purposes (personal email and lists)

I decided to create a new GMail account for my aarone.org address and move all mail I have to this account. Google Apps is a great service that is targeted toward organizations who need basic ‘productivity apps’ (hate that term) like email, calendaring (i hate that term too), messaging, etc. For $50 a user, your organization can have Google host services using your organization’s domain. In my case, my organization is one person and the only service I’m really interested in is email.

Domain Configuration

After I created my Apps account, I needed to configure my domain host to update the MX record for my domain to point to Google. This was kind of non-intuitive because the instructions on Google’s site for my domain host (GoDaddy) assumed that you were hosting your site (not just your domain) with GoDaddy. The instructions refer to the ‘Total DNS’ feature in GoDaddy that is not available if you don’t use GoDaddy’s name servers.

At that point, I configured GoDaddy as the host for my domain. I had some credits that allowed me to do so for free which was surprising (GoDaddy attempts to charge you for just about anything). Then, using the ‘Total DNS’ feature I manually configured an MX record (mail) for Google and an A record (primary) for my web host (in my case Joyent).

You should now be able to test your DNS settings using a tool like dig. In my case, the authoritative nameserver for my domains is NS51.DOMAINCONTROL.COM. I can check the A record for my domain using dig as follows:

dig @NS51.DOMAINCONTROL.COM aarone.org

which should print a response like:

;; ANSWER SECTION: aarone.org. 3600 IN A 8.17.170.107

indicating that the IP 8.17.170.107 should be used for aarone.org.

To see where mail goes for your domain, you can do the following:

dig @NS51.DOMAINCONTROL.COM aarone.org MX

which should display an answer section with the Google mail servers you entered if you followed Google’s instructions.

Configuring Mail Clients

At this point, mail sent to my aarone.org address was directed to my Google Apps mail account. I setup my old GMail account to forward all mail to my new GMail account and setup my new GMail account to filter my lists to the appropriate labels. I also configured Mail.app to show the new account using IMAP which left me with three email accounts in Mail.app. In a little while, I’ll only have one.

Transferring Mail Between GMail Accounts

I now wanted to move all the message from my old GMail account (my @gmail.com address) to my new GMail account (my @aarone.org address). I could have probably done this transfer with IMAP using Mail.app but I chose to use Google’s Mail Fetcher feature of GMail. I turned on POP access on my old GMail account and setup Mail Fetcher to fetch mail from the old account into my new account.

This bad thing about Mail Fetcher is that it chooses to periodically transfer 200 messages between accounts and then waits around idle for a anywhere from a few minutes to an hour. At this rate, it will take a long time to transfer all my mail but I’m not too concerned about that. The transfer occurs entirely on the server side so it will simply progress over the next few days (or weeks or months) until all my mail is transferred.

Transferring Mail Between Old IMAP and New GMail

The last step will be to move all my mail from my local machine to my new GMail account. I plan to simply use IMAP and Mail.app to move the messages.

One of the cool things about GMail on Google Apps versus the free GMail account is that IMAP doesn’t flake out quite as easily. Copying many messages using IMAP on my free GMail account always crapped out in mid-transfer, presumably to keep resource usage under control at the Google. Copying thousands of messages from my local machine to GMail via IMAP just works.

Conclusions

So far this transition has gone smoothly. The transfer of all messages is going to take a while but will eventually will end. Having a single place for my mail and having that sync’d with my mail client will make my life easier. If some radically awesome email provider appears or GMail becomes undesirable, I can always use POP or IMAP to suck all my messages off of GMail and put them somewhere else.

Prediction

November 4th, 2008

It’s a bit optimistic:

my vote

To the Next Congress and President

October 26th, 2008

In a little more than a week we’ll elect a new President and Congress and unless the Democratic candidates do something horribly inept or the Republican election officials do something horribly corrupt we’re likely to see a President Obama and large Democratic majorities in the House and Senate. This represents an opportunity as well as a risk for the country.

To the Democrats of the next Congress, please understand that you have an opportunity to reverse the long-standing sentiment that says you cannot govern responsibly. Please show us how responsible you are by focusing on serious issues like health care, the economy, and immigration. Please look to experts in respective fields when drafting legislation and not to lobbyists.

Also realize that if you are new then you got here because you are 1) riding on the coattails of the popularity of Senator Obama, and 2) the fear that the American people justifiably have in the state of the economy. The American people haven’t elected you because of your ideology but rather because they are scared shitless and have no faith in the other guys right now; you’re the only other choice.

To Senator Obama, you have an opportunity to fundamentally change politics or to become the next President Carter. As you used to say a lot more than you do now, the politics of Washington have been corrupted by lobbyists and that the only way to fix our system is to remove special interests from the process. You know that when elected officials are indebted to a specific interest they become inflexible and unwilling to compromise. The opposite is true when elected officials are indebted to the American people. Senator Obama, please make this problem an immediate focus when you take office as it is a prerequisite for true change.

The other major change of the past 15 years that has corrupted the political system is redistricting which has lead to a House where many of the seats are completely safe for a particular party. Redistricting caused the Congress to become more partisan and less open to compromise than ever before. Senator Obama, please undo the redistricting that has fractured the Congress and causes a negative tone in politics.

There are more issues that matter and more advice to give but we should start with these two issues. Please move quickly when you take office and fix the two problems that have corrupted our process: remove the influence of lobbyists and undo Congressional redistricting. The former is a prerequisite for near-term change and the latter a prerequisite for the longer term change in politics you seek.

An Idea for Purveyors Of Eyeglasses

August 16th, 2008

Yesterday I found myself frustrated by my physical inability to select new glasses. The problem is that my prescription is rather strong (-5.75 diopters in each eye) and when I try on a a pair of frames with fake lenses I am unable to see what I look like in a mirror. In order to see anything I had to move to within a few inches of a mirror which distorted my perspective of how the frames looked on my face. I did this over and over again with dozens of frames. I eventually submitted and selected a frame.

Did I end up putting way too much faith in the salesperson’s opinion of how the frames looked? Should I have brought along a helper to select my frames? Should I have just worn contacts and avoided this problem? Did I buy lady’s frames?

george wearing lady's frames

I think there’s a simple way to modify this process and I’m hoping some eyeglasses store has done or will do the following:

  1. buy a Mac with an iSight camera
  2. start PhotoBooth
  3. let customers take potential glasses to the Mac and collect photos of themselves trying on frames
  4. review photos while wearing your old glasses

I think this process would be beneficial even if your vision is good enough to see yourself in the mirror. It’s nice to be able to quickly compare different frames in succession without having a pile of frames in front of you and swapping back and forth between frames.

There is also an opportunity to build a piece of software that would be a bit more specific than PhotoBooth and allow notes to be associated with photos (such as the model of the frame) and to organize photos by customer. I’ll put this idea on my list of software that seems interesting but will never be built.

Next time I buy glasses I think I’ll take along my laptop.

Innovation Through Simplification

July 16th, 2008

I met Tim Bray today! He’s a really nice guy and offered lots of great insight about a variety of topics.

One interesting thing that he mentioned was how innovative technologies can be derived by simplifying existing technologies. This was the case in the derivation of XML from SGML. SGML predates the rise of the Internet but SGML was not widely adopted as a general markup language for the Internet due to its complexity. XML was created as a simple profile of SGML and its simplicity caused it to become so prolific.

This immediately reminded me of an ACM article I read by former Googler Adam Bosworth. He mentioned the problems of scaling traditional databases:

  1. Have databases enabled people to harness Moore’s law in parallel? This would mean that databases could scale more or less linearly to handle both the volume of the requests coming in and even the complexity. The answer is no. Things like ORDER BY, joins, subqueries, and many others make it almost impossible to push the query logic down to an arbitrary number of leaf nodes and simply sort/merge/aggregate the results. The easier way to limit queries to avoid this would be to limit all predicates to ones that can be computed against a single row at a time, at least where efficiency and scale are paramount.

As I consider all of the available alternatives to relational databases (CouchDB, SimpleDB, BigTable/AppEngine, HBase, Cassandra) I’m struck by how we could benefit from a simplified SQL dialect that would be more suitable for scaling across multiple machines (ie ‘horizontal scaling’). I’m hoping a standards body takes this on in the near future but I fear that the problem will get worse before that happens.

Too Big To Fail

July 13th, 2008

So much of what I read about the “housing crisis” indicates that the problem is rooted in the “marketization” of the mortgage industry. Mortgages were turned securities that were then traded in a market where the underlying risk of the securities was hidden. In this explanation, the problem is that the free market ran amok: aggressive sales people sold poor saps mortgages they couldn’t afford and the market hid the underlying risk of those mortgages until defaults began.

This is all true but hides the role of the federal government in creating this problem. The federal government has kept interest rates artificially low since 2001 and this factor played a large role in inflating the real estate bubble. The free market is not solely to blame: it was propped up by the Federal Reserve. It appears that the Fed has played a large role in creating this mess and they are now struggling to clean it up. I have doubts that they’ll be successful.

The Fed intervened during the collapse of Bear Stearns. It’s not clear what caused the run on Bear Stearns but when it happened, the Fed stepped in to rescue the company (at a great loss to Stearns shareholders). The concern was that if Bear Stearns would fall, others would follow. I generally agreed with this action as many economist’s statements indicated that panic was spreading and could bring down more securities firms.

Now, we come to the collapse of Fannie Mae and Freddie Mac; a case where the government’s role in the ‘industry’ has been disastrous. The government may have temporarily saved the two companies, but it’s clear that the current system of government subsidized mortgage companies should not continue to exist the way it does now.

Today, I heard Jim Rodgers reaction to the Fed intervention:

I don’t know where these guys get the audacity to take our money, taxpayer money, and buy stock in Fannie Mae,” Rogers, 65, said in an interview from Singapore. “So we’re going to bail out everybody else in the world. And it ruins the Federal Reserve’s balance sheet and it makes the dollar more vulnerable and it increases inflation.

I agree. The Fed’s interventionist ways cannot continue; something’s got to give. Who’s next? Washington Mutual, Lehman, or Citigroup, or something else?

Java Literally Sucks

May 4th, 2008

I use Java at my day job and I find it frustratingly verbose and confining. One thing that particularly bothers me is that I can’t easily represent literals.

Java adopted C’s convention for arrays:

    int[] x = {1,2,3}
which work fine if I want to use arrays; but I rarely use arrays because I like OOP and I usually want to do things with my data structures like call methods on them. So, I typically use a list which I could declare like this:
    List l = new ArrayList();
    l.add(1);
    l.add(2);
    l.add(3);

… but I don’t do that because I don’t like warning about not using generics properly so I usually declare the list in this even more verbose way:

    List<Integer> l = new ArrayList<Integer>();
    l.add(1);
    l.add(2);
    l.add(3);

The problem with both of these alternatives is that you really can’t “see” a list. You just see an allocation of a list container followed by three method calls. This really obscures the data structure in unnecessary logic.

Sometimes, in an effort to make my data structures less obscure, i create a list like this:

    List<Integer> l = Arrays.asList(new Integer[]{1,2,3});

Of course, this isn’t really a good idea because that list is immutable but it looks like it’s mutable which is kind of scary and weird to anyone who might expect this list to support operations like ‘add’ or ‘remove’ defined in the List interface.

To get around that problem, I’ve seen code that looks like this:

    List<Integer> l = new ArrayList<Integer>(Arrays.asList(new Integer[]{1,2,3}));

which is, well, ridiculously awful.

This problem only gets worse when I want to do something outrageous like define a map for which I have no primitive like an array to help me out. This leads to a long series of put() invocations which makes me a little nauseated.

The fundamental problem is that Java has no literal representation for basic data structures. I’d argue that this deficiency led to the proliferation of XML in Java projects for defining data. I can’t think of another language whose users get so much pleasure out of something like Spring. Ruby users wouldn’t understand why you’d want to model parts of your application in a markup language: why not just use Ruby?

Oskar and Mavis Play Tetherball

April 13th, 2008

SmugMugExport 1.0.6

April 5th, 2008

I just released SmugMugExport 1.0.6 which provides support for new SmugMug security features and also allows you to edit albums. Check it out!

SmugMugExport 1.0.5 Released

March 2nd, 2008

I just released SmugMugExport 1.0.5. The big new feature is Growl support. The release also fixes some bugs.