Archive for the ‘Email’ Category

5 Email Problems not Solved by Google Wave

Nov 09
10

Google wave is an interesting new technology for communication. In concept it’s supposed to fix many of the issues associated with email. While it solved some of the back & forth in traditional email threads it fails to solve a number key email issues and instead introduces it’s own set of problems by radicly changing how people work.

  1. It’s still not possible to easily tell if your message was received, read or even opened.  Just like email you will never know if the important proposal made it.
  2. Information overload.  The problem is finding what’s important. New things move to the top regardless of how important they are. Compare this to how you organize papers on your desk, important things move to the top.
  3. If you say something stupid you can’t take it back. Just like email once it’s out there you’re done. Even if the other person hasn’t seen it yet. They will now play it back in it’s full glory.
  4. Privacy. You can’t send something and keep the recipient from forwarding it on.
  5. Transfer of large files or collections. You can still attach things but if you want to share 50 wedding photos or a large home movie Wave won’t help you much.  It’s a communication pipe but files are secondary citizens.
  6. Bonus #6. Spam.  You’ll can still get it and you’ll still be expected to flag it.  So there will be false positives. An extensive social network reputation doesn’t help.  A lack of a social network doesn’t keep you from sending 1000’s of messages.  It’s still early so there is little spam but this will change if this catches on.

    Post to Twitter

    Twitter Scalability – Performance is user experience

    Jun 08
    30

    This is not another post about how bad performance is on twitter. There are planty of other people talking about that. Instead this is a post on how you can define performance expectations in terms of the user experience.

    For example:

    • When I open a file that’s very large I have a different performance expectation from when I open a small file.
    • When I send a large package by mail I expect that it may take longer then a postcard or a letter (unless I pay more).
    • When I travel I expect it’ll take longer to get somewhere if it’s further away.

    These expectations are defined by the task at hand. Consider how the Twitter service is trying to scale and provide performance expectations.

    • A person that is tracking 10 friends has the same user experience performance as a person that is tracking 10,000.
    • A person that is being tracked by 10 friends has the perception that their messages are delivered as quickly as a person being tracked by 10,000
    • My stream of data is updated in real time regardless of if I visit the site once a year or once an hour.

    Basically the way the user experience is ‘unfair’ in it’s balance of resources.  Regular users of the site are punished by the super users. If you think of the site as a utility then each person using the site should be entitled to a somewhat equal share of the site resources.

    The Twitter status blog makes no secret that they believe they should be architected as a messaging system. Each time a person posts a message it’s ’sent’ to the followers of that person. So each time a popular users posts a message it may be sent to 20,000 ‘inboxes’ this can result in a mass ammount of back-end servrver requests to process the messages.

    Consider how the performance expectations could be set through a simple user interface change:

    Twitter Performance Sending

    By simply telling users that updates for that user are being sent and a percentage of those updates is complete it begins to set expectations for how the performance of the service will scale.  For a user with 50-100 followers the sending performance will continue to be relativly quick but for users with tens of thousands of followers there is the expectation that it could take several minutes to get all updates out.

    If you define the user experience you want to achieve you can architect your system with this in mind. The above implies that each user would have their own outgoing message queue. This is similar to an outbox in email. A collection of worker machines could then cycle through all the users and process a certain number of operations per user.

    • If the user has messages in their outbox process X messages and deliver them to the appropriate end-points, sending to the most popular people first when possible.
    • If the user has no messages in their outbox process Y people that they are following and pull messages from those peoples message queues.

    The above is a fairly simple system that is similar to how a CPU kernel will perform process time-slicing allocating a consistent amount of time to each system process. Similarly each person is allocated an equal slice of the sending/fetching pie. The above process has the following nice characteristics:

    • If you follow few and few follow you you’ll have a very responsive experience.
    • If you follow few and many follow you most of your time is spent sending updates.
    • If you follow many and few follow you most of your time is spent fetching updates.
    • If you follow many and many follow you your updates don’t slow down the system they just get added to the queue. Additionally people with lots of followers are able to carry on conversations with other popular people. (The Techcrunch chatting with Scooble problem)

    The systems would scale in a more linear way. Certain users would experience slow sending durring peak times but this would be more isolated and a problem that is easier to solve with more worker machines. The key thing is that by setting the user experience expectations of performance with an outbox or a sending status the users of the system can visually see the health and performance of the system.

    Post to Twitter

    Gmail Applications for Domains Review

    Jul 07
    10

    About two months ago our exchange server died for the last time and we decided to move our email & calendar solution to Google applications for domains.

    The reasons were easy.

    1. We don’t like running and maintaining servers. Like most small businesses we have better things to do.
    2. Certain collaboration features of Exchange just don’t work as we need. Sharing a calendar doesn’t work well. Stopping spam doesn’t work well. Public folders or public calendars don’t work well.
    3. Our requirements for email/calendar are pretty basic so a web solution that does the basics really well can be better then a feature rich solution.
    4. One of the key features of Exchange is being able to take your email with you. The problem is you’re always syncing or repairing PST files. If you’re usually online the syncing pain isn’t worth it.
    5. We now have Mac’s and PC’s, using Parallels to load Outlook isn’t that much fun and having a consistent experience as I move between computers is very desirable.
    6. Cost wasn’t a major consideration. That said the Google solution is much cheaper (free). Even if we paid the $50/user for expanded storage it’s still under $500/year for our small business. Microsoft Small business server is around $450 for 5 users. The TCO for the Microsoft solution is higher because of the admin requirements to backup, patch & repair issues. For a small business this is huge. (Hosted excahnge solutions tend to be more expensive as well)

    Ok, it’s been four weeks what works, what doesn’t?

    • Gmail – The overall Gmail interface is good. Having access to email/calendar from any computer with a web-browser is more powerfull then I expected.
    • The core interactions work well and it does a supurb job with spam filtering.
    • Some of the core interactions such as keyboard shortcuts, right click just don’t exist or don’t map to what I’m used to in a desktop application.
    • Load time is slow for a web-page but reasonable in relation to Outlook.
    • Gmail uses tags instead of folders. Tags are similar to what Outlook calls ‘categories’. Overall I don’t think tags are as useful as folders. With folders you store things once. With tags you can store things multiple times. This makes tags heavy weight for basic organization tasks. Tags are certainly more powerful but the coganizational boost is not apparent. Google docs recently added folders to their interface so I suspect a similar addition may be in the works for Gmail.
    • Email in a browser is good but not great. You can’t paste an image from the clipboard into a message. You can’t attach a file by dropping it on the message. Outlook does give you more formating flexibility. 90% of the time you don’t care but when you do care, you tend to care a lot.
    • Support for multiple email addresses under one account is limited. You can do it but you can’t have multiple email signatures for each account (nor can you switch quickly).
    • The calendar application does a poor job at reminding you of events from the browser. It partly makes up for this by having the ability to send reminders to your phone and allowing you to subscribe to your calendar from other tools and applications that fill this gap.
    • Searching on gmail is great. It’s relatively fast and it’s built in. Office only added full text search in it’s 2007 version.
    • Tasks/ToDo are painfully missing in the Google solution. There are a number of Firefox plug-ins and greasmonkey scripts that do a poor job of fixing this deficiency. I suspect that Task lists will get added in the coming years. Till then I’ve been using TaDaList from 37 Signals.
    • The Outlook solution is well coupled and tightly integrated. Switching from email to calendar and back is instant. With the Google solution it’s slow to move from one app to another and back. Google provides some basic shortcuts but overall it’s a sore spot. Applications open in a separate tab/window and it’s not easy to move things back and forth. I’m used to taking an email and dragging it to the calendar to create an appointment on the spot. With the Gmail solution it’s not quite as elegant. One thing that google does well with Calendar is the ability to type a line like “Dinner on Thursday at 7 with Kathy” and it’ll create the event automatically.
    • Give me a preview pane. Gmail is missing the preview pane for messages. This forces a navigation and a context switch for each email. The application does some clever AJAX to keep this transition very fast but the context switch forces you to refocus each time you go back and forth. This also makes keyboarding through messages much slower…
    • Speaking of keyboards, accessibility with the Google solution seems lacking. Google has done a good job of adding some keyboard shortcuts but I haven’t been able to quickly arrow through messages. With a Windows or Mac applications you can learn the keyboard shortcut by looking at the menu. With Google applications it’s burried in the help documentation.

    Overall

    Solid B+ Some things are better some things are worse. The transition pain was minimal and overall I do like it. The ease of administration is absolutely wonderful. If you’re a small business (under 25 people) it’s a great move. The spam filtering has saved me hours. If you’re in a larger organization you’ll need to consider those missing features further. If you’re a small business this is the best choice for a hosted email/calendar solution I’ve seen.

    Post to Twitter

    Reading Spam

    Nov 06
    23

    I’ve started reading spam. It’s not glamorous but there sure is a lot of it to read. When you start reading spam you quickly see some pattern.

    1. 98.9% of spam comes from people you don’t know. About .005% is from a friend who forwards me jokes or pyramid schemes. The remaining 1% is from websites that I’m registered too that send holiday emails.
    2. Spam communicates it’s message in two core ways:
      • Links to websites
      • Images within the text that direct users to call, email or open a web-page
      • Some messages have no link or actual content and seems to be trying to confuse spam blocking software so that future messages can get through.
    3. The text of a message tends to be semi-random meaning each message is semi-unique. Sometimes words have random characters, sometimes there is non-sense words and other times it seems to be random text copied from a random website.

    I realized that modern spam filters have some serious problems:

    - Bayesian filters will get tricked by random messages and content taken from the web
    - Community filtering can’t flag all messages if the content is semi-random
    - Image filters can’t recognize the text in an image if the image is random and the text in the image is sometimes random.
    - Dynamic blacklisting can reduce spam but not eliminate it.
    How about an alternative?

    I’ll try to avoid the term ‘filter’ because this word implies that messages can get through the filter by tailoring content. No matter how smart the filter gets it’s possible to craft messages that will pass through. Any system that relies on ’spam filters’ will have both false positives and false negatives.

    Instead of filters let’s start with a basic trust system.

    What’s a trust system? Ebay uses a good example of a trust system. Users establish trust and reputation over time. Anyone can give feedback on the trust relationship. The longer you have an Ebay account the more your trust grows over time. The same should be true for email.

    There are many ways to build such a system but the easiest way to explain it is by comparing it to the Google page rank technique. Assume that every email I send is like an outbound link. Every email I receive is an inbound link. With your own email data you could compute the email rank of any individual. With an aggregated data set you could compute the email rank across a very wide range of people who use email.

    Each email you receive allows you to give basic rating of positive and negative. Really simple.
    New Users and Mailing Lists
    When a new user enters the system they would have an email rank of zero. Their initiation into email would be to build a trust relationship with someone who has a higher rank. As the email is used the persons reputation grows and the validity of their messages increases.

    Mailing lists that people subscribe to would have to build the same type of trust. As these mailing lists are used and as more people subscribe/opt-in the trust of the list grows. At Raizlabs we have a mailing list product and I’m always nervous that software designed to be used as a useful tool for news and opt-in mail could be used by someone to send out spam.

    Why is it that I know more about the trustworthiness of random people on Ebay then I do of the trustworthiness of email in my own inbox?

    For more ideas on email check this out.

    Post to Twitter

    Basic Etiquette Rules For Using Email

    May 06
    11

    Over the last 10 years a basic etiquette to sending email that has evolved. These rules are considered by some to be common wisdom, unfortunately this wisdom isn’t as common as most would like. Following a basic etiquette is fairly simple and it makes reading and receiving lots of email easier.

    • Add a subject line to every message.
      A subject in an email is like the envelope for a letter. The subject should be short concise and to the point. Adding a subject line to each email makes it easier to read, find and filter. Adding a subject also makes it easy to quickly find a particular email from hundreds or thousands.
    • ALL CAPS
      Typing something in all caps is often synonymous with shouting in an email. All caps messages are harder to read. To turn off caps use the caps lock key on your keyboard, it’s located next to the letter “A.”
    • Reply All
      If you are emailing a small group of people (2-5) it’s ok to reply to everyone but you should avoid using “reply all” with larger groups or email distribution lists that may contain many people. If your reply is directed at only a couple people don’t send your message to the entire list.
    • Replying to a message
      When you reply to a message it’s customary to keep the original message bellow the reply. This isn’t necessary but is often helpful if you re-read your mail at a later point in time.
    • Forwarding email
      Do not forward chain letters, jokes, internet myths or other random mail. The only exception is if the person has explicitly asked for this. If people really want this type of email there are plenty of joke-a-day lists on the internet.
    • To me or to CC that is the question
      If you need the person to read your email place their name on the To line. If you don’t need the person to read the email but thought they may want to know place them on the CC line. Do not assume that every CC mail will get read. People who are busy may filter their CC messages into a separate folder or not read them at all.
    • Large Attachments
      Avoid attaching large files (2 megs or larger) to an email. If possible use a link to the file or image. Large files can often get rejected by servers, if the recipient is on a slow connection this can bring their email to a halt. If you need to send a large file consider storing it on a server and then just send a link to the file.

      If you find these rules useful, print out a copy, tell a friend, post a link to your site, mail it in a letter, just don’t send an email about it.

    Post to Twitter

    Email Folders vs. File Folder

    Dec 05
    27

    Why are email folders so different from file folders?
    Cut Copy Paste:
    You can cut copy and paste email folders and file folders but you can’t move one to the other.

    Search:
    You can search email and you can search folders and files but unless you have a desktop search engine installed you can’t search both.

    Share:
    You can share folders between computers but unless you have some special email client and server you can’t share emails or folders of emails without actually forwarding the messages.

    Control:
    Every program can easily interface with the filesystem and enumerate folders, and items but if you want to control, export, or interface with email you need to know the specifics of the email client.

    Attach a file to an email or save an email to the desktop and the concepts begin to merge. Both a file and an email are at their core very similar. Each one contains an idea, a thought or concept. Each one is created saved and retrieved for later viewing. What if all your files existed in your inbox? What if all your emails lived in the filesystem? Today the separation of these two worlds is artificial.

    The Unified Store
    Bill Gates has wanted a unified store for the last 10 years. A single architecture that can hold both emails and files. A single database file-system that can bring these two worlds together. This is a huge opportunity for anyone in the operating system business.

    Advantages:
    A more powerful file system as well as a more powerful email application. The advantage of combining the two is that you get the best of both worlds. Rich meta-data on files, sharing and searching on emails, unified backup, unified sharing, unified security, unified interactions.

    Public information seems to indicate that Windows Vista is not going to include a unified store and that Outlook 12 will not undergo a radical face-lift. Looks like the door stays open for another five years. The question is will Microsoft, Apple, Google, or Linux get there first?

    Post to Twitter

    Email 2.0

    Dec 05
    6

    The initial version of email has a lot of problems that can not be addressed by making minor modification to the way that email is trasnsmitted. A new architecture needs to be developed to begin to replace our current email infrastructure.

    Problems
    - No guarantee or acknowledgement of delivery.
    - No accountability for who sent the message (spam)
    - No guarantee on latency or delivery
    - No general security (email is sent as plain text)
    - No standard messages for bounced, inactive accounts or full accounts

    Our current system:

    Greg -> Server1@host.com  <- net ->  Server2@host2.com <- Kathy

    Today Greg sends a message addressed to Kathy@host2.com. Greg’s mail server releases the message onto the internet. The message is sent back and forth between servers untill it reaches host2 or untill the servers give up. Greg has no way of knowing if the message was delivered. Kathy has no way of knowing if the message recieved is legitimate.

    Proposed solution :
    Greg types his message and sends it to Host1. The host creates just an envelope consisting of an encrypted key for the message, Greg’s name and the address of Host1. This envelope is sent across the internet in a similar fashion to our current email system. If Host2 recieves the envelope it can connect back to Host1 and retrieve the message securly using the encrypted key provided in the envelope. If Host2 never recieves the envelope host1 can automatically resend the envelope.

    Send just the envelope wrapper using Email 1.0

    Greg -> Server1@host1.com  <- net ->  Server2@host2.com <- Kathy

    Once Kathy’s server recieves the envelope it connects securly back to Greg’s host and downloads the body of the email.

    Server1@host1.com  <- net  <- Kathy

    This is better then the current system for several reasons

    1. This makes it much harder to spam. Currently after a message is sent the sender can disapear on the internet. The new system requires that the mail server holds outgoing mail and waits for it to be retrieved. This provides a greater level of accountability. Additionally it means that each message is recieved from the correct host. Since the reciever connects to the sender computer to retrieve the message it is no longer possible to forge email addresses unless you have control of the sending host computer.
    2. Once a message is sent it can be canceled or corrected before it is retrieved. Everyone who has used email has hit send and wished they could fix, correct or cancel their message. This new architecture would make it possible. When you hit send you are now just sending an empty envelope the message is only retrieved when the server wants to download it.
    3. The new approach allows you to tell when a message has been successfully delivered. Since each envelope is unique and has a unique key you could easily tell when the message was retrieved. This doesn’t prove that the message was ‘read’ but at least you know it didn’t get lost along the way.
    4. Initially the system could be made to be backward compatible with current email networks. Initially the envelope could also contain the body of the message as well as the secure key. Email software that is aware of the key could download the message securly to help authenticate the sender. Email software that is not aware of the security key would just see the message. There would be incentive to upgrade your email client since it helps ensure that messages sent are delivered. Recieving less spam would also be an insentive to upgrade. In addition many of the clients could be updated transparently by simply updating the backend server and still delivering mail to the client applications using traditional pop3 and imapi. Another way to grow adoption and still have backward compatibility is to format the message in a way that brings users to a secure location:

      You have recieved a secure message from: ‘Greg’ who is using Email2 for secure communication. It seems your server does not support email 2. You can read this message by installing email2 software or by clicking this link: https://host1.com/key/23232082959372

    5. Email communication would be more secure. Although there is no perfect way to secure email commuunications the new system would be more secure then the curent system.

    Having a framework for developing a new email technology would allow for other advanced that are desperatly needed.

    • Standard subscribe / unsubscribe headers
    • Standard bounce messages
    • Standard threading and referenceing (rather then including messages in each mail)

    I think a revision to the way Email is sent and recieved is long overdue. Even if this isn’t the exact solution we really need to rethink the way that Email should work.

    Post to Twitter

    Productivity tip- check email less often

    Nov 05
    11

    Email notification is a sweet seducer of your time. You’ve got mail! It’s exciting, someone cares enough to write something to you. The sound of the new message, the pop-up notification begs you to stop what you’re doing and read it!

    I think that email is to some degree addictive. Each message is a bit of mental sugar, a little nicotine of digital satisfaction. I have found myself checking email all the time. This could even be made worse by programs that check automatically for you.  I’m guilty of writing one. Doh!

    Want to really increase your productivity? It’s simple. Set your email checkers, outlook, blackberries, etc. To check for mail only once every 1/2 hour or even once every hour if you’re brave. Less checking means less distractions. Less distractions means longer stretches with more productivity.

    • Less checking cuts down on quick back and forth messages. Email isn’t a great tool for an “instant messenger” conversations. Use a phone or meet in person to discuss. Horror!
    • You may find that smaller issues get resolved on their own.
    • If several people have replied before you it gives you the opportunity to have the last word. This also means you are more likely to be in a role where you can break a tie in the direction you want.

    Post to Twitter

    Email 2.0

    Jun 05
    13

    The inital version of email has a lot of problems that can not be addressed by making modification to the way that email is trasnsmitted. A new architecture needs to be developed to replace our current email infrastructure.

    Problems
    - No garentee or acknowledgement of delivery.
    - No accountability for who sent the message (spam)
    - No garuntee on latency or feedback of delay
    - No general security (email is sent as plain text)
    - No standard messages for bounced or inactive accounts

    Today:
    Greg ->MailServer1@host.com <– net –> MailServer2@host2.com <—- Kathy

    Today Greg sends a message addressed to Kathy@host2.com. Greg’s mail server releases the message onto the internet. The message is sent back and forth between servers untill it reaches host2 or untill the servers give up. Host1 has no way of knowing if the message was delivered.

    Proposed solution

    Greg types his message and sends it to Host1. The host creates an envelope consisting of an encrypted key for the message, Greg’s name and the address of Host1. This envelope is sent across the internet in a similar fashion to our current email system. If Host2 recieves the envelope it can connect back to Host1 and retrieve the message securly using the encrypted key provided in the envelope. If Host2 never recieves the envelope host1 can automatically resend he envelope.

    This is better then the current system for several reasons

    1- This makes it much harder to spam. Currently after a message is sent the sender can disapear on the internet. The new system requires that the mail server holds outgoing mail and waits for it to be retrieved. This provides a greater level of accountability. Additionally it means that each message is recieved from the correct host. Since the reciever connects to the sender omputer to retrieve the message it is no longer possible to forge email addresses.

    2. Once a message is sent it can be canceled or corrected before it is retrieved. Everyone who has used email for more then one year has hit send and wished they could fix, correct or cancel their message. This new architecture would make it possible.

    3. The new approach allows you to tell when a message has been successfully delivered. Recipt of the encrypted key shows that the message was recived.

    4. It may be possible to make this email servers that supported the new transport but also have backward compatibility with pop and SMTP email clients. New client software could give additional features such as canceling a sent message or checking the status on any sent item.

    5. Email communication would be more secure. This system would help prevent email forgery. It would also prevent a ‘man in the middle’ scenarios.

    6. Because this new technology builds on existing systems it can be backward compatible with older clients. For example the envelope that is sent by Host1 can contain user readable instructions for reading the message:

    • You have recieved a message from: ‘Greg’ who is using Email2 for secure
      communication. It seems your server does not support email2. You can read this message by installing server software or by clicking this link:

      http://mailserver1.host.com/message/232959372

    Proposed steps:

    Greg ->MailServer1@host.com
    Greg sends his message to his own mail server addressed to another recipient

    MailServer1 <— net —> MailServer 2
    The mail server sends an envelope to MailSerever 2.

    If Kathy @ MailServer2 would like to read the message a secure connection is made directly from MailServer2 and MailServer1 to retrieve the content of the message.

    Points to consider

    1. The burdon on the sending mail server is proportional to it’s volume of email. So if a spammer tries to send a million messages he needs to have the website to support a million people reading his message. If his DSL company cuts him off any unretrieved messages would get discarded.
    2. Attachments, and other large files would not ‘clog’ your inbox because they would only be retrieved as needed when the message was being retrieved.
    3. An email message can become a dynamic, possibly editable document. Once you hit send the document doesn’t have to get stale.
    4. Mailing lists become easy to manage because you can determine what email addresses are no longer active.

    Post to Twitter