HTML5 is there yet?

Here are some thoughts on HTML5 and whether it’s up to the task of making mobile apps.

Mobile browsers lag, so mobile HTML5 apps suffer

This article from principal HTML5 evangelist at Mozzilla. He says browsers are not up to the task. This is coming from someone at a company that makes browsers. He’s saying the browsers don’t do enough to satisfy the vision that everyone has for HTML5. I have to ask is that a problem of the browser really? Is this a case where someone is saying “hey your browser needs to live up to my vision.”

He also says:

HTML5 is a recognized as a set of standards-based specifications for so-called modern Web applications with multimedia capabilities, leveraging JavaScript and Cascading Style Sheets.

After reading this I had to ask. Is a web browser with multimedia capabilities really the platform to deliver full feature mobile applications?

Here’s another article

Forrester: HTML5 apps still not as good as native apps

Here is a quote:

But adopting HTML5 for mobile apps isn’t a panacea, as reflected in Forrester’s findings. In fact, one of the report’s survey responses noted that 59 percent of the time, apps developed solely using HTML5 took longer to deliver than planned. With non-native responsive frameworks, the greatest amount of time was lost testing and fixing issues.

The survey of developers says 59% of the time HTML5 apps took longer to develop.That flies in the face what people have been touting as common wisdom for the last few years. It seems to fit with my limited personal experience.

Here’s another survey:

Mobile app development: 94% of software developers bet on HTML5 winning

This survey from 2012 says an overwhelming percentage of developers are planning to use HTML5 to build their apps. Their top reason: familiarity with the languages HTML/CSS/JS. I have to ask is that the right reasoning? Admittedly the second most popular reason was cross platform compatibility. You can only imagine that wanting building apps in HTML5 since it is more familiar means that these people do not want to spend time learning a native development tool, and they thought it would be faster and easier. In the article above, from 2014, two years later, shows that a majority of developers agree that it took longer to develop their apps in HTML5. I can imagine that a fair amount of apps took just as long it would have taken to develop native. A few may have been developed faster. But for the majority it was longer or about the same, to develop an app that will lower performance than a native app.

Not sure this looks like it may have come from the same survey above, but doesn’t appear in that article:

Survey: Most Developers Now Prefer HTML5 For Cross-Platform Development

Again here they show 90% of developers using HTML5. I work with students developing apps, and many students want to use HTML5. Many for the reasons popular in the article above, ease and familiarity. I would say a majority of the projects are social media. Notice the chart here labeled types of apps. The most popular app is productivity at 54%, social media apps is 18%.

You could say that social there are fewer people developing social media, and that may be true, it’s hard to say from this chart. Look at games only 8%. Games have to be in the top three for shear volume in apps. Social media apps are also very popular. Looking at the chart in this light, you might start to think that people are choosing native for games and social media. Obviously you can’t make a definitive conclusion like this from this information, but it does hint that there is more to this than the 90% figure.

Also note that the survey was conducted by Telerik kendo UI who develop an HTML5 mobile framework. Some of the questions skew in the favor HTML5 like:

  • Only 15% of the more than 5,000 surveyed would use “Native-only” to target multiple platforms

Targeting multiple platforms with native is native’s biggest disadvantage.

I went out on a limb earlier and said that native apps had better performance. What does that mean?

Americans Prefer Native Mobile Apps Over HTML: Survey

This survey says people prefer native apps. Here’s a quote:

“Smartphone home screens across the country are littered with the tombstones of mediocre, try-once-and-forget apps,” Joseph Farrell, executive vice president of operations at Bite Interactive, said in a statement. “Brands and developers too often lose sight of the most important aspects of developing mobile applications: build in-brand, powerful and highly usable apps that continually deliver real value to your users by solving the problem they have asked you to solve. Delivering continued, iterative and brilliantly executed solutions to those evolving problems should always be the primary objective.”

I think this is a good point. Developing an app faster (or may be not faster) for less, is this a good thing when the user experience is poor? Did you really save time and money? Was your time and money well spent? Maybe not.

From a user perspective native is better. From a developer perspective HTML5 seems to be preferred. Think about that for a moment. Is this the cart driving the horse? shouldn’t a developer want to produce the app that will provide the best experience and performance for a user? Seems like there is little advantage in choosing to develop an app in HTML5 because you are familiar with it, rather than it is the best tool for the job.

But wait, there’s more. Here’s another.

Mobile app developers’ interest in HTML5 is slipping

Here’s an interesting paragraph:

This was the lowest level since Appcelerator began tracking the specification in April 2011. “Interest in HTML5 peaked in July 2012 at 72.7 percent and has shown and uneven but downward slope since,” the report said.

I think this is referring to the same survey that showed HTML5 down to 59%. They mention a downward trend. There isn’t a chart or reference to this, which is too bad. It should be noted, that the survey mentioned here is from Appcelerator, which is a JS based pseudo native app development tool.

Here’s a quote from another source:

In the battle between HTML5 and native apps, HTML5 is starting to become a strong contender. While native app approaches have been a top choice in the past, a recent survey revealed that 57% of participants believe HTML5 is enterprise-ready, or will be in within the next year.

I have been hearing this for a few years now. Note the article was from 2013. We’re in the fourth quarter of 2014, and I think it’s still debatable if HTML5 is “enterprise ready.”

Seems the real advantage to HTML5 for mobile apps is, that it is faster and easier to develop. Keep in mind that the earlier survey said 59% of developers thought it took longer to develop in HTML. Users also prefer native. In this light the advantages of HTML5 seem very slim to nonexistent.

Why post this? I don’t have an axe to grind, but I do feel there is a lot of hype in HTML5 these days. And it’s easy to see it as a good fit for everything. I feel this approach is not the correct approach. Without applying an honest critique to what is happening in the real world you run the risk of choosing a tool that is not the best fit the job. Which leaves you with a poorly performing product and more hassle than necessary. I believe there is a class of app that works well with HTML5, but it’s a small subset of all of the apps you could make. I also believe that the margin in development effort between native HTML5 much slimmer than what most people would suggest, and possibly nonexistent. If there is an advantage to HTML5, it’s in distribution.

 

 

Sidescrolling endless runners

If you haven’t played Canabalt, you should give it a try. This is one of the games to define the single button endless runner type games. the original was made in Flash. There’s also an IOS and Android version. I hear the Android version is better with different worlds and things.

Essentially the gist of the genre is that you are running forward avoiding obstacles. things get tougher as the game progresses. There’s lots of variation. I’m linking to an article here by the author of Canabalt talking about what went into making Canabalt and the decisions for different screen sizes, and game mechanics. Very informative if you wanted to make a similar game.

http://blog.semisecretsoftware.com/post/44317538718/tuning-canabalt

Spritesomething – iPad/iPhone app

Here’s a great app for drawing pixel art on your iPhone/iPod and iPad.

http://terriblegames.com/spriteSomething/

I highly recommend this. I have been playing with it for hours the last few weeks. It’s really fun and easy to use. It includes a lot o great features for making games. Draw anywhere you have iPhone/iPod and or iPad, at the cafe on the train or on the bus. Draw a quick icon of a beer bottle or martini glass at the pub with your drink as a model! Draw a quick pixel art portrait of your favorite bartender with one hand and your *drink in the other. (I don’t recommend drawing while under the influence of drugs or alcohol. All references to drinks in this article are fruit juice only.)

 

Flash AS3 Basics: Identifiers

Identifiers are the names that you invent to represent or identify elements in the program. Identifiers can be used to name MovieClip instances, Classes, Variables and Functions.

The program comes with many built elements that already have names. These are things like MovieClip methods like gotoAndStop() etc. You should avoid using these names as names for your own elements.

When creating Identifier names you should follow the following rules.

  • Names must begin with a letter (a,b,c etc) the underscore (_) or the dollar sign ($).
  • Names can contain any combination of letters, numbers and the underscore and dollar sign.
  • Avoid using names have already been used by the program.

Conventions

Identifiers are used fro various purposes. Following conventions while creating identifier names will help you keep them all straight.

In general identifiers should be kept lower case.

Class names: Class names always begin with an upper case letter. All of the built in classes follow this convention. For example MovieClip, Sprite and EventDispatcher all start with an uppercase letter.

Private Properties: A common convention is to start private properties with an underscore. For example: _index, _width, _height etc. The definitions for these might look like:

private var _index:uint;
private var _width:Number;
private var _height:Number;

Actionscript Basics: Identifiers

What are Identifiers?

When you are writing your code many of the elements are predefined. That is the words you are using have already been defined. Other elements you must create are defined by you. That is you get to make up the name assigned to these elements. Movieclip Instance names, Function names, Class names and Variable names are defined by you. That is you make up the names for yourself. All of these names are Identifiers.

When naming an Identifier you must follow a few simple rules.

  • The name must begin with a non numeric character
  • The name can not contain spaces or special characters. The _ (underscore) and $ (dollar sign) are exceptions to this rule

Foe example the following names work as identifiers:

  • _index
  • gallery
  • gallery_mc
  • ButtonAnimator

The following would not work as identifiers for various reasons:

  • 5_button – begins with a number
  • button 5 – contains a space
  • button*5 – contains a special character (*)

Descriptive names

Using names that describe the use of the element being named is a good idea. This creates code that reads well comments itself.

Good naming should be balanced by creating names that are not too long and don’t encourage spelling errors.

Name Extensions

Adobe suggests the use of extensions at the end of Identifier names. These extensions help label your Identifiers as being of a particular type. They also work with the code editor in Flash to give targeted code hints. All of the extensions begin with the _ followed by a few letters. Here’s a list of extensions, each is followed by the type it represents:

  • _mc – MovieClip
  • _sprite – Sprite
  • _txt – TextField
  • _str – String
  • _array – Array

Example Identifiers

Here are a few names that might used for identifiers:

  • home_mc – instance of a movie clip on the stage, maybe the button labeled Home
  • icons_sprite – instance name of a sprite containing icons
  • button_array – an array containing a list of buttons