Friday, December 3, 2010

Alerts for EC2 through CloudWatch

Monitoring your applications running on Amazon's EC2 platform just got easier. Today, Amazon announced the public availability of CloudWatch for EC2 with Alarms. Instead of having to poll and ask CloudWatch for the current status, you can actually have that information pushed to you instead. This is a much more efficient way to monitor you applications running in the Amazon cloud. Right now the only new alarm that is supported is for Amazon SNS, but this is a huge step forward. Before today, CloudWatch could still trigger an Auto Scaling policy, but with the addition of SNS the doors are really opening up. Using Amazon SNS, you can do almost any type of notification that you would like posting to HTTP/HTTPS, Email, JSON, or directly into SQS. This makes the service very flexible. You are able to monitor CPU Utilization, Average Disk Reads, Average Disk Writes and Network traffic in and out.
Amazon has also enabled a new monitoring tab in the EC2 management console that will allow you to look at the graphs for these elements on each of your EC2 instances. The data only goes back to the 2nd of December since it was just released today, but this will be extremely useful for a quick read on how your instances are performing.

Amazon is certainly hitting things on my wishlist this year. Now if they would only enable CloudWatch and Alarms for metrics on SQS!  Hopefully this is just around the corner. You can read more about the new features and the pricing of CloudWatch on EC2 here.

Wednesday, November 24, 2010

Downloading EXE files from S3

It is more than a little frustrating that Internet Explorer and Windows cannot do anything to match what the other major browsers and operating systems are doing, or so it seems.  Internet Explorer has long been the browser that most developers hate to support.  Today, I ran across something that wasn't HTML or CSS related but still caused issues on Windows using Internet Explorer.
As many of you know, I use Amazon Web Services to do much of my work and S3, Simple Storage Service, is a large part of what I work with.  Today, I was made aware that someone could not download an EXE file from S3 onto their desktop.  I tested it out, and it was fine for me.  Classic developer response right? Turns out, it worked for me because I was using Chrome on my Mac.  It didn't work quite right in Internet Explorer on Windows.  The file would download, but it would not bring down the extension to the file.  What I mean, is if the file was stored in S3 as "filename.exe", when it was downloaded to the Windows machine it would only be named "filename".   I was encouraged by some people that I know to simply chalk it up to a security concern, and while I do not encourage anyone downloading random .exe files and installing them, I knew that this just couldn't be the case.  As it turns out, Internet Explorer must be told the Content-Disposition of the file when it is an EXE or DLL.  This is done in the headers when the file is requested.  Luckily, S3 allows you to put metadata on a file that is passed down when the file is requested.  To allow Internet Explorer to recognize and save the file with the .exe extension you will just need to add the Content-Disposition:attachment; filename=<filename.exe> header.

You can do this as metadata in S3 through the AWS console.  Many of the software utilities that work with S3 also allow you to set this metadata programmatically when storing the objects.
I am used to all sorts of JavaScript, HTML, CSS problems when working with IE, but this one really threw me for a loop at first.  I hope that this helps you.

Friday, November 19, 2010

DigitalChalk is a Gazelle

It really has been a whirlwind of a morning. I woke up this morning and walked out the door to get a morning cup of coffee at the local Starbucks before heading into work.  I grabbed the Wall Street Journal and started reading. That is when it really sank in.  I was reading an article about my company in the Wall Street Journal!  This will be one of those days that you always remember when you look back at all of the things that happen as you start a company.  It is certainly a highlight for me.  This picture is one that I took sitting there near the fire reading the paper and enjoying my coffee.
I was interviewed by Mark Whitehouse about 2 weeks ago while I was walking down the street in San Francisco, a long ways from our headquarters in Asheville, North Carolina but right in the heart of tech startup country.  He told me he was trying to do some research on why it was hard for startups right now to get adequate funding. I was excited to share with him about DigitalChalk and the success that we have been blessed with in some really hard economic times.  Our growth this year has been better than it ever has and there is really no end in sight!  As I described this to Mark, he told me over and over that we had all the markings of a great story as a Gazelle.  I really like that analogy.  Gazelles are extremely fast and nimble animals and if you had the opportunity to meet the team at DigitalChalk, I think it describes us completely.  I get to work with some of the smartest people with the agility to change and go from 0 to 100 at anytime.
Reading through the article, and seeing some of the accomplishments in print in the Wall Street Journal is both exciting and humbling, but most of all, it makes me thankful for the passion and the dedication to all the people who make up the DigitalChalk team.  This is something we can all look back on and be proud of.
Please check out the article: Shortage of Capital Costs Firm

Thursday, October 7, 2010

DigitalChalk takes SCORM to the Amazon Cloud

DigitalChalk, a learning management system serving the continuing education and professional training markets announces SCORM support on the Amazon Cloud.   

Infinity Learning Solutions, the parent company of DigitalChalk announced today that they have successfully released the fall 2010 Aristotle 4 version with full SCORM 1.2 support. SCORM 1.2 compliant content is now available in all editions of DigitalChalk including Free, Pro, Business and School. DigitalChalk also added a checkpoint enhancement to the Chalkboard Editor, a browser based multimedia lesson studio that is included in DigitalChalk. The Checkpoint feature lets instructors insert interactive prompts and questions into a multimedia presentation through the browser.

"Introducing SCORM support to DigitalChalk significantly expands the options our clients have for reusing existing content as well as broadening the range of compatible authoring tools we support," said Tony McCune, VP of Sales at ILS. "DigitalChalk is the first subscription based LMS that we are aware of running in the Amazon Cloud."

"Hosting a SCORM compliant system in an advanced cloud computing platform such as Amazon Web Services (AWS) poses some unique challenges. SCORM uses communication specifications that were originally designed before the cloud was invented. We took a system with it’s own personality and wove the SCORM specification into it," said Troy Tolle, Chief Technology Officer of ILS. "The team accomplished the task in an innovative and highly scalable fashion. There was no impact to the thousands of organizations currently delivering courses on DigitalChalk today."

The SCORM specification was originally created by the US Department of Defense. Introducing SCORM into DigitalChalk helps address the growing demand from the US federal government for scalable software as a service (SaaS) learning management systems on the cloud infrastructure, which is modeled after the AWS system.

"Not only is DigitalChalk an industry leader in delivery of online training and continuing education, DigitalChalk is the first Learning Management System to build a SCORM compliant system in the cloud using Amazon Web Services that we are aware of," said Wes Hester, CEO of Foxhole Technologies, a VA based federal IT services company.

To learn more about DigitalChalk, visit or call toll-free in the US at 877-321-2451.    To learn more about Foxhole Technology and DigitalChalk in the Federal Market, please visit GSA Schedule 70: GS-35F-0569V
You can read more about the SCORM specification from Advanced Distributed Learning at

Monday, August 9, 2010

Creating a Maven Web Project in Eclipse

My development platform of choice has been Eclipse for many years now and, more recently, I have really started to enjoy the library management that Maven provides me in development, testing and production.  Although there are very nice plugins available for integrating Maven and Eclipse together, it is not always the most straight forward process to setup a WTP project in Eclipse that can utilize Maven.  I have also found that since creating new projects is not something that we do on a daily or even monthly basis, it can easily become a trial and error episode chewing up a couple of hours of precious development time.  I hope that walking through it here will help save you some time on your next project.
Let's assume a fresh install of Eclipse.  I am using Eclipse 3.6 Helios for Java EE developers which you can download from  You will also need to download and extract Apache Tomcat 6.  We will point to this Tomcat directory later when we go to test our project setup.

Our fresh install of Eclipse does not come with the necessary Maven plugins, so we will need to install them first.  In Eclipse, navigate to your Help menu and select "Install New Software...".

In the top right hand corner, click on the "Add..." button and a dialog will appear that will allow you to add an new update site for the M2 Eclipse plugin.  The Location is: .  You can name the site anything that you like, but  you will want it to reflect the name so that you will recognize it later if you come back to scan through your plugins.  I have named mine M2Eclipse.

Clicking OK here will take you to a screen so that you can choose the pieces that you want to download.  For this site, you only have one choice so it is easy.  Check it and click finish and the plugin will start to install.

You will have to navigate and agree to the license.  It will also ask you to restart eclipse after the install.  You should go ahead and do this and return back to the "Install New Software..." screen after the restart.  You will also need to install the M2 Eclipse Extras in the same way.  The repository location for the extras is:

This update site contains more than one item to install.  You will not need to check the M2Eclipse Extensions Develop Support or the Project configurators for commonly used maven plugins.  I do like to use Mylyn and the integration with CVS is nice to have, but they are not necessary.  You can choose the ones that you feel you need for your development environment.  The only one that you must pull down is the Maven Integration for WTP.

Clicking Finish here will take you through the license agreement again and then ask you to restart.

After restarting, let's continue by installing the Apache Tomcat runtime environment in Eclipse.  Under Eclipse "Preferences..." navigate down to "Server > Runtime Environments".  Click on "Add..." and select "Apache Tomcat v6.0" and click Next.

You will need to enter the Tomcat installation directory.  This will be the directory where you extracted Tomcat.  You can use "Browse..." to locate and populate that location.

We are now ready to create our Web project.  Return to the Project Explorer in the Java EE perspective and choose File > New > Dynamic Web Project

Simply name your project and make sure that your Target runtime is set to Apache Tomcat 6.0 and your Dynamic web module version is 2.5

Click Next >

This screen will allow you to configure your folders for building the application.  We are going to modify these folders to match the Maven hierarchy.  This can be done later as well, but doing it now will avoid some copy and paste as well as some deleting cleanup.  You will need to remove the "src" folder that is listed by default and add the following source folders:
  • src/main/java
  • src/main/resources
  • src/test/java
  • src/test/resources
You should also change the Default output folder to "target/classes"

Click Next >

We are also going to change the Web Module settings to match the Maven packaging.  You will need to change the Content directory on this page from WebContent to "src/main/webapp".

Click Finish.

This completes the setup of the Dynamic Web Project.  We now need to make it a Maven project as well.  This can be done by right clicking on the project in the Project Explorer and choosing "Maven > Enable Dependency Management"

In this wizard, you will only need to change the Packaging to "war" instead of "jar". and click "Finish"

You should now see the POM editor in Eclipse.  We need to add a compiler plugin for 1.6 that will help keep things building cleanly.  Click on the Plugins tab at the bottom of the editor and then Click on "Add..." in the Plugins section at the top left.  Search for the groupId of "org.apache.maven.plugins" and then choose the "maven-compiler-plugin" artifact from the list.

Click on OK and then navigate to the "pom.xml" tab in the editor.  We need to add the configuration for 1.6 which we cannot do through the GUI.  All that is needed is the configuration XML that is selected below.

Save and close the POM editor.

When that completes building, you may notice that the Java Runtime is giving you a warning in your "Markers" tab.

This can be remedied by changing your build path.  You can right click on the project and select "Properties" and then change the build path JRE System Library to point to the 1.6 Execution Environment.  If you do not have your Execution Environments set, you can simply click on the "Environments..." button on this dialog and point them to the JDK installation on your machine.

Clicking Finish here will rebuild the project and you should be error free in your Markers tab.

Now for some simple cleanup of your project.  You can expand your project in the Project Explorer and navigate down to Web Resources > WEB-INF  and delete the lib directory.  We are going to let Maven and WTP work together to manage this.

You will also notice that you have a Classpath Dependency warning in your Markers tab.  This is very important and will have to be addressed if you want your Maven managed dependencies to be available to your local test server.

Simply right click on the warning and choose the "Quick Fix" option.

Then you will be prompted with a popup explaining the suggested remedies to your problem.  We need the classpath to be available to our server, so we need it to be added as a dependency.  Choose that option and then click "Finish".

The setup is now complete.  All that is left now is to test our new project and configuration.  This is easily done by creating an index JSP in our webapp directory.

 After saving the JSP, you can test your application by right clicking on the project and choosing "Run As > Run on Server"

Choose the Tomcat v6.0 Server and then click Finish.  This will push your project to deploy on startup of that server and it will start the server.

When the startup is done, a browser window should appear in Eclipse with your index.jsp content displayed.

You are now off to the races on your new web project using Maven.  All of the dependencies that you add to the pom file will be included in the classpath each time you start the server.

I hope that you found this useful.  Let me know your experience.

Wednesday, July 21, 2010

New Open Source Cloud Platform

Cloud services and platforms are popping up everywhere you turn and everyone is jumping onto the bandwagon it seems. I have even been asked by 2 startup companies that want to jump into the space if there are needs that still haven't been met with what is available now. This is a growing market and it is still in its very early stages, so there will always be room for more right now. Rackspace and NASA's announcement about OpenStack makes it a little easier to jump into the cloud software and infrastructure game. Rackspace is contributing some of its code under an Apache 2.0 licence to the open source community for the management of compute instances and storage. These seem like just initial starting points for contribution as they have also asked for other needs from the community. I would guess that we will see parallel offerings from OpenStack that mimic Amazon's AWS offerings since they are the largest player in this space. OpenStack's computing platform is currently scheduled to be available in an initial release state in October and the storage platform is expected in September. If you would like to dabble some before then, you can go and download the code at There are projects there for the compute and storage platforms as well as projects for management from the web and from your favorite mobile device (iPhone, iPad, Android). Seeing another open source project in this space is a good thing. I hope that people don't immediately start trying to claim standards on cloud computing out of this project. I believe that it is still way to early to try to start standardizing everything. We start to kill the pace of innovation when standards are forced early. That being said, this will be a project to watch closely along with Eucalyptus and will be one to offer a great playground for ideas.

Monday, May 31, 2010

Cloud Computing ROI

It was a very easy decision for me to start DigitalChalk on a cloud computing platform.  The calculations were quick and easy 4 years ago with a small budget and a dream to build a global platform for training.  We had to scale as we gained customers because we didn't have the immediate capital to buy everything up front.  Today, I still spend time thinking of new ways to use the power of the cloud for our business and the ROI is still clear to me; but I have to say that it is something I get asked about every time I speak or talk to other people looking to take the plunge.  I had the pleasure of speaking with Jonathan Feldman, writer for Information Week, more than once over the past couple of weeks.  He has put together a great study helping the CIO, CTO and individual business units navigate the "gotchas" and common questions when it comes to moving to the cloud.  I was happy to see the report and I think it will help those of you looking to move or start some of your applications to the cloud.  I encourage you to take a moment and read the report.  It is an Analytics Report titled, Cloud ROI: Calculating Costs, Benefits, Returns and can be found here.  Great job Jonathan! It is good to see all of this research in one place.

Sunday, March 14, 2010

Juicy Ideas

I have been hard at work with my team to help launch the Juicy Ideas Competition website. I am happy to say that it has been successfully launched as of last week and we are receiving signups for the competition. My company, DigitalChalk, is sponsoring a competition with AdvantageWest and will be sending the winning team to Google Headquarters in Mountain View, California. The winning team will also receive 5 Android phones provided by Google.
The competition is a software competition that challenges college students to do something innovative and creative using data that will benefit their community. I know that we will see some very cool applications come out of this competition this year! If you would like to compete, or know someone that should, send them to the Juicy Ideas website at: and have them register their team.
The video on the homepage was done by DigitalChalk's very own Jacob Absire and I love it. You can check it out on YouTube as well.

Monday, January 4, 2010

Creativity for Amazon's Cloud Computing Continues

Amazon Web Services continues to move forward in innovative ways to get people to take advantage of their services. Two announcements last month enhance the EC2 service pricing and the Cloud Front delivery model. The availability of auction price instances (spot instances) in EC2 and the ability to do true Flash streaming from Cloud Front really put the squeeze on traditional hosting and edge delivery companies.
With the new Spot Instances in EC2 you can take advantage of the excess capacity that Amazon is not using at that time. Because that capacity changes as more instances are started, the price for those instances fluctuate. With good planning, this can be used to really save on cash. Over the past 20 days, the price of a Spot Instance has been less than 50% of the price of a regular priced instance much of the time. If you are considering using EC2 for some bursting tasks and quick turn around, I would look at the Spot Instances first. Because you set the price you want to pay and the price changes over time, your instance may be terminated if your price is less than the Amazon rate. For this reason, you must plan ahead when using them in a production situation. One good strategy here to lower your costs would be to purchase some Reserved Instances that will stay running and then start Spot Instances in peak situations. You can use the AWS API to see the current prices of the Spot Instances to know how to set your price at runtime. If you want to see the prices online and over time, you can use the AWS console or some other sites like Cloud Exchange. Because you cannot reserve Windows instances right now on Amazon, it makes a lot of sense to take advantage of the Spot Instances. As I write this, a small Windows instance is $0.12 an hour and you can have the same thing running as a Spot Instance for $0.042 an hour.

At about 1/3 the price of a standard small instance, it makes it very attractive to use the Spot Instances right now.

The announcement of streaming support from Cloud Front is also a great new addition. Delivering content to the end user from the closest data center helps improve performance. Until now, all that could be delivered was static content and progressive downloads. Streaming video from Cloud Front helps reduce your costs because only the viewed parts need to be delivered. It also does not store the file on the end user's machine. You can use Cloud Front to deliver videos in several formats, even H.264 allowing playback on the iPod and iPhone. Thank you Amazon!