Blogs About Technology, GTD and Life
7 Dec
Background
Anyone who uses Outlook tasks and notes and an iPhone knows the pain of not being able to sync tasks and notes over-the-air from Exchange to the iPhone. I was surprised when I first realized that the Exchange client oin the iPhone only syncs email, calendar and contacts and does not sync notes and tasks. I was surprised because I assumed it would be like any other Exchange client and sync tasks and notes as well. Initially, not being able to sync notes did not seem like a showstopper. But over time it became more and more problematic as I was unable to access notes from Outlook that I have become dependent upon.
Evernote
A colleague introduced me to Evernote (see evernote.com). Evernote is a service that allows you to save notes containing various types of media to a central, cloud-based service. The notes are available for viewing and editing using a variety of applications including: traditional web, iPhone, Windows dand Mac. Best of all, the service and clients are free if you do not exceed a (fairly generous) disk space allotment. Notes that are created or edited on any platform are quickly and efficiently replicated to all clients.
Moving Existing Notes
Evernote has two built-in mechanisms to import data:
I found myself in a bind. I had over 125 notes in Outlook 2007 (I was not using OneNote) and could not find an existing way to import these Outlook notes other than to copy and paste each note, one-by-one, into my Windows Evernote application. So I wrote a program to convert the Outlook notes into a format that can be imported into the Evernote Windows client (Note: as of this writing, the Mac Evernote client does not support this import feature).
My Outlook to Evernote (OL2EN) program takes an exported Outlook 2007 Notes file in Windows CSV format as input and creates an Evernote compatible import/export XML file as output. The Evernote import/export file can then be imported into the Evernote Windows client.
The complete steps to get started and import your Outlook 2007 notes are detailed:
OL2EN is free to use for commercial or non-commercial purposes. If you find OL2EN useful or want me to add any additional features, or run into any errors, please post a comment. OL2EN saved me from a lot of typing. I hope someone else can make use of it as well…
30 Jan
At Redpoint Technologies, we’ve been evaluating many of the services offered by leading cloud vendors in order to better understand where various cloud offerings are most appropriate. Like any technology, it is important to understand each offering’s strengths and weaknesses.
Today I executed some crude performance tests against the Rack Space Mosso Cloud Files offering. This is very similar to the Amazon S3 storage offering. It allows files to be uploaded to the Mosso cloud server where they can be later retrieved. The service offers no minimum or maximum in overall storage, but does limit individual files to 5GBs or smaller, and utilizes utility-style pricing.
Cloud Files optionally allows you to store your content on a content delivery network (CDN). A CDN is an infrastructure of servers located in different geographic locations that work together to rapidly deliver web content to users based on their geographic location. As a result, a CDN can dramatically increase the speed with which content is delivered/retrieved.
Major Considerations
Depending on your needs for uptime, Mosso offers what I’d consider the minimum availability with a 99.9% uptime guarantee for Cloud Files. This means the service may be down about 10 minutes per week or roughly 40.5 minutes per month. For many applications, that is acceptable, but for mission critical situations, this may not be enough.
The following table summarizes many of the considerations and the description for how these considerations are addressed by Mosso.
| Consideration | Description |
| Contracts and Minimums | No contracts, no minimums. |
| Performance | See performance notes below. |
| Cost | Minimal: $.15 per GB of storage, $.22 per GB of bandwidth out, $.01 for requests (via control panel). |
| Security | All traffic between your application and the Cloud Files server uses SSL to establish a secure, encrypted channel. This ensures that any data (usernames, passwords, and content) cannot be intercepted and read by a third party. |
| Availability | Offers a 99.9% uptime guarantee. That’s about 10 minutes of downtime per week. |
| Backup/Redundancy | Data is replicated to three locations. |
| Accessibility | Access files via Mosso browser-based control panel or via programmatic API. |
| Language Support | Supports PHP, Phython, Java and .NET via their API. See the developer API documentation |
Performance
For an upcoming distributed, grid-based project, I’m interested in the speed with which I can upload gigabytes of data to a temporary storage location.
The performance of Mosso was decent when using their API, but dreadful when uploading via their web-based interface (but to be fair, the web interface is more for account management and less about use in a production system). The overhead of SSL was surprisingly minimal (as compared to raw FTP - see below as this was not an exact comparison).
I used a 24.9 MB bitmap file as my test file to measure performance for uploading files to Mosso (additional tests around downloading would be worth while testing as well). I tested uploading the test file via the Mosso web interface, using the Mosso API from a .NET application (see the c# console application code below) and to this blog site via FTP to have a non SSL benchmark.
I ran each test several times and throughout the day from my cable modem (which scores between 712 to 2550 Kbps in a browser-based connection speed tests). The results from each run were pretty consistent. On average, it took about 6.25 minutes to upload the 24.9 MB test file to Mosso via the Mosso web interface (control panel), about 3.5 minutes to upload the 24.9 MB test file to Mosso via the Mosso API using the below application and about 3.25 minutes uploading to this (shared .NET hosting) blog site using Filezilla.
The results were satisfying in that my raw FTP upload (to a non-Mosso server) were just a bit faster than the Mosso upload that uses SSL. In my brief testing the service was reliable and I like that the Mosso session could be cached indefinitely in a custom application (unlike the web interface that timed out my session after about 20 to 30 minutes of inactivity).
.NET Test Application
You can use the code below to create a C# console application that will upload a file to Mosso’s Cloud Files service. (Please note that you will need to purchase an account at Mosso prior to being able to run this code.) Prior to building/running the application, you need to add a reference to the com.mosso.cloudfiles .NET assembly that is included in the lib directory of the free download that includes the Mosso .NET sample code. And don’t forget to provide meaningful values for the string values in lines 16, 18, 20 and 22.
Although it would be easy to add an upload timer to the code below, I used a physical stopwatch to capture the time for my upload tests.
1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Text;
5: using com.mosso.cloudfiles.services;
6: using com.mosso.cloudfiles.domain;
7:
8: namespace MossoPerfTest
9: {
10: class Program
11: {
12: static void Main(string[] args)
13: {
14: Connection connection;
15: // get your user name from mosso at sign-up
16: string username = "your-user-name-here";
17: // get this from mosso console once you have an account
18: string api_access_key = "your-key-here";
19: // containers are top-level "folders" for your data files
20: string container = "your-container-name-here";
21: // fully-qualified filename you want to upload
22: string fileName = @"C:\your-filename-here.txt";
23: try
24: {
25: connection = new Connection(
26: new UserCredentials(username, api_access_key));
27: connection.PutStorageItem(container, fileName);
28: }
29: catch
30: {
31: Console.WriteLine(
32: "Authentication failed or file upload failed");
33: }
34: }
35: }
36: }
Conclusion
In conclusion, you need to be strategic in thinking where you’d use a service like Cloud Files from RackSpace’s Mosso. We would use a service like Cloud Files for storing large files if we could queue them up and upload them asynchronously from our system. Or, perform a synchronous upload if the file was small enough.
From the Mosso’s marketing material, they state that Cloud Files is good for:
But that it is not so good for:
7 Dec
Late last month (November 18, 2008), Amazon Web Services (AWS) announced the public beta of a new service for content delivery. The new Cloud Computing service, CloudFront, provides developers an easy way to distribute HTTP content to end users with minimal latency delays and provides high data transfer speeds.
CloudFront integrates with other AWS services and, like the other AWS services, does not require any long-term commitment or expensive upfront cost, has the self-service account interface and utility pay-as-you-go payment model.
CloudFront is exciting because it provides a mechanism to deliver HTTP content throughout the world by leveraging the Amazon network of edge servers. These edge servers are distributed throughout the world in order for the content cached at these servers to be physically closer to the end users in order to lower the latency in delivering the content.
CloudFront integrates with AWS S3 by allowing you to store the original versions of your data in an AWS S3 bucket (S3 is Amazon’s Simple Storage Service, which is a web service that allows any size chunk of data to easily be stored and retrieved). The beauty is that the original data objects can be stored in S3 and, after a simple registration process, are seamlessly accessible through the AWS edge servers throughout the world.
At the moment, the dominant players in the Content Delivery Network or Content Distribution Network (CDN) space are Limelight, Akamai and CDNetworks. CDNs are used by most high-scaling websites including, for example, MySpace.com and the National Basketball Association (NBA). The CloudFront offering in this space provides a lower-cost alternative to the existing players.
1 Nov
Cloud computing involves both the architecture of an application (i.e. the way it is designed and the intent behind its design) and the platform on which the application is deployed. Cloud computing is a way to build, deploy and manage applications using Internet-based server infrastructure. It dovetails well with Service oriented Architecture (SoA) in that applications in a cloud are typically developed in a distributed manner with all the application pieces communicating over the Internet.
Cloud offerings differ from different vendors, but, for example, Amazon offers:
The cloud is promising to companies of all sizes, but is most powerful for small to mid-sized companies that do not have the money, staff or IT infrastructure to support an on-site enterprise data center. Getting a server to be visible on the Internet is easy. But building the technology infrastructure and staff to support a truly 24×7 data center environment with proper redundancy (both from a hardware, software and networking perspective), backup mechanism and physical & software security is not easy. Especially if this environment has to handle heavy peak loads.
The Benefits
Cloud computing offers many benefits:
The cloud lowers the bar (from a cost and complexity perspective) to entry for mission-critical, enterprise infrastructure and provides easy access to additional capacity as needed. However, not every vendor’s solution is created equal. To get the most out of certain cloud offerings, it may require modifications or rewrites to existing applications.
The Risks
Probably the largest concern surrounding the adoption of cloud computing is lack of trust (by some) in the security surrounding their data on the cloud. The fear of their enterprise data being compromised is a large concern and a barrier to entry for some companies.
However, despite what some folks may believe, most of the large cloud vendors have much more security talent than the typical corporation. And it is absolutely critical for the survival of any cloud vendor to keep their environment as safe as possible.
The second risk is the fear of an outages at the cloud provider. Could this happen? It did happen earlier in 2008 when Amazon had a service outage and applications were not available. Due to these risks, some companies are planning to wait and see how reliable and safe these services are before jumping on board.
The Players
There are a few of big players (Microsoft recently announced their entrance into this market in 2009) and many small startups in the cloud computing space. Most organizations are selecting to work with the big players due to the potential risk involved in outsourcing their application and data to a small unknown vendor. But the smaller companies seem to be pushing the innovation and providing unique offerings.