Monday, February 27, 2012

HTML5: Dream Come True or Nightmare?


Not all web design and development organizations have seen the HTML5 light yet, and some (seemingly out of ignorance or as a defensive posture) are trying to paint HTML5 as “a nightmare to design for, implement, and support”. Reasons often given for this position are “there is no HTML5 standard yet” and “there are so many different exception cases to handle”.

Do not drink this cool aid. HMTL5 is the best thing to happen to the web in a long, long time. And no, it’s not a completely rosy picture, there are issues and problems. But it’s far better than what we had in the past, by a longshot. Allow me to explain.

From Day 1, the web has been standards-based. Not all of those standards were necessarily great or even sufficient for what people wanted to do. Nor were they ratified in any kind of short time frame; most often, the web standards tended to confirm what web designers/developers and browser vendors were already doing more than setting some new direction for the future.

In the last decade, the web took some interesting turns that were both good and bad. First, the level of experiences that could be delivered really started to improve. Much of that debt goes to proprietary technologies like Flash and Silverlight, which gave us things we simply couldn’t do using only web standards. They served an important purpose, and they should be saluted for it. We also saw the rise of mobile devices, especially in the last few years, and the prominence of native mobile apps. Native mobile apps are great, and yet it bothers many that so many different languages and APIs must be mastered for each mobile platform.

Enter HTML5, fueled by the desire to provide a standards-based lingua franca for web development that can span desktop, tablet, and phone devices without the need for plug-ins. With Apple deciding not to support Flash on the iPhone and iPad, this is now a decision made: proprietary technologies will find fewer and fewer places to run going forward. And since mobile use of the web is outstripping computer use of the web, being able to create web sites that run anywhere and everywhere is a losing proposition unless you’re using HTML5.

I did admit there are some problems with HTML5. There are over 100 standards, most not ratified yet. Vendors can’t come to agreement on a common video or audio format, so you must support several media formats in order to get good coverage. Browsers are not uniformly supporting all HTML5 features yet. Nor can you make your users run a modern browser, for that matter. Yes, working in HTML5 does mean putting in extra work to handle browser compatibility well, which may include implementing fallback behaviors for older browsers. This is not a bad thing, this is what we ought to be doing to provide a good experience for all of our users. Yes, it's  possible some of the standards may change--but we get to play with them now and provide input on their ultimate disposition which is way better than leaving it to a committee.

These difficulties do require attention, but they’re nothing in comparison to the enormous benefits HTML5 gives us. Moreover, you’re not alone in dealing with them. Because HTML5 is open, there’s a worldwide community supporting each other in making it real. The amount of free online sites, open source libraries, and community support for HTML5 is staggering. We have libraries like Modernizr you can use for feature detection. We have shims and polyfills for adding HTML5 behaviors to older browsers. We have sites like caniuse.com to determine which features are available in a user's browser. We have great support for these standards being added by vendors to their tools and platforms, from Adobe to Microsoft. We also have the techniques to match the technology, including Responsive Web Design, Mobile First, and Progressive Enhancement. There’s never been a richer and more fun time to write web software than right now.

Web designers ought to be all over HTML5: you can design incredible compelling experiences now and have them broadly available across more kinds of desktops and devices than ever before. We're getting great new design tools that allow HTML5 and CSS and JavaScript to be handed off to web developers. Modern devices are extremely capable, and modern browsers take advantage of it with hardware acceleration.

I fully understand HTML5 skepticism, I was in that position just a year ago. Take a serious look at it, and you’ll like what you see. Web development organizations should stop viewing HTML5 as an unwelcome disruption to the skills they invested in for the last few years and see it for what it is, an opportunity. Yes it does require a re-alignment of skills. Yes, it's worth it.

No, HTML5 is not a nightmare. Nor is it a dream. It’s reality, and a good one at that.

Thursday, February 23, 2012

Presentation: The Modern Web, Part 1: Mobility

I've started a 4-part webcast series on The Modern Web (you can get webcast details and after-the-fact recordings at Neudesic.com). In each part I'll talk about one of the four pillars (Mobility, HTML5, Social Networking, and Cloud Computing). Here is the presentation for Part 1: Mobility that is being given today.
The Modern Web, Part 1: Mobility
View more presentations from David Pallmann

Tuesday, February 14, 2012

Microsoft Substantially Lowers Price of SQL Azure and Adds New 100MB/$5 Option

Today Microsoft announced a significant price reduction for SQL Azure Database, the cloud counterpart to SQL Server on the the Windows Azure platform. In addition, a new 100MB size is now available for a mere $5/month. Together, these announcements dramatically change the cost of database-as-a-service on Windows Azure. Here are the details on the new pricing effective today:

• 0 to 100MB: Flat $5.00 / month
• > 100MB to 1GB: Flat $9.99 / month
• > 1GB to 10GB: $9.99 for first GB, $4.00 for each additional GB / month
• > 10GB to 50GB: $45.99 for first 10GB, $2.00 each additional GB / month
• > 50GB to 150GB: $125.99 for first 50GB, $1.00 for each additional GB / month

To bring that home, let's show what that looks like for some select database sizes:

SizeCost/MonthDecrease Over
Previous Pricing
Effective
Cost/GB
100MB$5.00N/A
1GB$9.990%$9.99
5GB$25.9948%$5.20
10GB$45.9954%$4.60
25GB$75.9975%$3.04
50GB$125.9975%$2.52
100GB$175.9965%$1.76
150GB$225.9955%$1.51

The calculator on Azure.com has already been updated to reflect the new pricing.

Since most of the world's databases are in fact very small, the new $5 for up to 100MB option is extremely attractive. There's also good news here for those with larger databases. Historically, SQL Azure Database has been one of the more costly parts of the platform. If your database needs were on the larger side (50GB or larger) you were looking at $500/month per database, and if you wanted additional SQL Azure databases for backups or failover that only multiplied the expense. That put many companies in the position of having to choose between the value of having a relational database vs. the cost savings of using alternative forms of storage such as Windows Azure Table Storage which previously was 66 times less expensive. Although NoSQL approaches are becoming increasingly popular, operational cost alone shouldn't be the driver for deciding whether to use a relational database or not. While I've seen some development teams at some companies switch over to table storage easily, for some it's a tough change and they never quite recover the velocity they had with SQL Server. In other words, operational cost isn't the only factor and development team impact should figure stronly into such decisions. With this greatly decreased SQL Azure pricing, and the new low-cost option for 100MB databases, the to-database-or-not-to-database decision can be made on more solid grounds.

Sunday, February 12, 2012

CloudFest Denver Recap

I had a great time at CloudFest Denver last Thursday (Feb 9)--the show had a lot of energy and a really high level of tweeting on the #cloudfest hashtag. Neudesic was among the exhibitors and sponsors and provided two speakers--Mike Erickson (Windows Azure Diagnostics) and myself (Windows Azure Design Patterns, When Worlds Collide: HTML5 Meets the Cloud).

At this conference we also debuted AttendeeBee, a mobile/social/cloud app attendees use to tweet, share their location, and rate sessions. Attendees get more points the more they use AttendeeBee, increasing their chances of winning our giveaway, an XBox/Kinect bundle in this case. At the Neudesic booth, attendees can see the entire conference at a glance on a large monitor, including a leaderboard. This provides an element of gamification. AttendeeBee worked pretty well on its maiden voyage and we have some good ideas on where to take it next.



You can view my presentations below.


Gamification: Making Software Fun

Gamification is the use of game techniques to solve problems and engage audiences. In other words, it makes non-game applications (like stuffy business software) fun and compelling so people will want to use them. Gamification can turn what might otherwise be seen as a chore into something users actually look forward to. Whether for customers or employees, gamification can lead to increased productivity and loyalty, and makes for happier users.

Gamification is an idea our User Experience practice at Neudesic is very interested in as well as our Web & Cloud practice. Of the four pillars we are emphasizing for modern web work (HTML5, mobility, cloud, social), gamification fits into the social category.

Some examples of gamification are achievement badges, achievement levels, points, leaderboards, rewards, and user-to-user competitions. You can see some of these ideas in many popular web apps such as FourSquare and Klout. An example of applying gamification in a business application might be to award points for sales achievements and have a leaderboard showing how salespeople are doing relative to each other. Since sales organizations often launch campaigns with special incentives for reaching various targets in a quarter, the competition angle fits very naturally and can spur people on to beat out their colleagues.
One interesting application for gamification is to use it to solve problems. Recently, a major scientific problem was solved by people playing a computer game. The players deciphered the three-dimensional structure of a protein that allows a relative of the AIDS virus to infect cells. They were able to do this without a background in chemistry: the game only required that they “freeze” or “wiggle” shapes on their screens. Researchers created a game called FoldIt in which players cooperate to rearrange proteins into different shapes. Other software then evaluated which proposed solutions were most likely to be correct. AIDS researchers had struggled for more than a decade to work out the structure; the gamers cracked it in less than 10 days!

FoldIt solved a major scientific problem through gaming

At Neudesic we recently put gamification to the test in our 2012 cloud conference tour, in which we’ll ultimately be doing shows in 12 regions. At CloudFest Denver this week, we debuted AttendeeBee, a gamification application for conference attendees. With it, attendees can tweet, check in their location, plan their agenda, and rate sessions on their smartphones for points, where the more points the better your chance of winning an Xbox-Kinect in our drawing. At the Neudesic booth, attendees could see the overall state of the conference in real time on a large monitor including a player leaderboard. AttendeeBee exhibits all of the characteristics we want to see in a modern web application: HTML5, mobility, social integration, & cloud. It got plenty of attention and sparked many good discussions at our booth with prospects. We have plenty of ideas now on how to take the app further for our remaining conferences.



AttendeeBee applies gamification to conference attendance

Gamification isn’t totally a new idea: it has predecessors, such as “no accidents for X days” in factories; and “best branch” awards in franchises. I’m surprised it took this long for gamification to be recognized as a fundamental consideration in designing software and the user experience, but I’m glad it’s finally here. In hindsight, its value is obvious. It's now official: Fun Is In!

Wednesday, February 1, 2012

Upcoming February Sessions on Web and Cloud at Portland Cloud Intelligence and CloudFest Denver

Here are some talks I and my Neudesic colleageus are giving on web, cloud, and programming at Portland Cloud Intelligence (Feb 2) and CloudFest Denver (Feb 9)

Development in the Cloud
Stuart Celarier
Portland Cloud Intelligence Thu Feb 2 1:00p
View Walk-through

What’s it like to develop for the cloud? In this session, you’ll see what the development experience is like for Windows Azure. We’ll start with “Hello, Cloud” in Visual Studio, running it first in the local simulation environment and then deploying to a data center in the cloud. We’ll progressively add more features to the application to illustrate the use of different cloud services. Both the local simulation environment and deployment to a cloud data center will be shown. We’ll also discuss the software development lifecycle and share best practices for cloud development. You’ll leave with an understanding of the differences and similarities between cloud development and enterprise development.

Keeping an Eye on the Cloud: Azure Diagnostics
Mike Erickson (@mgerickson)
CloudFest Denver Thu Feb 9 4:10p

When an application is running in Windows Azure it can be difficult to know what is happening. In this session we will cover the techniques that you can implement to gather diagnostic information from the instances running in Azure. We will discuss how you can instrument your code to help you understand what is happening while it is running. We will also look at how you can connect to instances that are running in Azure.

Windows Azure Design Patterns
David Pallmann (@davidpallmann)
Portland Cloud Intelligence Thu Feb 2 2:15p
CloudFest Denver Thu Feb 9 9:40a
View Presentation

In order to design great cloud solutions architects need to understand the design patterns intrinsic to their cloud platform. In this session we will review the design patterns inherent in the Windows Azure platform services, followed by a discussion of application patterns for combining those services. Design patterns will be reviewed for compute, storage, relational data, communication, security, and networking. Key patterns will be illustrated with application examples.

When Worlds Collide: HTML5 Meets the Cloud
David Pallmann (@davidpallmann)
Portland Cloud Intelligence Thu Feb 3:30p
CloudFest Denver Thu Feb 9 1:20p
View Presentation

What does HTML5 mean for cloud computing, and vice-versa? When two revolutions are happening simultaneously you can expect interesting synergies and interactions. Even as cloud computing and social networks are profoundly transforming the back end, HTML5 and mobile devices are profoundly transforming the front end. When these worlds collide we can achieve something truly remarkable: rich, take-anywhere immersive experiences backed by on-demand, elastic services running at global scale. Both worlds are driving changes in the way we design software, and good solution architecture demands they be considered jointly. In this session you'll see how HTML5 and the cloud combine functionally and architecturally, illustrated by example.

Presentation: Windows Azure Design Patterns

I'm giving a lot of web and cloud presentations this year at code camps, CloudFests, Cloud Intelligence, DevConnections, and other venues. Here's the presentation for one of my talks, "Windows Azure Design Patterns".

Windows Azure Design Patterns
View more presentations from David Pallmann.