<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>AppFog Blog</title>
	
	<link>http://blog.appfog.com</link>
	<description>The CloudFoundry Experts</description>
	<lastBuildDate>Mon, 01 Apr 2013 18:29:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/appfog" /><feedburner:info uri="appfog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>New Lower Cost Pricing Plan</title>
		<link>http://feedproxy.google.com/~r/appfog/~3/_HXxhS-GoEc/</link>
		<comments>http://blog.appfog.com/new-lower-cost-pricing-plan/#comments</comments>
		<pubDate>Mon, 01 Apr 2013 18:29:34 +0000</pubDate>
		<dc:creator>lucas</dc:creator>
				<category><![CDATA[AppFog News]]></category>

		<guid isPermaLink="false">http://blog.appfog.com/?p=645</guid>
		<description><![CDATA[Dear AppFoggers, We work tirelessly here at AppFog HQ to provide the absolute best service possible for all of our users. But over time, our generous free offering has led to abuse by bitcoin miners, facebook spammers, phishing sites, porn sites, and more, rendering the service unusable for a number of our legitimate users. While]]></description>
			<content:encoded><![CDATA[<p>Dear AppFoggers,</p>
<p>We work tirelessly here at AppFog HQ to provide the absolute best service possible for all of our users. But over time, our generous free offering has led to abuse by <em>bitcoin miners, facebook spammers, phishing sites, porn sites, and more</em>, <strong>rendering the service unusable for a number of our legitimate users</strong>. While we&#8217;ve made every effort to track this abuse down and bring an end to it, it has ultimately slowed down our development of new features and improved performance.</p>
<p>So in order to curb this abuse, we&#8217;ve recently had to make the difficult decision to impose some limitations on our free plan. While this has by no means been an easy choice, it was absolutely necessary in order to provide a reliable service for our customers. See the updated plan details here: <a href="https://www.appfog.com/pricing/">https://www.appfog.com/pricing/</a>.</p>
<p>We understand that $50 can be a lot of money for a new application that has not yet gained the traction needed to justify such an investment. So we&#8217;re also introducing a lower-cost, entry-level plan.</p>
<p>For only <strong>$20 per month</strong>, in addition to 2GB RAM and 8 MySQL, PostgreSQL, MongoDB, Redis or RabbitMQ instances, you get:</p>
<ul>
<li>Custom domains
<li>Ticket-based support
<li>More storage for MySQL and PostgreSQL databases
<li>Group collaboration
<li>Higher monthly bandwidth cap
<li>Higher requests-per-second allowance
</ul>
<p>Check out the full details at <a href="https://www.appfog.com/pricing/">https://www.appfog.com/pricing/</a>.</p>
<p>We hope you understand the difficult choices we&#8217;ve had to make in order to provide a reliable, sustainable service for many years to come.</p>
<img src="http://feeds.feedburner.com/~r/appfog/~4/_HXxhS-GoEc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.appfog.com/new-lower-cost-pricing-plan/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		<feedburner:origLink>http://blog.appfog.com/new-lower-cost-pricing-plan/</feedburner:origLink></item>
		<item>
		<title>Winners of the Rackspace/AppFog Apps and Beers Contest</title>
		<link>http://feedproxy.google.com/~r/appfog/~3/81XyQxJdyQM/</link>
		<comments>http://blog.appfog.com/winners-of-the-rackspaceappfog-apps-and-beers-contest/#comments</comments>
		<pubDate>Fri, 08 Feb 2013 03:05:28 +0000</pubDate>
		<dc:creator>Tom Potterf</dc:creator>
				<category><![CDATA[AppFog News]]></category>

		<guid isPermaLink="false">http://blog.appfog.com/?p=637</guid>
		<description><![CDATA[Rackspace and AppFog teamed up to throw a Happy Hour party at AppsWorld in San Francisco. And Happy Hour of course means beer. And devs plus beer means fun. And thus we asked ourselves, &#8220;how could we make more fun?&#8221; So, we asked developers to create an app that helps us choose the beers that]]></description>
			<content:encoded><![CDATA[<p>Rackspace and AppFog teamed up to throw a Happy Hour party at AppsWorld in San Francisco. And Happy Hour of course means beer. And devs plus beer means fun. And thus we asked ourselves, &#8220;how could we make more fun?&#8221;</p>
<p>So, we asked developers to create an app that helps us choose the beers that will be served at Happy Hour. The app that ended up generating the most total votes would win the grand prize: an iPad with Retina Display.</p>
<p>Success in this contest ending up coming down to how effective the viral spread of the apps were, and we worked to scrub the few anomalies from the final results. In the end, <em>racking up those votes came down to really great promotion</em> of the apps.</p>
<p>We had great entries overall, so thanks to <strong>everyone</strong> who entered, created an app and promoted it to capture votes.</p>
<p>So let&#8217;s unveil the winners!</p>
<h2>The Winning Beer: Sierra Nevada Pale Ale</h2>
<p>A long-time favorite of Bay Area developers, this clean and well-hopped session beer goes perfectly with your hackathon. The perfect beer for when you&#8217;re having more than one.</p>
<p>Here is the final ranking for the beers:</p>
<ul>
<li>Sierra Nevada Pale Ale</li>
<li>Guinness Stout</li>
<li>Newcastle Brown Ale</li>
<li>Widmer Hefeweisen</li>
<li>Lagunitas IPA</li>
<li>Stella Artois</li>
</ul>
<h2>Grand Prize Winner</h2>
<div>Congratulations <a href="http://www.twitter.com/snellingmobile" target="_blank">Sam Snelling</a>! Your app PLUS your<strong> kick-ass</strong> ability to promote the <strong>HECK</strong> out of it for votes means you&#8217;ve won the grand prize of an iPad with Retina Display!  Seriously, we&#8217;ve had a great time watching you work to get the word out through social media. And special (big) props for releasing the <a href="https://github.com/snellingmobile/Appfog-Rackspace-Beer-Contest" target="_blank">source</a>!</div>
<p>&nbsp;</p>
<div><a href="http://blog.appfog.com/wp-content/uploads/2013/02/samsnelling.png"><img class="alignnone size-full wp-image-639" title="samsnelling" src="http://blog.appfog.com/wp-content/uploads/2013/02/samsnelling.png" alt="" width="600" height="452" /></a></div>
<p>&nbsp;</p>
<h2>Runners Up</h2>
<div>We have two runners up, both of whom will get a fabulous <a href="http://www.33beers.com/">33 Bottles of Beer</a> beer journal: <a href="https://twitter.com/songz" target="_blank">Song Zheng </a>(you competed like <strong>crazy</strong> in your promotions and came soooooo close!), and <a href="https://twitter.com/amscotti" target="_blank">Anthony Scotti</a>. Congratulations and thank you to you both!</div>
<p>&nbsp;</p>
<div>Song&#8217;s app:</div>
<div><a href="http://blog.appfog.com/wp-content/uploads/2013/02/songz_app2.png"><img class="alignnone size-medium wp-image-642" title="songz_app" src="http://blog.appfog.com/wp-content/uploads/2013/02/songz_app2-300x214.png" alt="" width="300" height="214" /></a></div>
<p>&nbsp;</p>
<div>Anthony&#8217;s app:</div>
<div><a href="http://blog.appfog.com/wp-content/uploads/2013/02/amscotti_app.png"><img class="alignnone size-medium wp-image-643" title="amscotti_app" src="http://blog.appfog.com/wp-content/uploads/2013/02/amscotti_app-300x289.png" alt="" width="300" height="289" /></a></div>
<p>&nbsp;</p>
<div>Again&#8230; thank you ALL for participating.</div>
<div>It&#8217;s been fun.</div>
<div>Now&#8230; time to drink!</div>
<img src="http://feeds.feedburner.com/~r/appfog/~4/81XyQxJdyQM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.appfog.com/winners-of-the-rackspaceappfog-apps-and-beers-contest/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://blog.appfog.com/winners-of-the-rackspaceappfog-apps-and-beers-contest/</feedburner:origLink></item>
		<item>
		<title>Everybody Loves PaaS; PaaS is Failing</title>
		<link>http://feedproxy.google.com/~r/appfog/~3/bnAJBVrO1Zk/</link>
		<comments>http://blog.appfog.com/everybody-loves-paas-paas-is-failing/#comments</comments>
		<pubDate>Fri, 01 Feb 2013 19:06:44 +0000</pubDate>
		<dc:creator>lucas</dc:creator>
				<category><![CDATA[AppFog News]]></category>

		<guid isPermaLink="false">http://blog.appfog.com/?p=636</guid>
		<description><![CDATA[In the beginning, Platform-as-a-Service (PaaS) was created for developers, not for enterprises. Developers could deploy and test applications within minutes, not days, weeks or months. PaaS enabled developers to sidestep the need to invest in a platform of their own (or mess with jumping the IT queue). And Developers found it good. Agility and velocity]]></description>
			<content:encoded><![CDATA[<p>In the beginning, Platform-as-a-Service (PaaS) was created for developers, not for enterprises. Developers could deploy and test applications within minutes, not days, weeks or months. PaaS enabled developers to sidestep the need to invest in a platform of their own (or mess with jumping the IT queue). And Developers found it good. Agility and velocity became the primary drivers for moving workloads off-premise and into public clouds. As a result, PaaS rapidly became the preferred platform for cutting-edge startups and ambitious developers within small and large organizations.</p>
<p>Low introductory prices made it easy for developers and executives to adopt PaaS as their platform; and everyone enthusiastically embraced the agility and velocity they realized through PaaS. Even corporate IT executives saw the upside of PaaS: faster application development reflects well on them. But they saw a downside, too, especially as business units went off the reservation for PaaS suppliers. The lack of central control complicated management of corporate system and created potentially serious liabilities because the integration points were unclear and complicated. The first PaaS providers ignored all of these concerns, even claiming that incumbent systems “didn’t exist” because they weren’t focused on enterprises.</p>
<p>But these days, early PaaS success is making the enterprise adoption problem even more pronounced. Not only is adoption slow to arrive, the push to the cloud is also increasingly splintering development within enterprises, pushing “cloud sprawl” to its limits and making Enterprise IT even more resistant to PaaS.</p>
<p><strong>There are various underlying causes for this state of affairs.</strong></p>
<p>First, early PaaS providers priced their services to make them irresistible to start-ups and hackers &#8211; so that spinning up a couple of instances for an application was cheap. But the economics of early PaaS providers were not designed for scale. If an application was successful and went into production, the price of operating it went up <em>much faster</em> than with traditional infrastructure. It didn’t make sense for successful businesses to stay with PaaS, or for large enterprises to bet on PaaS. As a result, many developed a practice of using PaaS for dev/test only and then migrated off to go to full production deployments. And though early PaaS providers realized that they needed to make their services stickier with third-party and proprietary services, most haven’t made much progress on this front.</p>
<p>The second obstacle to PaaS growth in the enterprise is that platforms are typically confined to the public cloud, while most enterprises want the flexibility to move between public and private in a hybrid model. For example, an enterprise might deploy a short-lived marketing promotion application on the public cloud, but want to capture customer data from the promotion and store it in an on-premise database.</p>
<p><strong>A new generation of PaaS is solving for this.</strong></p>
<p>Simply put, enterprises are willing to wait on PaaS adoption until providers can resolve these issues. But a new generation of PaaS is rising up to meet their needs while simultaneously serving startups. The modern PaaS infrastructure is designed from the outset to handle large-scale deployments, rather than just a few apps or instances per customer. As a result, it can scale up to large-scale production deployments cost effectively.</p>
<p>The modern PaaS provider understands that big customers want multiple options without the burden of managing multiple providers. Today&#8217;s enterprise CIOs demand platforms that deliver agility and velocity <em>and</em> which work just as well in the public cloud as on-premise, providing the same insight, tooling, and control and governance. They want to enable and encourage their developers to dev/test in the public cloud and deploy production on-premise. They want a single PaaS provider that works as well in Ruby as it does in Java or Node or PHP or Ruby. And they want consolidated analytics and insight into all their PaaS activities. This set of requirements is the antidote to “cloud sprawl”.</p>
<p>Responding to these demands, the modern PaaS platform enables something akin to Java for the cloud: enterprise developers can write code once and run it anywhere, so migrations are fast and easy, even in the case of pulling deployments in-house. The benefits now open to enterprises via modern PaaS are enormous: physical servers can be placed in a customer’s data center and managed remotely; IT staff can be enabled to stand up platforms on dedicated hardware or on dedicated virtual machines within the enterprise’s architecture; enterprise IT can give developers in business units the same agility and velocity that drove those developers to the public cloud in the first place.</p>
<p><strong>So, how can you distinguish modern PaaS from early PaaS?</strong></p>
<p>To determine if a PaaS is modern or early, you can ask yourself the following questions:</p>
<ul>
<li>Does it run just as well in the public cloud as it does in the private cloud?</li>
<li>Can you choose to run it behind your firewall or run it in your existing public clouds?</li>
<li>Can you migrate apps between public clouds (or from private to public or vice versa)?</li>
</ul>
<p>If the answer these these questions is a resounding &#8220;yes,&#8221; you&#8217;re looking at a modern PaaS.</p>
<p>Where early PaaS delivered the benefits of the cloud—agility, velocity, governance, security, provisioning, dev/test—solely to developers, modern PaaS delivers all these benefits to developers, small startups, and large enterprises alike. Modern PaaS platforms close the gap, making the cloud just as powerful for the CIO as it has been for the developer. By bringing agility and velocity into public and private clouds, modern PaaS brings back control and governance, ultimately mending the problems of “cloud sprawl” for everyone in the organization and finally delivering the initial promise of PaaS: making developers lives easier.<strong id="internal-source-marker_0.5761048190761358"><br />
</strong></p>
<img src="http://feeds.feedburner.com/~r/appfog/~4/bnAJBVrO1Zk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.appfog.com/everybody-loves-paas-paas-is-failing/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://blog.appfog.com/everybody-loves-paas-paas-is-failing/</feedburner:origLink></item>
		<item>
		<title>Rackspace and AppFog and Beer, Oh My!</title>
		<link>http://feedproxy.google.com/~r/appfog/~3/FYRb0IxTZnc/</link>
		<comments>http://blog.appfog.com/rackspace-and-appfog-and-beer-oh-my/#comments</comments>
		<pubDate>Thu, 31 Jan 2013 22:16:55 +0000</pubDate>
		<dc:creator>Tom Potterf</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[AppFog News]]></category>
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://blog.appfog.com/?p=633</guid>
		<description><![CDATA[Apps and Beer are good, but add a free iPad and you’ve really got a party. Rackspace and AppFog are throwing a Happy Hour on Thursday, February 7 at AppsWorld in San Francisco, and we’re asking developers to create an app that helps us choose the beers that will be served at the party. Because, you]]></description>
			<content:encoded><![CDATA[<p>Apps and Beer are good, but add a <strong>free iPad</strong> and you’ve really got a party.</p>
<p><a href="http://www.rackspace.com/" target="_blank">Rackspace</a> and AppFog are throwing a Happy Hour on Thursday, February 7 at <a href="http://www.apps-world.net/northamerica/" target="_blank">AppsWorld</a> in San Francisco, and we’re asking developers to create an app that helps us choose the beers that will be served at the party. Because, you know&#8230;. beer.</p>
<p><strong>Of course, we wouldn’t ask for your help without turning it into a contest!</strong> So we’re also teaming up with our friends at Rackspace to launch the <strong><a href="http://get.appfog.com/appsandbeers" target="_blank">Rackspace/AppFog Apps and Beer Contest</a></strong>. <em>(US Citizens only &#8211; sorry, pesky legal details restrict us on that front)</em></p>
<p>All you have to do is register for the contest, create an app (deployed on AppFog and Rackspace of course) that allows people to vote for which beers will be served at the happy hour, and then get people to use it and vote.  <strong>The app that generates the most total unique votes will be the Grand Prize winner of the iPad.</strong></p>
<p style="text-align: center;">Get all the details for the app creation, and <a href="http://get.appfog.com/appsandbeers" target="_blank">enter the contest here</a>.</p>
<p><strong>Remember, this is about getting the most total votes via your app</strong>, so you need to pimp it and get people to use it to vote for their favorite beer!</p>
<p>What’s the easiest way to do this? Why&#8230;. Social Media of course! So promote your app via whatever social network or site or service that you like the most. <strong>For maximum impact</strong> we suggest creating a custom tweet with a link to your app. Here’s a suggested tweet: &#8221; I created a beer-voting app for the @Rackspace @AppFog Apps &amp; Beers Contest: <span style="color: #ff0000;">[your app's short URL]</span>. Enter contest: <a href="http://bit.ly/WOvPJ5" target="_blank">http://bit.ly/WOvPJ5</a> &#8221;</p>
<p>We’ll announce the winning beer at the happy hour as well as the winning app &amp; developer, so this <em>contest ends at 4:00pm PST on Friday, February 7, 2013</em>, right before the happy hour gets underway. The sooner you enter and create your app, the better chance you have! <em>(We won’t be extending this contest end date and time&#8230;nor any future contest end dates for that matter&#8230;just in case you were wondering.)</em></p>
<p>Oh&#8230; and if you’re going to be at AppsWorld or in San Francisco on Feb 7-8 you should come by the Rackspace booth and hit up the party, but please <a href="http://www.cvent.com/d/lcqrf8/6X" target="_blank">RSVP</a> as space is limited!</p>
<img src="http://feeds.feedburner.com/~r/appfog/~4/FYRb0IxTZnc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.appfog.com/rackspace-and-appfog-and-beer-oh-my/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.appfog.com/rackspace-and-appfog-and-beer-oh-my/</feedburner:origLink></item>
		<item>
		<title>AngularJS: the beauty of concision</title>
		<link>http://feedproxy.google.com/~r/appfog/~3/dffpVTMxsU0/</link>
		<comments>http://blog.appfog.com/angularjs-the-beauty-of-concision/#comments</comments>
		<pubDate>Wed, 23 Jan 2013 22:16:06 +0000</pubDate>
		<dc:creator>Luc Perkins</dc:creator>
				<category><![CDATA[AppFog News]]></category>

		<guid isPermaLink="false">http://blog.appfog.com/?p=629</guid>
		<description><![CDATA[Some of you might remember a Backbone blogging engine I made a while back (here’s the code). It certainly wasn’t the most advanced use case for Backbone, but I think that it did a decent job of elucidating some of Backbone’s features: event-driven responsiveness, templating, collections, and so on. It was also a great learning]]></description>
			<content:encoded><![CDATA[<p>Some of you might remember a <a href="http://backbonejs.org/">Backbone</a> <a href="http://blog.appfog.com/my-first-web-development-project-a-backbone-blog-engine/">blogging engine</a> I made a while back (here’s the <a href="https://github.com/lucperkins/backbone-blog">code</a>). It certainly wasn’t the most advanced use case for Backbone, but I think that it did a decent job of elucidating some of Backbone’s features: event-driven responsiveness, templating, collections, and so on. It was also a great learning experience and my first foray into thick client-style development.</p>
<p>But then a few weeks ago, a number of trusted friends and colleagues began raving about <a href="http://angularjs.org/">AngularJS</a>. Curious about what the fuss was about, I began doing some exploring, looking at <a href="https://github.com/angular/angular.js/wiki/Projects-using-AngularJS">sample apps</a>, reading the <a href="http://docs.angularjs.org/api">API docs</a>, and watching a few <a href="http://www.youtube.com/user/johnlindquist?feature=watch">videos</a>, and it became abundantly clear that Angular is an almost shockingly powerful library. I was surprised by the kinds of heavy lifting that can be accomplished with little effort. And so I set out to see how concisely I could re-implement my Backbone project in Angular.</p>
<p>I was quite pleased with the result.</p>
<h3>Getting started</h3>
<p>The first thing you need to do is specify within your <code>&lt;html&gt;</code> tag itself&#8211;I know, crazy, right?&#8211;that your HTML page is going to be staging an Angular app. Instead of the typical <code>&lt;html&gt;</code> tag, you need to insert a <code>&lt;html ng-app&gt;</code> tag instead. As you’ll see over the course of this tutorial, you’ll be embedding a surprising amount of basic application logic in HTML tags themselves when you’re using Angular.</p>
<p>Now, I need to specify my document head:</p>
<pre>&lt;head&gt;
  &lt;title&gt;AngularJS Blog Engine&lt;/title&gt;
  &lt;script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.3/angular.min.js"&gt;&lt;/script&gt;
  &lt;script src="http://stevenlevithan.com/assets/misc/date.format.js"&gt;&lt;/script&gt;
  &lt;script src="blog.js"&gt;&lt;/script&gt;
  &lt;link rel="stylesheet" href="style.css"&gt;
&lt;/head&gt;</pre>
<p>Notice that AngularJS has zero dependencies (not even jQuery or Underscore), which is pretty impressive in itself. I’ll also be importing the <a href="http://blog.stevenlevithan.com/archives/date-time-format">DateFormat</a> library for making the timestamps on my blog posts look nice. The <code>blog.js</code> file will harbor my application logic.</p>
<h3>Setting up a controller</h3>
<p>When I was putting together my Backbone blog engine, I didn’t have anything resembling a controller. That was okay because all of my controller-style logic was placed elsewhere, namely in my views, models, and overarching collection. Like Backbone, Angular doesn’t force you to specify a controller, but there are cases where I would highly recommend implementing one. In my case, I have a well-specified resource (blog posts) that have methods attached, which makes a controller a very nice thing to have.</p>
<p>Here’s what my controller (in my <code>blog.js</code> file) looks like:</p>
<pre>function BlogController($scope) {
  $scope.posts = [];
  $scope.addPost = function() {
    var now = new Date();
    var time = dateFormat(now, "dddd, mmmm dS, yyyy, h:MM TT Z");
  $scope.posts.push({ title: $scope.postTitle,
                      content: $scope.postContent,
                      time: time,
                      backgroundColor: $scope.backgroundColor });
  }
}</pre>
<p>So, let us take stock of what&#8217;s going on here. The most important thing to be aware of is the <code>$scope</code> variable. This variable acts as a kind pub/sub store for everything involving our controller. I will store specific blog posts (as hashes/objects) in this <code>$scope.posts</code> variable. When I add a post new with the <code>addPost()</code> function, I’ll snatch the current time with the <code>var now = new Date();</code> expression and then push a new post to the (currently empty) <code>$scope.posts</code> array.</p>
<p>Each post will consist of four key/value pairs, specifying a title, content, formatted timestamp, and background color. We’ll see in a minute how those values will be passed into the controller, as that logic will take place in our HTML file.</p>
<h3>Wiring our HTML to let the Angular goodness flow through</h3>
<p>Like I said before, part of the magic of Angular is that it relies on logic embedded within HTML tags (as in <a href="http://knockoutjs.com/">KnockoutJS</a>). One of the things that I love about Angular is that I can attach a controller to a specific DOM element and restrict its scope to that element alone. I’ll do that by inserting a <code>&lt;div ng-controller="BlogController"&gt;</code> tag into my document. Everything I do in this tutorial will transpire within that <code>div</code> element, although an app could easily have multiple controllers attached to their own respective DOM elements. Angular is built for this.</p>
<p>Within my new <code>div</code> element, hotwired to sync up with my <code>BlogController</code>, I’ll start with an unordered list for displaying my posts:</p>
<pre>&lt;ul&gt;
  &lt;li style="background-color: {{ post.backgroundColor }};" ng-repeat="post in posts"&gt;
    &lt;h2&gt;{{ post.title }}&lt;/h2&gt;
    &lt;p&gt;{{ post.content }}&gt;/p&gt;
    &lt;p&gt;{{ post.time }}&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;</pre>
<p>The <code>ng-repeat="post in posts"</code> in the <code>&lt;li&gt;</code> tag means that a new list item will be produced for every post in the posts array within my controller. The background color, title, content, and time will be inserted into this template automatically. There is simply no way to do this so concisely in Backbone, where you would need to hook up each post view to a template in your HTML file and then pass it into a collection that is then rendered (correct me in the comments if I’m wrong!).</p>
<p>For good measure, I also want to display how many posts have been made to the blog thus far. This can also be done incredibly neatly:</p>
<pre>&lt;h5&gt;Total posts: &lt;strong&gt;{{ posts.length }}&lt;/strong&gt;&lt;/h5&gt;</pre>
<p>This kind of syntax should be familiar to anyone who has used <a href="http://mustache.github.com/">Mustache</a>. The most important thing to remember here is that if we placed this <code>&lt;h5&gt;</code> tag outside of the <code>div</code> element tied to our Angular controller, the <code>{{ posts.length }}</code> variable would come up empty-handed. It simply wouldn’t know where to look for this value.</p>
<h3>Time to input some data and close the loop</h3>
<p>So far, we can’t do much because we can’t input data. Our <code>posts</code> array is empty and there’s not much we can do about that. So let’s create a form and get to work:</p>
<pre>&lt;form ng-submit="addPost()"&gt;
  &lt;input type="text" ng-model="postTitle" placeholder="Post title"&gt;&lt;br /&gt;
  &lt;input type="text" ng-model="postContent" placeholder="Post content"&gt;
  &lt;select ng-model="backgroundColor"&gt;
    &lt;option value="teal"&gt;Teal&lt;/option&gt;
    &lt;option value="beige"&gt;Beige&lt;/option&gt;
    &lt;option value="white"&gt;White&lt;/option&gt;
  &lt;/select&gt;
  &lt;input type="submit" value="Submit post"&gt;
&lt;/form&gt;</pre>
<p>The <code>ng-submit="addPost()"</code> embedded in the <code>&lt;form&gt;</code> tag specifies that the <code>addPost()</code> function from our <code>BlogController</code> will be fired upon commit. Remember from our controller that the values for new posts are tied to variables in our <code>div</code>. When we insert an <code>ng-model</code> snippet into an HTML element, that ties the input value to our <code>$scope</code> variable and allows that input to be passed through our controller. I find this to be a much more elegant way of doing things than the standard jQuery <code>$('#element').val()</code>, which is required in Backbone and other libraries.</p>
<p>And that’s it. Everything that was on offer in my Backbone blog engine is on offer here, and all of it implemented in shockingly few lines of code. I invite you to have a look at <a href="https://github.com/lucperkins/backbone-blog">how I did it in Backbone</a> (have a look in particular at the <a href="https://github.com/lucperkins/backbone-blog/blob/master/blog.js"><code>blog.js</code> file</a>&#8230;it’s not pretty).</p>
<h3>Thoughts about Angular and Backbone</h3>
<p>As much as I still like Backbone and think that it was a crucial stepping stone toward other libraries, I can’t help but think that its days in the sun might soon come to an end. If the maintainers of Backbone can’t find a way to make client-side code this concise, then we might be looking at a gradual sea change in the direction of frameworks like AngularJS.</p>
<p>If this sounds like an overly bold statement, Dear Reader, please do not be bashful in the comments!</p>
<img src="http://feeds.feedburner.com/~r/appfog/~4/dffpVTMxsU0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.appfog.com/angularjs-the-beauty-of-concision/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		<feedburner:origLink>http://blog.appfog.com/angularjs-the-beauty-of-concision/</feedburner:origLink></item>
		<item>
		<title>What the Obama IT team teaches us about polyglot programming</title>
		<link>http://feedproxy.google.com/~r/appfog/~3/e12lO_GMtIU/</link>
		<comments>http://blog.appfog.com/what-the-obama-it-team-teaches-us-about-polyglot-programming/#comments</comments>
		<pubDate>Thu, 17 Jan 2013 17:51:07 +0000</pubDate>
		<dc:creator>Luc Perkins</dc:creator>
				<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://blog.appfog.com/?p=621</guid>
		<description><![CDATA[4Gb/s, 10k requests per second, 2,000 nodes, 3 datacenters, 180TB and 8.5 billion requests. Design, deploy, dismantle in 583 days to elect the President. #madops &#8211; Scott VanDenPlas, Obama for America IT team From the standpoint of tech geeks like myself, the IT operation behind Obama for America was extremely impressive. Why? Because the operation]]></description>
			<content:encoded><![CDATA[<p dir="ltr"><em>4Gb/s, 10k requests per second, 2,000 nodes, 3 datacenters, 180TB and 8.5 billion requests. Design, deploy, dismantle in 583 days to elect the President. #madops</em> &#8211;<a href="https://twitter.com/scottvdp"> Scott VanDenPlas</a>, Obama for America IT team</p>
<p>From the standpoint of tech geeks like myself, the IT operation behind<a href="http://www.barackobama.com/"> Obama for America</a> was extremely impressive. Why? Because the operation managed to be all of the following at the same time: 100% cloud-based, deeply polyglot, poly-framework, poly-DB, and, perhaps most importantly, unbelievably agile and time- and resource-constrained. And when you consider that they were passing around terabytes of data across over 100 applications&#8230; Yeah, this was inspiring.</p>
<p>There have been a variety of articles on Obama’s IT operation, many of them very engaging and informative, but none of them, I feel, have covered some of thing things I want to know: what is the broader significance of an operation like this? What does it tell us about the cloud and the promise it offers (not to mention the potential pitfalls)? About polyglot programming? About the state of web development going into 2013?</p>
<p>So I decided to do some digging to answer my own questions and share my thoughts with all of you.</p>
<h3>The Obama stack: a (more or less) merry medley of components</h3>
<p>Obama for America’s web dev stack, according to CTO and minor celebrity<a href="https://harperreed.org/"> Harper Reed</a>, consisted of over 100 different apps performing a bewildering array of different functions. I won’t list all of these apps here, of course, but I will shine some light on some of the more important components of the Obama team’s tech arsenal.</p>
<p>I’ll begin with social media. Now, any politician with a brain nowadays has a Facebook page and probably a Twitter account and maybe even a presence on a handful of other platforms. This is simply <em>de rigeur</em>.</p>
<p>But the Obama team did something pretty impressive in their social media tactics: they simply built their own social media platform,<a href="https://dashboard.barackobama.com/"> Dashboard</a>. This platform acted as a sort of decentralized online field office, complete with message boards and other communication channels for local organizing. Users could organize their own teams, invite people to sign up, upload pictures and customize their Facebook-esque home pages, and so on. And the<a href="https://call.barackobama.com/"> Call Tool</a> built into Dashboard gave people (semi-)randomized phone numbers to call before and on Election Day. The interface was clean and aesthetically pleasing. Dashboard was a real triumph.</p>
<p>A presence in the social media space is essential to modern campaigns, and now crowdsourcing has to be considered standard as well. The Obama team built a crowdsourcing platform to act as a “voter incident tracker” on Election Day which enabled volunteers to report incidents such as illegal electioneering or improper ballot handling. The team opted to use<a href="http://www.ushahidi.com/"> Ushahidi</a> (written in PHP), originally built to work seamlessly across Facebook, Twitter, email, SMS, etc., as the basis for their platform.</p>
<p>Alongside Dashboard and the Ushahidi crowdsourcing tool were a vast variety of other apps, for example<a href="http://www.slate.com/articles/news_and_politics/victory_lab/2012/01/project_dreamcatcher_how_cutting_edge_text_analytics_can_help_the_obama_campaign_determine_voters_hopes_and_fears_.html"> Dreamcatcher</a>, which helped target voters on the basis of sentiments expressed on a variety of platforms. For the sake of brevity I won’t describe all of them here, because it’s far more important that I introduce the most important element of the entire Obama tech stack: the <strong>Narwhal</strong> data layer.</p>
<h3>Narwhal: demonstrating the power of abstraction</h3>
<p>Narwhal is probably the most impressive piece of the puzzle. It is a tool charged with “linking separate depositories of information to build a more complete picture of the potential voter” and then exposing that information via API to the more than 100 applications built by the team. Basically, it acted the way that the Twitter, Facebook, Twilio, and other APIs operate with respect to the app ecosystems built around them.</p>
<p>The primary goal of Narwhal was essentially to secure the scalability of the entire system depending on it. If you’re managing a system of 100+ apps, having an ultra-reliable, API-driven Single Point of Truth tying the loose strands together is simply <em>beyond necessary</em>. Narwhal clearly rose to the challenge. The end result is that services like the Dashboard (and all the others) never spoke to <em>any</em> database whatsoever. They never made SQL queries or put key/value pairs in a NoSQL database. The 100+ apps in the stack only ever spoke to the Narwhal API.</p>
<p>Well executed APIs are such a powerful thing because they enable the construction of “aggregated organic” systems of this sort. They provide a kind of <em>lingua franca</eM> within a system that enables all kinds of “citizens” to seamlessly interact. With a RESTful API-driven platform as solid as Narwhal, suddenly Ushahidi and Rails and Node.js and Java and many others can play quite nicely with one another. Apps can be scaled one by one, in isolation from one another and from the data layer, which constitutes a major agility win.</p>
<p>Another impressive aspect of Narwhal is that it relied on a variety of database systems. The team began with a SQL-based data retrieval system that was to be used by all applications. But they ultimately decided to separated applications and data with a single, common abstraction layer. The bulk of the team’s database needs were filled by Amazon<a href="http://aws.amazon.com/rds/"> RDS</a>. RDS’s “snapshot” feature enabled the team to perform large data dumps into Amazon’s<a href="http://aws.amazon.com/s3/"> S3</a> file store.</p>
<p>According to multiple articles, if the campaign had gone on longer, the team would have had to switch to their own large<a href="http://aws.amazon.com/ec2/"> EC2</a> instances running MySQL. From the beginning, they really strained the limits of RDS. But staying on RDS meant significant cost savings, as hiring database administrators to manage such a huge and complex transition was safely avoided.</p>
<p>The team also relied on Amazon’s<a href="http://aws.amazon.com/sqs/"> SQS</a> (Simple Queue Service) as the basis for distributed systems-style architecting. Narwhal pulled in streams of data from a variety of sources and passed the data along to a vast constellation of worker applications. Quite often, that data was then passed into SQS queues for further processing, to be made available via a variety of APIs. SQS was also used to process emails in conjunction with RDS and S3 storage. The team even experimented with Amazon’s<a href="http://aws.amazon.com/dynamodb/"> DynamoDB</a> when it was introduced. It ended up being used in some of the campaign’s get-out-the-vote efforts. It will indeed be interesting to see if key/value stores will become core technological components in future campaign operations.</p>
<p>With all of these elements tied together, the team had assembled a powerful anchor for the campaign’s digital effort. While Narwhal entailed a lot of work up front (not least of all because of the sheer quantity of data that the designers knew the system would ultimately have to be able to manage), the payoff in terms of agility, according to multiple members of the campaign, was enormous. At its inception, the idea of having a single interface and shared data store for everything probably seemed like a promising but frightening approach. But it paid off because it made every bit of the campaign’s terabytes of data more valuable.</p>
<p>Against all odds, the campaign managed to do all of this with only 30 minutes of downtime over the entire course of the campaign. The whole stack was even architected to resist catastrophic infrastructure failure (which we know to be an<a href="http://techcrunch.com/2012/12/24/netflix-crippled-on-christmas-eve-by-aws-outages/"> all-too-real</a> phenomenon). That’s exactly what happened on October 21st, when AWS-US-East went down due to Hurricane Sandy, just days before the election. Fortunately, the team had a failover plan in place to move everything to AWS-US-West in case precisely that scenario transpired.</p>
<p>In the digital landscape as we know it today, <em>this</em> kind of approach&#8211;polyglot, distributed, fault-tolerant, cloud-based&#8211;is the Holy Grail. Monoglots beware.</p>
<h3>Polyglot by necessity</h3>
<p>The Obama IT team could have opted to go monoglot from the outset. They could have chosen Ruby or Python or PHP or whatever and made their entire technology stack conform to that principle. Database clients, API proxies, crowdsourcing tools, social media platforms, etc., all in one language. In the abstract, there really is something compelling about a vision like that. The people you hire don’t have to be as flexible; getting things to play nicely in the same sandbox is easier.</p>
<p>But knowing what we know about the operation, a monoglot approach would have been absolute MADNESS. By going polyglot, the team was able to capture what I would call <em>comparative advantage gains</em>. If you survey the entire web dev space, you see a bewildering array of tools, each with their own strengths and weaknesses. Most of the time, picking the absolute best tool for a specific task means drawing upon multiple runtime communities. The Ruby community simply hasn’t come up with a crowdsourcing tool as powerful as Ushahidi. Ruby on Rails, however, strikes me as the best possible way to build a platform like Dashboard in a short period of time. This is to give one example among many.</p>
<p>Going polyglot means never being forced to say “no” just because something&#8211;or someone&#8211;lies outside of the walled garden of a language community. And so yet another important advantage for the Obama team of building a deeply polyglot architecture is that the team was able to reap personnel gains. Team members came from a vast variety of tech companies, from Twitter to Google to Facebook to Quora to Orbitz to small startups and beyond. When you’re simply looking for the best and brightest, you often don’t have a lot of latitude to simply say “we’re using X, so get used to it.”</p>
<p><em><strong>Note</strong>: I relied on articles from<a href="http://www.motherjones.com/politics/2012/10/harper-reed-obama-campaign-microtargeting"> Mother Jones</a>, Ars Technica (<a href="http://arstechnica.com/information-technology/2012/11/built-to-win-deep-inside-obamas-campaign-tech/">this article</a> as well as<a href="http://arstechnica.com/information-technology/2012/11/how-team-obamas-tech-efficiency-left-romney-it-in-dust/"> this one</a>),<a href="http://www.theatlantic.com/technology/archive/2012/11/when-the-nerds-go-marching-in/265325/"> The Atlantic</a>, and<a href="http://current.com/groups/news-blog/94016874_obama-tech-team-talks-winning-disrupting-and-sticking-to-basics.htm"> Current</a> for almost of the information contained here.</em></p>
<img src="http://feeds.feedburner.com/~r/appfog/~4/e12lO_GMtIU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.appfog.com/what-the-obama-it-team-teaches-us-about-polyglot-programming/feed/</wfw:commentRss>
		<slash:comments>31</slash:comments>
		<feedburner:origLink>http://blog.appfog.com/what-the-obama-it-team-teaches-us-about-polyglot-programming/</feedburner:origLink></item>
		<item>
		<title>The AppFog Teams feature is now in public beta</title>
		<link>http://feedproxy.google.com/~r/appfog/~3/0CURVTXuYUs/</link>
		<comments>http://blog.appfog.com/the-appfog-teams-feature-is-now-in-public-beta/#comments</comments>
		<pubDate>Fri, 11 Jan 2013 01:04:01 +0000</pubDate>
		<dc:creator>Luc Perkins</dc:creator>
				<category><![CDATA[AppFog News]]></category>

		<guid isPermaLink="false">http://blog.appfog.com/?p=610</guid>
		<description><![CDATA[Collaboration has always been an essential part of coding. While plenty of solid programmers operate lone wolf-style, coding has throughout history been primarily a collective venture&#8211;from the first teams of scientists hacking on ENIAC back in the day up to our slightly-more-advanced present. Nowadays, a variety of tools exist to make group collaboration easier and]]></description>
			<content:encoded><![CDATA[<p>Collaboration has always been an essential part of coding. While plenty of solid programmers operate <a href="http://www.youtube.com/watch?v=EQkyi1_l6po">lone wolf</a>-style, coding has throughout history been primarily a collective venture&#8211;from the first teams of scientists hacking on <a href="http://en.wikipedia.org/wiki/ENIAC">ENIAC</a> back in the day up to our slightly-more-advanced present.</p>
<p>Nowadays, a variety of tools exist to make group collaboration easier and more natural than ever. From distributed version control tools like <a href="http://git-scm.com/">Git</a> and <a href="http://mercurial.selenic.com/">Mercurial</a> to social media-style hubs like <a href="https://bitbucket.org/">BitBucket</a>, <a href="https://github.com/">GitHub</a>, and <a href="https://coderwall.com/">CoderWall</a> to cloud IDEs like <a href="https://cloud-ide.com/">Exo</a> and <a href="https://c9.io/">Cloud9</a>, collaborating with others across runtimes, organizations, and vast geographical distances has become something that we take for granted.</p>
<p>At AppFog, we feel strongly that these kinds of capabilities need to be introduced into the world of PaaS as well. And so we’re happy to announce that AppFog Teams is now in public beta and ready for you to test-drive.</p>
<p><em><strong>Please note</strong>: The Teams feature is currently available only to users on paid plans.</em></p>
<h3>So what is this Teams thing?</h3>
<p>AppFog’s Teams feature enables you to invite other AppFog users to collaborate on app management. All you have to do is email them an invitation to your Team, and if they accept they’re on board. Now, multiple users with different email addresses can sign into an account, even simultaneously, and manage the same set of applications and services, be it in the <a href="https://console.appfog.com/">console</a> or in the <a href="https://docs.appfog.com/getting-started/af-cli">command line</a>.</p>
<h3>What actions can Teams collaborators perform?</h3>
<p>With this Teams release, if you invite someone into your AppFog account, they can do <em>almost</em> anything that the original user can do: they can run almost any command in the CLI, from <code>af update</code> to <code>af delete</code> to <code>af clone</code>, and thus perform any and all app management tasks. There are only two things that invited users cannot do: they cannot change the account password, and they cannot invite or exclude users. For any given team, only users with the password for the team account can perform those actions.</p>
<h3>How to use the Teams feature in the console and in the command line</h3>
<p>In the console, using the Teams feature is as easy and intuitive as all of our other console tools, from managing environment variables to managing domain names. You simply click on the <strong>Teams</strong> tab in the console, which is located in the main toolbar:</p>
<p><a href="http://blog.appfog.com/wp-content/uploads/2013/01/teams1.jpg"><img class="alignleft size-full wp-image-617" title="teams1" src="http://blog.appfog.com/wp-content/uploads/2013/01/teams1.jpg" alt="" width="468" height="79" /></a><br />
&nbsp;<br />
Once you do that, you’ll be taken to the Teams page, where you can see which users are currently a member of your Team, which invitations are pending, which users have been excluded, and so on:</p>
<p><a href="http://blog.appfog.com/wp-content/uploads/2013/01/teams2.jpg"><img class="alignleft size-full wp-image-618" title="teams2" src="http://blog.appfog.com/wp-content/uploads/2013/01/teams2.jpg" alt="" width="650" height="702" /></a><br />
&nbsp;<br />
From there, you can invite new users into the fold (you can give it a shot with Matt Damon, but we can’t make any guarantee that he’ll accept) as well as keep tabs on who’s in the group, as well as a few pieces of information, including email address. Individual users can even select a picture for themselves (let’s hope your pic turns out better than <a href="http://abcnews.go.com/images/Entertainment/ap_nolte_mug_tk_111214_wblog.jpg">this</a>).</p>
<p>If you’re using the AppFog <a href="https://docs.appfog.com/getting-started/af-cli">command line tool</a>, things are similarly straightforward. Let’s say that you’re a member of an AppFog group (under the email address <code>me@irule.com</code>) and you want to update an app called <code>better-together</code>. The only thing that you would need to do differently is to specify in the command line which user you are:</p>
<pre>$ af -u me@irule.com update better-together</pre>
<p>If you’ve accepted the group’s invitation, you have an AppFog account (which are free), you’re signed into AppFog, then you’re set to go. This was just one example among many. You could also start apps, restart apps, add services, modify environment variables, etc. If you run <code>af help</code>, all of the commands that you see&#8211;with the exception of <code>af passwd</code>&#8211;will be available to you. It really is that simple.</p>
<h3>Teams feature roadmap</h3>
<p>As we said, this feature is still in its relative infancy. But you know us: if we’ve built something that we think developers will find useful, we’re really bad at keeping it under wraps. Even if it’s in an early stage (as this feature is) we want to let it out into the world. We’re always open to feedback, so check out the AppFog <a href="https://groups.google.com/forum/?fromgroups#!forum/appfog-users">Google group</a> and let us know if there are features you’d like to see or any kinks that remain to be worked out.</p>
<p>In the future, we plan on iterating on the Teams feature quite a bit and adding the following:</p>
<ul>
<li dir="ltr"><strong>Specified roles</strong>. Right now, anyone in a group can perform any and all AppFog-related tasks except changing passwords and inviting members to a group. In the future, we’ll enable much more fine-tuned role specification than this, including roles such as “admin,” “auditor,” and more.</li>
<li dir="ltr"><strong>Spaces</strong>. Within larger organizations, it is very often the case that some apps and projects are running in production, others are in testing/QA, and yet others are making baby steps in development. With the Teams feature, we seek to eventually enable AppFog groups to group projects into spaces along these lines. This would mean that the dev/engineering team for OmniCorp.org could have multiple apps and/or services grouped into spaces of their choosing. This allows for a far more streamlined workflow in larger groups.</li>
<li dir="ltr"><strong>Full console support</strong>. At the moment, there is little Teams-related functionality in the console, but we will have much more comprehensive support in the future. We want to enable users to, for example, be able to sign into multiple groups in different consoles at the same time, to customize certain aesthetic aspects of the console, and so on.</li>
</ul>
<p>So if you’re on an AppFog paid plan, give the Teams feature a shot. We’d love to see what you end up building with it, and we are always more than open to any and all feedback. Come together, developers. And be in touch.</p>
<img src="http://feeds.feedburner.com/~r/appfog/~4/0CURVTXuYUs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.appfog.com/the-appfog-teams-feature-is-now-in-public-beta/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.appfog.com/the-appfog-teams-feature-is-now-in-public-beta/</feedburner:origLink></item>
		<item>
		<title>Announcing the Winners of the AppFog Cloudy New Year Resolution Contest</title>
		<link>http://feedproxy.google.com/~r/appfog/~3/cIjI7C1XqzE/</link>
		<comments>http://blog.appfog.com/announcing-the-winners-of-the-appfog-cloudy-new-year-resolution-contest/#comments</comments>
		<pubDate>Wed, 09 Jan 2013 21:11:55 +0000</pubDate>
		<dc:creator>Tom Potterf</dc:creator>
				<category><![CDATA[AppFog News]]></category>

		<guid isPermaLink="false">http://blog.appfog.com/?p=607</guid>
		<description><![CDATA[Thank you to everyone who shared their Cloudy New Year Resolutions in our recent contest. See all of the entries in the comments section of the original blog post. And of course, a big shout out to our contest sponsor Cloud Foundry! We’ve had a chance to review all of your smart and funny resolutions,]]></description>
			<content:encoded><![CDATA[<p>Thank you to everyone who shared their Cloudy New Year Resolutions in our recent contest. See all of the entries in the comments section of the <a href="http://blog.appfog.com/resolve-to-make-2013-cloudier-you-could-win-a-gopro-hd-hero-naked-camera/">original blog post</a>.</p>
<p><strong>And of course, a big shout out to our contest sponsor <a href="http://my.cloudfoundry.com/signup/AppFogContest2012">Cloud Foundry</a>!</strong></p>
<p>We’ve had a chance to review all of your smart and funny resolutions, and have selected the six winners of the <a href="http://gopro.com/cameras/hd-hero-naked-camera/">GoPro HD Hero Naked</a> cameras.</p>
<p>&nbsp;</p>
<p><strong>So, in no particular order, here are the winning new year cloud resolutions:</strong></p>
<p>&nbsp;</p>
<p>&#8220;In 2013 I will provide a cloud with capacity of 2000. <a href="http://www.youtube.com/v/9ntPxdWAWq8&amp;hl=en_US&amp;fs=1&amp;">http://www.youtube.com/v/9ntPxdWAWq8&amp;hl=en_US&amp;fs=1&amp;</a>&#8221;<br />
<em>– submitted by Mike Y.  </em><em>(Note: Mike, we think you can get to 4000)</em></p>
<p>&nbsp;</p>
<p>&#8220;My resolution is to properly learn how to use capistrano to properly deploy code to multiple servers in the cloud or to convince more people that Oregon is the worst place to host stuff in the cloud because all the rain, and terrible weather makes the servers in the sky not work&#8230; the latter seems easier.&#8221;<br />
<em><em>– </em>submitted by Jason B.  (Note: Jason, with all the clouds in Oregon, it seems the perfect place to utilize Capistrano)</em></p>
<p>&nbsp;</p>
<p>&#8220;My resolution is to not tune out /ignore my two screaming children when I&#8217;m in the cloud or on AppFog <img src='http://blog.appfog.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Mommy, mommy, mommy, mommy, mommy &#8220;What!?&#8221; &#8220;Nothing&#8221;"<br />
<em><em>– </em>submitted by Lesly C. (Note: Maybe teach them Node.js? Indoctrinate ‘em early we always say.)</em></p>
<p>&nbsp;</p>
<p>&#8220;My resolution is to preach the dangers of vendor lock-in to my clients and to spread the good will of the public cloud where ever I can. Oh, and to drink more milk; it does the body good.&#8221;<br />
<em><em>– </em>submitted by Zachary Q. (Note: Dairy-as-a-Service?)</em></p>
<p>&nbsp;</p>
<p>&#8220;My resolution is to write my first true deploy script that does not depend on Git post-receive hooks!&#8221;<br />
<em><em>– </em>submitted by Chris M. (Note: And share on Github!)</em></p>
<p>&nbsp;</p>
<p>&#8220;My goal is to get my distributed event bus for Cloud Foundry production ready and deployed in our private cloud.&#8221;<br />
<em><em>– </em>submitted by Mike H. (Note: We’d love to see this ourselves&#8230;.)</em></p>
<p>&nbsp;</p>
<p><strong>Congratulations again, winners.</strong> Your cameras are on the way! And cheers to an amazingly successful 2013 for developers in the cloud!</p>
<img src="http://feeds.feedburner.com/~r/appfog/~4/cIjI7C1XqzE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.appfog.com/announcing-the-winners-of-the-appfog-cloudy-new-year-resolution-contest/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://blog.appfog.com/announcing-the-winners-of-the-appfog-cloudy-new-year-resolution-contest/</feedburner:origLink></item>
		<item>
		<title>PaaS First; IaaS Second: Five Reasons to Select Your PaaS First</title>
		<link>http://feedproxy.google.com/~r/appfog/~3/l99bvGLQdws/</link>
		<comments>http://blog.appfog.com/paas-first-iaas-second-five-reasons-to-select-your-paas-first/#comments</comments>
		<pubDate>Wed, 09 Jan 2013 18:00:47 +0000</pubDate>
		<dc:creator>chris</dc:creator>
				<category><![CDATA[AppFog News]]></category>

		<guid isPermaLink="false">http://blog.appfog.com/?p=605</guid>
		<description><![CDATA[In this guest post, Mark Geene along with Vineet Joshi, Co-Founders of Cloud Elements, an AppFog integration partner, provide a perspective on why selecting the right PaaS is one of the most important decisions you can make in designing your cloud application. Are you building your cloud application directly on the Infrastructure-as-a-Service (IaaS) provider vs. using]]></description>
			<content:encoded><![CDATA[<p><span style="color: #808080;"><em>In this guest post, <a href="http://cloud-elements.com/leadership-team/"><span style="color: #808080;">Mark Geene</span></a> along with <a href="http://cloud-elements.com/leadership-team/"><span style="color: #808080;">Vineet Joshi</span></a>, Co-Founders of <a href="http://cloud-elements.com/"><span style="color: #808080;">Cloud Elements,</span></a> an <a href="https://www.appfog.com/"><span style="color: #808080;">AppFog</span></a> integration partner, provide a perspective on why selecting the right PaaS is one of the most important decisions you can make in designing your cloud application.</em></span></p>
<p>Are you building your cloud application directly on the Infrastructure-as-a-Service (IaaS) provider vs. using a Platform-as-a-Service (PaaS)? In recent conversations with dozens of cloud application developers I’ve found many developers are still choosing to build their application using services offered by the IaaS (Infrastructure-as-a-Service) provider, e.g., Amazon (AWS), Rackspace or other IaaS providers vs. using a PaaS between the application and the infrastructure. In nearly every instance I find the primary reason for selecting an IaaS first was that the development team didn’t fully understand the benefits of a PaaS or didn’t know how to evaluate one.</p>
<p>We recommend to our clients that they select their PaaS first and then select the IaaS provider that best supports their selected PaaS. By developing your application using a PaaS, you can lower the total cost of ownership of your application by 30% or more. With the right PaaS, you also gain the freedom to change cloud infrastructure providers over-time and avoid infrastructure vendor lock-in by making your application portable to any IaaS provider.</p>
<p><em><strong>We see five primary reasons for using a PaaS:</strong></em></p>
<p><strong>Reduced Operations Cost</strong> &#8211; we generally find that 30% or greater of development time can be consumed in DevOps functions. A PaaS will nearly eliminate the DevOps function and reduce it to simple user administration and resource allocation functions. AppFog, a leading PaaS provider, has a great <a href="http://gigaom.com/cloud/why-2013-is-the-year-of-noops-for-programmers-infographic/">infographic </a>on this topic and our experience validates their claim that almost all DevOps functions can be eliminated by developing and deploying cloud applications using a PaaS.</p>
<p><strong>Reduced Development Cost</strong> – An IaaS provides network, compute and storage scalability; but it doesn’t automatically provide application scalability. Application scalability is not only an operations issue but it is a development issue as well. A significant amount of development time is spent repeatedly building such functions as application health checks and reporting, but a PaaS provides these functions out of the box. A PaaS provides application runtimes, data and messaging services that are cloud aware. As adoption of the PaaS layer increases, the leading providers are investing time and energy, in providing tools to increase development productivity and the development productivity gains of using a PaaS will continue to increase.</p>
<p><strong>Application Portability</strong>- It is a bad idea to develop on-premise applications specific to a hardware vendor, so why would it be a good idea to write cloud applications specific to the hardware vendors of the cloud, i.e., IaaS providers? Your PaaS offers developers a set of services that are independent of the infrastructure, ensuring that the application and operational tools you integrate into your application are agnostic of any cloud infrastructure. By leveraging application development runtime environments, data and application management services within an <a href="http://cloud-elements.com/blog/2012/09/07/considerations-in-selecting-a-platform-as-a-service-paas/">open PaaS </a>you can deploy to your application to any IaaS, without changing a line of code.</p>
<p><strong>More Deployment Alternatives</strong> &#8211; Open and portable PaaS offerings, like Cloud Foundry,  can be deployed to public or private cloud configurations giving you the most flexible deployment alternatives. For instance, the Cloud Foundry ecosystem includes multiple public cloud providers including AppFog and Cloudfoundry.com. Additionally, the PaaS bundle is available from CloudFoundry.org for private cloud deployments to your data center, or public clouds such as Amazon Web Services, Rackspace and Hosting.com.</p>
<p><strong>More Development Services</strong> &#8211; We find that a PaaS such as Cloud Foundry has a wider range of run time and data services available than do most IaaS providers. Cloud Foundry for example supports Java, Ruby and Node.js application run-times, as well as PostgreSQL and MongoDB data services. Also, a vibrant ecosystem of partners have extended the available runtimes to include PHP, .Net, and added data services for MySQL, Microsoft SQLServer and Hadoop.</p>
<p>Are you considering a PaaS for your next cloud application development project? What are the primary reasons?</p>
<img src="http://feeds.feedburner.com/~r/appfog/~4/l99bvGLQdws" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.appfog.com/paas-first-iaas-second-five-reasons-to-select-your-paas-first/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.appfog.com/paas-first-iaas-second-five-reasons-to-select-your-paas-first/</feedburner:origLink></item>
		<item>
		<title>AppFog Continues to Grow Ecosystem</title>
		<link>http://feedproxy.google.com/~r/appfog/~3/Hib21udGiYI/</link>
		<comments>http://blog.appfog.com/appfog-continues-to-grow-ecosystem/#comments</comments>
		<pubDate>Tue, 08 Jan 2013 17:00:40 +0000</pubDate>
		<dc:creator>chris</dc:creator>
				<category><![CDATA[AppFog News]]></category>

		<guid isPermaLink="false">http://blog.appfog.com/?p=606</guid>
		<description><![CDATA[If you’re a Platform &#8211; success is dependent upon your Ecosystem. And our ecosystem just keeps on growing! This week we welcome two of our developers’ favorite Add-On Partners &#8212; Logentries and Xeround. With the addition of these two fantastic partners, we believe we are starting to realize the promise of this ecosystem &#8211; and]]></description>
			<content:encoded><![CDATA[<p>If you’re a Platform &#8211; success is dependent upon your Ecosystem. And our ecosystem just keeps on growing!</p>
<p>This week we welcome two of our developers’ favorite Add-On Partners &#8212; Logentries and Xeround.</p>
<p>With the addition of these two fantastic partners, we believe we are starting to realize the promise of this ecosystem &#8211; and the full platform delivery of this ecosystem to developers. Developers’ lives keep on getting easier!</p>
<h3><a href="https://logentries.com/">Logentries</a></h3>
<p>Logging-as-a-service is a vital part of any distributed cloud-based application. And Logentires has proven to be a fantastic solution for your logging needs.</p>
<p>Logging is a critical part of any app development, management, and iteration process. For cloud-based apps––especially those that rely upon multiple services––logging is absolutely critical. Logentries gives AppFog users a way to easily manage, store, search and analyse their log data. Logentries essentially turns your raw log data into extremely useful actionable data &#8211; which you can use for debugging issues, finding performance bottlenecks or for simply understanding how your users are interacting with the applications you develop. Logentries supports the full AppFog stack (PHP, Java, Node.js, Python and Ruby) so you can get access to your logs regardless of what language you prefer to build your applications in.</p>
<h3><a href="http://xeround.com/blog/2013/01/xeround-cloud-database-now-available-as-appfog-addon">Xeround</a></h3>
<p>Mysql is, obviously, the default SQL database for internet development. While AppFog offers a shared Mysql DB service &#8211; for many production use-cases, customers will need a dedicated DB or services and functionality that our shared DB service doesn’t offer. In these cases, Xeround’s robust, simple DB-as-a-Service solution is a fantastic option.</p>
<p>With support for elastic auto-scaling, failover and advanced clustering, Xeround provides a HA database for your demanding production workloads.</p>
<p>If you are considering building out your own cloud-based database for your app do to concerns about performance and scalability &#8211; you should seriously consider Xeround instead. It’s going to be easier and less painful.<br />
<strong id="internal-source-marker_0.04406475625000894"><br />
</strong></p>
<img src="http://feeds.feedburner.com/~r/appfog/~4/Hib21udGiYI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.appfog.com/appfog-continues-to-grow-ecosystem/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://blog.appfog.com/appfog-continues-to-grow-ecosystem/</feedburner:origLink></item>
	</channel>
</rss>
