John Barnes's Blog
Unless you live in a technology cave you have probably noticed the discussion in the industry around Flash and HTML 5 that has been started by the Apple controversy. My goal here isn’t to rehash what has been said around using Flash or HTML 5 in a browser or on a mobile device, but to share my thoughts around this debate as it applies to Enterprise Business applications.
There is valid debate occurring around the pro’s and con’s of using Flash to serve a banner ad, or a video, or if the <canvas> tag or <audio> tag are a viable alternative. However this is a minor point when you are considering which platform to use to create a business application or a consumer facing RIA (Rich Internet Application).
First, let’s look at where the HTML 5 spec currently sits. It is a much-needed refresh of the current HTML 4 spec and has some great features such as support for video, audio and offline data storage using SQL Lite. The W3C HTML 5 specification is currently in “Working Draft” status and is not expected to be finalized until 2012 or later. The other current issue with HTML 5 is that is only supported in varying degrees by the major Internet browsers and some of its features may never be supported by some browsers (such as an offline data store).
We do a lot of work for Fortune 500 clients and have used both Adobe Flex and HTML 5 on projects. Currently HTML 5 is an option if you have full control over which browsers will be used to run an application (which is frequently not the case, even in the Enterprise). In contrast, Adobe Flex is a great platform to build business applications and can run in virtually all desktop browsers.
Flex is a rich platform that has complex UI elements (data grids, tabbed navigators, menus, etc.) built directly into the Flex SDK (now called Flashbuilder). It allows you to take your application and easily run them in Adobe AIR (Adobe Integrated Runtime) on the desktop (outside of the browser) or on a mobile device*.
As a company we are generally technology agnostic and try to bring the best options to the table to meet client needs. Although our focus is around deploying Cloud based solutions we have found that user interface or taking the Cloud offline is important to our clients. The question of Flex vs. HTML 5 for a business application is an easy one to answer today and will likely be so for the next couple of years. The promise of HTML 5 is great, but until the specification is finalized and it is widely supported by all major browsers it can only be used in limited ways and it doesn’t have the developer productivity tools that are inherent in Flex.

Here is a real world example. One of our early iPhone products on the iTunes AppStore was Search2GO, a simple search tool for Salesforce.com. This was built in Objective C and it took approximately 8 weeks to develop. Yesterday I watched two developers create over half of this same functionality using Flex/AIR and had it running on an Android phone in a day. Granted there are still things that could be added, but this was a great illustration of why Flex/AIR is a great toolset.
So while the debate rages on about HTML 5 vs Flash in the consumer market I’d recommend taking a hard look at Flex for business applications.
* Except the iPhone or iPad of course…

Today Amazon made a couple of interesting announcements. First off they have opened a new region (Northern California) with multiple availability zones (analogous to data centers, but each on separate flood plains and electrical grids). This further increases their computing capacity and also puts data closer to all of the start-up’s in the Bay area that rely on Amazon. The also have a US-East region, EU region and will have regions in Asia in 2010.
The key announcement however centers around some changes and enhancements to EC2 (their virtualized computing layer). One of the main criticisms and design challenges with EC2 has been around the fact that when you shut down a server, the state of that server is lost (unlike VMWare). There were ways around it (such as storing all data on EBS (analogous to a mounted drive on your virtual instance), but it did present some challenges. Today they announced the availability to save server state with a new Stop command, which unlike Terminate, saves the state of that running server.
This feature is enabled because you can also now boot from EBS, instead of S3. This leads to a faster boot time, and also makes it easier to tune your kernel or make other changes to an image. Upon boot you can also mount multiple EBS volumes which can lead to some very robust configurations.
Another challenge of EC2 was creating an image (AMI) of a server once you had it set up. This was fairly easy for a windows instance (using the Bundle process) but was more difficult for a Linux instance. Now you can use the CreateImage command to create a new AMI and register it in one easy step. See all the details here.
These are great enhancements to EC2 and are a welcome addition to the AWS offering.

On the second day keynote at Google I/O they unveiled something big. This is new product is built by the guys who brought us Google Maps. Remember how surprised you were the first time you saw interactive maps IN THE BROWSER and could zoom down and see your own house? Well these guys asked themselves an interesting question: “What would email look like if it was invented today rather than 40 years ago before there was even an internet? “ The answer to that question is Google Wave.
Google Wave is a paradigm shift to be sure. It takes email and turns it on it’s head. It tries to remove the pain points of email and combine it with tools that didn’t exist 40 years ago such as instant messaging, blogs, wikis, etc… At first blush it isn’t evident how different this can be, but as they showed more of the feature set it became apparent that this has the potential to be something very special.
There is a concept of a “Wave”. A Wave is on the server and as with email you can send it (or more accurately share it) with others. However it is collaborative. Multiple people can update a wave simultaneously, and it has a very rich “track changes” type of feature built in. Those who have not yet read the Wave just see the final version, those who had read the original version see the changes highlighted, or with a strikethrough font as appropriate. Things get really interesting when you see the playback feature which has music like controls with a sliding timeline that allows you to “playback” the changes. You can do this with all changes, or just the changes made by a specific person.
Changes to a Wave are not merely seen upon save, but as each character is changed it is simultaneously changed on anyones screen who is viewing or editing it in real time which is pretty amazing to watch. It also incorporates the idea of chat within a Wave, and again you can see character-by-character typing. So there is no more waiting for 30 seconds for a friend to type a reply, you see it all real-time. These chats or comments can be placed in a Wave document around a specific section to have context.
There are other features such as drag-and-drop of pictures in a Wave from the desktop and again they appear immediately for others viewing that Wave. A Wave could be used as a quick way to share photos, multiple people can contribute their photos and you can view a combined slideshow of all photos, etc… There is even a great feature with one click of a button to share your wave on a blog. Since a Wave is live on the server all changes made to the Wave are immediately reflected on the blog, just like if someone else was viewing the Wave from the Wave client.
Waves are not just to replace email, but also documents. The development team showed how they use it to take notes in meetings, build specs and even build a “wiki” like repository of a Wave that combines links to other Waves. Initially this is only for rich text (think documents or email) but they plan to extend this concept to spreadsheets and presentations.
I was especially struck how the developers who know this product, designed it and built it are still learning how to use it. To illustrate this they showed a real example. They sent out a Wave to the team asking about going to a movie. Pretty soon people started replying to all (treating it like normal email) and soon the chain was cluttered. Then someone decided to update the original Wave and add three sections for people to add their names to: (Yes, No and Maybe). Then people just added their names under the appropriate section and it was easy to see who was coming and who wasn’t without having to cull through a bunch of replies. Suddenly the wave was an intelligent form instead of just an email. New technology is great, but if you don’t use the new paradigm it will not bring much benefit.
Now this is all well and good, but are enterprises really going to embrace this? I think Google was very smart in the fact that they designed this in such a way that most of it is open sourced and you can take this technology and build your own Wave server if you don’t/won’t trust Google with your Waves. They also opened up rich API’s so a Wave can be extended to do things like update a Twitter feed. I truly think that IF this ends up giving Enterprises the level of control and security they desire that this could truly be an email killer and bring radical productivity and collaboration gains to all of us at home and at work.
[/caption]

I have an iPhone and for the most part I love it. I like the interface, the seamless access to music and all the apps on the AppStore. I don’t like the shortcomings, such as the lack of cut and paste, no video capture, lack of landscape keyboard, etc… Many of these will be addressed soon with the 3.0 OS, which is already in public beta. We have created six apps for the AppStore ourselves and we know and love Objective C. But what about Android? I’ve heard a lot about it, especially when the G1 launched, but I’ve never personally used it or seen it in action beyond some POC work by some of the developers on my team.
That is about to change. Google did a very smart thing, which at first I thought was very generous, then I realized was a brilliant move to buy mindshare. They gave all 4,000 of us a free Android phone just for coming to their conference. But we weren’t 4,000 random people. We are thought leaders and developers from all walks of life that know enough or care enough about Google to spend a couple of days learning more about it. Even with this “Google Centric” crowd I saw a lot of iPhones and Blackberries and very few G1’s. But now all of us have a free Android phone, and not only that but it is unlocked and we have a SIM card for 30 days of voice and data access.
I’d say the odds of all of us trying out some development on this platform just increased dramatically. I’m curious to see what comes out of this or what types of skunkwork apps my team can put together now that we have a spare phone we can actually try things out on.

I just got back from the recent Google I/O developer conference and was struck by it’s simplicity. It was short, only two days. It provided great content. It provided great food and snacks. It even had the requisite Wii and Rockband pods and upped the ante with Pool, Foosball and chair massage.
So enough with the format, what was the message? The message was all about the importance of HTML5 and how it was supported by all “modern” browsers. The browser made by the boys in Redmond was not on this “modern” list. I haven’t followed the HTML 5 standard that closely but was surprised along with others with what could be done within the browser without a plugin. Does this mean Adobe should worry about Flash marketshare dropping? Not immediately, but in a couple of years, maybe so. In a nutshell you have some new tags and features to consider:
<canvas> This tag allows you to have pixel level control in the browser and do things such as draw a diagonal line. They even created O3D which allows you to create compelling 3D graphics and use the graphics card, not the CPU.
<video> Now you can embed a video as easy as an image without worrying about plugins or codecs.
Geolocation – Your PC or Laptop can now be as smart as your iPhone and you can choose to share your location with the browser to get location awareness in Maps or other apps.
App Cache and Database - HTML 5 allows you to do some interesting caching and has it’s own SQL Lite DB (very similar to Adobe AIR). This can allow you to cache portions of your app for faster access or to do interesting offline applications in the browser. Google Mail already uses this approach on the iPhone and Android.
Web Workers – An API for running background Javascript so you can do things asynchronously and not slow down the user experience.
The big question of course is when is the HTML5 support going to be broad enough that developers can take advantage of all of this and really exploit it? Google asked that we as developers push that curve and not allow these features to lie dormant for years as was the case with the foundations of AJAX.
My next post will talk more about Google Wave and some other announcements that came out of I/O 2009.
I recently listed the desktop version of CardLasso on Adobe’s AIR Marketplace. If you haven’t heard of AIR, check it out on the Adobe site. It is the “Adobe Integrated Runtime” which allows you to run RIA apps on your desktop and distribute them with the ease of a web app. Our AIR version of CardLasso is targeted at the Tradeshow user, and allows you to quickly gather business cards when you have no internet connection and save them locally. You can sync them up to Lasso2Go later back at Starbucks or the hotel.
It seems like not a lot of people know about the AIR Marketplace so I wanted to write a quick note to raise awareness and let you know about the listing process.
First off, I really like their approach. You can use your existing Adobe ID to create a publishing account on the marketplace, this took 10 seconds.
Next you enter publisher information to tell everyone a little about your company and upload a company logo. Very fast and easy. I was immediately approved as a publisher.
Then I filled out the listing for our application which included all the standard info you would expect, description, logos, links to download the app, etc… (See below)

The only hard part about the listing process was sizing down graphics and screen shots to fit the requirements, but not a big deal.
Then I clicked submit.
Literally less than an hour later I had an email from Adobe with a few questions and suggestions on my listing. I made the suggested changes and our product was live.
It was great to list a product on an online store and have it live a four hours after starting the listing process. Granted it doesn’t have the volume that the Apple AppStore has, or the security implications that the Salesforce AppExchange listings have, but both Apple and Salesforce could learn a few things from how Adobe approaches the listing process.
It’s been live for a few days, check it out here and add a review to let us know what you think.

Calendar2GO Lite for Salesforce CRM on the iPhone
We just found out Calendar2GO Lite was approved by Apple. This is a free little application that allows you to easily see your Salesforce calendar on your iPhone and shows all the events for the current week, broken out into days and is very similar to the home screen in Salesforce. You can drill into an event to see the detail, whether it is recurring, it’s description, etc…
There is a full version that should be approved soon that adds several nice features such as a daily view, weekly view, linkable phone numbers, email addresses.
Check it out and let us know what you think. I’m curious how many other organizations use Salesforce as their company calendar. Also, any interest in seeing this on a Blackberry?
We have had a lot of great interest in Cloud Loader, so the next question is "How do I start using it?" Well, here is a simple 5 Step guide to get going with Cloud Loader to start doing integration for $0.10 an hour (or less with a reserved instance).
Step 1 – Sign Up for EC2

Step 2 – Sign into the EC2 Management Console
The Console is where you can go to create and manage your EC2 Instances. Remember these are virtual servers and the console allows you to give them a static IP (Elastic IP), control the Security Group and stop and start your instances. First off you need to create a new instance of the Cloud Loader AMI.
Step 3 – Create a Cloud Loader Instance
Click on Instances→ Launch Instance→ Community AMIs and search on “Cloud_Loader” to find the Cloud Loader AMI. Click the Select button.

After clicking Select you need to specify some specifics about your instance. You will only need one instance and it can be a “Small” instance which will be fine to run the Cloud Loader.

Next click on “Create” next to the Key Pair Name option, enter a name for your key pair and download the key pair. This will be required to SSH into your Cloud Loader instance.

Next you need to pick a Security Group for the instance. You can use the default one or optionally specify other settings (which ports will be open). EC2 by default has all ports closed except 22 for SSH.
Last Click “Launch” to launch your instance. This will take 3-4 minutes to boot and fully launch.
Step 4 – Connect to your Instance
If you are using a PC you will need to use an SSH client such as PUTTy to log into your instance. Click here for Windows instructions.
If you are using a Mac you can use the native terminal to connect. Click here for detailed instructions on how to set up your certs and bash profile.
Step 5 – Configure your Instance
(Remember this is built on Apex Data Loader, so look here to learn more about it)
• After logging in go to the /usr/local/dataloader directory
• Create an FTP user on the Cloud Loader instance to use for the inbound FTP of data (the .csv file you want to load into Salesforce).
• Edit the config.properties file with your username and password for SFDC
Note: You will need to include your security token at the end of your password if you don’t whitelist the Amazon Elastic IP within Salesforce
• Edit the process-conf.xml file with the data loader processes you want to run
• Edit the automate-dl script to configure the email address you would like to use to send reports to.
• Setup a cron to run the automate-dl script (the way you schedule automated processes in UNIX)
Final Notes
Once you have tested this approach it is likely you will want to modify the script or approach to suit your own business need. With EC2 you can use Cloud Loader as a base AMI and then configure your own AMI based upon it with your own unique additions.
You may also like to utilize EBS (Elastic Block Storage) with Cloud Loader to have persistent storage of your configuration files, incoming integration files or log files. We plan to add this functionality in an upcoming release. If you have any further suggestions for Cloud Loader, please email us at: support@modelmetrics.com
So why do I need a server again to integrate with the cloud?
Historically one of the arguments against SaaS, or now “The Cloud” was that integration is difficult or expensive. Several great providers have emerged in this space to make integration with cloud platforms inexpensive and more recently, even cloud based. These approaches are great for many companies, but as you know one size doesn’t fit everyone and many companies don’t want to bring in another vendor.
Salesforce has made integration somewhat of a commodity with it’s constant improvements to the DataLoader application. Most of you are probably familiar with it, but if not, it is a Java based client side tool that allows you to load data into Salesforce. It can handle all of the basic CRUD operations you might expect. It now supports direct database access as well so you don’t have to rely on .csv flat files as you did previously.
The other great thing about DataLoader is that you can take the JAR file and run it in a scripted and automated fashion to get integration on the cheap. This approach works well to master customer data from an ERP system, or update nightly financials or orders. It can also pull data out of Salesforce to feed a Data Warehouse for example.
The only issue, you need a server to host this puppy on.
As you know the “clouds” are converging and Salesforce, Google and Amazon all play well together. So why not leverage the Amazon cloud to handle this type of integration? Good news, it works great on Amazon, and is freely available for you to use.
Cloud Loader is a free pre-packaged AMI (Amazon Machine Instance) that you can literally have up and running in a few minutes and have data flowing into or out of Salesforce in the cloud. It is based on Data Loader, but is fully automated and even has email notifications buit-in.
Cloud Loader does require that the data coming into Salesforce be available on a FTP server that is accessible from an Amazon EC2 Instance. All you need to do within Cloud Loader is add your mapping file as well as your Salesforce and FTP credentials and you are ready to roll.
If you want to give this a try, click here.
In case you haven’t heard we announced CardLasso back in November of last year. We have had a lot of interest and received some great feedback since it was shown in the Dreamforce keynote by Adam Gross, namely:
- This is great, but I don’t have an iPhone
- Could I use this for Tradeshows?
- Do you have any Corporate plan options
I’m glad to say that we have now implemented each of the above suggestions and they are either live in Lasso, or are currently in beta.
Card Entry via Web Cam
If you don’t have an iPhone you can enter cards directly from your laptop or PC with an attached USB Web Cam. This option allows for high-volume card entry and doesn’t require a proprietary scanner (such as CardScan).
Other Mobile Phones
We also have a new mobile offering that will allow you to enter cards from ANY mobile phone (including Blackberries which you have all asked about). This approach will work with any phone that allows you to take a picture and send an email.
Native Blackberry Client
We are also developing a native Blackberry client to have even tighter integration with this platform, so if you are excited about the new Blackberry Storm you got for Christmas, stay tuned.
Lasso Offline for Tradeshows
If you are in marketing and go to tradeshows, you know the pain of entering hundreds or thousands of business cards. We utilized our 2Go mobile platform and built a special offline version of Lasso that allows you to rapidly capture pictures of cards using a web cam in an offline mode and then they can be uploaded for transcription once you have Internet connectivity.
We are very excited about Lasso and it is a great showcase of what can be done with force.com Sites.
If you are interested head over to http://www.lasso2go.com to sign up for a $1.99 trial to give this a spin.
