Two years ago, I moved to Salt Lake City for work. After looking around a bit for a rental property close to my new work, it became clear that I would be better off trying to buy a new home than renting if I could afford to do so. At the time the interest rates and property values in Salt Lake City were very low, so monthly mortgage payments were often cheaper than rental prices.
Sitting at the Salt Lake Roasting Company after we first moved here, we found a really nice real estate agent (Jaral Ferwerda). I worked with him diligently to find a home while my lovely wife was buttoning up our home in California.
After a while, I started to find it very difficult to keep track of all the homes I was seeing. They started to blur together, and I wasn’t really able to figure out which one I liked best.
First, if you already have a Google account (like a GMail address), you will want to log out of by clicking on your name or icon up in the upper right corner of any Google app, and then click the “Sign Out” button:
Alternatively, you can use the standard GMail settings, on the iPhone, but my favorite approach is to actually use the GMail app from Google in the App Store. The reason I like that app over the standard iOS mail app is that it is much more of a true mobile client that takes advantage of the platform.
You can do this either from your iPhone/iPad directly, or using the iTunes store on your Mac/PC.
Once you have the app installed, you need to set up your GMail accounts. Either tap “open” from the App Store page about GMail, or find the GMail icon and launch it.
On launch the app will prompt you to log into your account. For a Google Apps account, this will be the email your administrator assigned you like email@example.com, and the password that you’ve set up previously by going to http://gmail.com.
Launching the App the first time takes you to the login page, where you can type in your email address and password. Note that this is the same whether you are logging in to a GMail account or a Google Apps account, to Google they are just different users as far as mail goes.
Once you log in, you will be shown the inbox for that account, and be able to read your email pretty easily. To navigate the folders (like sent, draft, etc), you tap on the little icon in the upper left corner that looks like a box with stacked bars.
This will cause the folders and settings pane to slide out from the left and reveal your email structure so that you can choose. Clicking on a particular folder will display that list in the same fashion as you saw with the inbox.
Additionally from this screen, you can add other email accounts by tapping on the profile area at the top of the pane, which slides the list of accounts down and changes the direction of the panel indicator at the top of the pane.
If you’ve already done this, you will see the list of accounts, and each one will be badged with the number of unread messages. Adding a new account is as simple as tapping the large plus icon and logging in. Tapping on a profile picture will switch you to that account once you are logged in.
The little gear icon in the upper right of this corner brings up settings for you email where you can set a few things (such as vacation responder, signature, etc).
Once you log into the new account, you will again see the loading page, this time with the image from the new account’s name and profile image
The next time that you go to the account selection page, you’ll see a list of accounts with the icon for each badged with the number of unread messages showing so that you can easily see what needs your attention at the moment.
Google apps on the iPhone are a mixed bag, with some being native, and others not, so it’s also a good idea to set up the Apple “Mail, Contacts, Calendars” for synchronization of those things (which can use the Exchange push in the same way as an actual Exchange server).
First go to your settings (normally you can find this by clicking the home button on and looking for the gear icon that says “Settings”.
If you’ve previously added accounts, the “Add Account …” will appear below the existing account settings list (in my case I actually have to scroll in order to get to this button.
Tap on the add account button and you’ll be presented with the choice of types of account that you want to use. You can use GMail here, but I prefer to use Exchange simply because it pushes the information to the phone asynchronously
Once you tap on the Exchange button, you’ll get a new page that prompts you for the authentication information. This uses Microsoft’s autodiscover method to figure out how the account should be configured.
Type in the user name and password for your account here, and give it a description. Typically I use the name of the company that has the domain that I’m adding (for example PMI-SFBAC for my pmi-sfbac.org address).
Then click the “Next” button which should bring up the Domain screen. The only thing you need to make sure of is that the server ends up being m.google.com, and that you still have the right username and password. To continue, tap “Next”.
The final step is to choose what you want to be pushed to your phone. Generally the important ones are the contacts and calendars, since those are business related.
It really doesn’t hurt to have Mail turned on as well, since that keeps your inbox in the iOS Mail app up to date, but if you’re worried about your data plan, just set up the contacts and calendars, since that is the part that the GMail app won’t really be as helpful with.
I got an email from Microsoft today (Office Insider) that included an article about how to add a calendar to Outlook that would give you the March Madness schedule in Outlook as an example of publicly shared calendars.
Publicly shared calendars are nothing new, they’ve been around for years: Apple created the webcal URI to access iCalendar files using WebDAV (over HTTP) for iCal.
So I figured Microsoft probably wouldn’t have reinvented the wheel here and tried clicking the link in the article to see if it would fire up iCal.
Turns out that the URI in the link was very slightly different than a standard iCalendar, so instead of the normal “webcal://” it starts with “webcals://”, which interestingly enough tried to fire up Outlook (in my Windows virtual machine).
Luckily this URI isn’t yet associated with a particular app, so I was able to click on the “Choose an Application” button and pick the iCal application.
After choosing the iCal application, and clicking “OK”, iCal fires up with a dialog asking you to enter the URL of the calendar you wish to subscribe to, with the URI from the web page showing:
Now clicking “Subscribe” of course doesn’t work, since iCal has no idea what to do with “webcals” as a URL.
So to fix this, you have to modify the URI to be either “webcal://” or “http://” (turns out “https://” works as well).
So even though the URI is not quite the standard webcal one, it is possible to open as a web calendar with iCal, and the same trick works for Google Calendar. Just copy the URI from the link in the page (webcals://calendars.office.microsoft.com/pubcalstorage/9rc05lhz2204226/2011_NCAA_March_Madness_Calendar_Calendar.ics) by right clicking and copying the link:
Going to my Google calendar, I then click the little “Add” button at the bottom of the “Other Calendars” area, and choose “Add by URL”.
This brings up the dialog box that lets me add the calendar, and I paste in the URL I copied before, and just edit the first part to be “https”:
Since it’s already a public calendar, I didn’t check that box, although I’m thinking that makes it a public calendar on Google, which might make it easy to find with Google. At any rate, now the calendar shows up for me both on iCal and Google (obviously it would work in Outlook as well had I followed the original link).
I love Google Voice. It’s an inspired system that gives me a permanent number that I use as the way to get in touch with me.
It lets me have calls ring at multiple numbers, deal with voice mail as part of my normal email, and gives me some nice attempt at transcription that is sometimes useful.
Usually I can figure out what the caller was saying from the weird transcription note that I get, but occasionally I get one like today’s gem. The caller said “Call me back and I’ll fill you in”, and Google Voice gave me: “15 minutes and I’ll kill you” ….
Of course both of those would get me to call back, but I think they need a little more work to get this right.
I recently attended the Google Technology User Group Campout at the Googleplex in Mountain View. This was a three day sprint to build something interesting with the latest Google product: Google Wave.
Google Wave, as it turns out is a very interesting experiment in social interaction. Google is trying to reinvent collaborative communication with a piece of software that is one part chat, one part Wiki, and one part WebEx.
The demo included things like interaction with blogs, Twitter and other web technologies, as well as interesting programming doing things like on the fly grammar checking. I signed up for a sandbox account the day of the presentation (using my iPhone of course), and got set up a week or so after that.
Wave was written by the brothers Lars and Jans Rasmussen, who are the architects of the Google MapsAPI. In some sense, this is an experiment in building software caused by the lessons they learned with the immensely popular Maps API. By giving the developers access early in the build process, they hope to build a more solid platform that will serve the developers needs.
So Friday came and I drove over to Google with Bennett Fonacier (a friend I met through Job Connections some time back). After the 50+ people got through with their 5 minute pitches, we networked for another hour forming teams. There were many ideas that were very similar, and for the most part these groups joined up into a combined team. Bennett and Steffen Frost (CEO of Carticipate) both came up with the idea of matching people for ride shares using the Wave.
I’d originally thought I would join a team doing something health related, but since my goal was to get a working piece of code, and I was sitting with the car pool team, I joined that effort. We became one of the roughly 50 projects teams, and quickly talked through what we’d be building over the next 48 hours or so.
The other members of the Wave Rides team were:
Steffen Frost was a great concept guy, and had an existing product we were going to try and emulate.
Bennett Fonacier has some development background, but he was short a computer, and would be doing QA.
Andreas Koll who had some experience with the Google Maps API volunteered to build the Gadget for our interface.
Hannie Fan offered to provide some design expertise and CSS coding.
Robert Herriott was a quiet supporter, offering constructive criticism
I took on the task of writing the Robot, which is the part of the Wave that would take the input from the Gadget and match the participants with ride partners. Andreas had a working Gadget in short order, and was able to embed it in a Wave.
While he was doing that, I was working on getting a Robot built using the guidelines in developing Wave extensions slides. I got a working “Hello World”, built the extension.xml file, and with help from the Google crew, got it so we could create a new Wave with my Robot added.
I got the icon from the Carticipate site, added a bit of code, and the Robot was adding the Gadget to the Wave. So far I had gotten a working Robot, and Andreas had a working Gadget. Now all we needed to do was clean them up a bit and get them talking.
This turned out to be a bit tougher than expected. The current state of the world is that the Robot can add a Gadget, and send data to it when it is added to the Wave, but can only read the state from the Gadget, and not actually set anything after the Gadget is running.
Anyway, I eventually got some debug code going in my Robot that would dump out the properties of the Gadget, which helped Andreas to debug some issues he was seeing with the state of the users accessing the Gadget.
Our original plans for the WaveRides robot was that it would behave roughly the same way as the Carticipate application does: ask the user a few questions about where they are going, if they are driving, and then show a list of everybody who is travelling in the same area and time. So as we worked, I kept prototyping closer and closer to that goal.
By the late Saturday night, we had a working prototype that launched the map gadget, and displayed back the data from the users interacting with the gadget. The gadget was displaying the location of all of the users on the map, and we were feeling pretty good about the progress (especially considering none of us had ever built anything with the Wave API before). Bennett and I headed home, expecting to finish up the next morning, leaving Andreas coding away on his gadget.
The next day we arrived at the Googleplex and found that Andreas had solved some of his remaining problems, and the gadget was looking good. I went to work on the Robot, trying to get it to match up the user data. Of course, since there was little time left, the Wave kept misbehaving (probably due to all of us pounding on the sandbox with untested code), and we kept running into walls.
My original design had been to add a blip with the map gadget and gather my data from there. I soon realized that it was difficult to keep track of the gadget that way, so I changed my code to add the gadget to the root blip, and started removing debug code. At some point, we decided to put the code up on code.google.com for safekeeping, so I spent a few minutes figuring out how to do that (you can see the code at http://waverider.googlecode.com).
It was still fairly early on Sunday morning, and Andreas had been up until the wee hours of the night, so he wasn’t around for us to ask him to make changes to his gadget. We had separated the development of the gadget and the robot, so they were actually being served by two separate app server applications. The gadget only provided input for one point, and to complete the robot to the point we could demo something interesting, we needed it to have a “from” and “to” for each participant.
So rather than reinventing what Andreas had done, I decided to change the robot to create a “from” and a “to” gadget in the Wave, and use that. Interestingly this turned out to be fairly painless. I was able to add the second instance of the gadget, and give them each a name. The Wave kept track of them separately, so I got the data from both separately.
I spent the last few moments before we were supposed to present, trying to get a simple match working. The nice thing about this was that I could version the app on the Google App engine, and keep a known working version deployed while continuing to test. As other teams presented, it became obvious that this had been a good decision, and I eventually dropped back to one of the earlier working versions for the demo.
We got to demo the concept, and explain what we would have liked to have done. I accomplished my goal of learning how to code a basic robot, and learned a lot about the API. We were by no means the slickest or coolest app there, but we had fun building it.
We’ve got the start to an open source project that could eventually be used to match people locationally, and used for all sorts of purposes, and we got to see some of the challenges in building apps for a piece of software as new as Google Wave.
From left to right above: Steffan Frost, Fannie Han, Rob Weaver, Andreas Koll, Bennett Fonacier.
Since last week, I’ve been immersed in coding and development education about various cloud applications.
First there were a couple of meetups about the Google Wave product that gave me a overview of some of the capabilities and requirements for developing applications around the Wave product. Google Wave is an interesting piece of social media that is a bit like chat and MediaWiki combined with WebEx.
The first talk on Monday, was about the federation server, which is the open source implementation of Google Wave. The idea is that you could have a Wave server inside your firewall that could protect your data, while also allowing for communication and interaction with other federated servers. The code is so new, that it is actually using a different protocol than the Google Wave servers are using.
This is a very early prototype, but the idea is that it will use standard XMPP servers to communicate between domains, and use typical certificate based trust mechanisms to authenticate between domains. The internal server could be implemented with rules to (for example) prevent patient data from being sent outside of the firewall in a conversation between a medical team and a provider at another institution.
The next talk on Wednesday was about writing extensions for Google Wave. These extensions are UI widgets (called Gadgets), and Robots, which add capability to Google Wave.
As an example, you could have a voting Gadget, that allows the collaborators to vote. A Robot could add the Gadget to the Wave, tally the results, and write them out to a database.
A Robot can also do interesting things like watch the wave for keywords and make changes or respond. Some of the examples are a grammar checker that corrects grammar as you type, a code formatting and highlighting robot, and the classic Eliza conversational robot.
Next was the weekend long GTUG Campout at the Googleplex. This was a heads down coding adventure where the idea was to get a workable Google application up and running in 48 hours. I signed up for the campout a while back, with the intent of learning how to work with Google Wave.
I had signed up for a Wave sandbox account when it was first announced at the Google I/O conference, so I was able to play with it a bit, but hadn’t really had time to get started with developing anything. After the talk on Wednesday, I had a pretty good overview of how to get set up, so at least I had all the bits installed to parcipate.
So Friday came and I returned to Google once again. The idea was that we form teams to develop applications using the Wave extensions, so the first task was to come up with ideas and pitch them. After the 50+ people got through with their 5 minute pitches, we networked for another hour forming teams. There were many ideas that were very similar, and for the most part these groups joined up into a combined team.
After the teams were formed, the Google team gave another talk about developing Wave extensions, which was a great review and contained some things that aren’t really documented elsewhere (since the API is still changing). The slides from that talk became my guide to building my first robot, an experience that I’ll talk about in another post about the GTUG Campout 2009.
I’ve been using some of the more interesting “cloud” applications recently: Google Apps, Live Mesh and a few others.
I’m really impressed with the capablities and use of these free web applications. It’s a really interesting marketing tool as well: give away the low end product to build user acceptance, and then add a bit more to give value to the enterprise.
My first foray into the personal cloud was Google docs. This product has to be the coolest idea ever: create your documents on a web site, and let them be shared and simultaneously editable. The concept is awesome, and works really well for some documents (most notably spreadsheets). I can share a spreadsheet with any number of people, and they can all edit it at the same time.
Sort of like Netmeeting on steroids, I open my spreadsheet and there’s a little notification that somebody else is editing or viewing it. As they make changes, I see them in real time, and they see any changes I am making. Now the interface is not quite as friendly as Excel, but for most of the spreadsheet light users like myself, it’s more than adequate.
This is supposed to work for documents as well, but I’ve had less success with them (changes seem to get overwritten if more than one person updates at a time).
The other beauty of this is it effectively gives you a network storage for all of your documents, solving the problem of how to keep them safe and secure. I no longer have to worry (as much) about backing up my hard drive, since I know Google is taking care of the hardware. If a drive crashes there, they are ready with a failover, and I never even know that it was lost.
After using docs for a while, I also started playing with the other apps and found them all well thought out and useful. One of the main reasons that I had a Windows VM on my Mac was to support Outlook because of it’s tight Exchange integration, and ability to handle my calendar well. I combined Outlook with Plaxo to keep my various calendars and contacts in synch, and was very happy with this.
The bad thing about Outlook however is the way it stores its’ data: the dreaded PST file. They’re notoriously tempermental, extremely space wasteful, and difficult to back up. So I started trying other methods for dealing with email, including the built in mail client for Mac, and Entourage. None of these were as easy or as complete as Outlook.
Then I tried GMail‘s client. I’d had an account for years, but had never really tried the mail client. But as I thought things through, the benefits were clear: I get a huge amount of storage for my email, and I don’t have to worry about losing any history ever. I’ve lost years of email in a single PST or drive crash before.
At first I wasn’t convinced. The UI seemed cluttered, and I wasn’t a big fan of the way the conversations were threaded (in Outlook I used to categorize, and had lots of options for sorting folders just so). With GMail, everything is in a big pile, and you filter by tags. After a few weeks, another benefit became obvious: the fact that I could search for anything in my mail.
In Outlook, there was always a find feature, that if you could get it to work, took a very long time. Worse, it wasn’t possible to search across different mail accounts unless you added some search add-on. I had been using Google Desktop for this for some time, which worked well as long as the index had seen the message I was looking for (it only indexes message as they are opened, so when they get archived the search may find them, but you can’t get to them because it’s pointing to the wrong place).
With GMail, everything is indexed, no matter where it is. And interestingly, this also includes your instant messages, so if I remember I talked to Warren about something, I can search for it and GMail will find it in both my email and chat conversations with him. And when I look at a message, it shows me the whole thread of the conversation, with the bits that match the search expanded, making it easy to put the whole thing in context.
So now I’ve got free document storage, free email with more storage than I’ve ever used (a PST with 10 years of email had to be split because it was over a gigabyte in size, yet contained less than a hundred megabytes of data). I don’t have to manage my email any more than to tag it in ways that are useful to me (and I can tag it for multiple things, and there is still only one copy of the message to worry about, unlike with folders where you had to have two copies if you wanted to categorize things that way).
So how does Google monetize this? Well, it turns out they have an enterprise version that they sell for $50 per year per user. Compare that with the cost of hosting Exchange, and a file server, and you have a no brainer for most small enterprises. And even for the standard version, they let you use it for free for up to 50 users, so a SMB can get started for even less than the $50 per user.
Considering the Microsoft equivalent functionality would require the full Office suite, and Exchange server, and some collaboration server, you’d be looking at an outlay of a few hundred dollars per user. The clear win here is that you’ve now got a suite that works for the home user, and can also be used effectively by business users. Google wins on the marketing front, leveraging the lessons of open source to gain customer base and entry into the enterprise market.
If you’re like me, you eventually end up with too many identities. I haven’t figured out how to associate different email addresses with a single account, so I have to maintain several different Google identities.
For example a client invites me to join his Google group using his company email, so I have to set up a new account to access and manage that group. At some point I try to consolidate these to use my GMail identity, but that isn’t always possible (the client may for instance have decided to restrict their group to only allow access by people using their corporate domain addresses for instance).
Eventually though, I do end up with accounts that I’m no longer using (and sometimes I just would like a fresh start). Google actually has a link in their help about deleting an account, but it took me a bit to find it, so I thought I’d post a step by step guide.First you must be logged in, so go to one of the Google pages like http://groups.google.com and look for the link at the top right corner of the page that shows you who you are logged in as:
Once you are sure you are logged in with the right account, click the “Account” link and you will be taken to the management page for your account:
Click on the link next to “My Products” that says “Edit” and you’ll go to the accounts page, where you can choose to remove your web history OR account:
Click the link that says “Close account and delete all services associated with it”, and you’ll get the delete account screen, which has a number of options and validate with your password. Unless you want to keep a membership in a group, check all of the boxes here, then hit the button that says “Delete Google account“:
Once you have done this, you’ll get a screen that tells you that the account has been deleted:
The last couple of days, I’ve been involved in setting up a new non-profit entity and email addresses for the people involved. I used my hosting service to create a new domain, and set up email addresses that forward to their existing email addresses.
What I realized was that I didn’t have an easy way to set up a email aliases, and I needed a way to forward email to the entire group.
Naturally I thought of Google Groups, which lets you set up a sort of discussion board and file sharing area. My team has been using groups for other purposes, and one of the things we learned was that if you keep the group private, it can become confusing as people add their email aliases to the member list so that they can post from their various accounts.
So for this new group, I decided to set it up to only use the email addresses from the new entity, and allow posting to the group by any email address. By doing this, anybody can send an email to firstname.lastname@example.org and it will get sent to the group, effectively creating an alias.
This also keeps the group relatively clean, since the only addresses that show up in the members list are the ones that are connected to the new domain. On other groups I’ve managed, I end up with people with lots of different entries because they have multiple email addresses which can be confusing.
Without signing in, the group can now send email to “all” with a single email address. Of course that doesn’t take advantage of the file sharing and other group features, so what follows are instructions on how to create a login for a new email address which will allow logging into the group.
Step 2 – Creating a new Google login for your email address
First, if you already have a Google login, you want to make sure you are logged out. Go to a Google page like If you are logged in, you will see your login information at the top right corner of the page.
If you are not logged in, or after you click on the “Sign out” link, you will see just the “Help” and “Sign in” links like this:
Now you are ready to create the account. Start by clicking the “Sign in” link, which will take you to a sign-in form that looks like this:
Since we are creating a new account, we click on the “Create an account now”. Note that if you have an existing account, this won’t do anything to that account, you are simply creating a new account separate from the original. You will now see the account creation form:
The form is self explanatory, all you have to do is fill in the fields, type the distorted word on the page, and agree to the terms of service, then submit.
Next you’ll see the account creation verification screen, which will tell you that the account was created and must be verified. You need to check your email for the message, which has a link that validates the email goes to you.
Once you validate, you should once again be able to log in, and see your new login name in the upper right corner of the page:
So for the people in my group, once they create a new Google account with the correct email, they will have access to the Google group that I created, and be able to share files, etc. By setting up the group to allow anybody to post, they can post from their other email addresses, and receive the email on their new address.
You can also delete the account (or any other) should you decide you no longer want or need it, but that is for another day.